mpi-testsuite-3.2+dfsg/0000755000175000017500000000000012737460571014375 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f90/0000755000175000017500000000000012621010234014746 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f90/init/0000755000175000017500000000000012621010234015711 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f90/init/testlist0000644000175000017500000000005712621010150017506 0ustar mbanckmbanck# This file generated by f77tof90 baseenvf90 1 mpi-testsuite-3.2+dfsg/f90/init/Makefile.in0000644000175000017500000005271512621010234017770 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This Makefile.am generated automatically by f77tof90 # from test/mpi/f77/init/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = baseenvf90$(EXEEXT) EXTRA_PROGRAMS = checksizes$(EXEEXT) @MAINTAINER_MODE_TRUE@am__append_1 = Makefile.am-stamp subdir = f90/init ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) baseenvf90_SOURCES = baseenvf90.f90 baseenvf90_OBJECTS = baseenvf90.$(OBJEXT) baseenvf90_LDADD = $(LDADD) baseenvf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o nodist_checksizes_OBJECTS = checksizes.$(OBJEXT) checksizes_OBJECTS = $(nodist_checksizes_OBJECTS) checksizes_DEPENDENCIES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = SOURCES = baseenvf90.f90 $(nodist_checksizes_SOURCES) DIST_SOURCES = baseenvf90.f90 am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_f90.mtest $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F90 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f90/util/mtestf90.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist $(am__append_1) # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 # Checksizes is created by configure, and is a C program that tests that # configure has correctly computed the sizes of MPI_Aint and MPI_Offset # for Fortran. This is not run by default but can be used to check # that configure found the correct values. checksizes_LDADD = nodist_checksizes_SOURCES = checksizes.c DISTCLEANFILES = checksizes.c @MAINTAINER_MODE_TRUE@MAINTAINERCLEANFILES = Makefile.am-stamp all: all-am .SUFFIXES: .SUFFIXES: .c .f90 .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f90.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f90/init/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f90/init/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f90.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) baseenvf90$(EXEEXT): $(baseenvf90_OBJECTS) $(baseenvf90_DEPENDENCIES) $(EXTRA_baseenvf90_DEPENDENCIES) @rm -f baseenvf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(baseenvf90_OBJECTS) $(baseenvf90_LDADD) $(LIBS) checksizes$(EXEEXT): $(checksizes_OBJECTS) $(checksizes_DEPENDENCIES) $(EXTRA_checksizes_DEPENDENCIES) @rm -f checksizes$(EXEEXT) $(AM_V_CCLD)$(LINK) $(checksizes_OBJECTS) $(checksizes_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/checksizes.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f90/util/mtestf90.o: $(top_srcdir)/f90/util/mtestf90.f90 (cd $(top_builddir)/f90/util && $(MAKE) mtestf90.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # f77tof90 only replaces output files if the contents differ, so we must use a # separate timestamp file in order avoid constantly trying to remake the f90 # copy of the Makefile when the f77 copy is updated in a way that does not # change its contents @MAINTAINER_MODE_TRUE@$(srcdir)/Makefile.am: $(srcdir)/Makefile.am-stamp @MAINTAINER_MODE_TRUE@$(srcdir)/Makefile.am-stamp: $(master_top_srcdir)/test/mpi/f77/init/Makefile.am $(master_top_srcdir)/maint/f77tof90 @MAINTAINER_MODE_TRUE@ ( cd $(master_top_srcdir) && ./maint/f77tof90 test/mpi/f77/init test/mpi/f90/init Makefile.am Makefile.ap ) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f90/init/Makefile.am0000644000175000017500000000266612621010150017754 0ustar mbanckmbanck# This Makefile.am generated automatically by f77tof90 # from test/mpi/f77/init/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f90.mtest EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 noinst_PROGRAMS = baseenvf90 EXTRA_PROGRAMS = checksizes # Checksizes is created by configure, and is a C program that tests that # configure has correctly computed the sizes of MPI_Aint and MPI_Offset # for Fortran. This is not run by default but can be used to check # that configure found the correct values. checksizes_LDADD = nodist_checksizes_SOURCES = checksizes.c DISTCLEANFILES = checksizes.c if MAINTAINER_MODE # f77tof90 only replaces output files if the contents differ, so we must use a # separate timestamp file in order avoid constantly trying to remake the f90 # copy of the Makefile when the f77 copy is updated in a way that does not # change its contents $(srcdir)/Makefile.am: $(srcdir)/Makefile.am-stamp $(srcdir)/Makefile.am-stamp: $(master_top_srcdir)/test/mpi/f77/init/Makefile.am $(master_top_srcdir)/maint/f77tof90 ( cd $(master_top_srcdir) && ./maint/f77tof90 test/mpi/f77/init test/mpi/f90/init Makefile.am Makefile.ap ) MAINTAINERCLEANFILES = Makefile.am-stamp EXTRA_DIST += Makefile.am-stamp endif MAINTAINER_MODE mpi-testsuite-3.2+dfsg/f90/init/baseenvf90.f900000644000175000017500000000537412621010150020201 0ustar mbanckmbanck! This file created from test/mpi/f77/init/baseenvf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer ierr, provided, errs, rank, size integer iv, isubv, qprovided logical flag errs = 0 flag = .true. call mpi_finalized( flag, ierr ) if (flag) then errs = errs + 1 print *, 'Returned true for finalized before init' endif flag = .true. call mpi_initialized( flag, ierr ) if (flag) then errs = errs + 1 print *, 'Return true for initialized before init' endif provided = -1 call mpi_init_thread( MPI_THREAD_MULTIPLE, provided, ierr ) if (provided .ne. MPI_THREAD_MULTIPLE .and. & & provided .ne. MPI_THREAD_SERIALIZED .and. & & provided .ne. MPI_THREAD_FUNNELED .and. & & provided .ne. MPI_THREAD_SINGLE) then errs = errs + 1 print *, ' Unrecognized value for provided = ', provided endif iv = -1 isubv = -1 call mpi_get_version( iv, isubv, ierr ) if (iv .ne. MPI_VERSION .or. isubv .ne. MPI_SUBVERSION) then errs = errs + 1 print *, 'Version in mpif.h and get_version do not agree' print *, 'Version in mpif.h is ', MPI_VERSION, '.', & & MPI_SUBVERSION print *, 'Version in get_version is ', iv, '.', isubv endif if (iv .lt. 1 .or. iv .gt. 3) then errs = errs + 1 print *, 'Version of MPI is invalid (=', iv, ')' endif if (isubv.lt.0 .or. isubv.gt.2) then errs = errs + 1 print *, 'Subversion of MPI is invalid (=', isubv, ')' endif call mpi_comm_rank( MPI_COMM_WORLD, rank, ierr ) call mpi_comm_size( MPI_COMM_WORLD, size, ierr ) flag = .false. call mpi_is_thread_main( flag, ierr ) if (.not.flag) then errs = errs + 1 print *, 'is_thread_main returned false for main thread' endif call mpi_query_thread( qprovided, ierr ) if (qprovided .ne. provided) then errs = errs + 1 print *,'query thread and init thread disagree on'// & & ' thread level' endif call mpi_finalize( ierr ) flag = .false. call mpi_finalized( flag, ierr ) if (.not. flag) then errs = errs + 1 print *, 'finalized returned false after finalize' endif if (rank .eq. 0) then if (errs .eq. 0) then print *, ' No Errors' else print *, ' Found ', errs, ' errors' endif endif end mpi-testsuite-3.2+dfsg/f90/init/Makefile.am-stamp0000644000175000017500000000001212621010150021055 0ustar mbanckmbancktimestamp mpi-testsuite-3.2+dfsg/f90/info/0000755000175000017500000000000012621010234015701 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f90/info/testlist0000644000175000017500000000007712621010150017500 0ustar mbanckmbanck# This file generated by f77tof90 infotestf90 1 infotest2f90 1 mpi-testsuite-3.2+dfsg/f90/info/Makefile.in0000644000175000017500000004673612621010234017766 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This Makefile.am generated automatically by f77tof90 # from test/mpi/f77/info/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = infotestf90$(EXEEXT) infotest2f90$(EXEEXT) @MAINTAINER_MODE_TRUE@am__append_1 = Makefile.am-stamp subdir = f90/info ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) infotest2f90_SOURCES = infotest2f90.f90 infotest2f90_OBJECTS = infotest2f90.$(OBJEXT) infotest2f90_LDADD = $(LDADD) infotest2f90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o infotestf90_SOURCES = infotestf90.f90 infotestf90_OBJECTS = infotestf90.$(OBJEXT) infotestf90_LDADD = $(LDADD) infotestf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = SOURCES = infotest2f90.f90 infotestf90.f90 DIST_SOURCES = infotest2f90.f90 infotestf90.f90 am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_f90.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F90 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f90/util/mtestf90.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist $(am__append_1) # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 @MAINTAINER_MODE_TRUE@MAINTAINERCLEANFILES = Makefile.am-stamp all: all-am .SUFFIXES: .SUFFIXES: .f90 .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f90.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f90/info/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f90/info/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f90.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) infotest2f90$(EXEEXT): $(infotest2f90_OBJECTS) $(infotest2f90_DEPENDENCIES) $(EXTRA_infotest2f90_DEPENDENCIES) @rm -f infotest2f90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(infotest2f90_OBJECTS) $(infotest2f90_LDADD) $(LIBS) infotestf90$(EXEEXT): $(infotestf90_OBJECTS) $(infotestf90_DEPENDENCIES) $(EXTRA_infotestf90_DEPENDENCIES) @rm -f infotestf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(infotestf90_OBJECTS) $(infotestf90_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f90/util/mtestf90.o: $(top_srcdir)/f90/util/mtestf90.f90 (cd $(top_builddir)/f90/util && $(MAKE) mtestf90.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # f77tof90 only replaces output files if the contents differ, so we must use a # separate timestamp file in order avoid constantly trying to remake the f90 # copy of the Makefile when the f77 copy is updated in a way that does not # change its contents @MAINTAINER_MODE_TRUE@$(srcdir)/Makefile.am: $(srcdir)/Makefile.am-stamp @MAINTAINER_MODE_TRUE@$(srcdir)/Makefile.am-stamp: $(master_top_srcdir)/test/mpi/f77/info/Makefile.am $(master_top_srcdir)/maint/f77tof90 @MAINTAINER_MODE_TRUE@ ( cd $(master_top_srcdir) && ./maint/f77tof90 test/mpi/f77/info test/mpi/f90/info Makefile.am Makefile.ap ) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f90/info/Makefile.am0000644000175000017500000000211212621010150017726 0ustar mbanckmbanck# This Makefile.am generated automatically by f77tof90 # from test/mpi/f77/info/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f90.mtest EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 noinst_PROGRAMS = infotestf90 infotest2f90 if MAINTAINER_MODE # f77tof90 only replaces output files if the contents differ, so we must use a # separate timestamp file in order avoid constantly trying to remake the f90 # copy of the Makefile when the f77 copy is updated in a way that does not # change its contents $(srcdir)/Makefile.am: $(srcdir)/Makefile.am-stamp $(srcdir)/Makefile.am-stamp: $(master_top_srcdir)/test/mpi/f77/info/Makefile.am $(master_top_srcdir)/maint/f77tof90 ( cd $(master_top_srcdir) && ./maint/f77tof90 test/mpi/f77/info test/mpi/f90/info Makefile.am Makefile.ap ) MAINTAINERCLEANFILES = Makefile.am-stamp EXTRA_DIST += Makefile.am-stamp endif MAINTAINER_MODE mpi-testsuite-3.2+dfsg/f90/info/infotest2f90.f900000644000175000017500000001145712621010150020462 0ustar mbanckmbanck! This file created from test/mpi/f77/info/infotest2f.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer ierr, errs integer i1, i2 integer nkeys, i, j, sumindex, vlen, ln, valuelen logical found, flag character*(MPI_MAX_INFO_KEY) keys(6) character*(MPI_MAX_INFO_VAL) values(6) character*(MPI_MAX_INFO_KEY) mykey character*(MPI_MAX_INFO_VAL) myvalue ! data keys/"Key1", "key2", "KeY3", "A Key With Blanks","See Below", & & "last"/ data values/"value 1", "value 2", "VaLue 3", "key=valu:3","false", & & "no test"/ ! errs = 0 call mtest_init( ierr ) ! Note that the MPI standard requires that leading an trailing blanks ! are stripped from keys and values (Section 4.10, The Info Object) ! ! First, create and initialize an info call mpi_info_create( i1, ierr ) call mpi_info_set( i1, keys(1), values(1), ierr ) call mpi_info_set( i1, keys(2), values(2), ierr ) call mpi_info_set( i1, keys(3), values(3), ierr ) call mpi_info_set( i1, keys(4), values(4), ierr ) call mpi_info_set( i1, " See Below", values(5), ierr ) call mpi_info_set( i1, keys(6), " no test ", ierr ) ! call mpi_info_get_nkeys( i1, nkeys, ierr ) if (nkeys .ne. 6) then print *, ' Number of keys should be 6, is ', nkeys endif sumindex = 0 do i=1, nkeys ! keys are number from 0 to n-1, even in Fortran (Section 4.10) call mpi_info_get_nthkey( i1, i-1, mykey, ierr ) found = .false. do j=1, 6 if (mykey .eq. keys(j)) then found = .true. sumindex = sumindex + j call mpi_info_get_valuelen( i1, mykey, vlen, flag, ierr ) if (.not.flag) then errs = errs + 1 print *, ' no value for key', mykey else call mpi_info_get( i1, mykey, MPI_MAX_INFO_VAL, & & myvalue, flag, ierr ) if (myvalue .ne. values(j)) then errs = errs + 1 print *, ' Value for ', mykey, ' not expected' else do ln=MPI_MAX_INFO_VAL,1,-1 if (myvalue(ln:ln) .ne. ' ') then if (vlen .ne. ln) then errs = errs + 1 print *, ' length is ', ln, & & ' but valuelen gave ', vlen, & & ' for key ', mykey endif goto 100 endif enddo 100 continue endif endif endif enddo if (.not.found) then print *, i, 'th key ', mykey, ' not in list' endif enddo if (sumindex .ne. 21) then errs = errs + 1 print *, ' Not all keys found' endif ! ! delete 2, then dup, then delete 2 more call mpi_info_delete( i1, keys(1), ierr ) call mpi_info_delete( i1, keys(2), ierr ) call mpi_info_dup( i1, i2, ierr ) call mpi_info_delete( i1, keys(3), ierr ) ! ! check the contents of i2 ! valuelen does not signal an error for unknown keys; instead, sets ! flag to false do i=1,2 flag = .true. call mpi_info_get_valuelen( i2, keys(i), valuelen, flag, ierr ) if (flag) then errs = errs + 1 print *, ' Found unexpected key ', keys(i) endif myvalue = 'A test' call mpi_info_get( i2, keys(i), MPI_MAX_INFO_VAL, & & myvalue, flag, ierr ) if (flag) then errs = errs + 1 print *, ' Found unexpected key in MPI_Info_get ', keys(i) else if (myvalue .ne. 'A test') then errs = errs + 1 print *, ' Returned value overwritten, is now ', myvalue endif endif enddo do i=3,6 myvalue = ' ' call mpi_info_get( i2, keys(i), MPI_MAX_INFO_VAL, & & myvalue, flag, ierr ) if (.not. flag) then errs = errs + 1 print *, ' Did not find key ', keys(i) else if (myvalue .ne. values(i)) then errs = errs + 1 print *, ' Found wrong value (', myvalue, ') for key ', & & keys(i) endif endif enddo ! ! Free info call mpi_info_free( i1, ierr ) call mpi_info_free( i2, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/info/infotestf90.f900000644000175000017500000000307212621010150020372 0ustar mbanckmbanck! This file created from test/mpi/f77/info/infotestf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! Simple info test program main use mpi integer i1, i2 integer i, errs, ierr integer valuelen parameter (valuelen=64) character*(valuelen) value logical flag ! errs = 0 call MTest_Init( ierr ) call mpi_info_create( i1, ierr ) call mpi_info_create( i2, ierr ) call mpi_info_set( i1, "key1", "value1", ierr ) call mpi_info_set( i2, "key2", "value2", ierr ) call mpi_info_get( i1, "key2", valuelen, value, flag, ierr ) if (flag) then print *, "Found key2 in info1" errs = errs + 1 endif call MPI_Info_get( i1, "key1", 64, value, flag, ierr ) if (.not. flag ) then print *, "Did not find key1 in info1" errs = errs + 1 else if (value .ne. "value1") then print *, "Found wrong value (", value, "), expected value1" errs = errs + 1 else ! check for trailing blanks do i=7,valuelen if (value(i:i) .ne. " ") then print *, "Found non blank in info value" errs = errs + 1 endif enddo endif endif call mpi_info_free( i1, ierr ) call mpi_info_free( i2, ierr ) call MTest_Finalize( errs ) call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/info/Makefile.am-stamp0000644000175000017500000000001212621010150021045 0ustar mbanckmbancktimestamp mpi-testsuite-3.2+dfsg/f90/datatype/0000755000175000017500000000000012621010234016561 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f90/datatype/allctypesf90.f900000644000175000017500000001300012621010150021407 0ustar mbanckmbanck! This file created from test/mpi/f77/datatype/allctypesf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2004 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer atype, ierr ! call mtest_init(ierr) call mpi_comm_set_errhandler( MPI_COMM_WORLD, MPI_ERRORS_RETURN, & & ierr ) ! ! Check that all Ctypes are available in Fortran (MPI 2.1, p 483, line 46) ! call checkdtype( MPI_CHAR, "MPI_CHAR", ierr ) call checkdtype( MPI_SIGNED_CHAR, "MPI_SIGNED_CHAR", ierr ) call checkdtype( MPI_UNSIGNED_CHAR, "MPI_UNSIGNED_CHAR", ierr ) call checkdtype( MPI_BYTE, "MPI_BYTE", ierr ) call checkdtype( MPI_WCHAR, "MPI_WCHAR", ierr ) call checkdtype( MPI_SHORT, "MPI_SHORT", ierr ) call checkdtype( MPI_UNSIGNED_SHORT, "MPI_UNSIGNED_SHORT", ierr ) call checkdtype( MPI_INT, "MPI_INT", ierr ) call checkdtype( MPI_UNSIGNED, "MPI_UNSIGNED", ierr ) call checkdtype( MPI_LONG, "MPI_LONG", ierr ) call checkdtype( MPI_UNSIGNED_LONG, "MPI_UNSIGNED_LONG", ierr ) call checkdtype( MPI_FLOAT, "MPI_FLOAT", ierr ) call checkdtype( MPI_DOUBLE, "MPI_DOUBLE", ierr ) if (MPI_LONG_DOUBLE .ne. MPI_DATATYPE_NULL) then call checkdtype( MPI_LONG_DOUBLE, "MPI_LONG_DOUBLE", ierr ) endif if (MPI_LONG_LONG_INT .ne. MPI_DATATYPE_NULL) then call checkdtype2( MPI_LONG_LONG_INT, "MPI_LONG_LONG_INT", & & "MPI_LONG_LONG", ierr ) endif if (MPI_UNSIGNED_LONG_LONG .ne. MPI_DATATYPE_NULL) then call checkdtype( MPI_UNSIGNED_LONG_LONG, & & "MPI_UNSIGNED_LONG_LONG", ierr ) endif if (MPI_LONG_LONG .ne. MPI_DATATYPE_NULL) then call checkdtype2( MPI_LONG_LONG, "MPI_LONG_LONG", & & "MPI_LONG_LONG_INT", ierr ) endif call checkdtype( MPI_PACKED, "MPI_PACKED", ierr ) call checkdtype( MPI_LB, "MPI_LB", ierr ) call checkdtype( MPI_UB, "MPI_UB", ierr ) call checkdtype( MPI_FLOAT_INT, "MPI_FLOAT_INT", ierr ) call checkdtype( MPI_DOUBLE_INT, "MPI_DOUBLE_INT", ierr ) call checkdtype( MPI_LONG_INT, "MPI_LONG_INT", ierr ) call checkdtype( MPI_SHORT_INT, "MPI_SHORT_INT", ierr ) call checkdtype( MPI_2INT, "MPI_2INT", ierr ) if (MPI_LONG_DOUBLE_INT .ne. MPI_DATATYPE_NULL) then call checkdtype( MPI_LONG_DOUBLE_INT, "MPI_LONG_DOUBLE_INT", & & ierr) endif ! ! Check that all Ctypes are available in Fortran (MPI 2.2) ! Note that because of implicit declarations in Fortran, this ! code should compile even with pre MPI 2.2 implementations. ! if (MPI_VERSION .gt. 2 .or. (MPI_VERSION .eq. 2 .and. & & MPI_SUBVERSION .ge. 2)) then call checkdtype( MPI_INT8_T, "MPI_INT8_T", ierr ) call checkdtype( MPI_INT16_T, "MPI_INT16_T", ierr ) call checkdtype( MPI_INT32_T, "MPI_INT32_T", ierr ) call checkdtype( MPI_INT64_T, "MPI_INT64_T", ierr ) call checkdtype( MPI_UINT8_T, "MPI_UINT8_T", ierr ) call checkdtype( MPI_UINT16_T, "MPI_UINT16_T", ierr ) call checkdtype( MPI_UINT32_T, "MPI_UINT32_T", ierr ) call checkdtype( MPI_UINT64_T, "MPI_UINT64_T", ierr ) ! other C99 types call checkdtype( MPI_C_BOOL, "MPI_C_BOOL", ierr ) call checkdtype( MPI_C_FLOAT_COMPLEX, "MPI_C_FLOAT_COMPLEX", & & ierr) call checkdtype2( MPI_C_COMPLEX, "MPI_C_COMPLEX", & & "MPI_C_FLOAT_COMPLEX", ierr ) call checkdtype( MPI_C_DOUBLE_COMPLEX, "MPI_C_DOUBLE_COMPLEX", & & ierr ) if (MPI_C_LONG_DOUBLE_COMPLEX .ne. MPI_DATATYPE_NULL) then call checkdtype( MPI_C_LONG_DOUBLE_COMPLEX, & & "MPI_C_LONG_DOUBLE_COMPLEX", ierr ) endif ! address/offset types call checkdtype( MPI_AINT, "MPI_AINT", ierr ) call checkdtype( MPI_OFFSET, "MPI_OFFSET", ierr ) endif ! call mtest_finalize( ierr ) call MPI_Finalize( ierr ) end ! ! Check name of datatype subroutine CheckDtype( intype, name, ierr ) use mpi integer intype, ierr character *(*) name integer ir, rlen character *(MPI_MAX_OBJECT_NAME) outname ! outname = "" call MPI_TYPE_GET_NAME( intype, outname, rlen, ir ) if (ir .ne. MPI_SUCCESS) then print *, " Datatype ", name, " not available in Fortran" ierr = ierr + 1 else if (outname .ne. name) then print *, " For datatype ", name, " found name ", & & outname(1:rlen) ierr = ierr + 1 endif endif return end ! ! Check name of datatype (allows alias) subroutine CheckDtype2( intype, name, name2, ierr ) use mpi integer intype, ierr character *(*) name, name2 integer ir, rlen character *(MPI_MAX_OBJECT_NAME) outname ! outname = "" call MPI_TYPE_GET_NAME( intype, outname, rlen, ir ) if (ir .ne. MPI_SUCCESS) then print *, " Datatype ", name, " not available in Fortran" ierr = ierr + 1 else if (outname .ne. name .and. outname .ne. name2) then print *, " For datatype ", name, " found name ", & & outname(1:rlen) ierr = ierr + 1 endif endif return end mpi-testsuite-3.2+dfsg/f90/datatype/hindexed_blockf90.f900000644000175000017500000001316612621010150022366 0ustar mbanckmbanck! This file created from test/mpi/f77/datatype/hindexed_blockf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer errs, ierr, i, intsize integer type1, type2, type3, type4, type5 integer max_asizev parameter (max_asizev = 10) integer (kind=MPI_ADDRESS_KIND) aint, aintv(max_asizev) integer blocklens(max_asizev), dtypes(max_asizev) integer displs(max_asizev) integer recvbuf(6*max_asizev) integer sendbuf(max_asizev), status(MPI_STATUS_SIZE) integer rank, size errs = 0 call mtest_init( ierr ) call mpi_comm_size( MPI_COMM_WORLD, size, ierr ) call mpi_comm_rank( MPI_COMM_WORLD, rank, ierr ) ! call mpi_type_size( MPI_INTEGER, intsize, ierr ) ! aintv(1) = 0 aintv(2) = 3 * intsize call mpi_type_create_resized( MPI_INTEGER, aintv(1), aintv(2), & & type1, ierr ) call mpi_type_commit( type1, ierr ) aintv(1) = -1 aintv(2) = -1 call mpi_type_get_extent( type1, aintv(1), aintv(2), ierr ) if (aintv(1) .ne. 0) then errs = errs + 1 print *, 'Did not get expected lb' endif if (aintv(2) .ne. 3*intsize) then errs = errs + 1 print *, 'Did not get expected extent' endif aintv(1) = -1 aintv(2) = -1 call mpi_type_get_true_extent( type1, aintv(1), aintv(2), ierr ) if (aintv(1) .ne. 0) then errs = errs + 1 print *, 'Did not get expected true lb' endif if (aintv(2) .ne. intsize) then errs = errs + 1 print *, 'Did not get expected true extent (', aintv(2), ') ', & & ' expected ', intsize endif ! do i=1,10 blocklens(i) = 1 aintv(i) = (i-1) * 3 * intsize enddo call mpi_type_create_hindexed( 10, blocklens, aintv, & & MPI_INTEGER, type2, ierr ) call mpi_type_commit( type2, ierr ) ! aint = 3 * intsize call mpi_type_create_hvector( 10, 1, aint, MPI_INTEGER, type3, & & ierr ) call mpi_type_commit( type3, ierr ) ! do i=1,10 blocklens(i) = 1 dtypes(i) = MPI_INTEGER aintv(i) = (i-1) * 3 * intsize enddo call mpi_type_create_struct( 10, blocklens, aintv, dtypes, & & type4, ierr ) call mpi_type_commit( type4, ierr ) call mpi_type_get_extent(MPI_INTEGER, aintv(1), aint, ierr) do i=1,10 aintv(i) = (i-1) * 3 * aint enddo call mpi_type_create_hindexed_block( 10, 1, aintv, & & MPI_INTEGER, type5, ierr ) call mpi_type_commit( type5, ierr ) ! ! Using each time, send and receive using these types do i=1, max_asizev*3 recvbuf(i) = -1 enddo do i=1, max_asizev sendbuf(i) = i enddo call mpi_sendrecv( sendbuf, max_asizev, MPI_INTEGER, rank, 0, & & recvbuf, max_asizev, type1, rank, 0, & & MPI_COMM_WORLD, status, ierr ) do i=1, max_asizev if (recvbuf(1+(i-1)*3) .ne. i ) then errs = errs + 1 print *, 'type1:', i, 'th element = ', recvbuf(1+(i-1)*3) endif enddo ! do i=1, max_asizev*3 recvbuf(i) = -1 enddo do i=1, max_asizev sendbuf(i) = i enddo call mpi_sendrecv( sendbuf, max_asizev, MPI_INTEGER, rank, 0, & & recvbuf, 1, type2, rank, 0, & & MPI_COMM_WORLD, status, ierr ) do i=1, max_asizev if (recvbuf(1+(i-1)*3) .ne. i ) then errs = errs + 1 print *, 'type2:', i, 'th element = ', recvbuf(1+(i-1)*3) endif enddo ! do i=1, max_asizev*3 recvbuf(i) = -1 enddo do i=1, max_asizev sendbuf(i) = i enddo call mpi_sendrecv( sendbuf, max_asizev, MPI_INTEGER, rank, 0, & & recvbuf, 1, type3, rank, 0, & & MPI_COMM_WORLD, status, ierr ) do i=1, max_asizev if (recvbuf(1+(i-1)*3) .ne. i ) then errs = errs + 1 print *, 'type3:', i, 'th element = ', recvbuf(1+(i-1)*3) endif enddo ! do i=1, max_asizev*3 recvbuf(i) = -1 enddo do i=1, max_asizev sendbuf(i) = i enddo call mpi_sendrecv( sendbuf, max_asizev, MPI_INTEGER, rank, 0, & & recvbuf, 1, type4, rank, 0, & & MPI_COMM_WORLD, status, ierr ) do i=1, max_asizev if (recvbuf(1+(i-1)*3) .ne. i ) then errs = errs + 1 print *, 'type4:', i, 'th element = ', recvbuf(1+(i-1)*3) endif enddo ! do i=1, max_asizev*3 recvbuf(i) = -1 enddo do i=1, max_asizev sendbuf(i) = i enddo call mpi_sendrecv( sendbuf, max_asizev, MPI_INTEGER, rank, 0, & & recvbuf, 1, type5, rank, 0, & & MPI_COMM_WORLD, status, ierr ) do i=1, max_asizev if (recvbuf(1+(i-1)*3) .ne. i ) then errs = errs + 1 print *, 'type5:', i, 'th element = ', recvbuf(1+(i-1)*3) endif enddo ! call mpi_type_free( type1, ierr ) call mpi_type_free( type2, ierr ) call mpi_type_free( type3, ierr ) call mpi_type_free( type4, ierr ) call mpi_type_free( type5, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/datatype/trf90.f900000644000175000017500000000110412620254305020051 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2011 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! Based on a sample program that triggered a segfault in MPICH program testf90_mpi use mpi implicit none integer errs integer :: rk_mpi, ierr, ctype errs = 0 call mtest_init(ierr) call MPI_Type_create_f90_real(15, MPI_UNDEFINED, rk_mpi, ierr) call MPI_Type_contiguous(19, rk_mpi, ctype, ierr) call MPI_Type_commit(ctype, ierr) call MPI_Type_free(ctype, ierr) call mtest_finalize(errs) call MPI_Finalize(ierr) end program testf90_mpi mpi-testsuite-3.2+dfsg/f90/datatype/testlist.ap0000644000175000017500000000014212620254305020763 0ustar mbanckmbanckstructf 2 indtype 2 createf90 1 sizeof 1 kinds 2 mpiversion=2.2 trf90 1 get_elem_d 2 get_elem_u 2 mpi-testsuite-3.2+dfsg/f90/datatype/bottomc.c0000644000175000017500000000432612621010150020376 0ustar mbanckmbanck/* This file created from test/mpi/f77/datatype/bottomc.c with f77tof90 */ /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include "mpi.h" #include "../../include/mpitestconf.h" /* Name mapping. All routines are created with names that are lower case with a single trailing underscore. This matches many compilers. We use #define to change the name for Fortran compilers that do not use the lowercase/underscore pattern */ #ifdef F77_NAME_UPPER #define c_routine_ C_ROUTINE #elif defined(F77_NAME_LOWER) || defined(F77_NAME_MIXED) /* Mixed is ok because we use lowercase in all uses */ #define c_routine_ c_routine #elif defined(F77_NAME_LOWER_2USCORE) || defined(F77_NAME_LOWER_USCORE) || \ defined(F77_NAME_MIXED_USCORE) /* Else leave name alone (routines have no underscore, so both of these map to a lowercase, single underscore) */ #else #error 'Unrecognized Fortran name mapping' #endif void c_routine_(MPI_Fint * ftype, int *errs) { int count = 5; int lens[2] = { 1, 1 }; int buf[6]; int i, rank; MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Aint displs[2]; MPI_Datatype types[2], newtype; /* create an absolute datatype for buffer that consists */ /* of count, followed by R(5) */ MPI_Get_address(&count, &displs[0]); displs[1] = 0; types[0] = MPI_INT; types[1] = MPI_Type_f2c(*ftype); MPI_Type_create_struct(2, lens, displs, types, &newtype); MPI_Type_commit(&newtype); if (rank == 0) { /* the message sent contains an int count of 5, followed * by the 5 MPI_INTEGER entries of the Fortran array R. * Here we assume MPI_INTEGER has the same size as MPI_INT */ assert(sizeof(MPI_Fint) == sizeof(int)); MPI_Send(MPI_BOTTOM, 1, newtype, 1, 0, MPI_COMM_WORLD); } else { MPI_Recv(buf, 6, MPI_INT, 0, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); if (buf[0] != 5) *errs++; for (i = 1; i < 6; i++) if (buf[i] != i) *errs++; } MPI_Type_free(&newtype); } mpi-testsuite-3.2+dfsg/f90/datatype/testlist0000644000175000017500000000050712621010150020356 0ustar mbanckmbanck# This file generated by f77tof90 typenamef90 1 typename3f90 1 mpiversion=3.0 typesnamef90 1 typecntsf90 1 typem2f90 1 typesubf90 1 packef90 1 gaddressf90 1 allctypesf90 1 hindex1f90 1 hindexed_blockf90 1 mpiversion=3.0 bottom 2 structf 2 indtype 2 createf90 1 sizeof 1 kinds 2 mpiversion=2.2 trf90 1 get_elem_d 2 get_elem_u 2 mpi-testsuite-3.2+dfsg/f90/datatype/Makefile.in0000644000175000017500000007176412621010234020645 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This Makefile.am generated automatically by f77tof90 # from test/mpi/f77/datatype/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = typenamef90$(EXEEXT) typesnamef90$(EXEEXT) \ typecntsf90$(EXEEXT) typesubf90$(EXEEXT) typem2f90$(EXEEXT) \ gaddressf90$(EXEEXT) packef90$(EXEEXT) allctypesf90$(EXEEXT) \ hindex1f90$(EXEEXT) hindexed_blockf90$(EXEEXT) \ typename3f90$(EXEEXT) bottom$(EXEEXT) structf$(EXEEXT) \ indtype$(EXEEXT) createf90$(EXEEXT) sizeof$(EXEEXT) \ kinds$(EXEEXT) trf90$(EXEEXT) get_elem_d$(EXEEXT) \ get_elem_u$(EXEEXT) @MAINTAINER_MODE_TRUE@am__append_1 = Makefile.am-stamp testlist.ap Makefile.ap subdir = f90/datatype ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) allctypesf90_SOURCES = allctypesf90.f90 allctypesf90_OBJECTS = allctypesf90.$(OBJEXT) allctypesf90_LDADD = $(LDADD) allctypesf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o am_bottom_OBJECTS = bottomc.$(OBJEXT) bottomf90.$(OBJEXT) bottom_OBJECTS = $(am_bottom_OBJECTS) bottom_LDADD = $(LDADD) bottom_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o am_createf90_OBJECTS = createf90.$(OBJEXT) createf90_OBJECTS = $(am_createf90_OBJECTS) createf90_LDADD = $(LDADD) createf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o gaddressf90_SOURCES = gaddressf90.f90 gaddressf90_OBJECTS = gaddressf90.$(OBJEXT) gaddressf90_LDADD = $(LDADD) gaddressf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o am_get_elem_d_OBJECTS = get_elem_d.$(OBJEXT) get_elem_d_OBJECTS = $(am_get_elem_d_OBJECTS) get_elem_d_LDADD = $(LDADD) get_elem_d_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o am_get_elem_u_OBJECTS = get_elem_u.$(OBJEXT) get_elem_u_OBJECTS = $(am_get_elem_u_OBJECTS) get_elem_u_LDADD = $(LDADD) get_elem_u_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o hindex1f90_SOURCES = hindex1f90.f90 hindex1f90_OBJECTS = hindex1f90.$(OBJEXT) hindex1f90_LDADD = $(LDADD) hindex1f90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o hindexed_blockf90_SOURCES = hindexed_blockf90.f90 hindexed_blockf90_OBJECTS = hindexed_blockf90.$(OBJEXT) hindexed_blockf90_LDADD = $(LDADD) hindexed_blockf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o am_indtype_OBJECTS = indtype.$(OBJEXT) indtype_OBJECTS = $(am_indtype_OBJECTS) indtype_LDADD = $(LDADD) indtype_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o am_kinds_OBJECTS = kinds.$(OBJEXT) kinds_OBJECTS = $(am_kinds_OBJECTS) kinds_LDADD = $(LDADD) kinds_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o packef90_SOURCES = packef90.f90 packef90_OBJECTS = packef90.$(OBJEXT) packef90_LDADD = $(LDADD) packef90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o am_sizeof_OBJECTS = sizeof.$(OBJEXT) sizeof_OBJECTS = $(am_sizeof_OBJECTS) sizeof_LDADD = $(LDADD) sizeof_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o am_structf_OBJECTS = structf.$(OBJEXT) structf_OBJECTS = $(am_structf_OBJECTS) structf_LDADD = $(LDADD) structf_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o am_trf90_OBJECTS = trf90.$(OBJEXT) trf90_OBJECTS = $(am_trf90_OBJECTS) trf90_LDADD = $(LDADD) trf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o typecntsf90_SOURCES = typecntsf90.f90 typecntsf90_OBJECTS = typecntsf90.$(OBJEXT) typecntsf90_LDADD = $(LDADD) typecntsf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o typem2f90_SOURCES = typem2f90.f90 typem2f90_OBJECTS = typem2f90.$(OBJEXT) typem2f90_LDADD = $(LDADD) typem2f90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o typename3f90_SOURCES = typename3f90.f90 typename3f90_OBJECTS = typename3f90.$(OBJEXT) typename3f90_LDADD = $(LDADD) typename3f90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o typenamef90_SOURCES = typenamef90.f90 typenamef90_OBJECTS = typenamef90.$(OBJEXT) typenamef90_LDADD = $(LDADD) typenamef90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o typesnamef90_SOURCES = typesnamef90.f90 typesnamef90_OBJECTS = typesnamef90.$(OBJEXT) typesnamef90_LDADD = $(LDADD) typesnamef90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o typesubf90_SOURCES = typesubf90.f90 typesubf90_OBJECTS = typesubf90.$(OBJEXT) typesubf90_LDADD = $(LDADD) typesubf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = SOURCES = allctypesf90.f90 $(bottom_SOURCES) $(createf90_SOURCES) \ gaddressf90.f90 $(get_elem_d_SOURCES) $(get_elem_u_SOURCES) \ hindex1f90.f90 hindexed_blockf90.f90 $(indtype_SOURCES) \ $(kinds_SOURCES) packef90.f90 $(sizeof_SOURCES) \ $(structf_SOURCES) $(trf90_SOURCES) typecntsf90.f90 \ typem2f90.f90 typename3f90.f90 typenamef90.f90 \ typesnamef90.f90 typesubf90.f90 DIST_SOURCES = allctypesf90.f90 $(bottom_SOURCES) $(createf90_SOURCES) \ gaddressf90.f90 $(get_elem_d_SOURCES) $(get_elem_u_SOURCES) \ hindex1f90.f90 hindexed_blockf90.f90 $(indtype_SOURCES) \ $(kinds_SOURCES) packef90.f90 $(sizeof_SOURCES) \ $(structf_SOURCES) $(trf90_SOURCES) typecntsf90.f90 \ typem2f90.f90 typename3f90.f90 typenamef90.f90 \ typesnamef90.f90 typesubf90.f90 am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_f90.mtest $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F90 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f90/util/mtestf90.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist $(am__append_1) # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 bottom_SOURCES = bottomc.c bottomf90.f90 @MAINTAINER_MODE_TRUE@MAINTAINERCLEANFILES = Makefile.am-stamp structf_SOURCES = structf.f90 indtype_SOURCES = indtype.f90 createf90_SOURCES = createf90.f90 sizeof_SOURCES = sizeof.f90 kinds_SOURCES = kinds.f90 trf90_SOURCES = trf90.f90 get_elem_d_SOURCES = get_elem_d.f90 get_elem_u_SOURCES = get_elem_u.f90 all: all-am .SUFFIXES: .SUFFIXES: .c .f90 .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f90.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f90/datatype/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f90/datatype/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f90.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) allctypesf90$(EXEEXT): $(allctypesf90_OBJECTS) $(allctypesf90_DEPENDENCIES) $(EXTRA_allctypesf90_DEPENDENCIES) @rm -f allctypesf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(allctypesf90_OBJECTS) $(allctypesf90_LDADD) $(LIBS) bottom$(EXEEXT): $(bottom_OBJECTS) $(bottom_DEPENDENCIES) $(EXTRA_bottom_DEPENDENCIES) @rm -f bottom$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(bottom_OBJECTS) $(bottom_LDADD) $(LIBS) createf90$(EXEEXT): $(createf90_OBJECTS) $(createf90_DEPENDENCIES) $(EXTRA_createf90_DEPENDENCIES) @rm -f createf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(createf90_OBJECTS) $(createf90_LDADD) $(LIBS) gaddressf90$(EXEEXT): $(gaddressf90_OBJECTS) $(gaddressf90_DEPENDENCIES) $(EXTRA_gaddressf90_DEPENDENCIES) @rm -f gaddressf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(gaddressf90_OBJECTS) $(gaddressf90_LDADD) $(LIBS) get_elem_d$(EXEEXT): $(get_elem_d_OBJECTS) $(get_elem_d_DEPENDENCIES) $(EXTRA_get_elem_d_DEPENDENCIES) @rm -f get_elem_d$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(get_elem_d_OBJECTS) $(get_elem_d_LDADD) $(LIBS) get_elem_u$(EXEEXT): $(get_elem_u_OBJECTS) $(get_elem_u_DEPENDENCIES) $(EXTRA_get_elem_u_DEPENDENCIES) @rm -f get_elem_u$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(get_elem_u_OBJECTS) $(get_elem_u_LDADD) $(LIBS) hindex1f90$(EXEEXT): $(hindex1f90_OBJECTS) $(hindex1f90_DEPENDENCIES) $(EXTRA_hindex1f90_DEPENDENCIES) @rm -f hindex1f90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(hindex1f90_OBJECTS) $(hindex1f90_LDADD) $(LIBS) hindexed_blockf90$(EXEEXT): $(hindexed_blockf90_OBJECTS) $(hindexed_blockf90_DEPENDENCIES) $(EXTRA_hindexed_blockf90_DEPENDENCIES) @rm -f hindexed_blockf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(hindexed_blockf90_OBJECTS) $(hindexed_blockf90_LDADD) $(LIBS) indtype$(EXEEXT): $(indtype_OBJECTS) $(indtype_DEPENDENCIES) $(EXTRA_indtype_DEPENDENCIES) @rm -f indtype$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(indtype_OBJECTS) $(indtype_LDADD) $(LIBS) kinds$(EXEEXT): $(kinds_OBJECTS) $(kinds_DEPENDENCIES) $(EXTRA_kinds_DEPENDENCIES) @rm -f kinds$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(kinds_OBJECTS) $(kinds_LDADD) $(LIBS) packef90$(EXEEXT): $(packef90_OBJECTS) $(packef90_DEPENDENCIES) $(EXTRA_packef90_DEPENDENCIES) @rm -f packef90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(packef90_OBJECTS) $(packef90_LDADD) $(LIBS) sizeof$(EXEEXT): $(sizeof_OBJECTS) $(sizeof_DEPENDENCIES) $(EXTRA_sizeof_DEPENDENCIES) @rm -f sizeof$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(sizeof_OBJECTS) $(sizeof_LDADD) $(LIBS) structf$(EXEEXT): $(structf_OBJECTS) $(structf_DEPENDENCIES) $(EXTRA_structf_DEPENDENCIES) @rm -f structf$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(structf_OBJECTS) $(structf_LDADD) $(LIBS) trf90$(EXEEXT): $(trf90_OBJECTS) $(trf90_DEPENDENCIES) $(EXTRA_trf90_DEPENDENCIES) @rm -f trf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(trf90_OBJECTS) $(trf90_LDADD) $(LIBS) typecntsf90$(EXEEXT): $(typecntsf90_OBJECTS) $(typecntsf90_DEPENDENCIES) $(EXTRA_typecntsf90_DEPENDENCIES) @rm -f typecntsf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(typecntsf90_OBJECTS) $(typecntsf90_LDADD) $(LIBS) typem2f90$(EXEEXT): $(typem2f90_OBJECTS) $(typem2f90_DEPENDENCIES) $(EXTRA_typem2f90_DEPENDENCIES) @rm -f typem2f90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(typem2f90_OBJECTS) $(typem2f90_LDADD) $(LIBS) typename3f90$(EXEEXT): $(typename3f90_OBJECTS) $(typename3f90_DEPENDENCIES) $(EXTRA_typename3f90_DEPENDENCIES) @rm -f typename3f90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(typename3f90_OBJECTS) $(typename3f90_LDADD) $(LIBS) typenamef90$(EXEEXT): $(typenamef90_OBJECTS) $(typenamef90_DEPENDENCIES) $(EXTRA_typenamef90_DEPENDENCIES) @rm -f typenamef90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(typenamef90_OBJECTS) $(typenamef90_LDADD) $(LIBS) typesnamef90$(EXEEXT): $(typesnamef90_OBJECTS) $(typesnamef90_DEPENDENCIES) $(EXTRA_typesnamef90_DEPENDENCIES) @rm -f typesnamef90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(typesnamef90_OBJECTS) $(typesnamef90_LDADD) $(LIBS) typesubf90$(EXEEXT): $(typesubf90_OBJECTS) $(typesubf90_DEPENDENCIES) $(EXTRA_typesubf90_DEPENDENCIES) @rm -f typesubf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(typesubf90_OBJECTS) $(typesubf90_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bottomc.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f90/util/mtestf90.o: $(top_srcdir)/f90/util/mtestf90.f90 (cd $(top_builddir)/f90/util && $(MAKE) mtestf90.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # f77tof90 only replaces output files if the contents differ, so we must use a # separate timestamp file in order avoid constantly trying to remake the f90 # copy of the Makefile when the f77 copy is updated in a way that does not # change its contents @MAINTAINER_MODE_TRUE@$(srcdir)/Makefile.am: $(srcdir)/Makefile.am-stamp @MAINTAINER_MODE_TRUE@$(srcdir)/Makefile.am-stamp: $(master_top_srcdir)/test/mpi/f77/datatype/Makefile.am $(master_top_srcdir)/maint/f77tof90 @MAINTAINER_MODE_TRUE@ ( cd $(master_top_srcdir) && ./maint/f77tof90 test/mpi/f77/datatype test/mpi/f90/datatype Makefile.am Makefile.ap ) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f90/datatype/Makefile.ap0000644000175000017500000000057612620254305020640 0ustar mbanckmbanck## vim: set ft=automake : noinst_PROGRAMS += structf indtype createf90 sizeof kinds trf90 get_elem_d get_elem_u structf_SOURCES = structf.f90 indtype_SOURCES = indtype.f90 createf90_SOURCES = createf90.f90 sizeof_SOURCES = sizeof.f90 kinds_SOURCES = kinds.f90 trf90_SOURCES = trf90.f90 get_elem_d_SOURCES = get_elem_d.f90 get_elem_u_SOURCES = get_elem_u.f90 mpi-testsuite-3.2+dfsg/f90/datatype/bottomf90.f900000644000175000017500000000174412621010150020727 0ustar mbanckmbanck! This file created from test/mpi/f77/datatype/bottomf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2015 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! ! This test tests absolute datatypes and MPI_BOTTOM in mixed ! Fortran and C code. MPI requires MPI_Get_address return ! the same value in all languages. ! See discussion on p.652 of MPI-3.0 program main use mpi integer :: R(5) integer :: type, ierr, aoblen(1), aotype(1) integer (kind=mpi_address_kind) :: aodisp(1) integer errs errs = 0 R = (/1, 2, 3, 4, 5/) call mtest_init(ierr) ! create an absolute datatype for array r aoblen(1) = 5 call MPI_Get_address(R, aodisp(1), ierr) aotype(1) = MPI_INTEGER call MPI_Type_create_struct(1,aoblen,aodisp,aotype, type, ierr) call c_routine(type, errs) call MPI_Type_free(type, ierr); call mtest_finalize(errs) call MPI_Finalize(ierr) end mpi-testsuite-3.2+dfsg/f90/datatype/typename3f90.f900000644000175000017500000000231412621010150021322 0ustar mbanckmbanck! This file created from test/mpi/f77/datatype/typename3f.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! ! (C) 2012 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi character*(MPI_MAX_OBJECT_NAME) name integer namelen integer ierr, errs errs = 0 call mtest_init( ierr ) ! ! Check each Fortran datatype, including the size-specific ones ! See the C version (typename.c) for the relevant MPI sections call MPI_Type_get_name( MPI_AINT, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_AINT") then errs = errs + 1 print *, "Expected MPI_AINT but got "//name(1:namelen) endif call MPI_Type_get_name( MPI_OFFSET, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_OFFSET") then errs = errs + 1 print *, "Expected MPI_OFFSET but got "//name(1:namelen) endif call MPI_Type_get_name( MPI_COUNT, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_COUNT") then errs = errs + 1 print *, "Expected MPI_COUNT but got "//name(1:namelen) endif call mtest_finalize( errs ) call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/datatype/packef90.f900000644000175000017500000001535412621010150020510 0ustar mbanckmbanck! This file created from test/mpi/f77/datatype/packef.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer ierr, errs integer inbuf(10), ioutbuf(10), inbuf2(10), ioutbuf2(10) integer i, insize, rsize, csize, insize2 character*(16) cbuf, coutbuf double precision rbuf(10), routbuf(10) integer packbuf(1000), pbufsize, intsize integer max_asizev parameter (max_asizev = 3) integer (kind=MPI_ADDRESS_KIND) aint, aintv(max_asizev) errs = 0 call mtest_init( ierr ) call mpi_type_size( MPI_INTEGER, intsize, ierr ) pbufsize = 1000 * intsize call mpi_pack_external_size( 'external32', 10, MPI_INTEGER, & & aint, ierr ) if (aint .ne. 10 * 4) then errs = errs + 1 print *, 'Expected 40 for size of 10 external32 integers', & & ', got ', aint endif call mpi_pack_external_size( 'external32', 10, MPI_LOGICAL, & & aint, ierr ) if (aint .ne. 10 * 4) then errs = errs + 1 print *, 'Expected 40 for size of 10 external32 logicals', & & ', got ', aint endif call mpi_pack_external_size( 'external32', 10, MPI_CHARACTER, & & aint, ierr ) if (aint .ne. 10 * 1) then errs = errs + 1 print *, 'Expected 10 for size of 10 external32 characters', & & ', got ', aint endif call mpi_pack_external_size( 'external32', 3, MPI_INTEGER2, & & aint, ierr ) if (aint .ne. 3 * 2) then errs = errs + 1 print *, 'Expected 6 for size of 3 external32 INTEGER*2', & & ', got ', aint endif call mpi_pack_external_size( 'external32', 3, MPI_INTEGER4, & & aint, ierr ) if (aint .ne. 3 * 4) then errs = errs + 1 print *, 'Expected 12 for size of 3 external32 INTEGER*4', & & ', got ', aint endif call mpi_pack_external_size( 'external32', 3, MPI_REAL4, & & aint, ierr ) if (aint .ne. 3 * 4) then errs = errs + 1 print *, 'Expected 12 for size of 3 external32 REAL*4', & & ', got ', aint endif call mpi_pack_external_size( 'external32', 3, MPI_REAL8, & & aint, ierr ) if (aint .ne. 3 * 8) then errs = errs + 1 print *, 'Expected 24 for size of 3 external32 REAL*8', & & ', got ', aint endif if (MPI_INTEGER1 .ne. MPI_DATATYPE_NULL) then call mpi_pack_external_size( 'external32', 3, MPI_INTEGER1, & & aint, ierr ) if (aint .ne. 3 * 1) then errs = errs + 1 print *, 'Expected 3 for size of 3 external32 INTEGER*1', & & ', got ', aint endif endif if (MPI_INTEGER8 .ne. MPI_DATATYPE_NULL) then call mpi_pack_external_size( 'external32', 3, MPI_INTEGER8, & & aint, ierr ) if (aint .ne. 3 * 8) then errs = errs + 1 print *, 'Expected 24 for size of 3 external32 INTEGER*8', & & ', got ', aint endif endif ! ! Initialize values ! insize = 10 do i=1, insize inbuf(i) = i enddo rsize = 3 do i=1, rsize rbuf(i) = 1000.0 * i enddo cbuf = 'This is a string' csize = 16 insize2 = 7 do i=1, insize2 inbuf2(i) = 5000-i enddo ! aintv(1) = pbufsize aintv(2) = 0 aintv(3) = 0 ! One MPI implementation failed to increment the position; instead, ! it set the value with the amount of data packed in this call ! We use aintv(3) to detect and report this specific error call mpi_pack_external( 'external32', inbuf, insize, MPI_INTEGER, & & packbuf, aintv(1), aintv(2), ierr ) if (aintv(2) .le. aintv(3)) then print *, ' Position decreased after pack of integer!' endif aintv(3) = aintv(2) call mpi_pack_external( 'external32', rbuf, rsize, & & MPI_DOUBLE_PRECISION, packbuf, aintv(1), & & aintv(2), ierr ) if (aintv(2) .le. aintv(3)) then print *, ' Position decreased after pack of real!' endif aintv(3) = aintv(2) call mpi_pack_external( 'external32', cbuf, csize, & & MPI_CHARACTER, packbuf, aintv(1), & & aintv(2), ierr ) if (aintv(2) .le. aintv(3)) then print *, ' Position decreased after pack of character!' endif aintv(3) = aintv(2) call mpi_pack_external( 'external32', inbuf2, insize2, & & MPI_INTEGER, & & packbuf, aintv(1), aintv(2), ierr ) if (aintv(2) .le. aintv(3)) then print *, ' Position decreased after pack of integer (2nd)!' endif aintv(3) = aintv(2) ! ! We could try sending this with MPI_BYTE... aintv(2) = 0 call mpi_unpack_external( 'external32', packbuf, aintv(1), & & aintv(2), ioutbuf, insize, MPI_INTEGER, ierr ) call mpi_unpack_external( 'external32', packbuf, aintv(1), & & aintv(2), routbuf, rsize, MPI_DOUBLE_PRECISION, ierr ) call mpi_unpack_external( 'external32', packbuf, aintv(1), & & aintv(2), coutbuf, csize, MPI_CHARACTER, ierr ) call mpi_unpack_external( 'external32', packbuf, aintv(1), & & aintv(2), ioutbuf2, insize2, MPI_INTEGER, ierr ) ! ! Now, test the values ! do i=1, insize if (ioutbuf(i) .ne. i) then errs = errs + 1 print *, 'ioutbuf(',i,') = ', ioutbuf(i), ' expected ', i endif enddo do i=1, rsize if (routbuf(i) .ne. 1000.0 * i) then errs = errs + 1 print *, 'routbuf(',i,') = ', routbuf(i), ' expected ', & & 1000.0 * i endif enddo if (coutbuf(1:csize) .ne. 'This is a string') then errs = errs + 1 print *, 'coutbuf = ', coutbuf(1:csize), ' expected ', & & 'This is a string' endif do i=1, insize2 if (ioutbuf2(i) .ne. 5000-i) then errs = errs + 1 print *, 'ioutbuf2(',i,') = ', ioutbuf2(i), ' expected ', & & 5000-i endif enddo ! call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/datatype/structf.f900000644000175000017500000000630412620254305020606 0ustar mbanckmbanck! ! (C) 2004 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! Thanks to ! William R. Magro ! for this test ! ! It has been modifiedly slightly to work with the automated MPI ! tests. ! WDG. ! ! It was further modified to use MPI_Get_address instead of MPI_Address ! for MPICH, and to fit in the MPICH test harness - WDG ! program bustit use mpi implicit none integer comm integer newtype integer me integer position integer type(5) integer length(5) integer (kind=MPI_ADDRESS_KIND) disp(5) integer bufsize integer errs, toterrs parameter (bufsize=100) character buf(bufsize) character name*(10) integer status(MPI_STATUS_SIZE) integer i, size double precision x integer src, dest integer ierr errs = 0 ! Enroll in MPI call mpi_init(ierr) ! get my rank call mpi_comm_rank(MPI_COMM_WORLD, me, ierr) call mpi_comm_size(MPI_COMM_WORLD, size, ierr ) if (size .lt. 2) then print *, "Must have at least 2 processes" call MPI_Abort( MPI_COMM_WORLD, 1, ierr ) endif comm = MPI_COMM_WORLD src = 0 dest = 1 if(me.eq.src) then i=5 x=5.1234d0 name="Hello" type(1)=MPI_CHARACTER length(1)=5 call mpi_get_address(name,disp(1),ierr) type(2)=MPI_DOUBLE_PRECISION length(2)=1 call mpi_get_address(x,disp(2),ierr) call mpi_type_create_struct(2,length,disp,type,newtype,ierr) call mpi_type_commit(newtype,ierr) call mpi_barrier( MPI_COMM_WORLD, ierr ) call mpi_send(MPI_BOTTOM,1,newtype,dest,1,comm,ierr) call mpi_type_free(newtype,ierr) ! write(*,*) "Sent ",name(1:5),x else ! Everyone calls barrier incase size > 2 call mpi_barrier( MPI_COMM_WORLD, ierr ) if (me.eq.dest) then position=0 name = " " x = 0.0d0 call mpi_recv(buf,bufsize,MPI_PACKED, src, & & 1, comm, status, ierr) call mpi_unpack(buf,bufsize,position, & & name,5,MPI_CHARACTER, comm,ierr) call mpi_unpack(buf,bufsize,position, & & x,1,MPI_DOUBLE_PRECISION, comm,ierr) ! Check the return values (/= is not-equal in F90) if (name /= "Hello") then errs = errs + 1 print *, "Received ", name, " but expected Hello" endif if (abs(x-5.1234) .gt. 1.0e-6) then errs = errs + 1 print *, "Received ", x, " but expected 5.1234" endif endif endif ! ! Sum up errs and report the result call mpi_reduce( errs, toterrs, 1, MPI_INTEGER, MPI_SUM, 0, & & MPI_COMM_WORLD, ierr ) if (me .eq. 0) then if (toterrs .eq. 0) then print *, " No Errors" else print *, " Found ", toterrs, " errors" endif endif call mpi_finalize(ierr) end mpi-testsuite-3.2+dfsg/f90/datatype/Makefile.am0000644000175000017500000000347612621010150020624 0ustar mbanckmbanck# This Makefile.am generated automatically by f77tof90 # from test/mpi/f77/datatype/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f90.mtest EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 noinst_PROGRAMS = typenamef90 typesnamef90 typecntsf90 typesubf90 typem2f90 gaddressf90 \ packef90 allctypesf90 hindex1f90 hindexed_blockf90 typename3f90 bottom bottom_SOURCES=bottomc.c bottomf90.f90 ## typeaints.h will be distributed because it's listed in AC_CONFIG_FILES/AC_OUTPUT ## ensure that dependent tests will be rebuilt when typeaints.h is updated if MAINTAINER_MODE # f77tof90 only replaces output files if the contents differ, so we must use a # separate timestamp file in order avoid constantly trying to remake the f90 # copy of the Makefile when the f77 copy is updated in a way that does not # change its contents $(srcdir)/Makefile.am: $(srcdir)/Makefile.am-stamp $(srcdir)/Makefile.am-stamp: $(master_top_srcdir)/test/mpi/f77/datatype/Makefile.am $(master_top_srcdir)/maint/f77tof90 ( cd $(master_top_srcdir) && ./maint/f77tof90 test/mpi/f77/datatype test/mpi/f90/datatype Makefile.am Makefile.ap ) MAINTAINERCLEANFILES = Makefile.am-stamp EXTRA_DIST += Makefile.am-stamp testlist.ap Makefile.ap endif MAINTAINER_MODE ## vim: set ft=automake : noinst_PROGRAMS += structf indtype createf90 sizeof kinds trf90 get_elem_d get_elem_u structf_SOURCES = structf.f90 indtype_SOURCES = indtype.f90 createf90_SOURCES = createf90.f90 sizeof_SOURCES = sizeof.f90 kinds_SOURCES = kinds.f90 trf90_SOURCES = trf90.f90 get_elem_d_SOURCES = get_elem_d.f90 get_elem_u_SOURCES = get_elem_u.f90 mpi-testsuite-3.2+dfsg/f90/datatype/typenamef90.f900000644000175000017500000001645212621010150021247 0ustar mbanckmbanck! This file created from test/mpi/f77/datatype/typenamef.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi character*(MPI_MAX_OBJECT_NAME) name integer namelen integer ierr, errs errs = 0 call mtest_init( ierr ) ! ! Check each Fortran datatype, including the size-specific ones ! See the C version (typename.c) for the relevant MPI sections call MPI_Type_get_name( MPI_COMPLEX, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_COMPLEX") then errs = errs + 1 print *, "Expected MPI_COMPLEX but got "//name(1:namelen) endif call MPI_Type_get_name( MPI_DOUBLE_COMPLEX, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_DOUBLE_COMPLEX") then errs = errs + 1 print *, "Expected MPI_DOUBLE_COMPLEX but got "// & & name(1:namelen) endif call MPI_Type_get_name( MPI_LOGICAL, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_LOGICAL") then errs = errs + 1 print *, "Expected MPI_LOGICAL but got "//name(1:namelen) endif call MPI_Type_get_name( MPI_REAL, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_REAL") then errs = errs + 1 print *, "Expected MPI_REAL but got "//name(1:namelen) endif call MPI_Type_get_name( MPI_DOUBLE_PRECISION, name, namelen, ierr) if (name(1:namelen) .ne. "MPI_DOUBLE_PRECISION") then errs = errs + 1 print *, "Expected MPI_DOUBLE_PRECISION but got "// & & name(1:namelen) endif call MPI_Type_get_name( MPI_INTEGER, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_INTEGER") then errs = errs + 1 print *, "Expected MPI_INTEGER but got "//name(1:namelen) endif call MPI_Type_get_name( MPI_2INTEGER, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_2INTEGER") then errs = errs + 1 print *, "Expected MPI_2INTEGER but got "//name(1:namelen) endif ! 2COMPLEX was present only in MPI 1.0 ! call MPI_Type_get_name( MPI_2COMPLEX, name, namelen, ierr ) ! if (name(1:namelen) .ne. "MPI_2COMPLEX") then ! errs = errs + 1 ! print *, "Expected MPI_2COMPLEX but got "//name(1:namelen) ! endif ! call MPI_Type_get_name(MPI_2DOUBLE_PRECISION, name, namelen, ierr) if (name(1:namelen) .ne. "MPI_2DOUBLE_PRECISION") then errs = errs + 1 print *, "Expected MPI_2DOUBLE_PRECISION but got "// & & name(1:namelen) endif call MPI_Type_get_name( MPI_2REAL, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_2REAL") then errs = errs + 1 print *, "Expected MPI_2REAL but got "//name(1:namelen) endif ! 2DOUBLE_COMPLEX isn't in MPI 2.1 ! call MPI_Type_get_name( MPI_2DOUBLE_COMPLEX, name, namelen, ierr ) ! if (name(1:namelen) .ne. "MPI_2DOUBLE_COMPLEX") then ! errs = errs + 1 ! print *, "Expected MPI_2DOUBLE_COMPLEX but got "// ! & name(1:namelen) ! endif call MPI_Type_get_name( MPI_CHARACTER, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_CHARACTER") then errs = errs + 1 print *, "Expected MPI_CHARACTER but got "//name(1:namelen) endif call MPI_Type_get_name( MPI_BYTE, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_BYTE") then errs = errs + 1 print *, "Expected MPI_BYTE but got "//name(1:namelen) endif if (MPI_REAL4 .ne. MPI_DATATYPE_NULL) then call MPI_Type_get_name( MPI_REAL4, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_REAL4") then errs = errs + 1 print *, "Expected MPI_REAL4 but got "//name(1:namelen) endif endif if (MPI_REAL8 .ne. MPI_DATATYPE_NULL) then call MPI_Type_get_name( MPI_REAL8, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_REAL8") then errs = errs + 1 print *, "Expected MPI_REAL8 but got "//name(1:namelen) endif endif if (MPI_REAL16 .ne. MPI_DATATYPE_NULL) then call MPI_Type_get_name( MPI_REAL16, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_REAL16") then errs = errs + 1 print *, "Expected MPI_REAL16 but got "//name(1:namelen) endif endif if (MPI_COMPLEX8 .ne. MPI_DATATYPE_NULL) then call MPI_Type_get_name( MPI_COMPLEX8, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_COMPLEX8") then errs = errs + 1 print *, "Expected MPI_COMPLEX8 but got "// & & name(1:namelen) endif endif if (MPI_COMPLEX16 .ne. MPI_DATATYPE_NULL) then call MPI_Type_get_name( MPI_COMPLEX16, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_COMPLEX16") then errs = errs + 1 print *, "Expected MPI_COMPLEX16 but got "// & & name(1:namelen) endif endif if (MPI_COMPLEX32 .ne. MPI_DATATYPE_NULL) then call MPI_Type_get_name( MPI_COMPLEX32, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_COMPLEX32") then errs = errs + 1 print *, "Expected MPI_COMPLEX32 but got "// & & name(1:namelen) endif endif if (MPI_INTEGER1 .ne. MPI_DATATYPE_NULL) then call MPI_Type_get_name( MPI_INTEGER1, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_INTEGER1") then errs = errs + 1 print *, "Expected MPI_INTEGER1 but got "// & & name(1:namelen) endif endif if (MPI_INTEGER2 .ne. MPI_DATATYPE_NULL) then call MPI_Type_get_name( MPI_INTEGER2, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_INTEGER2") then errs = errs + 1 print *, "Expected MPI_INTEGER2 but got "// & & name(1:namelen) endif endif if (MPI_INTEGER4 .ne. MPI_DATATYPE_NULL) then call MPI_Type_get_name( MPI_INTEGER4, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_INTEGER4") then errs = errs + 1 print *, "Expected MPI_INTEGER4 but got "// & & name(1:namelen) endif endif if (MPI_INTEGER8 .ne. MPI_DATATYPE_NULL) then call MPI_Type_get_name( MPI_INTEGER8, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_INTEGER8") then errs = errs + 1 print *, "Expected MPI_INTEGER8 but got "// & & name(1:namelen) endif endif ! MPI_INTEGER16 is in MPI 2.1, but it is missing from most tables ! Some MPI implementations may not provide it ! if (MPI_INTEGER16 .ne. MPI_DATATYPE_NULL) then ! call MPI_Type_get_name( MPI_INTEGER16, name, namelen, ierr ) ! if (name(1:namelen) .ne. "MPI_INTEGER16") then ! errs = errs + 1 ! print *, "Expected MPI_INTEGER16 but got "// ! & name(1:namelen) ! endif ! endif call mtest_finalize( errs ) call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/datatype/sizeof.f900000644000175000017500000001032612620254305020412 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2007 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! This program tests that the MPI_SIZEOF routine is implemented for the ! predefined scalar Fortran types. It confirms that the size of these ! types matches the size of the corresponding MPI datatypes. ! program main use mpi integer ierr, errs integer rank, size, mpisize logical verbose real r1,r1v(2) double precision d1,d1v(3) complex c1,c1v(4) integer i1,i1v(5) character ch1,ch1v(6) logical l1,l1v(7) verbose = .false. errs = 0 call mtest_init ( ierr ) call mpi_comm_rank( MPI_COMM_WORLD, rank, ierr ) ! Test of scalar types call mpi_sizeof( r1, size, ierr ) call mpi_type_size( MPI_REAL, mpisize, ierr ) if (size .ne. mpisize) then errs = errs + 1 print *, "Size of MPI_REAL = ", mpisize, & & " but MPI_SIZEOF gives ", size endif call mpi_sizeof( d1, size, ierr ) call mpi_type_size( MPI_DOUBLE_PRECISION, mpisize, ierr ) if (size .ne. mpisize) then errs = errs + 1 print *, "Size of MPI_DOUBLE_PRECISION = ", mpisize, & " but MPI_SIZEOF gives ", size endif call mpi_sizeof( i1, size, ierr ) call mpi_type_size( MPI_INTEGER, mpisize, ierr ) if (size .ne. mpisize) then errs = errs + 1 print *, "Size of MPI_INTEGER = ", mpisize, & & " but MPI_SIZEOF gives ", size endif call mpi_sizeof( c1, size, ierr ) call mpi_type_size( MPI_COMPLEX, mpisize, ierr ) if (size .ne. mpisize) then errs = errs + 1 print *, "Size of MPI_COMPLEX = ", mpisize, & & " but MPI_SIZEOF gives ", size endif call mpi_sizeof( ch1, size, ierr ) call mpi_type_size( MPI_CHARACTER, mpisize, ierr ) if (size .ne. mpisize) then errs = errs + 1 print *, "Size of MPI_CHARACTER = ", mpisize, & " but MPI_SIZEOF gives ", size endif call mpi_sizeof( l1, size, ierr ) call mpi_type_size( MPI_LOGICAL, mpisize, ierr ) if (size .ne. mpisize) then errs = errs + 1 print *, "Size of MPI_LOGICAL = ", mpisize, & & " but MPI_SIZEOF gives ", size endif ! ! Test of vector types (1-dimensional) call mpi_sizeof( r1v, size, ierr ) call mpi_type_size( MPI_REAL, mpisize, ierr ) if (size .ne. mpisize) then errs = errs + 1 print *, "Size of MPI_REAL = ", mpisize, & & " but MPI_SIZEOF gives ", size endif call mpi_sizeof( d1v, size, ierr ) call mpi_type_size( MPI_DOUBLE_PRECISION, mpisize, ierr ) if (size .ne. mpisize) then errs = errs + 1 print *, "Size of MPI_DOUBLE_PRECISION = ", mpisize, & " but MPI_SIZEOF gives ", size endif call mpi_sizeof( i1v, size, ierr ) call mpi_type_size( MPI_INTEGER, mpisize, ierr ) if (size .ne. mpisize) then errs = errs + 1 print *, "Size of MPI_INTEGER = ", mpisize, & & " but MPI_SIZEOF gives ", size endif call mpi_sizeof( c1v, size, ierr ) call mpi_type_size( MPI_COMPLEX, mpisize, ierr ) if (size .ne. mpisize) then errs = errs + 1 print *, "Size of MPI_COMPLEX = ", mpisize, & & " but MPI_SIZEOF gives ", size endif call mpi_sizeof( ch1v, size, ierr ) call mpi_type_size( MPI_CHARACTER, mpisize, ierr ) if (size .ne. mpisize) then errs = errs + 1 print *, "Size of MPI_CHARACTER = ", mpisize, & " but MPI_SIZEOF gives ", size endif call mpi_sizeof( l1v, size, ierr ) call mpi_type_size( MPI_LOGICAL, mpisize, ierr ) if (size .ne. mpisize) then errs = errs + 1 print *, "Size of MPI_LOGICAL = ", mpisize, & & " but MPI_SIZEOF gives ", size endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/datatype/typem2f90.f900000644000175000017500000001306512621010150020642 0ustar mbanckmbanck! This file created from test/mpi/f77/datatype/typem2f.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer errs, ierr, i, intsize integer type1, type2, type3, type4, type5 integer max_asizev parameter (max_asizev = 10) integer (kind=MPI_ADDRESS_KIND) aint, aintv(max_asizev) integer blocklens(max_asizev), dtypes(max_asizev) integer displs(max_asizev) integer recvbuf(6*max_asizev) integer sendbuf(max_asizev), status(MPI_STATUS_SIZE) integer rank, size errs = 0 call mtest_init( ierr ) call mpi_comm_size( MPI_COMM_WORLD, size, ierr ) call mpi_comm_rank( MPI_COMM_WORLD, rank, ierr ) ! call mpi_type_size( MPI_INTEGER, intsize, ierr ) ! aintv(1) = 0 aintv(2) = 3 * intsize call mpi_type_create_resized( MPI_INTEGER, aintv(1), aintv(2), & & type1, ierr ) call mpi_type_commit( type1, ierr ) aintv(1) = -1 aintv(2) = -1 call mpi_type_get_extent( type1, aintv(1), aintv(2), ierr ) if (aintv(1) .ne. 0) then errs = errs + 1 print *, 'Did not get expected lb' endif if (aintv(2) .ne. 3*intsize) then errs = errs + 1 print *, 'Did not get expected extent' endif aintv(1) = -1 aintv(2) = -1 call mpi_type_get_true_extent( type1, aintv(1), aintv(2), ierr ) if (aintv(1) .ne. 0) then errs = errs + 1 print *, 'Did not get expected true lb' endif if (aintv(2) .ne. intsize) then errs = errs + 1 print *, 'Did not get expected true extent (', aintv(2), ') ', & & ' expected ', intsize endif ! do i=1,10 blocklens(i) = 1 aintv(i) = (i-1) * 3 * intsize enddo call mpi_type_create_hindexed( 10, blocklens, aintv, & & MPI_INTEGER, type2, ierr ) call mpi_type_commit( type2, ierr ) ! aint = 3 * intsize call mpi_type_create_hvector( 10, 1, aint, MPI_INTEGER, type3, & & ierr ) call mpi_type_commit( type3, ierr ) ! do i=1,10 blocklens(i) = 1 dtypes(i) = MPI_INTEGER aintv(i) = (i-1) * 3 * intsize enddo call mpi_type_create_struct( 10, blocklens, aintv, dtypes, & & type4, ierr ) call mpi_type_commit( type4, ierr ) do i=1,10 displs(i) = (i-1) * 3 enddo call mpi_type_create_indexed_block( 10, 1, displs, & & MPI_INTEGER, type5, ierr ) call mpi_type_commit( type5, ierr ) ! ! Using each time, send and receive using these types do i=1, max_asizev*3 recvbuf(i) = -1 enddo do i=1, max_asizev sendbuf(i) = i enddo call mpi_sendrecv( sendbuf, max_asizev, MPI_INTEGER, rank, 0, & & recvbuf, max_asizev, type1, rank, 0, & & MPI_COMM_WORLD, status, ierr ) do i=1, max_asizev if (recvbuf(1+(i-1)*3) .ne. i ) then errs = errs + 1 print *, 'type1:', i, 'th element = ', recvbuf(1+(i-1)*3) endif enddo ! do i=1, max_asizev*3 recvbuf(i) = -1 enddo do i=1, max_asizev sendbuf(i) = i enddo call mpi_sendrecv( sendbuf, max_asizev, MPI_INTEGER, rank, 0, & & recvbuf, 1, type2, rank, 0, & & MPI_COMM_WORLD, status, ierr ) do i=1, max_asizev if (recvbuf(1+(i-1)*3) .ne. i ) then errs = errs + 1 print *, 'type2:', i, 'th element = ', recvbuf(1+(i-1)*3) endif enddo ! do i=1, max_asizev*3 recvbuf(i) = -1 enddo do i=1, max_asizev sendbuf(i) = i enddo call mpi_sendrecv( sendbuf, max_asizev, MPI_INTEGER, rank, 0, & & recvbuf, 1, type3, rank, 0, & & MPI_COMM_WORLD, status, ierr ) do i=1, max_asizev if (recvbuf(1+(i-1)*3) .ne. i ) then errs = errs + 1 print *, 'type3:', i, 'th element = ', recvbuf(1+(i-1)*3) endif enddo ! do i=1, max_asizev*3 recvbuf(i) = -1 enddo do i=1, max_asizev sendbuf(i) = i enddo call mpi_sendrecv( sendbuf, max_asizev, MPI_INTEGER, rank, 0, & & recvbuf, 1, type4, rank, 0, & & MPI_COMM_WORLD, status, ierr ) do i=1, max_asizev if (recvbuf(1+(i-1)*3) .ne. i ) then errs = errs + 1 print *, 'type4:', i, 'th element = ', recvbuf(1+(i-1)*3) endif enddo ! do i=1, max_asizev*3 recvbuf(i) = -1 enddo do i=1, max_asizev sendbuf(i) = i enddo call mpi_sendrecv( sendbuf, max_asizev, MPI_INTEGER, rank, 0, & & recvbuf, 1, type5, rank, 0, & & MPI_COMM_WORLD, status, ierr ) do i=1, max_asizev if (recvbuf(1+(i-1)*3) .ne. i ) then errs = errs + 1 print *, 'type5:', i, 'th element = ', recvbuf(1+(i-1)*3) endif enddo ! call mpi_type_free( type1, ierr ) call mpi_type_free( type2, ierr ) call mpi_type_free( type3, ierr ) call mpi_type_free( type4, ierr ) call mpi_type_free( type5, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/datatype/get_elem_u.f900000644000175000017500000000350512620254305021221 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2013 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! Based on a test written by Jim Hoekstra on behalf of Cray, Inc. ! see ticket #884 https://trac.mpich.org/projects/mpich/ticket/884 PROGRAM get_elem_u USE mpi IMPLICIT NONE INTEGER RANK, SIZE, IERR, COMM, errs INTEGER MAX, I, K, dest INTEGER STATUS(MPI_STATUS_SIZE) INTEGER, PARAMETER :: nb=2 INTEGER :: blklen(nb)=(/1,1/) INTEGER :: types(nb) INTEGER(kind=MPI_ADDRESS_KIND) :: disp(nb)=(/0,8/) INTEGER, PARAMETER :: amax=200 INTEGER :: type1, type2, extent REAL :: a(amax) errs = 0 CALL MPI_Init( ierr ) COMM = MPI_COMM_WORLD types(1) = MPI_DOUBLE_PRECISION types(2) = MPI_CHAR CALL MPI_Comm_rank(COMM,RANK,IERR) CALL MPI_Comm_size(COMM,SIZE,IERR) dest=size-1 CALL MPI_Type_create_struct(nb, blklen, disp, types, type1, ierr) CALL MPI_Type_commit(type1, ierr) CALL MPI_Type_extent(type1, extent, ierr) CALL MPI_Type_contiguous(4, Type1, Type2, ierr) CALL MPI_Type_commit(Type2, ierr) CALL MPI_Type_extent(Type2, extent, ierr) DO k=1,17 IF(rank .EQ. 0) THEN ! send k copies of datatype Type1 CALL MPI_Send(a, k, Type1, dest, 0, comm, ierr) ELSE IF (rank == dest) THEN CALL MPI_Recv(a, 200, Type2, 0, 0, comm, status, ierr) CALL MPI_Get_elements(status, Type2, i, ierr) IF (i .NE. 2*k) THEN errs = errs+1 PRINT *, "k=",k," MPI_Get_elements returns", i, ", but it should be", 2*k END IF ELSE ! thix rank does not particupate END IF enddo CALL MPI_Type_free(type1, ierr) CALL MPI_Type_free(type2, ierr) CALL MPI_Finalize( ierr ) IF(rank .EQ. 0 .AND. errs .EQ. 0) THEN PRINT *, " No Errors" END IF END PROGRAM get_elem_u mpi-testsuite-3.2+dfsg/f90/datatype/get_elem_d.f900000644000175000017500000000703712620254305021204 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2013 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! Based on a test written by Jim Hoekstra on behalf of Cray, Inc. ! see ticket #884 https://trac.mpich.org/projects/mpich/ticket/884 program get_elem_d use mpi implicit none integer, parameter :: verbose=0 integer, parameter :: cmax=100,dmax=100,imax=60 integer, parameter :: nb=2 integer :: comm,rank,size,dest,ierror,errs=0 integer :: status(MPI_STATUS_SIZE) integer :: i,ii,count,ka,j,jj,k,kj integer :: blklen(nb)=(/2,2/) integer :: types(nb) integer(kind=MPI_ADDRESS_KIND) :: disp(nb) integer :: newtype,ntlen,ians(20),ians0(0:3),ians1(24),ians2(20) double precision :: dbuff(dmax), a integer :: ibuff(imax) character :: cbuff(cmax)='X' call MPI_Init(ierror) comm=MPI_COMM_WORLD types(1) = MPI_DOUBLE_PRECISION types(2) = MPI_INTEGER call MPI_Comm_size(comm, size, ierror) dest=size-1 call MPI_Comm_rank(comm, rank, ierror) call MPI_Sizeof (j, kj, ierror) call MPI_Sizeof (a, ka, ierror) ntlen=2*ka+2*kj disp=(/0,2*ka/) ! calculate answers for expected i values for Get_elements with derived type ians0(0)=ka ians0(1)=2*ka ians0(2)=2*ka+kj ians0(3)=2*ka+2*kj ii=0 do i=1,24 ! answers for the test sending 1~24 bytes if (i .eq. ians0(ii)) ii=ii+1 ians1(i)=ii enddo if (rank == 0 .and. verbose > 0) print *, (ians1(k),k=1,24) jj=0 do j=1,17,4 ! 4 means newtype has 4 primitives ians(j)=jj+ka/kj ians(j+1)=jj+2*(ka/kj) ians(j+2)=jj+2*(ka/kj)+1 ians(j+3)=jj+2*(ka/kj)+2 if (rank == 0 .and. verbose > 0) print *, (ians(k),k=j,j+3) jj=jj+ntlen/kj enddo ! To have k elements, need to receive ians(k) integers ii=0 do i=1,20 ! answers for the test sending 1~20 integers if (i .eq. ians(ii+1)) ii=ii+1 ians2(i)=ii enddo if (rank == 0 .and. verbose > 0) print *, (ians2(k),k=1,20) if (verbose > 0) print *, MPI_UNDEFINED call MPI_Type_create_struct(nb, blklen, disp, types, newtype, ierror) call MPI_Type_commit(newtype, ierror) do i=1,24 ! sending 1~24 bytes if (rank == 0) then call MPI_Send(cbuff, i, MPI_BYTE, dest, 100, comm, ierror) else if (rank == dest) then ! first receive call MPI_Recv(dbuff, dmax, newtype, 0, 100, comm, status, ierror) ! check on MPI_Get_elements call MPI_Get_elements(status, newtype, count, ierror) if (count .ne. ians1(i)) then errs=errs+1 write (*,fmt="(i2,' R1 Get_elements count=',i3,& &' but should be ',i3)") i,count,ians1(i) endif else ! other ranks do not participate endif enddo do i=1,20 ! sending 1~20 integers if (rank == 0) then call MPI_Send(ibuff, i, MPI_INTEGER, dest, 100, comm, ierror) else if (rank == dest) then ! second receive call MPI_Recv(dbuff, dmax, newtype, 0, 100, comm, status, ierror) ! check on MPI_Get_elements call MPI_Get_elements(status, newtype, count, ierror) if (count .ne. ians2(i)) then errs=errs+1 write (*,fmt="(i2,' R2 Get_elements count=',i3,& &' but should be ',i3)") i,count,ians2(i) endif else ! other ranks do not participate endif enddo if (rank .eq. dest) then if (errs .eq. 0) then write (*,*) " No Errors" else print *, 'errs=',errs endif endif call MPI_Type_free(newtype, ierror) call MPI_Finalize(ierror) end program get_elem_d mpi-testsuite-3.2+dfsg/f90/datatype/hindex1f90.f900000644000175000017500000000323212621010150020755 0ustar mbanckmbanck! This file created from test/mpi/f77/datatype/hindex1f.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! ! (C) 2011 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer errs, ierr, intsize integer i, displs(10), counts(10), dtype integer bufsize parameter (bufsize=100) integer inbuf(bufsize), outbuf(bufsize), packbuf(bufsize) integer position, len, psize ! ! Test for hindexed; ! errs = 0 call mtest_init( ierr ) call mpi_type_size( MPI_INTEGER, intsize, ierr ) do i=1, 10 displs(i) = (10-i)*intsize counts(i) = 1 enddo call mpi_type_hindexed( 10, counts, displs, MPI_INTEGER, dtype, & & ierr ) call mpi_type_commit( dtype, ierr ) ! call mpi_pack_size( 1, dtype, MPI_COMM_WORLD, psize, ierr ) if (psize .gt. bufsize*intsize) then errs = errs + 1 else do i=1,10 inbuf(i) = i outbuf(i) = -i enddo position = 0 call mpi_pack( inbuf, 1, dtype, packbuf, psize, position, & & MPI_COMM_WORLD, ierr ) ! len = position position = 0 call mpi_unpack( packbuf, len, position, outbuf, 10, & & MPI_INTEGER, MPI_COMM_WORLD, ierr ) ! do i=1, 10 if (outbuf(i) .ne. 11-i) then errs = errs + 1 print *, 'outbuf(',i,')=',outbuf(i),', expected ', 10-i endif enddo endif ! call mpi_type_free( dtype, ierr ) ! call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/datatype/typecntsf90.f900000644000175000017500000000656312621010150021300 0ustar mbanckmbanck! This file created from test/mpi/f77/datatype/typecntsf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer errs, ierr integer ntype1, ntype2 ! ! This is a very simple test that just tests that the contents/envelope ! routines can be called. This should be upgraded to test the new ! MPI-2 datatype routines (which use address-sized integers) ! errs = 0 call mtest_init( ierr ) call explore( MPI_INTEGER, MPI_COMBINER_NAMED, errs ) call explore( MPI_BYTE, MPI_COMBINER_NAMED, errs ) call mpi_type_vector( 10, 1, 30, MPI_DOUBLE_PRECISION, ntype1, & & ierr ) call explore( ntype1, MPI_COMBINER_VECTOR, errs ) call mpi_type_dup( ntype1, ntype2, ierr ) call explore( ntype2, MPI_COMBINER_DUP, errs ) call mpi_type_free( ntype2, ierr ) call mpi_type_free( ntype1, ierr ) ! call mtest_finalize( errs ) call mpi_finalize( ierr ) end ! subroutine explore( dtype, mycomb, errs ) use mpi integer dtype, mycomb, errs integer ierr integer nints, nadds, ntype, combiner integer max_nints, max_dtypes, max_asizev parameter (max_nints = 10, max_dtypes = 10, max_asizev=10) integer intv(max_nints), dtypesv(max_dtypes) integer (kind=MPI_ADDRESS_KIND) aint, aintv(max_asizev) ! call mpi_type_get_envelope( dtype, nints, nadds, ntype, & & combiner, ierr ) ! if (combiner .ne. MPI_COMBINER_NAMED) then call mpi_type_get_contents( dtype, & & max_nints, max_asizev, max_dtypes, & & intv, aintv, dtypesv, ierr ) ! ! dtypesv of constructed types must be free'd now ! if (combiner .eq. MPI_COMBINER_DUP) then call mpi_type_free( dtypesv(1), ierr ) endif endif if (combiner .ne. mycomb) then errs = errs + 1 print *, ' Expected combiner ', mycomb, ' but got ', & & combiner endif ! ! List all combiner types to check that they are defined in mpif.h if (combiner .eq. MPI_COMBINER_NAMED) then else if (combiner .eq. MPI_COMBINER_DUP) then else if (combiner .eq. MPI_COMBINER_CONTIGUOUS) then else if (combiner .eq. MPI_COMBINER_VECTOR) then else if (combiner .eq. MPI_COMBINER_HVECTOR_INTEGER) then else if (combiner .eq. MPI_COMBINER_HVECTOR) then else if (combiner .eq. MPI_COMBINER_INDEXED) then else if (combiner .eq. MPI_COMBINER_HINDEXED_INTEGER) then else if (combiner .eq. MPI_COMBINER_HINDEXED) then else if (combiner .eq. MPI_COMBINER_INDEXED_BLOCK) then else if (combiner .eq. MPI_COMBINER_STRUCT_INTEGER) then else if (combiner .eq. MPI_COMBINER_STRUCT) then else if (combiner .eq. MPI_COMBINER_SUBARRAY) then else if (combiner .eq. MPI_COMBINER_DARRAY) then else if (combiner .eq. MPI_COMBINER_F90_REAL) then else if (combiner .eq. MPI_COMBINER_F90_COMPLEX) then else if (combiner .eq. MPI_COMBINER_F90_INTEGER) then else if (combiner .eq. MPI_COMBINER_RESIZED) then else errs = errs + 1 print *, ' Unknown combiner ', combiner endif return end mpi-testsuite-3.2+dfsg/f90/datatype/indtype.f900000644000175000017500000000563212620254305020573 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! This test contributed by Kim McMahon, Cray ! program main use mpi implicit none integer ierr, i, j, type, count,errs parameter (count = 4) integer rank, size, xfersize integer status(MPI_STATUS_SIZE) integer blocklens(count), displs(count) double precision,dimension(:,:),allocatable :: sndbuf, rcvbuf logical verbose verbose = .false. call mtest_init ( ierr ) call mpi_comm_size( MPI_COMM_WORLD, size, ierr ) call mpi_comm_rank( MPI_COMM_WORLD, rank, ierr ) if (size .lt. 2) then print *, "Must have at least 2 processes" call MPI_Abort( MPI_COMM_WORLD, 1, ierr ) endif errs = 0 allocate(sndbuf(7,100)) allocate(rcvbuf(7,100)) do j=1,100 do i=1,7 sndbuf(i,j) = (i+j) * 1.0 enddo enddo do i=1,count blocklens(i) = 7 enddo ! bug occurs when first two displacements are 0 displs(1) = 0 displs(2) = 0 displs(3) = 10 displs(4) = 10 call mpi_type_indexed( count, blocklens, displs*blocklens(1), & & MPI_DOUBLE_PRECISION, type, ierr ) call mpi_type_commit( type, ierr ) ! send using this new type if (rank .eq. 0) then call mpi_send( sndbuf(1,1), 1, type, 1, 0, MPI_COMM_WORLD,ierr ) else if (rank .eq. 1) then xfersize=count * blocklens(1) call mpi_recv( rcvbuf(1,1), xfersize, MPI_DOUBLE_PRECISION, 0, 0, & & MPI_COMM_WORLD,status, ierr ) ! Values that should be sent if (verbose) then ! displacement = 0 j=1 do i=1, 7 print*,'sndbuf(',i,j,') = ',sndbuf(i,j) enddo ! displacement = 10 j=11 do i=1,7 print*,'sndbuf(',i,j,') = ',sndbuf(i,j) enddo print*,' ' ! Values received do j=1,count do i=1,7 print*,'rcvbuf(',i,j,') = ',rcvbuf(i,j) enddo enddo endif ! Error checking do j=1,2 do i=1,7 if (rcvbuf(i,j) .ne. sndbuf(i,1)) then print*,'ERROR in rcvbuf(',i,j,')' print*,'Received ', rcvbuf(i,j),' expected ',sndbuf(i,11) errs = errs+1 endif enddo enddo do j=3,4 do i=1,7 if (rcvbuf(i,j) .ne. sndbuf(i,11)) then print*,'ERROR in rcvbuf(',i,j,')' print*,'Received ', rcvbuf(i,j),' expected ',sndbuf(i,11) errs = errs+1 endif enddo enddo endif ! call mpi_type_free( type, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/datatype/createf90.f900000644000175000017500000000440412620254305020675 0ustar mbanckmbanck! ! (C) 2004 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer ierr integer errs integer nints, nadds, ndtypes, combiner integer nparms(2), dummy(1) integer (kind=MPI_ADDRESS_KIND) adummy(1) integer ntype1, nsize, ntype2, ntype3, i ! ! Test the Type_create_f90_xxx routines ! errs = 0 call mtest_init( ierr ) ! integers with upto 9 are 4 bytes integers; r of 4 are 2 byte, ! and r of 2 is 1 byte call mpi_type_create_f90_integer( 9, ntype1, ierr ) ! ! Check with get contents and envelope... call mpi_type_get_envelope( ntype1, nints, nadds, ndtypes, & combiner, ierr ) if (nadds .ne. 0) then errs = errs + 1 print *, "There should be no addresses on created type (r=9)" endif if (ndtypes .ne. 0) then errs = errs + 1 print *, "There should be no datatypes on created type (r=9)" endif if (nints .ne. 1) then errs = errs + 1 print *, "There should be exactly 1 integer on create type (r=9)" endif if (combiner .ne. MPI_COMBINER_F90_INTEGER) then errs = errs + 1 print *, "The combiner should be INTEGER, not ", combiner endif if (nints .eq. 1) then call mpi_type_get_contents( ntype1, 1, 0, 0, & nparms, adummy, dummy, ierr ) if (nparms(1) .ne. 9) then errs = errs + 1 print *, "parameter was ", nparms(1), " should be 9" endif endif call mpi_type_create_f90_integer( 8, ntype2, ierr ) if (ntype1 .eq. ntype2) then errs = errs + 1 print *, "Types with r = 8 and r = 9 are the same, ", & "should be distinct" endif ! ! Check that we don't create new types each time. This test will fail only ! if the MPI implementation checks for un-freed types or runs out of space do i=1, 100000 call mpi_type_create_f90_integer( 8, ntype3, ierr ) enddo call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/datatype/typesubf90.f900000644000175000017500000000425112621010150021112 0ustar mbanckmbanck! This file created from test/mpi/f77/datatype/typesubf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer errs, ierr integer maxn, maxm parameter (maxn=10,maxm=15) integer fullsizes(2), subsizes(2), starts(2) integer fullarr(maxn,maxm),subarr(maxn-3,maxm-4) integer i,j, ssize integer newtype, size, rank, ans errs = 0 call mtest_init( ierr ) call mpi_comm_size( MPI_COMM_WORLD, size, ierr ) call mpi_comm_rank( MPI_COMM_WORLD, rank, ierr ) ! ! Create a Fortran-style subarray fullsizes(1) = maxn fullsizes(2) = maxm subsizes(1) = maxn - 3 subsizes(2) = maxm - 4 ! starts are from zero, even in Fortran starts(1) = 1 starts(2) = 2 ! In Fortran 90 notation, the original array is ! integer a(maxn,maxm) ! and the subarray is ! a(1+1:(maxn-3) +(1+1)-1,2+1:(maxm-4)+(2+1)-1) ! i.e., a (start:(len + start - 1),...) call mpi_type_create_subarray( 2, fullsizes, subsizes, starts, & & MPI_ORDER_FORTRAN, MPI_INTEGER, newtype, ierr ) call mpi_type_commit( newtype, ierr ) ! ! Prefill the array do j=1, maxm do i=1, maxn fullarr(i,j) = (i-1) + (j-1) * maxn enddo enddo do j=1, subsizes(2) do i=1, subsizes(1) subarr(i,j) = -1 enddo enddo ssize = subsizes(1)*subsizes(2) call mpi_sendrecv( fullarr, 1, newtype, rank, 0, & & subarr, ssize, MPI_INTEGER, rank, 0, & & MPI_COMM_WORLD, MPI_STATUS_IGNORE, ierr ) ! ! Check the data do j=1, subsizes(2) do i=1, subsizes(1) ans = (i+starts(1)-1) + (j+starts(2)-1) * maxn if (subarr(i,j) .ne. ans) then errs = errs + 1 if (errs .le. 10) then print *, rank, 'subarr(',i,',',j,') = ', subarr(i,j) endif endif enddo enddo call mpi_type_free( newtype, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/datatype/kinds.f900000644000175000017500000000635312620254305020230 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2011 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! This program tests that all of the integer kinds defined in MPI 2.2 are ! available. ! program main use mpi integer (kind=MPI_ADDRESS_KIND) aint, taint integer (kind=MPI_OFFSET_KIND) oint, toint integer (kind=MPI_INTEGER_KIND) iint, tiint integer s(MPI_STATUS_SIZE) integer i, wsize, wrank, ierr, errs ! errs = 0 ! call MTEST_INIT(ierr) call MPI_COMM_SIZE(MPI_COMM_WORLD,wsize,ierr) call MPI_COMM_RANK(MPI_COMM_WORLD,wrank,ierr) if (wsize .lt. 2) then print *, "This test requires at least 2 processes" call MPI_ABORT( MPI_COMM_WORLD, 1, ierr ) endif ! ! Some compilers (e.g., gfortran) will issue an error if, at compile time, ! an assignment would cause overflow, even if appropriated guarded. To ! avoid this problem, we must compute the value in the integer (the ! code here is simple; there are faster fixes for this but this is easy if (wrank .eq. 0) then if (range(aint) .ge. 10) then aint = 1 do i=1, range(aint)-1 aint = aint * 10 enddo aint = aint - 1 else aint = 12345678 endif if (range(oint) .ge. 10) then oint = 1 do i=1, range(oint)-1 oint = oint * 10 enddo oint = oint - 1 else oint = 12345678 endif if (range(iint) .ge. 10) then iint = 1 do i=1, range(iint)-1 iint = iint * 10 enddo iint = iint - 1 else iint = 12345678 endif call MPI_SEND( aint, 1, MPI_AINT, 1, 0, MPI_COMM_WORLD, ierr ) call MPI_SEND( oint, 1, MPI_OFFSET, 1, 1, MPI_COMM_WORLD, ierr ) call MPI_SEND( iint, 1, MPI_INTEGER, 1, 2, MPI_COMM_WORLD, ierr ) ! else if (wrank .eq. 1) then if (range(taint) .ge. 10) then taint = 1 do i=1, range(taint)-1 taint = taint * 10 enddo taint = taint - 1 else taint = 12345678 endif if (range(toint) .ge. 10) then toint = 1 do i=1, range(toint)-1 toint = toint * 10 enddo toint = toint - 1 else toint = 12345678 endif if (range(tiint) .ge. 10) then tiint = 1 do i=1, range(tiint)-1 tiint = tiint * 10 enddo tiint = tiint - 1 else tiint = 12345678 endif call MPI_RECV( aint, 1, MPI_AINT, 0, 0, MPI_COMM_WORLD, s, ierr ) if (taint .ne. aint) then print *, "Address-sized int not correctly transfered" print *, "Value should be ", taint, " but is ", aint errs = errs + 1 endif call MPI_RECV( oint, 1, MPI_OFFSET, 0, 1, MPI_COMM_WORLD, s, ierr ) if (toint .ne. oint) then print *, "Offset-sized int not correctly transfered" print *, "Value should be ", toint, " but is ", oint errs = errs + 1 endif call MPI_RECV( iint, 1, MPI_INTEGER, 0, 2, MPI_COMM_WORLD, s, ierr ) if (tiint .ne. iint) then print *, "Integer (by kind) not correctly transfered" print *, "Value should be ", tiint, " but is ", iint errs = errs + 1 endif ! endif ! call MTEST_FINALIZE(errs) call MPI_FINALIZE(ierr) end mpi-testsuite-3.2+dfsg/f90/datatype/typesnamef90.f900000644000175000017500000000347712621010150021435 0ustar mbanckmbanck! This file created from test/mpi/f77/datatype/typesnamef.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi character*(MPI_MAX_OBJECT_NAME) cname integer rlen, ln integer ntype1, ntype2, errs, ierr errs = 0 call MTest_Init( ierr ) call mpi_type_vector( 10, 1, 100, MPI_INTEGER, ntype1, ierr ) rlen = -1 cname = 'XXXXXX' call mpi_type_get_name( ntype1, cname, rlen, ierr ) if (rlen .ne. 0) then errs = errs + 1 print *, ' Expected length 0, got ', rlen endif rlen = 0 do ln=MPI_MAX_OBJECT_NAME,1,-1 if (cname(ln:ln) .ne. ' ') then rlen = ln goto 100 endif enddo 100 continue if (rlen .ne. 0) then errs = errs + 1 print *, 'Datatype name is not all blank' endif ! ! now add a name, then dup call mpi_type_set_name( ntype1, 'a vector type', ierr ) call mpi_type_dup( ntype1, ntype2, ierr ) rlen = -1 cname = 'XXXXXX' call mpi_type_get_name( ntype2, cname, rlen, ierr ) if (rlen .ne. 0) then errs = errs + 1 print *, ' (type2) Expected length 0, got ', rlen endif rlen = 0 do ln=MPI_MAX_OBJECT_NAME,1,-1 if (cname(ln:ln) .ne. ' ') then rlen = ln goto 110 endif enddo 110 continue if (rlen .ne. 0) then errs = errs + 1 print *, ' (type2) Datatype name is not all blank' endif call mpi_type_free( ntype1, ierr ) call mpi_type_free( ntype2, ierr ) call MTest_Finalize( errs ) call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/datatype/Makefile.am-stamp0000644000175000017500000000001212621010150021725 0ustar mbanckmbancktimestamp mpi-testsuite-3.2+dfsg/f90/datatype/gaddressf90.f900000644000175000017500000000200112621010150021202 0ustar mbanckmbanck! This file created from test/mpi/f77/datatype/gaddressf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer max_asizev parameter (max_asizev=2) integer (kind=MPI_ADDRESS_KIND) aint, aintv(max_asizev) integer iarray(200), gap, intsize integer ierr, errs errs = 0 call MPI_Init(ierr) call MPI_Get_address( iarray(1), aintv(1), ierr ) call MPI_Get_address( iarray(200), aintv(2), ierr ) gap = aintv(2) - aintv(1) call MPI_Type_size( MPI_INTEGER, intsize, ierr ) if (gap .ne. 199 * intsize) then errs = errs + 1 print *, ' Using get_address, computed a gap of ', gap print *, ' Expected a gap of ', 199 * intsize endif if (errs .gt. 0) then print *, ' Found ', errs, ' errors' else print *, ' No Errors' endif call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/Makefile.in0000644000175000017500000005236412621010234017025 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = f90 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = testlist CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/testlist.in \ $(top_srcdir)/Makefile_f90.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F90 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f90/util/mtestf90.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist.in static_subdirs = util timer attr coll datatype pt2pt info comm topo ext init \ misc f90types profile SUBDIRS = $(static_subdirs) $(rmadir) $(spawndir) $(iodir) DIST_SUBDIRS = $(static_subdirs) rma spawn io all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f90.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f90/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f90/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f90.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): testlist: $(top_builddir)/config.status $(srcdir)/testlist.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic cscopelist-am ctags ctags-am \ distclean distclean-generic distclean-tags distdir dvi dvi-am \ html html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile $(top_builddir)/f90/util/mtestf90.o: $(top_srcdir)/f90/util/mtestf90.f90 (cd $(top_builddir)/f90/util && $(MAKE) mtestf90.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f90/spawn/0000755000175000017500000000000012621010235016077 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f90/spawn/spawnmultf03.f900000644000175000017500000001310612620254305020772 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! This tests spawn_mult by using the same executable but different ! command-line options. ! program main ! declared on the old sparc compilers use mpi integer errs, err integer rank, size, rsize, wsize, i integer np(2) integer infos(2) integer errcodes(2) integer parentcomm, intercomm integer status(MPI_STATUS_SIZE) character*(10) inargv(2,6), outargv(2,6) character*(30) cmds(2) character*(80) argv(64) integer argc integer ierr integer can_spawn ! ! Arguments are stored by rows, not columns in the vector. ! We write the data in a way that looks like the transpose, ! since Fortran stores by column data inargv /"a", "-p", & & "b=c", "27", & & "d e", "-echo", & & "-pf", " ", & & "Ss", " ", & & " ", " "/ data outargv /"a", "-p", & & "b=c", "27", & & "d e", "-echo", & & "-pf", " ", & & "Ss", " ", & & " ", " "/ errs = 0 call MTest_Init( ierr ) call MTestSpawnPossible( can_spawn, errs ) if ( can_spawn .eq. 0 ) then call MTest_Finalize( errs ) goto 300 endif call MPI_Comm_get_parent( parentcomm, ierr ) if (parentcomm .eq. MPI_COMM_NULL) then ! Create 2 more processes cmds(1) = "./spawnmultf03" cmds(2) = "./spawnmultf03" np(1) = 1 np(2) = 1 infos(1)= MPI_INFO_NULL infos(2)= MPI_INFO_NULL call MPI_Comm_spawn_multiple( 2, cmds, inargv, & & np, infos, 0, & & MPI_COMM_WORLD, intercomm, errcodes, ierr ) else intercomm = parentcomm endif ! We now have a valid intercomm call MPI_Comm_remote_size( intercomm, rsize, ierr ) call MPI_Comm_size( intercomm, size, ierr ) call MPI_Comm_rank( intercomm, rank, ierr ) if (parentcomm .eq. MPI_COMM_NULL) then ! Master if (rsize .ne. np(1) + np(2)) then errs = errs + 1 print *, "Did not create ", np(1)+np(2), & & " processes (got ", rsize, ")" endif do i=0, rsize-1 call MPI_Send( i, 1, MPI_INTEGER, i, 0, intercomm, ierr ) enddo ! We could use intercomm reduce to get the errors from the ! children, but we'll use a simpler loop to make sure that ! we get valid data do i=0, rsize-1 call MPI_Recv( err, 1, MPI_INTEGER, i, 1, intercomm, & & MPI_STATUS_IGNORE, ierr ) errs = errs + err enddo else ! Child ! FIXME: This assumes that stdout is handled for the children ! (the error count will still be reported to the parent) argc = command_argument_count() do i=1, argc call get_command_argument( i, argv(i) ) enddo if (size .ne. 2) then errs = errs + 1 print *, "(Child) Did not create ", 2, & & " processes (got ",size, ")" call mpi_comm_size( MPI_COMM_WORLD, wsize, ierr ) if (wsize .eq. 2) then errs = errs + 1 print *, "(Child) world size is 2 but ", & & " local intercomm size is not 2" endif endif call MPI_Recv( i, 1, MPI_INTEGER, 0, 0, intercomm, status, ierr & & ) if (i .ne. rank) then errs = errs + 1 print *, "Unexpected rank on child ", rank, "(",i,")" endif ! Check the command line do i=1, argc if (outargv(rank+1,i) .eq. " ") then errs = errs + 1 print *, "Wrong number of arguments (", argc, ")" goto 200 endif if (argv(i) .ne. outargv(rank+1,i)) then errs = errs + 1 print *, "Found arg ", argv(i), " but expected ", & & outargv(rank+1,i) endif enddo 200 continue if (outargv(rank+1,i) .ne. " ") then ! We had too few args in the spawned command errs = errs + 1 print *, "Too few arguments to spawned command" endif ! Send the errs back to the master process call MPI_Ssend( errs, 1, MPI_INTEGER, 0, 1, intercomm, ierr ) endif ! It isn't necessary to free the intercomm, but it should not hurt call MPI_Comm_free( intercomm, ierr ) ! Note that the MTest_Finalize get errs only over COMM_WORLD if (parentcomm .eq. MPI_COMM_NULL) then call MTest_Finalize( errs ) endif 300 continue call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/spawn/testlist.ap0000644000175000017500000000010012620254305020272 0ustar mbanckmbanck@F03SPAWNARGTEST@spawnargvf03 1 @F03SPAWNARGTEST@spawnmultf03 1 mpi-testsuite-3.2+dfsg/f90/spawn/Makefile.in0000644000175000017500000005511512621010235020153 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This Makefile.am generated automatically by f77tof90 # from test/mpi/f77/spawn/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = namepubf90$(EXEEXT) spawnf90$(EXEEXT) \ spawnargvf90$(EXEEXT) spawnmultf90$(EXEEXT) \ spawnmult2f90$(EXEEXT) connaccf90$(EXEEXT) \ spawnargvf03$(EXEEXT) spawnmultf03$(EXEEXT) @MAINTAINER_MODE_TRUE@am__append_1 = Makefile.am-stamp testlist.ap Makefile.ap subdir = f90/spawn ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = testlist CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) connaccf90_SOURCES = connaccf90.f90 connaccf90_OBJECTS = connaccf90.$(OBJEXT) connaccf90_LDADD = $(LDADD) connaccf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o namepubf90_SOURCES = namepubf90.f90 namepubf90_OBJECTS = namepubf90.$(OBJEXT) namepubf90_LDADD = $(LDADD) namepubf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o am_spawnargvf03_OBJECTS = spawnargvf03.$(OBJEXT) spawnargvf03_OBJECTS = $(am_spawnargvf03_OBJECTS) spawnargvf03_LDADD = $(LDADD) spawnargvf03_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o spawnargvf90_SOURCES = spawnargvf90.f90 spawnargvf90_OBJECTS = spawnargvf90.$(OBJEXT) am__DEPENDENCIES_1 = spawnargvf90_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_1) spawnf90_SOURCES = spawnf90.f90 spawnf90_OBJECTS = spawnf90.$(OBJEXT) spawnf90_LDADD = $(LDADD) spawnf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o spawnmult2f90_SOURCES = spawnmult2f90.f90 spawnmult2f90_OBJECTS = spawnmult2f90.$(OBJEXT) spawnmult2f90_LDADD = $(LDADD) spawnmult2f90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o am_spawnmultf03_OBJECTS = spawnmultf03.$(OBJEXT) spawnmultf03_OBJECTS = $(am_spawnmultf03_OBJECTS) spawnmultf03_LDADD = $(LDADD) spawnmultf03_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o spawnmultf90_SOURCES = spawnmultf90.f90 spawnmultf90_OBJECTS = spawnmultf90.$(OBJEXT) spawnmultf90_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_1) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = SOURCES = connaccf90.f90 namepubf90.f90 $(spawnargvf03_SOURCES) \ spawnargvf90.f90 spawnf90.f90 spawnmult2f90.f90 \ $(spawnmultf03_SOURCES) spawnmultf90.f90 DIST_SOURCES = connaccf90.f90 namepubf90.f90 $(spawnargvf03_SOURCES) \ spawnargvf90.f90 spawnf90.f90 spawnmult2f90.f90 \ $(spawnmultf03_SOURCES) spawnmultf90.f90 am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/testlist.in \ $(top_srcdir)/Makefile_f90.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F90 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f90/util/mtestf90.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist.in $(am__append_1) # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 # ensure that dependent tests will be rebuilt when type1aint.h is updated # add "-lU77" (or equivalent) to the link line for these tests that use getarg spawnargvf90_LDADD = $(LDADD) $(FC_GETARG_LIBS) spawnmultf90_LDADD = $(LDADD) $(FC_GETARG_LIBS) @MAINTAINER_MODE_TRUE@MAINTAINERCLEANFILES = Makefile.am-stamp spawnargvf03_SOURCES = spawnargvf03.f90 spawnmultf03_SOURCES = spawnmultf03.f90 all: all-am .SUFFIXES: .SUFFIXES: .f90 .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f90.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f90/spawn/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f90/spawn/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f90.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): testlist: $(top_builddir)/config.status $(srcdir)/testlist.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) connaccf90$(EXEEXT): $(connaccf90_OBJECTS) $(connaccf90_DEPENDENCIES) $(EXTRA_connaccf90_DEPENDENCIES) @rm -f connaccf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(connaccf90_OBJECTS) $(connaccf90_LDADD) $(LIBS) namepubf90$(EXEEXT): $(namepubf90_OBJECTS) $(namepubf90_DEPENDENCIES) $(EXTRA_namepubf90_DEPENDENCIES) @rm -f namepubf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(namepubf90_OBJECTS) $(namepubf90_LDADD) $(LIBS) spawnargvf03$(EXEEXT): $(spawnargvf03_OBJECTS) $(spawnargvf03_DEPENDENCIES) $(EXTRA_spawnargvf03_DEPENDENCIES) @rm -f spawnargvf03$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(spawnargvf03_OBJECTS) $(spawnargvf03_LDADD) $(LIBS) spawnargvf90$(EXEEXT): $(spawnargvf90_OBJECTS) $(spawnargvf90_DEPENDENCIES) $(EXTRA_spawnargvf90_DEPENDENCIES) @rm -f spawnargvf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(spawnargvf90_OBJECTS) $(spawnargvf90_LDADD) $(LIBS) spawnf90$(EXEEXT): $(spawnf90_OBJECTS) $(spawnf90_DEPENDENCIES) $(EXTRA_spawnf90_DEPENDENCIES) @rm -f spawnf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(spawnf90_OBJECTS) $(spawnf90_LDADD) $(LIBS) spawnmult2f90$(EXEEXT): $(spawnmult2f90_OBJECTS) $(spawnmult2f90_DEPENDENCIES) $(EXTRA_spawnmult2f90_DEPENDENCIES) @rm -f spawnmult2f90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(spawnmult2f90_OBJECTS) $(spawnmult2f90_LDADD) $(LIBS) spawnmultf03$(EXEEXT): $(spawnmultf03_OBJECTS) $(spawnmultf03_DEPENDENCIES) $(EXTRA_spawnmultf03_DEPENDENCIES) @rm -f spawnmultf03$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(spawnmultf03_OBJECTS) $(spawnmultf03_LDADD) $(LIBS) spawnmultf90$(EXEEXT): $(spawnmultf90_OBJECTS) $(spawnmultf90_DEPENDENCIES) $(EXTRA_spawnmultf90_DEPENDENCIES) @rm -f spawnmultf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(spawnmultf90_OBJECTS) $(spawnmultf90_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f90/util/mtestf90.o: $(top_srcdir)/f90/util/mtestf90.f90 (cd $(top_builddir)/f90/util && $(MAKE) mtestf90.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # f77tof90 only replaces output files if the contents differ, so we must use a # separate timestamp file in order avoid constantly trying to remake the f90 # copy of the Makefile when the f77 copy is updated in a way that does not # change its contents @MAINTAINER_MODE_TRUE@$(srcdir)/Makefile.am: $(srcdir)/Makefile.am-stamp @MAINTAINER_MODE_TRUE@$(srcdir)/Makefile.am-stamp: $(master_top_srcdir)/test/mpi/f77/spawn/Makefile.am $(master_top_srcdir)/maint/f77tof90 @MAINTAINER_MODE_TRUE@ ( cd $(master_top_srcdir) && ./maint/f77tof90 test/mpi/f77/spawn test/mpi/f90/spawn Makefile.am Makefile.ap ) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f90/spawn/namepubf90.f900000644000175000017500000000623712621010150020371 0ustar mbanckmbanck! This file created from test/mpi/f77/spawn/namepubf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer errs character*(MPI_MAX_PORT_NAME) port_name character*(MPI_MAX_PORT_NAME) port_name_out character*(256) serv_name integer merr, mclass character*(MPI_MAX_ERROR_STRING) errmsg integer msglen, rank integer ierr errs = 0 call MTest_Init( ierr ) call MPI_Comm_rank(MPI_COMM_WORLD, rank, ierr ) ! Note that according to the MPI standard, port_name must ! have been created by MPI_Open_port. For current testing ! purposes, we'll use a fake name. This test should eventually use ! a valid name from Open_port port_name = 'otherhost:122' serv_name = 'MyTest' call MPI_Comm_set_errhandler( MPI_COMM_WORLD, MPI_ERRORS_RETURN, & & ierr ) if (rank .eq. 0) then merr = -1 call MPI_Publish_name( serv_name, MPI_INFO_NULL, port_name, & & merr ) if (merr .ne. MPI_SUCCESS) then errs = errs + 1 call MPI_Error_string( merr, errmsg, msglen, ierr ) print *, "Error in Publish_name ", errmsg(1:msglen) endif call MPI_Barrier(MPI_COMM_WORLD, ierr ) call MPI_Barrier(MPI_COMM_WORLD, ierr ) merr = -1 call MPI_Unpublish_name( serv_name, MPI_INFO_NULL, port_name, & & merr) if (merr .ne. MPI_SUCCESS) then errs = errs + 1 call MPI_Error_string( merr, errmsg, msglen, ierr ) print *, "Error in Unpublish name ", errmsg(1:msglen) endif else call MPI_Barrier(MPI_COMM_WORLD, ierr ) merr = -1 call MPI_Lookup_name( serv_name, MPI_INFO_NULL, port_name_out, & & merr) if (merr .ne. MPI_SUCCESS) then errs = errs + 1 call MPI_Error_string( merr, errmsg, msglen, ierr ) print *, "Error in Lookup name", errmsg(1:msglen) else if (port_name .ne. port_name_out) then errs = errs + 1 print *, "Lookup name returned the wrong value (", & & port_name_out, "), expected (", port_name, ")" endif endif call MPI_Barrier(MPI_COMM_WORLD, ierr ) endif call MPI_Barrier(MPI_COMM_WORLD, ierr ) merr = -1 call MPI_Lookup_name( serv_name, MPI_INFO_NULL, port_name_out, & & merr ) if (merr .eq. MPI_SUCCESS) then errs = errs + 1 print *, "Lookup name returned name after it was unpublished" else ! Must be class MPI_ERR_NAME call MPI_Error_class( merr, mclass, ierr ) if (mclass .ne. MPI_ERR_NAME) then errs = errs + 1 call MPI_Error_string( merr, errmsg, msglen, ierr ) print *, "Lookup name returned the wrong error class & & (",mclass,"), msg ", errmsg endif endif call MTest_Finalize( errs ) call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/spawn/Makefile.ap0000644000175000017500000000023012620254305020140 0ustar mbanckmbanck## vim: set ft=automake : noinst_PROGRAMS += spawnargvf03 spawnmultf03 spawnargvf03_SOURCES = spawnargvf03.f90 spawnmultf03_SOURCES = spawnmultf03.f90 mpi-testsuite-3.2+dfsg/f90/spawn/spawnmultf90.f900000644000175000017500000001326212621010150020770 0ustar mbanckmbanck! This file created from test/mpi/f77/spawn/spawnmultf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! This is a special test that requires an getarg/iargc routine ! This tests spawn_mult by using the same executable but different ! command-line options. ! program main ! declared on the old sparc compilers use mpi integer errs, err integer rank, size, rsize, wsize, i integer np(2) integer infos(2) integer errcodes(2) integer parentcomm, intercomm integer status(MPI_STATUS_SIZE) character*(10) inargv(2,6), outargv(2,6) character*(30) cmds(2) character*(80) argv(64) integer argc integer ierr integer can_spawn ! ! Arguments are stored by rows, not columns in the vector. ! We write the data in a way that looks like the transpose, ! since Fortran stores by column data inargv /"a", "-p", & & "b=c", "27", & & "d e", "-echo", & & "-pf", " ", & & "Ss", " ", & & " ", " "/ data outargv /"a", "-p", & & "b=c", "27", & & "d e", "-echo", & & "-pf", " ", & & "Ss", " ", & & " ", " "/ errs = 0 call MTest_Init( ierr ) call MTestSpawnPossible( can_spawn, errs ) if ( can_spawn .eq. 0 ) then call MTest_Finalize( errs ) goto 300 endif call MPI_Comm_get_parent( parentcomm, ierr ) if (parentcomm .eq. MPI_COMM_NULL) then ! Create 2 more processes cmds(1) = "./spawnmultf90" cmds(2) = "./spawnmultf90" np(1) = 1 np(2) = 1 infos(1)= MPI_INFO_NULL infos(2)= MPI_INFO_NULL call MPI_Comm_spawn_multiple( 2, cmds, inargv, & & np, infos, 0, & & MPI_COMM_WORLD, intercomm, errcodes, ierr ) else intercomm = parentcomm endif ! We now have a valid intercomm call MPI_Comm_remote_size( intercomm, rsize, ierr ) call MPI_Comm_size( intercomm, size, ierr ) call MPI_Comm_rank( intercomm, rank, ierr ) if (parentcomm .eq. MPI_COMM_NULL) then ! Master if (rsize .ne. np(1) + np(2)) then errs = errs + 1 print *, "Did not create ", np(1)+np(2), & & " processes (got ", rsize, ")" endif do i=0, rsize-1 call MPI_Send( i, 1, MPI_INTEGER, i, 0, intercomm, ierr ) enddo ! We could use intercomm reduce to get the errors from the ! children, but we'll use a simpler loop to make sure that ! we get valid data do i=0, rsize-1 call MPI_Recv( err, 1, MPI_INTEGER, i, 1, intercomm, & & MPI_STATUS_IGNORE, ierr ) errs = errs + err enddo else ! Child ! FIXME: This assumes that stdout is handled for the children ! (the error count will still be reported to the parent) argc = iargc() do i=1, argc call getarg( i, argv(i) ) enddo if (size .ne. 2) then errs = errs + 1 print *, "(Child) Did not create ", 2, & & " processes (got ",size, ")" call mpi_comm_size( MPI_COMM_WORLD, wsize, ierr ) if (wsize .eq. 2) then errs = errs + 1 print *, "(Child) world size is 2 but ", & & " local intercomm size is not 2" endif endif call MPI_Recv( i, 1, MPI_INTEGER, 0, 0, intercomm, status, ierr & & ) if (i .ne. rank) then errs = errs + 1 print *, "Unexpected rank on child ", rank, "(",i,")" endif ! Check the command line do i=1, argc if (outargv(rank+1,i) .eq. " ") then errs = errs + 1 print *, "Wrong number of arguments (", argc, ")" goto 200 endif if (argv(i) .ne. outargv(rank+1,i)) then errs = errs + 1 print *, "Found arg ", argv(i), " but expected ", & & outargv(rank+1,i) endif enddo 200 continue if (outargv(rank+1,i) .ne. " ") then ! We had too few args in the spawned command errs = errs + 1 print *, "Too few arguments to spawned command" endif ! Send the errs back to the master process call MPI_Ssend( errs, 1, MPI_INTEGER, 0, 1, intercomm, ierr ) endif ! It isn't necessary to free the intercomm, but it should not hurt call MPI_Comm_free( intercomm, ierr ) ! Note that the MTest_Finalize get errs only over COMM_WORLD if (parentcomm .eq. MPI_COMM_NULL) then call MTest_Finalize( errs ) endif 300 continue call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/spawn/spawnf90.f900000644000175000017500000000607512621010150020072 0ustar mbanckmbanck! This file created from test/mpi/f77/spawn/spawnf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer errs, err integer rank, size, rsize, i integer np integer errcodes(2) integer parentcomm, intercomm integer status(MPI_STATUS_SIZE) integer ierr integer can_spawn errs = 0 np = 2 call MTest_Init( ierr ) call MTestSpawnPossible( can_spawn, errs ) if ( can_spawn .eq. 0 ) then call MTest_Finalize( errs ) goto 300 endif call MPI_Comm_get_parent( parentcomm, ierr ) if (parentcomm .eq. MPI_COMM_NULL) then ! Create 2 more processes call MPI_Comm_spawn( "./spawnf90", MPI_ARGV_NULL, np, & & MPI_INFO_NULL, 0, MPI_COMM_WORLD, intercomm, errcodes & & ,ierr ) else intercomm = parentcomm endif ! We now have a valid intercomm call MPI_Comm_remote_size( intercomm, rsize, ierr ) call MPI_Comm_size( intercomm, size, ierr ) call MPI_Comm_rank( intercomm, rank, ierr ) if (parentcomm .eq. MPI_COMM_NULL) then ! Master if (rsize .ne. np) then errs = errs + 1 print *, "Did not create ", np, " processes (got ", rsize, & & ")" endif if (rank .eq. 0) then do i=0,rsize-1 call MPI_Send( i, 1, MPI_INTEGER, i, 0, intercomm, ierr & & ) enddo ! We could use intercomm reduce to get the errors from the ! children, but we'll use a simpler loop to make sure that ! we get valid data do i=0, rsize-1 call MPI_Recv( err, 1, MPI_INTEGER, i, 1, intercomm, & & MPI_STATUS_IGNORE, ierr ) errs = errs + err enddo endif else ! Child if (size .ne. np) then errs = errs + 1 print *, "(Child) Did not create ", np, " processes (got " & & ,size, ")" endif call MPI_Recv( i, 1, MPI_INTEGER, 0, 0, intercomm, status, & & ierr ) if (i .ne. rank) then errs = errs + 1 print *, "Unexpected rank on child ", rank, "(",i,")" endif ! Send the errs back to the master process call MPI_Ssend( errs, 1, MPI_INTEGER, 0, 1, intercomm, ierr ) endif ! It isn't necessary to free the intercomm, but it should not hurt call MPI_Comm_free( intercomm, ierr ) ! Note that the MTest_Finalize get errs only over COMM_WORLD ! Note also that both the parent and child will generate "No ! Errors" if both call MTest_Finalize if (parentcomm .eq. MPI_COMM_NULL) then call MTest_Finalize( errs ) endif 300 continue call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/spawn/Makefile.am0000644000175000017500000000317512621010150020135 0ustar mbanckmbanck# This Makefile.am generated automatically by f77tof90 # from test/mpi/f77/spawn/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f90.mtest EXTRA_DIST = testlist.in # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 noinst_PROGRAMS = namepubf90 spawnf90 spawnargvf90 spawnmultf90 spawnmult2f90 connaccf90 ## type1aint.h will be distributed because it's listed in AC_CONFIG_FILES/AC_OUTPUT # ensure that dependent tests will be rebuilt when type1aint.h is updated # add "-lU77" (or equivalent) to the link line for these tests that use getarg spawnargvf90_LDADD = $(LDADD) $(FC_GETARG_LIBS) spawnmultf90_LDADD = $(LDADD) $(FC_GETARG_LIBS) if MAINTAINER_MODE # f77tof90 only replaces output files if the contents differ, so we must use a # separate timestamp file in order avoid constantly trying to remake the f90 # copy of the Makefile when the f77 copy is updated in a way that does not # change its contents $(srcdir)/Makefile.am: $(srcdir)/Makefile.am-stamp $(srcdir)/Makefile.am-stamp: $(master_top_srcdir)/test/mpi/f77/spawn/Makefile.am $(master_top_srcdir)/maint/f77tof90 ( cd $(master_top_srcdir) && ./maint/f77tof90 test/mpi/f77/spawn test/mpi/f90/spawn Makefile.am Makefile.ap ) MAINTAINERCLEANFILES = Makefile.am-stamp EXTRA_DIST += Makefile.am-stamp testlist.ap Makefile.ap endif MAINTAINER_MODE ## vim: set ft=automake : noinst_PROGRAMS += spawnargvf03 spawnmultf03 spawnargvf03_SOURCES = spawnargvf03.f90 spawnmultf03_SOURCES = spawnmultf03.f90 mpi-testsuite-3.2+dfsg/f90/spawn/testlist.in0000644000175000017500000000036512621010150020302 0ustar mbanckmbanck# This file generated by f77tof90 @namepub_tests@namepubf90 2 spawnf90 1 @F77SPAWNARGTEST@spawnargvf90 1 @namepub_tests@connaccf90 2 @F77SPAWNARGTEST@spawnmultf90 1 spawnmult2f90 2 @F03SPAWNARGTEST@spawnargvf03 1 @F03SPAWNARGTEST@spawnmultf03 1 mpi-testsuite-3.2+dfsg/f90/spawn/spawnmult2f90.f900000644000175000017500000001077712621010150021062 0ustar mbanckmbanck! This file created from test/mpi/f77/spawn/spawnmult2f.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! This tests spawn_mult by using the same executable and no command-line ! options. The attribute MPI_APPNUM is used to determine which ! executable is running. ! program main use mpi integer (kind=MPI_ADDRESS_KIND) aint integer errs, err integer rank, size, rsize, wsize, i integer np(2) integer infos(2) integer errcodes(2) integer parentcomm, intercomm integer status(MPI_STATUS_SIZE) character*(30) cmds(2) integer appnum logical flag integer ierr integer can_spawn errs = 0 call MTest_Init( ierr ) call MTestSpawnPossible( can_spawn, errs ) if ( can_spawn .eq. 0 ) then call MTest_Finalize( errs ) goto 300 endif call MPI_Comm_get_parent( parentcomm, ierr ) if (parentcomm .eq. MPI_COMM_NULL) then ! Create 2 more processes cmds(1) = "./spawnmult2f90" cmds(2) = "./spawnmult2f90" np(1) = 1 np(2) = 1 infos(1)= MPI_INFO_NULL infos(2)= MPI_INFO_NULL call MPI_Comm_spawn_multiple( 2, cmds, MPI_ARGVS_NULL, & & np, infos, 0, & & MPI_COMM_WORLD, intercomm, errcodes, ierr ) else intercomm = parentcomm endif ! We now have a valid intercomm call MPI_Comm_remote_size( intercomm, rsize, ierr ) call MPI_Comm_size( intercomm, size, ierr ) call MPI_Comm_rank( intercomm, rank, ierr ) if (parentcomm .eq. MPI_COMM_NULL) then ! Master if (rsize .ne. np(1) + np(2)) then errs = errs + 1 print *, "Did not create ", np(1)+np(2), & & " processes (got ", rsize, ")" endif ! Allow a multi-process parent if (rank .eq. 0) then do i=0, rsize-1 call MPI_Send( i, 1, MPI_INTEGER, i, 0, intercomm, & & ierr ) enddo ! We could use intercomm reduce to get the errors from the ! children, but we'll use a simpler loop to make sure that ! we get valid data do i=0, rsize-1 call MPI_Recv( err, 1, MPI_INTEGER, i, 1, intercomm, & & MPI_STATUS_IGNORE, ierr ) errs = errs + err enddo endif else ! Child ! FIXME: This assumes that stdout is handled for the children ! (the error count will still be reported to the parent) if (size .ne. 2) then errs = errs + 1 print *, "(Child) Did not create ", 2, & & " processes (got ",size, ")" call mpi_comm_size( MPI_COMM_WORLD, wsize, ierr ) if (wsize .eq. 2) then errs = errs + 1 print *, "(Child) world size is 2 but ", & & " local intercomm size is not 2" endif endif call MPI_Recv( i, 1, MPI_INTEGER, 0, 0, intercomm, status, ierr & & ) if (i .ne. rank) then errs = errs + 1 print *, "Unexpected rank on child ", rank, "(",i,")" endif ! ! Check for correct APPNUM call mpi_comm_get_attr( MPI_COMM_WORLD, MPI_APPNUM, aint, & & flag, ierr ) ! My appnum should be my rank in comm world if (flag) then appnum = aint if (appnum .ne. rank) then errs = errs + 1 print *, "appnum is ", appnum, " but should be ", rank endif else errs = errs + 1 print *, "appnum was not set" endif ! Send the errs back to the master process call MPI_Ssend( errs, 1, MPI_INTEGER, 0, 1, intercomm, ierr ) endif ! It isn't necessary to free the intercomm, but it should not hurt call MPI_Comm_free( intercomm, ierr ) ! Note that the MTest_Finalize get errs only over COMM_WORLD if (parentcomm .eq. MPI_COMM_NULL) then call MTest_Finalize( errs ) endif 300 continue call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/spawn/connaccf90.f900000644000175000017500000001176012621010150020343 0ustar mbanckmbanck! This file created from test/mpi/f77/spawn/connaccf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer size, rank, ierr, errs, eclass integer color, comm, intercomm integer s1, s2 character*(MPI_MAX_PORT_NAME) portname errs = 0 call mtest_init( ierr ) call mpi_comm_size( MPI_COMM_WORLD, size, ierr ) call mpi_comm_rank( MPI_COMM_WORLD, rank, ierr ) if (size .lt. 2) then print *, 'This example must have at least 2 processes' call mpi_abort( MPI_COMM_WORLD, 1, ierr ) endif ! ! Part of this test is to ensure that lookups cleanly fail when ! a name is not present. This code is used to ensure that the ! name is not in use before the test. ! The MPI Standard (10.4.4 Name Publishing) requires that a process that ! has published a name unpublish it before it exits. ! This code attempts to lookup the name that we want to use as the ! service name for this example. If it is found (it should not be, but ! might if an MPI program with this service name exits without unpublishing ! the servicename, and the runtime that provides the name publishing ! leaves the servicename in use. This block of code should not be necessary ! in a robust MPI implementation, but should not cause problems for a correct. ! call mpi_barrier( MPI_COMM_WORLD, ierr ) call mpi_comm_set_errhandler( MPI_COMM_WORLD, MPI_ERRORS_RETURN, & & ierr ) call mpi_lookup_name( "fservtest", MPI_INFO_NULL, portname, ierr ) if (ierr .eq. MPI_SUCCESS) then call mpi_unpublish_name( "fservtest", MPI_INFO_NULL, portname, & & ierr ) endif call mpi_barrier( MPI_COMM_WORLD, ierr ) ! Ignore errors from unpublish_name (such as name-not-found) call mpi_comm_set_errhandler( MPI_COMM_WORLD, & & MPI_ERRORS_ARE_FATAL, ierr ) ! ! The server (accept) side is rank < size/2 and the client (connect) ! side is rank >= size/2 color = 0 if (rank .ge. size/2) color = 1 call mpi_comm_split( MPI_COMM_WORLD, color, rank, comm, ierr ) ! if (rank .lt. size/2) then ! Server call mpi_barrier( MPI_COMM_WORLD, ierr ) if (rank .eq. 0) then call mpi_open_port( MPI_INFO_NULL, portname, ierr ) call mpi_publish_name( "fservtest", MPI_INFO_NULL, & & portname, ierr ) endif call mpi_barrier( MPI_COMM_WORLD, ierr ) call mpi_comm_accept( portname, MPI_INFO_NULL, 0, comm, & & intercomm, ierr ) if (rank .eq. 0) then call mpi_close_port( portname, ierr ) call mpi_unpublish_name( "fservtest", MPI_INFO_NULL, & & portname, ierr ) endif else ! Client call mpi_comm_set_errhandler( MPI_COMM_WORLD,MPI_ERRORS_RETURN, & & ierr ) ierr = MPI_SUCCESS call mpi_lookup_name( "fservtest", MPI_INFO_NULL, & & portname, ierr ) if (ierr .eq. MPI_SUCCESS) then errs = errs + 1 print *, 'lookup name returned a value before published' else call mpi_error_class( ierr, eclass, ierr ) if (eclass .ne. MPI_ERR_NAME) then errs = errs + 1 print *, ' Wrong error class, is ', eclass, ' must be ', & & MPI_ERR_NAME ! See the MPI-2 Standard, 5.4.4 endif endif call mpi_comm_set_errhandler( MPI_COMM_WORLD, & & MPI_ERRORS_ARE_FATAL, ierr ) call mpi_barrier( MPI_COMM_WORLD, ierr ) call mpi_barrier( MPI_COMM_WORLD, ierr ) call mpi_lookup_name( "fservtest", MPI_INFO_NULL, & & portname, ierr ) ! This should not happen (ERRORS_ARE_FATAL), but just in case... if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 print *, ' Major error: errors_are_fatal set but returned' print *, ' non MPI_SUCCESS value. Details:' call MTestPrintErrorMsg( ' Unable to lookup fservtest port', & & ierr ) ! Unable to continue without a valid port call mpi_abort( MPI_COMM_WORLD, 1, ierr ) endif call mpi_comm_connect( portname, MPI_INFO_NULL, 0, comm, & & intercomm, ierr ) endif ! ! Check that this is an acceptable intercomm call mpi_comm_size( intercomm, s1, ierr ) call mpi_comm_remote_size( intercomm, s2, ierr ) if (s1 + s2 .ne. size) then errs = errs + 1 print *, ' Wrong size for intercomm = ', s1+s2 endif call mpi_comm_free(comm, ierr) ! Everyone can now abandon the new intercomm call mpi_comm_disconnect( intercomm, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/spawn/spawnargvf90.f900000644000175000017500000000776712621010150020763 0ustar mbanckmbanck! This file created from test/mpi/f77/spawn/spawnargvf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! This is a special test that requires an getarg/iargc routine ! program main ! declared on the old sparc compilers use mpi integer errs, err integer rank, size, rsize, i integer np integer errcodes(2) integer parentcomm, intercomm integer status(MPI_STATUS_SIZE) character*(10) inargv(6), outargv(6) character*(80) argv(64) integer argc data inargv /"a", "b=c", "d e", "-pf", " Ss", " " / data outargv /"a", "b=c", "d e", "-pf", " Ss", " " / integer ierr integer can_spawn errs = 0 np = 2 call MTest_Init( ierr ) call MTestSpawnPossible( can_spawn, errs ) if ( can_spawn .eq. 0 ) then call MTest_Finalize( errs ) goto 300 endif call MPI_Comm_get_parent( parentcomm, ierr ) if (parentcomm .eq. MPI_COMM_NULL) then ! Create 2 more processes call MPI_Comm_spawn( "./spawnargvf90", inargv, np, & & MPI_INFO_NULL, 0, MPI_COMM_WORLD, intercomm, errcodes, & & ierr ) else intercomm = parentcomm endif ! We now have a valid intercomm call MPI_Comm_remote_size( intercomm, rsize, ierr ) call MPI_Comm_size( intercomm, size, ierr ) call MPI_Comm_rank( intercomm, rank, ierr ) if (parentcomm .eq. MPI_COMM_NULL) then ! Master if (rsize .ne. np) then errs = errs + 1 print *, "Did not create ", np, " processes (got & & ", rsize, ")" endif do i=0, rsize-1 call MPI_Send( i, 1, MPI_INTEGER, i, 0, intercomm, ierr ) enddo ! We could use intercomm reduce to get the errors from the ! children, but we'll use a simpler loop to make sure that ! we get valid data do i=0, rsize-1 call MPI_Recv( err, 1, MPI_INTEGER, i, 1, intercomm, & & MPI_STATUS_IGNORE, ierr ) errs = errs + err enddo else ! Child ! FIXME: This assumes that stdout is handled for the children ! (the error count will still be reported to the parent) argc = iargc() do i=1, argc call getarg( i, argv(i) ) enddo if (size .ne. np) then errs = errs + 1 print *, "(Child) Did not create ", np, " processes (got ", & & size, ")" endif call MPI_Recv( i, 1, MPI_INTEGER, 0, 0, intercomm, status, ierr & & ) if (i .ne. rank) then errs = errs + 1 print *, "Unexpected rank on child ", rank, "(",i,")" endif ! Check the command line do i=1, argc if (outargv(i) .eq. " ") then errs = errs + 1 print *, "Wrong number of arguments (", argc, ")" goto 200 endif if (argv(i) .ne. outargv(i)) then errs = errs + 1 print *, "Found arg ", argv(i), " but expected ", & & outargv(i) endif enddo 200 continue if (outargv(i) .ne. " ") then ! We had too few args in the spawned command errs = errs + 1 print *, "Too few arguments to spawned command" endif ! Send the errs back to the master process call MPI_Ssend( errs, 1, MPI_INTEGER, 0, 1, intercomm, ierr ) endif ! It isn't necessary to free the intercomm, but it should not hurt call MPI_Comm_free( intercomm, ierr ) ! Note that the MTest_Finalize get errs only over COMM_WORLD if (parentcomm .eq. MPI_COMM_NULL) then call MTest_Finalize( errs ) endif 300 continue call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/spawn/Makefile.am-stamp0000644000175000017500000000001212621010150021242 0ustar mbanckmbancktimestamp mpi-testsuite-3.2+dfsg/f90/spawn/spawnargvf03.f900000644000175000017500000001000112620254305020737 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! This test makes use of routines to access the command line added in ! Fortran 2003 ! program main ! declared on the old sparc compilers use mpi integer errs, err integer rank, size, rsize, i integer np integer errcodes(2) integer parentcomm, intercomm integer status(MPI_STATUS_SIZE) character*(10) inargv(6), outargv(6) character*(80) argv(64) integer argc data inargv /"a", "b=c", "d e", "-pf", " Ss", " " / data outargv /"a", "b=c", "d e", "-pf", " Ss", " " / integer ierr integer comm_size integer can_spawn errs = 0 np = 2 call MTest_Init( ierr ) call MTestSpawnPossible( can_spawn, errs ) if ( can_spawn .eq. 0 ) then call MTest_Finalize( errs ) goto 300 endif call MPI_Comm_get_parent( parentcomm, ierr ) if (parentcomm .eq. MPI_COMM_NULL) then ! Create 2 more processes call MPI_Comm_spawn( "./spawnargvf03", inargv, np, & & MPI_INFO_NULL, 0, MPI_COMM_WORLD, intercomm, errcodes, & & ierr ) else intercomm = parentcomm endif ! We now have a valid intercomm call MPI_Comm_remote_size( intercomm, rsize, ierr ) call MPI_Comm_size( intercomm, size, ierr ) call MPI_Comm_rank( intercomm, rank, ierr ) if (parentcomm .eq. MPI_COMM_NULL) then ! Master if (rsize .ne. np) then errs = errs + 1 print *, "Did not create ", np, " processes (got & & ", rsize, ")" endif do i=0, rsize-1 call MPI_Send( i, 1, MPI_INTEGER, i, 0, intercomm, ierr ) enddo ! We could use intercomm reduce to get the errors from the ! children, but we'll use a simpler loop to make sure that ! we get valid data do i=0, rsize-1 call MPI_Recv( err, 1, MPI_INTEGER, i, 1, intercomm, & & MPI_STATUS_IGNORE, ierr ) errs = errs + err enddo else ! Child ! FIXME: This assumes that stdout is handled for the children ! (the error count will still be reported to the parent) argc = command_argument_count() do i=1, argc call get_command_argument( i, argv(i) ) enddo if (size .ne. np) then errs = errs + 1 print *, "(Child) Did not create ", np, " processes (got ", & & size, ")" endif call MPI_Recv( i, 1, MPI_INTEGER, 0, 0, intercomm, status, ierr & & ) if (i .ne. rank) then errs = errs + 1 print *, "Unexpected rank on child ", rank, "(",i,")" endif ! Check the command line do i=1, argc if (outargv(i) .eq. " ") then errs = errs + 1 print *, "Wrong number of arguments (", argc, ")" goto 200 endif if (argv(i) .ne. outargv(i)) then errs = errs + 1 print *, "Found arg ", argv(i), " but expected ", & & outargv(i) endif enddo 200 continue if (outargv(i) .ne. " ") then ! We had too few args in the spawned command errs = errs + 1 print *, "Too few arguments to spawned command" endif ! Send the errs back to the master process call MPI_Ssend( errs, 1, MPI_INTEGER, 0, 1, intercomm, ierr ) endif ! It isn't necessary to free the intercomm, but it should not hurt call MPI_Comm_free( intercomm, ierr ) ! Note that the MTest_Finalize get errs only over COMM_WORLD if (parentcomm .eq. MPI_COMM_NULL) then call MTest_Finalize( errs ) endif 300 continue call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/coll/0000755000175000017500000000000012621010234015677 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f90/coll/reducelocalf90.f900000644000175000017500000000460312621010150021020 0ustar mbanckmbanck! This file created from test/mpi/f77/coll/reducelocalf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2009 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! ! Test Fortran MPI_Reduce_local with MPI_OP_SUM and with user-defined operation. ! subroutine user_op( invec, outvec, count, datatype ) use mpi integer invec(*), outvec(*) integer count, datatype integer ii if (datatype .ne. MPI_INTEGER) then write(6,*) 'Invalid datatype passed to user_op()' return endif do ii=1, count outvec(ii) = invec(ii) * 2 + outvec(ii) enddo end program main use mpi integer max_buf_size parameter (max_buf_size=65000) integer vin(max_buf_size), vout(max_buf_size) external user_op integer ierr, errs integer count, myop integer ii errs = 0 call mtest_init(ierr) count = 0 do while (count .le. max_buf_size ) do ii = 1,count vin(ii) = ii vout(ii) = ii enddo call mpi_reduce_local( vin, vout, count, & & MPI_INTEGER, MPI_SUM, ierr ) ! Check if the result is correct do ii = 1,count if ( vin(ii) .ne. ii ) then errs = errs + 1 endif if ( vout(ii) .ne. 2*ii ) then errs = errs + 1 endif enddo if ( count .gt. 0 ) then count = count + count else count = 1 endif enddo call mpi_op_create( user_op, .false., myop, ierr ) count = 0 do while (count .le. max_buf_size) do ii = 1, count vin(ii) = ii vout(ii) = ii enddo call mpi_reduce_local( vin, vout, count, & & MPI_INTEGER, myop, ierr ) ! Check if the result is correct do ii = 1, count if ( vin(ii) .ne. ii ) then errs = errs + 1 endif if ( vout(ii) .ne. 3*ii ) then errs = errs + 1 endif enddo if ( count .gt. 0 ) then count = count + count else count = 1 endif enddo call mpi_op_free( myop, ierr ) call mtest_finalize(errs) call mpi_finalize(ierr) end mpi-testsuite-3.2+dfsg/f90/coll/split_typef90.f900000644000175000017500000000255212621010150020733 0ustar mbanckmbanck! This file created from test/mpi/f77/coll/split_typef.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2012 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer ierr, errs integer i, ans, size, rank, color, comm, newcomm integer maxSize, displ parameter (maxSize=128) integer scounts(maxSize), sdispls(maxSize), stypes(maxSize) integer rcounts(maxSize), rdispls(maxSize), rtypes(maxSize) integer sbuf(maxSize), rbuf(maxSize) errs = 0 call mtest_init( ierr ) call mpi_comm_dup( MPI_COMM_WORLD, comm, ierr ) call mpi_comm_split_type( comm, MPI_COMM_TYPE_SHARED, rank, & & MPI_INFO_NULL, newcomm, ierr ) call mpi_comm_rank( newcomm, rank, ierr ) call mpi_comm_size( newcomm, size, ierr ) do i=1, size scounts(i) = 1 sdispls(i) = (i-1) stypes(i) = MPI_INTEGER sbuf(i) = rank * size + i rcounts(i) = 1 rdispls(i) = (i-1) rtypes(i) = MPI_INTEGER rbuf(i) = -1 enddo call mpi_alltoallv( sbuf, scounts, sdispls, stypes, & & rbuf, rcounts, rdispls, rtypes, newcomm, ierr ) call mpi_comm_free( newcomm, ierr ) call mpi_comm_free( comm, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/coll/nonblockingf90.f900000644000175000017500000000661012621010150021041 0ustar mbanckmbanck! This file created from test/mpi/f77/coll/nonblockingf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2012 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer NUM_INTS parameter (NUM_INTS=2) integer maxSize parameter (maxSize=128) integer scounts(maxSize), sdispls(maxSize) integer rcounts(maxSize), rdispls(maxSize) integer types(maxSize) integer sbuf(maxSize), rbuf(maxSize) integer comm, size, rank, req integer ierr, errs integer ii, ans errs = 0 call mtest_init(ierr) comm = MPI_COMM_WORLD call MPI_Comm_size(comm, size, ierr) call MPI_Comm_rank(comm, rank, ierr) ! do ii = 1, size sbuf(2*ii-1) = ii sbuf(2*ii) = ii sbuf(2*ii-1) = ii sbuf(2*ii) = ii scounts(ii) = NUM_INTS rcounts(ii) = NUM_INTS sdispls(ii) = (ii-1) * NUM_INTS rdispls(ii) = (ii-1) * NUM_INTS types(ii) = MPI_INTEGER enddo call MPI_Ibarrier(comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call MPI_Ibcast(sbuf, NUM_INTS, MPI_INTEGER, 0, comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call MPI_Igather(sbuf, NUM_INTS, MPI_INTEGER, & & rbuf, NUM_INTS, MPI_INTEGER, & & 0, comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call MPI_Igatherv(sbuf, NUM_INTS, MPI_INTEGER, & & rbuf, rcounts, rdispls, MPI_INTEGER, & & 0, comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call MPI_Ialltoall(sbuf, NUM_INTS, MPI_INTEGER, & & rbuf, NUM_INTS, MPI_INTEGER, & & comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call MPI_Ialltoallv(sbuf, scounts, sdispls, MPI_INTEGER, & & rbuf, rcounts, rdispls, MPI_INTEGER, & & comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call MPI_Ialltoallw(sbuf, scounts, sdispls, types, & & rbuf, rcounts, rdispls, types, & & comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call MPI_Ireduce(sbuf, rbuf, NUM_INTS, MPI_INTEGER, & & MPI_SUM, 0, comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call MPI_Iallreduce(sbuf, rbuf, NUM_INTS, MPI_INTEGER, & & MPI_SUM, comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call MPI_Ireduce_scatter(sbuf, rbuf, rcounts, MPI_INTEGER, & & MPI_SUM, comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call MPI_Ireduce_scatter_block(sbuf, rbuf, NUM_INTS, MPI_INTEGER, & & MPI_SUM, comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call MPI_Iscan(sbuf, rbuf, NUM_INTS, MPI_INTEGER, & & MPI_SUM, comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call MPI_Iexscan(sbuf, rbuf, NUM_INTS, MPI_INTEGER, & & MPI_SUM, comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call mtest_finalize( errs ) call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/coll/exscanf90.f900000644000175000017500000000606012621010150020016 0ustar mbanckmbanck! This file created from test/mpi/f77/coll/exscanf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! subroutine uop( cin, cout, count, datatype ) use mpi integer cin(*), cout(*) integer count, datatype integer i if (datatype .ne. MPI_INTEGER) then write(6,*) 'Invalid datatype passed to user_op()' return endif do i=1, count cout(i) = cin(i) + cout(i) enddo end ! program main use mpi integer inbuf(2), outbuf(2) integer ans, rank, size, comm integer errs, ierr integer sumop external uop errs = 0 call mtest_init( ierr ) ! ! A simple test of exscan comm = MPI_COMM_WORLD call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) inbuf(1) = rank inbuf(2) = -rank call mpi_exscan( inbuf, outbuf, 2, MPI_INTEGER, MPI_SUM, comm, & & ierr ) ! this process has the sum of i from 0 to rank-1, which is ! (rank)(rank-1)/2 and -i ans = (rank * (rank - 1))/2 if (rank .gt. 0) then if (outbuf(1) .ne. ans) then errs = errs + 1 print *, rank, ' Expected ', ans, ' got ', outbuf(1) endif if (outbuf(2) .ne. -ans) then errs = errs + 1 print *, rank, ' Expected ', -ans, ' got ', outbuf(1) endif endif ! ! Try a user-defined operation ! call mpi_op_create( uop, .true., sumop, ierr ) inbuf(1) = rank inbuf(2) = -rank call mpi_exscan( inbuf, outbuf, 2, MPI_INTEGER, sumop, comm, & & ierr ) ! this process has the sum of i from 0 to rank-1, which is ! (rank)(rank-1)/2 and -i ans = (rank * (rank - 1))/2 if (rank .gt. 0) then if (outbuf(1) .ne. ans) then errs = errs + 1 print *, rank, ' sumop: Expected ', ans, ' got ', outbuf(1) endif if (outbuf(2) .ne. -ans) then errs = errs + 1 print *, rank, ' sumop: Expected ', -ans, ' got ', outbuf(1) endif endif call mpi_op_free( sumop, ierr ) ! ! Try a user-defined operation (and don't claim it is commutative) ! call mpi_op_create( uop, .false., sumop, ierr ) inbuf(1) = rank inbuf(2) = -rank call mpi_exscan( inbuf, outbuf, 2, MPI_INTEGER, sumop, comm, & & ierr ) ! this process has the sum of i from 0 to rank-1, which is ! (rank)(rank-1)/2 and -i ans = (rank * (rank - 1))/2 if (rank .gt. 0) then if (outbuf(1) .ne. ans) then errs = errs + 1 print *, rank, ' sumop2: Expected ', ans, ' got ', outbuf(1) endif if (outbuf(2) .ne. -ans) then errs = errs + 1 print *, rank, ' sumop2: Expected ', -ans, ' got ',outbuf(1) endif endif call mpi_op_free( sumop, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/coll/testlist0000644000175000017500000000047312621010150017476 0ustar mbanckmbanck# This file generated by f77tof90 uallreducef90 4 exscanf90 5 alltoallwf90 7 alltoallvf90 7 inplacef90 4 reducelocalf90 2 mpiversion=2.2 redscatf90 4 split_typef90 4 mpiversion=3.0 nonblockingf90 4 mpiversion=3.0 vw_inplacef90 4 mpiversion=2.2 red_scat_blockf90 4 mpiversion=2.2 nonblocking_inpf90 4 mpiversion=3.0 mpi-testsuite-3.2+dfsg/f90/coll/Makefile.in0000644000175000017500000006211012621010234017744 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This Makefile.am generated automatically by f77tof90 # from test/mpi/f77/coll/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = uallreducef90$(EXEEXT) exscanf90$(EXEEXT) \ alltoallwf90$(EXEEXT) inplacef90$(EXEEXT) \ allredint8f90$(EXEEXT) allredopttf90$(EXEEXT) \ reducelocalf90$(EXEEXT) alltoallvf90$(EXEEXT) \ redscatf90$(EXEEXT) split_typef90$(EXEEXT) \ nonblockingf90$(EXEEXT) vw_inplacef90$(EXEEXT) \ red_scat_blockf90$(EXEEXT) nonblocking_inpf90$(EXEEXT) @MAINTAINER_MODE_TRUE@am__append_1 = Makefile.am-stamp subdir = f90/coll ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) allredint8f90_SOURCES = allredint8f90.f90 allredint8f90_OBJECTS = allredint8f90.$(OBJEXT) allredint8f90_LDADD = $(LDADD) allredint8f90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o allredopttf90_SOURCES = allredopttf90.f90 allredopttf90_OBJECTS = allredopttf90.$(OBJEXT) allredopttf90_LDADD = $(LDADD) allredopttf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o alltoallvf90_SOURCES = alltoallvf90.f90 alltoallvf90_OBJECTS = alltoallvf90.$(OBJEXT) alltoallvf90_LDADD = $(LDADD) alltoallvf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o alltoallwf90_SOURCES = alltoallwf90.f90 alltoallwf90_OBJECTS = alltoallwf90.$(OBJEXT) alltoallwf90_LDADD = $(LDADD) alltoallwf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o exscanf90_SOURCES = exscanf90.f90 exscanf90_OBJECTS = exscanf90.$(OBJEXT) exscanf90_LDADD = $(LDADD) exscanf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o inplacef90_SOURCES = inplacef90.f90 inplacef90_OBJECTS = inplacef90.$(OBJEXT) inplacef90_LDADD = $(LDADD) inplacef90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o nonblocking_inpf90_SOURCES = nonblocking_inpf90.f90 nonblocking_inpf90_OBJECTS = nonblocking_inpf90.$(OBJEXT) nonblocking_inpf90_LDADD = $(LDADD) nonblocking_inpf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o nonblockingf90_SOURCES = nonblockingf90.f90 nonblockingf90_OBJECTS = nonblockingf90.$(OBJEXT) nonblockingf90_LDADD = $(LDADD) nonblockingf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o red_scat_blockf90_SOURCES = red_scat_blockf90.f90 red_scat_blockf90_OBJECTS = red_scat_blockf90.$(OBJEXT) red_scat_blockf90_LDADD = $(LDADD) red_scat_blockf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o redscatf90_SOURCES = redscatf90.f90 redscatf90_OBJECTS = redscatf90.$(OBJEXT) redscatf90_LDADD = $(LDADD) redscatf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o reducelocalf90_SOURCES = reducelocalf90.f90 reducelocalf90_OBJECTS = reducelocalf90.$(OBJEXT) reducelocalf90_LDADD = $(LDADD) reducelocalf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o split_typef90_SOURCES = split_typef90.f90 split_typef90_OBJECTS = split_typef90.$(OBJEXT) split_typef90_LDADD = $(LDADD) split_typef90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o uallreducef90_SOURCES = uallreducef90.f90 uallreducef90_OBJECTS = uallreducef90.$(OBJEXT) uallreducef90_LDADD = $(LDADD) uallreducef90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o vw_inplacef90_SOURCES = vw_inplacef90.f90 vw_inplacef90_OBJECTS = vw_inplacef90.$(OBJEXT) vw_inplacef90_LDADD = $(LDADD) vw_inplacef90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = SOURCES = allredint8f90.f90 allredopttf90.f90 alltoallvf90.f90 \ alltoallwf90.f90 exscanf90.f90 inplacef90.f90 \ nonblocking_inpf90.f90 nonblockingf90.f90 \ red_scat_blockf90.f90 redscatf90.f90 reducelocalf90.f90 \ split_typef90.f90 uallreducef90.f90 vw_inplacef90.f90 DIST_SOURCES = allredint8f90.f90 allredopttf90.f90 alltoallvf90.f90 \ alltoallwf90.f90 exscanf90.f90 inplacef90.f90 \ nonblocking_inpf90.f90 nonblockingf90.f90 \ red_scat_blockf90.f90 redscatf90.f90 reducelocalf90.f90 \ split_typef90.f90 uallreducef90.f90 vw_inplacef90.f90 am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_f90.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F90 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f90/util/mtestf90.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist $(am__append_1) # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 @MAINTAINER_MODE_TRUE@MAINTAINERCLEANFILES = Makefile.am-stamp all: all-am .SUFFIXES: .SUFFIXES: .f90 .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f90.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f90/coll/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f90/coll/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f90.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) allredint8f90$(EXEEXT): $(allredint8f90_OBJECTS) $(allredint8f90_DEPENDENCIES) $(EXTRA_allredint8f90_DEPENDENCIES) @rm -f allredint8f90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(allredint8f90_OBJECTS) $(allredint8f90_LDADD) $(LIBS) allredopttf90$(EXEEXT): $(allredopttf90_OBJECTS) $(allredopttf90_DEPENDENCIES) $(EXTRA_allredopttf90_DEPENDENCIES) @rm -f allredopttf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(allredopttf90_OBJECTS) $(allredopttf90_LDADD) $(LIBS) alltoallvf90$(EXEEXT): $(alltoallvf90_OBJECTS) $(alltoallvf90_DEPENDENCIES) $(EXTRA_alltoallvf90_DEPENDENCIES) @rm -f alltoallvf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(alltoallvf90_OBJECTS) $(alltoallvf90_LDADD) $(LIBS) alltoallwf90$(EXEEXT): $(alltoallwf90_OBJECTS) $(alltoallwf90_DEPENDENCIES) $(EXTRA_alltoallwf90_DEPENDENCIES) @rm -f alltoallwf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(alltoallwf90_OBJECTS) $(alltoallwf90_LDADD) $(LIBS) exscanf90$(EXEEXT): $(exscanf90_OBJECTS) $(exscanf90_DEPENDENCIES) $(EXTRA_exscanf90_DEPENDENCIES) @rm -f exscanf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(exscanf90_OBJECTS) $(exscanf90_LDADD) $(LIBS) inplacef90$(EXEEXT): $(inplacef90_OBJECTS) $(inplacef90_DEPENDENCIES) $(EXTRA_inplacef90_DEPENDENCIES) @rm -f inplacef90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(inplacef90_OBJECTS) $(inplacef90_LDADD) $(LIBS) nonblocking_inpf90$(EXEEXT): $(nonblocking_inpf90_OBJECTS) $(nonblocking_inpf90_DEPENDENCIES) $(EXTRA_nonblocking_inpf90_DEPENDENCIES) @rm -f nonblocking_inpf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(nonblocking_inpf90_OBJECTS) $(nonblocking_inpf90_LDADD) $(LIBS) nonblockingf90$(EXEEXT): $(nonblockingf90_OBJECTS) $(nonblockingf90_DEPENDENCIES) $(EXTRA_nonblockingf90_DEPENDENCIES) @rm -f nonblockingf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(nonblockingf90_OBJECTS) $(nonblockingf90_LDADD) $(LIBS) red_scat_blockf90$(EXEEXT): $(red_scat_blockf90_OBJECTS) $(red_scat_blockf90_DEPENDENCIES) $(EXTRA_red_scat_blockf90_DEPENDENCIES) @rm -f red_scat_blockf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(red_scat_blockf90_OBJECTS) $(red_scat_blockf90_LDADD) $(LIBS) redscatf90$(EXEEXT): $(redscatf90_OBJECTS) $(redscatf90_DEPENDENCIES) $(EXTRA_redscatf90_DEPENDENCIES) @rm -f redscatf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(redscatf90_OBJECTS) $(redscatf90_LDADD) $(LIBS) reducelocalf90$(EXEEXT): $(reducelocalf90_OBJECTS) $(reducelocalf90_DEPENDENCIES) $(EXTRA_reducelocalf90_DEPENDENCIES) @rm -f reducelocalf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(reducelocalf90_OBJECTS) $(reducelocalf90_LDADD) $(LIBS) split_typef90$(EXEEXT): $(split_typef90_OBJECTS) $(split_typef90_DEPENDENCIES) $(EXTRA_split_typef90_DEPENDENCIES) @rm -f split_typef90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(split_typef90_OBJECTS) $(split_typef90_LDADD) $(LIBS) uallreducef90$(EXEEXT): $(uallreducef90_OBJECTS) $(uallreducef90_DEPENDENCIES) $(EXTRA_uallreducef90_DEPENDENCIES) @rm -f uallreducef90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(uallreducef90_OBJECTS) $(uallreducef90_LDADD) $(LIBS) vw_inplacef90$(EXEEXT): $(vw_inplacef90_OBJECTS) $(vw_inplacef90_DEPENDENCIES) $(EXTRA_vw_inplacef90_DEPENDENCIES) @rm -f vw_inplacef90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(vw_inplacef90_OBJECTS) $(vw_inplacef90_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f90/util/mtestf90.o: $(top_srcdir)/f90/util/mtestf90.f90 (cd $(top_builddir)/f90/util && $(MAKE) mtestf90.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # f77tof90 only replaces output files if the contents differ, so we must use a # separate timestamp file in order avoid constantly trying to remake the f90 # copy of the Makefile when the f77 copy is updated in a way that does not # change its contents @MAINTAINER_MODE_TRUE@$(srcdir)/Makefile.am: $(srcdir)/Makefile.am-stamp @MAINTAINER_MODE_TRUE@$(srcdir)/Makefile.am-stamp: $(master_top_srcdir)/test/mpi/f77/coll/Makefile.am $(master_top_srcdir)/maint/f77tof90 @MAINTAINER_MODE_TRUE@ ( cd $(master_top_srcdir) && ./maint/f77tof90 test/mpi/f77/coll test/mpi/f90/coll Makefile.am Makefile.ap ) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f90/coll/allredopttf90.f900000644000175000017500000000270312621010150020707 0ustar mbanckmbanck! This file created from test/mpi/f77/coll/allredopttf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2007 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer*8 inbuf, outbuf double complex zinbuf, zoutbuf integer wsize integer errs, ierr errs = 0 call mtest_init( ierr ) call mpi_comm_size( MPI_COMM_WORLD, wsize, ierr ) ! ! A simple test of allreduce for the optional integer*8 type inbuf = 1 outbuf = 0 call mpi_allreduce(inbuf, outbuf, 1, MPI_INTEGER8, MPI_SUM, & & MPI_COMM_WORLD, ierr) if (outbuf .ne. wsize ) then errs = errs + 1 print *, "result wrong for sum with integer*8 = got ", outbuf, & & " but should have ", wsize endif zinbuf = (1,1) zoutbuf = (0,0) call mpi_allreduce(zinbuf, zoutbuf, 1, MPI_DOUBLE_COMPLEX, & & MPI_SUM, MPI_COMM_WORLD, ierr) if (dreal(zoutbuf) .ne. wsize ) then errs = errs + 1 print *, "result wrong for sum with double complex = got ", & & outbuf, " but should have ", wsize endif if (dimag(zoutbuf) .ne. wsize ) then errs = errs + 1 print *, "result wrong for sum with double complex = got ", & & outbuf, " but should have ", wsize endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/coll/uallreducef90.f900000644000175000017500000000312712621010150020663 0ustar mbanckmbanck! This file created from test/mpi/f77/coll/uallreducef.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! ! Test user-defined operations. This tests a simple commutative operation ! subroutine uop( cin, cout, count, datatype ) use mpi integer cin(*), cout(*) integer count, datatype integer i if (datatype .ne. MPI_INTEGER) then print *, 'Invalid datatype (',datatype,') passed to user_op()' return endif do i=1, count cout(i) = cin(i) + cout(i) enddo end program main use mpi external uop integer ierr, errs integer count, sumop, vin(65000), vout(65000), i, size integer comm errs = 0 call mtest_init(ierr) call mpi_op_create( uop, .true., sumop, ierr ) comm = MPI_COMM_WORLD call mpi_comm_size( comm, size, ierr ) count = 1 do while (count .lt. 65000) do i=1, count vin(i) = i vout(i) = -1 enddo call mpi_allreduce( vin, vout, count, MPI_INTEGER, sumop, & & comm, ierr ) ! Check that all results are correct do i=1, count if (vout(i) .ne. i * size) then errs = errs + 1 if (errs .lt. 10) print *, "vout(",i,") = ", vout(i) endif enddo count = count + count enddo call mpi_op_free( sumop, ierr ) call mtest_finalize(errs) call mpi_finalize(ierr) end mpi-testsuite-3.2+dfsg/f90/coll/alltoallwf90.f900000644000175000017500000000420512621010150020527 0ustar mbanckmbanck! This file created from test/mpi/f77/coll/alltoallwf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer ierr, errs integer i, intsize, ans, size, rank, color, comm, newcomm integer maxSize parameter (maxSize=32) integer scounts(maxSize), sdispls(maxSize), stypes(maxSize) integer rcounts(maxSize), rdispls(maxSize), rtypes(maxSize) integer sbuf(maxSize), rbuf(maxSize) errs = 0 call mtest_init( ierr ) call mpi_type_size( MPI_INTEGER, intsize, ierr ) ! Get a comm call mpi_comm_dup( MPI_COMM_WORLD, comm, ierr ) call mpi_comm_size( comm, size, ierr ) if (size .gt. maxSize) then call mpi_comm_rank( comm, rank, ierr ) color = 1 if (rank .lt. maxSize) color = 0 call mpi_comm_split( comm, color, rank, newcomm, ierr ) call mpi_comm_free( comm, ierr ) comm = newcomm call mpi_comm_size( comm, size, ierr ) endif call mpi_comm_rank( comm, rank, ierr ) if (size .le. maxSize) then ! Initialize the data. Just use this as an all to all do i=1, size scounts(i) = 1 sdispls(i) = (i-1)*intsize stypes(i) = MPI_INTEGER sbuf(i) = rank * size + i rcounts(i) = 1 rdispls(i) = (i-1)*intsize rtypes(i) = MPI_INTEGER rbuf(i) = -1 enddo call mpi_alltoallw( sbuf, scounts, sdispls, stypes, & & rbuf, rcounts, rdispls, rtypes, comm, ierr ) ! ! check rbuf(i) = data from the ith location of the ith send buf, or ! rbuf(i) = (i-1) * size + i do i=1, size ans = (i-1) * size + rank + 1 if (rbuf(i) .ne. ans) then errs = errs + 1 print *, rank, ' rbuf(', i, ') = ', rbuf(i), & & ' expected ', ans endif enddo endif call mpi_comm_free( comm, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/coll/Makefile.am0000644000175000017500000000236312621010150017734 0ustar mbanckmbanck# This Makefile.am generated automatically by f77tof90 # from test/mpi/f77/coll/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f90.mtest EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 noinst_PROGRAMS = uallreducef90 exscanf90 alltoallwf90 inplacef90 allredint8f90 allredopttf90 reducelocalf90 alltoallvf90 redscatf90 split_typef90 nonblockingf90 vw_inplacef90 red_scat_blockf90 nonblocking_inpf90 if MAINTAINER_MODE # f77tof90 only replaces output files if the contents differ, so we must use a # separate timestamp file in order avoid constantly trying to remake the f90 # copy of the Makefile when the f77 copy is updated in a way that does not # change its contents $(srcdir)/Makefile.am: $(srcdir)/Makefile.am-stamp $(srcdir)/Makefile.am-stamp: $(master_top_srcdir)/test/mpi/f77/coll/Makefile.am $(master_top_srcdir)/maint/f77tof90 ( cd $(master_top_srcdir) && ./maint/f77tof90 test/mpi/f77/coll test/mpi/f90/coll Makefile.am Makefile.ap ) MAINTAINERCLEANFILES = Makefile.am-stamp EXTRA_DIST += Makefile.am-stamp endif MAINTAINER_MODE mpi-testsuite-3.2+dfsg/f90/coll/inplacef90.f900000644000175000017500000000522112621010150020146 0ustar mbanckmbanck! This file created from test/mpi/f77/coll/inplacef.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2005 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! This is a simple test that Fortran support the MPI_IN_PLACE value ! program main use mpi integer ierr, errs integer comm, root integer rank, size integer i integer MAX_SIZE parameter (MAX_SIZE=1024) integer rbuf(MAX_SIZE), rdispls(MAX_SIZE), rcount(MAX_SIZE), & & sbuf(MAX_SIZE) errs = 0 call mtest_init( ierr ) comm = MPI_COMM_WORLD call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) root = 0 ! Gather with inplace do i=1,size rbuf(i) = - i enddo rbuf(1+root) = root if (rank .eq. root) then call mpi_gather( MPI_IN_PLACE, 1, MPI_INTEGER, rbuf, 1, & & MPI_INTEGER, root, comm, ierr ) do i=1,size if (rbuf(i) .ne. i-1) then errs = errs + 1 print *, '[',rank,'] rbuf(', i, ') = ', rbuf(i), & & ' in gather' endif enddo else call mpi_gather( rank, 1, MPI_INTEGER, rbuf, 1, MPI_INTEGER, & & root, comm, ierr ) endif ! Gatherv with inplace do i=1,size rbuf(i) = - i rcount(i) = 1 rdispls(i) = i-1 enddo rbuf(1+root) = root if (rank .eq. root) then call mpi_gatherv( MPI_IN_PLACE, 1, MPI_INTEGER, rbuf, rcount, & & rdispls, MPI_INTEGER, root, comm, ierr ) do i=1,size if (rbuf(i) .ne. i-1) then errs = errs + 1 print *, '[', rank, '] rbuf(', i, ') = ', rbuf(i), & & ' in gatherv' endif enddo else call mpi_gatherv( rank, 1, MPI_INTEGER, rbuf, rcount, rdispls, & & MPI_INTEGER, root, comm, ierr ) endif ! Scatter with inplace do i=1,size sbuf(i) = i enddo rbuf(1) = -1 if (rank .eq. root) then call mpi_scatter( sbuf, 1, MPI_INTEGER, MPI_IN_PLACE, 1, & & MPI_INTEGER, root, comm, ierr ) else call mpi_scatter( sbuf, 1, MPI_INTEGER, rbuf, 1, & & MPI_INTEGER, root, comm, ierr ) if (rbuf(1) .ne. rank+1) then errs = errs + 1 print *, '[', rank, '] rbuf = ', rbuf(1), & & ' in scatter' endif endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/coll/red_scat_blockf90.f900000644000175000017500000000330012621010150021465 0ustar mbanckmbanck! This file created from test/mpi/f77/coll/red_scat_blockf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2012 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! A simple test for Fortran support of Reduce_scatter_block ! with or withoutMPI_IN_PLACE. ! program main use mpi integer MAX_SIZE parameter (MAX_SIZE=1024) integer sbuf(MAX_SIZE), rbuf(MAX_SIZE) integer comm, rank, size integer sumval, ierr, errs, i errs = 0 call mtest_init( ierr ) comm = MPI_COMM_WORLD call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) do i = 1, size sbuf(i) = rank + (i-1) enddo call MPI_Reduce_scatter_block(sbuf, rbuf, 1, MPI_INTEGER, & & MPI_SUM, comm, ierr) sumval = size * rank + ((size-1) * size)/2 if ( rbuf(1) .ne. sumval ) then errs = errs + 1 print *, 'Reduce_scatter_block does not get expected value.' print *, '[', rank, ']', 'Got ', rbuf(1), ' but expected ', & & sumval, '.' endif ! Try MPI_IN_PLACE do i = 1, size rbuf(i) = rank + (i-1) enddo call MPI_Reduce_scatter_block(MPI_IN_PLACE, rbuf, 1, MPI_INTEGER, & & MPI_SUM, comm, ierr) if ( rbuf(1) .ne. sumval ) then errs = errs + 1 print *, 'Reduce_scatter_block does not get expected value.' print *, '[', rank, ']', 'Got ', rbuf(1), ' but expected ', & & sumval, '.' endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/coll/vw_inplacef90.f900000644000175000017500000000705512621010150020671 0ustar mbanckmbanck! This file created from test/mpi/f77/coll/vw_inplacef.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2012 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! A simple test for Fortran support of the MPI_IN_PLACE value in Alltoall[vw]. ! program main use mpi integer SIZEOFINT integer MAX_SIZE parameter (MAX_SIZE=1024) integer rbuf(MAX_SIZE) integer rdispls(MAX_SIZE), rcounts(MAX_SIZE), rtypes(MAX_SIZE) integer ierr, errs integer comm, root integer rank, size integer iexpected, igot integer i, j errs = 0 call mtest_init( ierr ) comm = MPI_COMM_WORLD call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) call mpi_type_size( MPI_INTEGER, SIZEOFINT, ierr ) if (size .gt. MAX_SIZE) then print *, ' At most ', MAX_SIZE, ' processes allowed' call mpi_abort( MPI_COMM_WORLD, 1, ierr ) endif ! do i=1,MAX_SIZE rbuf(i) = -1 enddo do i=1,size rbuf(i) = (i-1) * size + rank enddo call mpi_alltoall( MPI_IN_PLACE, -1, MPI_DATATYPE_NULL, & & rbuf, 1, MPI_INTEGER, comm, ierr ) do i=1,size if (rbuf(i) .ne. (rank*size + i - 1)) then errs = errs + 1 print *, '[', rank, '] rbuf(', i, ') = ', rbuf(i), & & ', should be', rank * size + i - 1 endif enddo do i=1,MAX_SIZE rbuf(i) = -1 enddo do i=1,size rcounts(i) = (i-1) + rank rdispls(i) = (i-1) * (2*size) do j=0,rcounts(i)-1 rbuf(rdispls(i)+j+1) = 100 * rank + 10 * (i-1) + j enddo enddo call mpi_alltoallv( MPI_IN_PLACE, 0, 0, MPI_DATATYPE_NULL, & & rbuf, rcounts, rdispls, MPI_INTEGER, & & comm, ierr ) do i=1,size do j=0,rcounts(i)-1 iexpected = 100 * (i-1) + 10 * rank + j igot = rbuf(rdispls(i)+j+1) if ( igot .ne. iexpected ) then errs = errs + 1 print *, '[', rank, '] ALLTOALLV got ', igot, & & ',but expected ', iexpected, & & ' for block=', i-1, ' element=', j endif enddo enddo do i=1,MAX_SIZE rbuf(i) = -1 enddo ! Alltoallw's displs[] are in bytes not in type extents. do i=1,size rcounts(i) = (i-1) + rank rdispls(i) = (i-1) * (2*size) * SIZEOFINT rtypes(i) = MPI_INTEGER do j=0,rcounts(i)-1 rbuf(rdispls(i)/SIZEOFINT+j+1) = 100 * rank & & + 10 * (i-1) + j enddo enddo call mpi_alltoallw( MPI_IN_PLACE, 0, 0, MPI_DATATYPE_NULL, & & rbuf, rcounts, rdispls, rtypes, & & comm, ierr ) do i=1,size do j=0,rcounts(i)-1 iexpected = 100 * (i-1) + 10 * rank + j igot = rbuf(rdispls(i)/SIZEOFINT+j+1) if ( igot .ne. iexpected ) then errs = errs + 1 print *, '[', rank, '] ALLTOALLW got ', igot, & & ',but expected ', iexpected, & & ' for block=', i-1, ' element=', j endif enddo enddo call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/coll/alltoallvf90.f900000644000175000017500000001113712621010150020530 0ustar mbanckmbanck! This file created from test/mpi/f77/coll/alltoallvf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2011 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer ierr, errs integer i, ans, size, rank, color, comm, newcomm integer maxSize, displ parameter (maxSize=128) integer scounts(maxSize), sdispls(maxSize), stypes(maxSize) integer rcounts(maxSize), rdispls(maxSize), rtypes(maxSize) integer sbuf(maxSize), rbuf(maxSize) errs = 0 call mtest_init( ierr ) ! Get a comm call mpi_comm_dup( MPI_COMM_WORLD, comm, ierr ) call mpi_comm_size( comm, size, ierr ) if (size .gt. maxSize) then call mpi_comm_rank( comm, rank, ierr ) color = 1 if (rank .lt. maxSize) color = 0 call mpi_comm_split( comm, color, rank, newcomm, ierr ) call mpi_comm_free( comm, ierr ) comm = newcomm call mpi_comm_size( comm, size, ierr ) endif call mpi_comm_rank( comm, rank, ierr ) ! if (size .le. maxSize) then ! Initialize the data. Just use this as an all to all ! Use the same test as alltoallwf.c , except displacements are in units of ! integers instead of bytes do i=1, size scounts(i) = 1 sdispls(i) = (i-1) stypes(i) = MPI_INTEGER sbuf(i) = rank * size + i rcounts(i) = 1 rdispls(i) = (i-1) rtypes(i) = MPI_INTEGER rbuf(i) = -1 enddo call mpi_alltoallv( sbuf, scounts, sdispls, stypes, & & rbuf, rcounts, rdispls, rtypes, comm, ierr ) ! ! check rbuf(i) = data from the ith location of the ith send buf, or ! rbuf(i) = (i-1) * size + i do i=1, size ans = (i-1) * size + rank + 1 if (rbuf(i) .ne. ans) then errs = errs + 1 print *, rank, ' rbuf(', i, ') = ', rbuf(i), & & ' expected ', ans endif enddo ! ! A halo-exchange example - mostly zero counts ! do i=1, size scounts(i) = 0 sdispls(i) = 0 stypes(i) = MPI_INTEGER sbuf(i) = -1 rcounts(i) = 0 rdispls(i) = 0 rtypes(i) = MPI_INTEGER rbuf(i) = -1 enddo ! ! Note that the arrays are 1-origin displ = 0 if (rank .gt. 0) then scounts(1+rank-1) = 1 rcounts(1+rank-1) = 1 sdispls(1+rank-1) = displ rdispls(1+rank-1) = rank - 1 sbuf(1+displ) = rank displ = displ + 1 endif scounts(1+rank) = 1 rcounts(1+rank) = 1 sdispls(1+rank) = displ rdispls(1+rank) = rank sbuf(1+displ) = rank displ = displ + 1 if (rank .lt. size-1) then scounts(1+rank+1) = 1 rcounts(1+rank+1) = 1 sdispls(1+rank+1) = displ rdispls(1+rank+1) = rank+1 sbuf(1+displ) = rank displ = displ + 1 endif call mpi_alltoallv( sbuf, scounts, sdispls, stypes, & & rbuf, rcounts, rdispls, rtypes, comm, ierr ) ! ! Check the neighbor values are correctly moved ! if (rank .gt. 0) then if (rbuf(1+rank-1) .ne. rank-1) then errs = errs + 1 print *, rank, ' rbuf(',1+rank-1, ') = ', rbuf(1+rank-1), & & 'expected ', rank-1 endif endif if (rbuf(1+rank) .ne. rank) then errs = errs + 1 print *, rank, ' rbuf(', 1+rank, ') = ', rbuf(1+rank), & & 'expected ', rank endif if (rank .lt. size-1) then if (rbuf(1+rank+1) .ne. rank+1) then errs = errs + 1 print *, rank, ' rbuf(', 1+rank+1, ') = ',rbuf(1+rank+1), & & 'expected ', rank+1 endif endif do i=0,rank-2 if (rbuf(1+i) .ne. -1) then errs = errs + 1 print *, rank, ' rbuf(', 1+i, ') = ', rbuf(1+i), & & 'expected -1' endif enddo do i=rank+2,size-1 if (rbuf(1+i) .ne. -1) then errs = errs + 1 print *, rank, ' rbuf(', i, ') = ', rbuf(1+i), & & 'expected -1' endif enddo endif call mpi_comm_free( comm, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/coll/nonblocking_inpf90.f900000644000175000017500000001030012621010150021676 0ustar mbanckmbanck! This file created from test/mpi/f77/coll/nonblocking_inpf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2012 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! A simple test for Fortran support of the MPI_IN_PLACE value in Alltoall[vw]. ! program main use mpi integer SIZEOFINT integer MAX_SIZE parameter (MAX_SIZE=1024) integer rbuf(MAX_SIZE) integer rdispls(MAX_SIZE), rcounts(MAX_SIZE), rtypes(MAX_SIZE) integer comm, rank, size, req integer sumval, ierr, errs integer iexpected, igot integer i, j errs = 0 call mtest_init( ierr ) comm = MPI_COMM_WORLD call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) call mpi_type_size( MPI_INTEGER, SIZEOFINT, ierr ) do i=1,MAX_SIZE rbuf(i) = -1 enddo do i=1,size rbuf(i) = (i-1) * size + rank enddo call mpi_ialltoall( MPI_IN_PLACE, -1, MPI_DATATYPE_NULL, & & rbuf, 1, MPI_INTEGER, comm, req, ierr ) call mpi_wait( req, MPI_STATUS_IGNORE, ierr ) do i=1,size if (rbuf(i) .ne. (rank*size + i - 1)) then errs = errs + 1 print *, '[', rank, ']: IALLTOALL rbuf(', i, ') = ', & & rbuf(i), ', should be', rank * size + i - 1 endif enddo do i=1,MAX_SIZE rbuf(i) = -1 enddo do i=1,size rcounts(i) = i-1 + rank rdispls(i) = (i-1) * (2*size) do j=0,rcounts(i)-1 rbuf(rdispls(i)+j+1) = 100 * rank + 10 * (i-1) + j enddo enddo call mpi_ialltoallv( MPI_IN_PLACE, 0, 0, MPI_DATATYPE_NULL, & & rbuf, rcounts, rdispls, MPI_INTEGER, & & comm, req, ierr ) call mpi_wait( req, MPI_STATUS_IGNORE, ierr ) do i=1,size do j=0,rcounts(i)-1 iexpected = 100 * (i-1) + 10 * rank + j igot = rbuf(rdispls(i)+j+1) if ( igot .ne. iexpected ) then errs = errs + 1 print *, '[', rank, ']: IALLTOALLV got ', igot, & & ',but expected ', iexpected, & & ' for block=', i-1, ' element=', j endif enddo enddo do i=1,MAX_SIZE rbuf(i) = -1 enddo do i=1,size rcounts(i) = i-1 + rank rdispls(i) = (i-1) * (2*size) * SIZEOFINT rtypes(i) = MPI_INTEGER do j=0,rcounts(i)-1 rbuf(rdispls(i)/SIZEOFINT+j+1) = 100 * rank & & + 10 * (i-1) + j enddo enddo call mpi_ialltoallw( MPI_IN_PLACE, 0, 0, MPI_DATATYPE_NULL, & & rbuf, rcounts, rdispls, rtypes, & & comm, req, ierr ) call mpi_wait( req, MPI_STATUS_IGNORE, ierr ) do i=1,size do j=0,rcounts(i)-1 iexpected = 100 * (i-1) + 10 * rank + j igot = rbuf(rdispls(i)/SIZEOFINT+j+1) if ( igot .ne. iexpected ) then errs = errs + 1 print *, '[', rank, ']: IALLTOALLW got ', igot, & & ',but expected ', iexpected, & & ' for block=', i-1, ' element=', j endif enddo enddo do i=1,MAX_SIZE rbuf(i) = -1 enddo do i = 1, size rbuf(i) = rank + (i-1) enddo call mpi_ireduce_scatter_block( MPI_IN_PLACE, rbuf, 1, & & MPI_INTEGER, MPI_SUM, comm, & & req, ierr ) call mpi_wait( req, MPI_STATUS_IGNORE, ierr ) sumval = size * rank + ((size-1) * size)/2 if ( rbuf(1) .ne. sumval ) then errs = errs + 1 print *, 'Ireduce_scatter_block does not get expected value.' print *, '[', rank, ']:', 'Got ', rbuf(1), ' but expected ', & & sumval, '.' endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/coll/allredint8f90.f900000644000175000017500000000112312621010150020576 0ustar mbanckmbanck! This file created from test/mpi/f77/coll/allredint8f.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2006 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer*8 inbuf, outbuf integer errs, ierr errs = 0 call mtest_init( ierr ) ! ! A simple test of allreduce for the optional integer*8 type call mpi_allreduce(inbuf, outbuf, 1, MPI_INTEGER8, MPI_SUM, & & MPI_COMM_WORLD, ierr) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/coll/Makefile.am-stamp0000644000175000017500000000001212621010150021043 0ustar mbanckmbancktimestamp mpi-testsuite-3.2+dfsg/f90/coll/redscatf90.f900000644000175000017500000000435712621010150020171 0ustar mbanckmbanck! This file created from test/mpi/f77/coll/redscatf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2011 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! subroutine uop( cin, cout, count, datatype ) use mpi integer cin(*), cout(*) integer count, datatype integer i if (datatype .ne. MPI_INTEGER) then write(6,*) 'Invalid datatype ',datatype,' passed to user_op()' return endif do i=1, count cout(i) = cin(i) + cout(i) enddo end ! ! Test of reduce scatter. ! ! Each processor contributes its rank + the index to the reduction, ! then receives the ith sum ! ! Can be called with any number of processors. ! program main use mpi integer errs, ierr, toterr integer maxsize parameter (maxsize=1024) integer sendbuf(maxsize), recvbuf, recvcounts(maxsize) integer size, rank, i, sumval integer comm, sumop external uop errs = 0 call mtest_init( ierr ) comm = MPI_COMM_WORLD call mpi_comm_size( comm, size, ierr ) call mpi_comm_rank( comm, rank, ierr ) if (size .gt. maxsize) then endif do i=1, size sendbuf(i) = rank + i - 1 recvcounts(i) = 1 enddo call mpi_reduce_scatter( sendbuf, recvbuf, recvcounts, & & MPI_INTEGER, MPI_SUM, comm, ierr ) sumval = size * rank + ((size - 1) * size)/2 ! recvbuf should be size * (rank + i) if (recvbuf .ne. sumval) then errs = errs + 1 print *, "Did not get expected value for reduce scatter" print *, rank, " Got ", recvbuf, " expected ", sumval endif call mpi_op_create( uop, .true., sumop, ierr ) call mpi_reduce_scatter( sendbuf, recvbuf, recvcounts, & & MPI_INTEGER, sumop, comm, ierr ) sumval = size * rank + ((size - 1) * size)/2 ! recvbuf should be size * (rank + i) if (recvbuf .ne. sumval) then errs = errs + 1 print *, "sumop: Did not get expected value for reduce scatter" print *, rank, " Got ", recvbuf, " expected ", sumval endif call mpi_op_free( sumop, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/attr/0000755000175000017500000000000012621010234015720 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f90/attr/attrlangc.c0000644000175000017500000005147712620254305020071 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; -*- */ /* * * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include "mpi.h" #include #include #include "../../include/mpitestconf.h" /* Used to convert Fortran strings (which may not be null terminated) to C strings */ #define MAX_ATTRTEST_MSG 256 /* * FIXME: This code assumes that character strings are passed from Fortran * by placing the string length, as an int, at the end of the argument list * This is common but not universal. */ /* Name mapping. All routines are created with names that are lower case with a single trailing underscore. This matches many compilers. We use #define to change the name for Fortran compilers that do not use the lowercase/underscore pattern */ #ifdef F77_NAME_UPPER #define cattrinit_ CATTRINIT #define cgetenvbool_ CGETENVBOOL #define cgetsizes_ CGETSIZES #define ccreatekeys_ CCREATEKEYS #define cfreekeys_ CFREEKEYS #define ctoctest_ CTOCTEST #define cmpif1read_ CMPIF1READ #define cmpif2read_ CMPIF2READ #define cmpif2readtype_ CMPIF2READTYPE #define cmpif2readwin_ CMPIF2READWIN #define csetmpi_ CSETMPI #define csetmpi2_ CSETMPI2 #define csetmpitype_ CSETMPITYPE #define csetmpiwin_ CSETMPIWIN #elif defined(F77_NAME_LOWER) || defined(F77_NAME_MIXED) /* Mixed is ok because we use lowercase in all uses */ #define cattrinit_ cattrinit #define cgetenvbool_ cgetenvbool #define cgetsizes_ cgetsizes #define ccreatekeys_ ccreatekeys #define cfreekeys_ cfreekeys #define ctoctest_ ctoctest #define cmpif1read_ cmpif1read #define cmpif2read_ cmpif2read #define cmpif2readtype_ cmpif2readtype #define cmpif2readwin_ cmpif2readwin #define csetmpi_ csetmpi #define csetmpi2_ csetmpi2 #define csetmpitype_ csetmpitype #define csetmpiwin_ csetmpiwin #elif defined(F77_NAME_LOWER_2USCORE) || defined(F77_NAME_LOWER_USCORE) || \ defined(F77_NAME_MIXED_USCORE) /* Else leave name alone (routines have no underscore, so both of these map to a lowercase, single underscore) */ #else #error 'Unrecognized Fortran name mapping' #endif /* */ static int ccomm1Key, ccomm2Key, ctype2Key, cwin2Key; static int ccomm1Extra, ccomm2Extra, ctype2Extra, cwin2Extra; static int verbose = 0; /* Forward references */ int cmpi1read(MPI_Comm comm, int key, void *expected, const char *msg); int cmpi2read(MPI_Comm comm, int key, void *expected, const char *msg); int cmpi2readtype(MPI_Datatype dtype, int key, void *expected, const char *msg); void ccompareint2aint_(MPI_Fint * in1, MPI_Aint * in2, MPI_Fint * result); void ccompareint2void_(MPI_Fint * in1, void *in2, MPI_Fint * result); void ccompareaint2void_(MPI_Aint * in1, void *in2, MPI_Fint * result); /* ----------------------------------------------------------------------- */ /* Initialization functions */ /* ----------------------------------------------------------------------- */ void cgetenvbool_(const char str[], MPI_Fint * val, int d) { const char *envval; char envname[1024]; /* Note that the Fortran string may not be null terminated; thus * we copy d characters and add a null just in case */ if (d > sizeof(envname) - 1) { fprintf(stderr, "Environment variable name too long (%d)\n", d); MPI_Abort(MPI_COMM_WORLD, 1); } strncpy(envname, str, d); envname[d] = 0; envval = getenv(envname); *val = 0; if (envval) { printf(" envval = %s\n", envval); if (strcmp(envval, "yes") == 0 || strcmp(envval, "YES") == 0 || strcmp(envval, "true") == 0 || strcmp(envval, "TRUE") == 0) *val = 1; } } /* Keep our own copy of the "is verbose" state */ void cattrinit_(MPI_Fint * fverbose) { verbose = (int) *fverbose; } /* Provide attribute sizes (C, Fortran 1, Fortran 2) */ void cgetsizes_(MPI_Fint * ptrSize, MPI_Fint * intSize, MPI_Fint * aintSize) { *ptrSize = (MPI_Fint) sizeof(void *); *intSize = (MPI_Fint) sizeof(MPI_Fint); *aintSize = (MPI_Fint) sizeof(MPI_Aint); } /* ----------------------------------------------------------------------- */ /* Copy and delete functions attached to keyvals */ /* ----------------------------------------------------------------------- */ static int CMPI1_COPY_FN(MPI_Comm comm, int keyval, void *extra, void *inval, void *outval, int *flag) { int inValue = *(int *) inval; if (verbose) printf(" In C MPI-1 copy function: inval = %p, extra = %p\n", inval, extra); *flag = 1; /* We don't change the attribute */ *(void **) outval = inval; /* But we do change what it points at */ *(int *) inval = inValue + 1; return MPI_SUCCESS; } static int CMPI1_DELETE_FN(MPI_Comm comm, int keyval, void *outval, void *extra) { if (verbose) printf(" In C MPI-1 delete function, extra = %p\n", extra); *(int *) outval = *(int *) outval - 1; return MPI_SUCCESS; } static int TYPE_COPY_FN(MPI_Datatype dtype, int keyval, void *extra, void *inval, void *outval, int *flag) { int inValue = *(int *) inval; if (verbose) printf(" In C MPI type copy function, inval = %p, extra = %p\n", inval, extra); *flag = 1; /* We don't change the attribute */ *(void **) outval = inval; /* But we do change what it points at */ *(int *) inval = inValue + 1; return MPI_SUCCESS; } static int TYPE_DELETE_FN(MPI_Datatype dtype, int keyval, void *outval, void *extra) { if (verbose) printf(" In C MPI type delete function, extra = %p\n", extra); /* We reverse the incrment used in copy (checked after free of the type) */ *(int *) outval = *(int *) outval - 1; return MPI_SUCCESS; } /* Note that this function cannot be called in MPI since there is no win_dup function */ static int WIN_COPY_FN(MPI_Win win, int keyval, void *extra, void *inval, void *outval, int *flag) { int inValue = *(int *) inval; if (verbose) printf("PANIC: In C MPI win copy function (should never happen)\n"); *flag = 1; return MPI_SUCCESS; } static int WIN_DELETE_FN(MPI_Win win, int keyval, void *outval, void *extra) { if (verbose) printf(" In C MPI win delete function, extra = %p\n", extra); *(int *) outval = *(int *) outval - 1; return MPI_SUCCESS; } /* ----------------------------------------------------------------------- */ /* Routines to create keyvals in C (with C copy and delete functions */ /* ----------------------------------------------------------------------- */ void ccreatekeys_(MPI_Fint * ccomm1_key, MPI_Fint * ccomm2_key, MPI_Fint * ctype2_key, MPI_Fint * cwin2_key) { MPI_Keyval_create(CMPI1_COPY_FN, CMPI1_DELETE_FN, &ccomm1Key, &ccomm1Extra); *ccomm1_key = (MPI_Fint) ccomm1Key; MPI_Comm_create_keyval(CMPI1_COPY_FN, CMPI1_DELETE_FN, &ccomm2Key, &ccomm2Extra); *ccomm2_key = (MPI_Fint) ccomm2Key; MPI_Type_create_keyval(TYPE_COPY_FN, TYPE_DELETE_FN, &ctype2Key, &ctype2Extra); *ctype2_key = (MPI_Fint) ctype2Key; MPI_Win_create_keyval(WIN_COPY_FN, WIN_DELETE_FN, &cwin2Key, &cwin2Extra); *cwin2_key = (MPI_Fint) cwin2Key; } void cfreekeys_(void) { MPI_Keyval_free(&ccomm1Key); MPI_Comm_free_keyval(&ccomm2Key); MPI_Type_free_keyval(&ctype2Key); MPI_Win_free_keyval(&cwin2Key); } /* ----------------------------------------------------------------------- */ /* ----------------------------------------------------------------------- */ /* Test c-to-c attributes */ static int ccomm1Attr, ccomm2Attr, ctype2Attr, cwin2Attr; void ctoctest_(MPI_Fint * errs) { int errcnt = *errs; int baseattrval = (1 << (sizeof(int) * 8 - 2)) - 3; MPI_Datatype cduptype; MPI_Comm cdup; /* MPI-1 function */ ccomm1Attr = baseattrval; MPI_Attr_put(MPI_COMM_SELF, ccomm1Key, &ccomm1Attr); /* Test that we have the same value */ errcnt += cmpi1read(MPI_COMM_SELF, ccomm1Key, &ccomm1Attr, "C to C"); /* Dup, check that the copy routine does what is expected */ MPI_Comm_dup(MPI_COMM_SELF, &cdup); errcnt += cmpi1read(cdup, ccomm1Key, &ccomm1Attr, "C to C dup"); if (ccomm1Attr != baseattrval + 1) { printf(" Did not increment int in C to C dup: %d %d\n", ccomm1Attr, baseattrval + 1); errcnt++; } MPI_Comm_free(&cdup); if (ccomm1Attr != baseattrval) { printf(" Did not increment int in C to C delete: %d %d\n", ccomm1Attr, baseattrval); errcnt++; } /* MPI-2 functions */ ccomm1Attr = 0; ccomm2Attr = baseattrval; MPI_Comm_set_attr(MPI_COMM_SELF, ccomm2Key, &ccomm2Attr); /* Test that we have the same value */ errcnt += cmpi2read(MPI_COMM_SELF, ccomm2Key, &ccomm2Attr, "C to C (2)"); /* Dup, check that the copy routine does what is expected */ MPI_Comm_dup(MPI_COMM_SELF, &cdup); errcnt += cmpi2read(cdup, ccomm2Key, &ccomm2Attr, "C to C dup (2)"); if (ccomm2Attr != baseattrval + 1) { printf(" Did not increment int in C to C dup: %d %d\n", ccomm2Attr, baseattrval + 1); errcnt++; } MPI_Comm_free(&cdup); if (ccomm2Attr != baseattrval) { printf(" Did not increment int in C to C delete (2): %d %d\n", ccomm2Attr, baseattrval); errcnt++; } /* MPI-2 functions */ ctype2Attr = baseattrval; MPI_Type_set_attr(MPI_INTEGER, ctype2Key, &ctype2Attr); /* Test that we have the same value */ errcnt += cmpi2readtype(MPI_INTEGER, ctype2Key, &ctype2Attr, "C to C type (2)"); /* Dup, check that the copy routine does what is expected */ MPI_Type_dup(MPI_INTEGER, &cduptype); errcnt += cmpi2readtype(cduptype, ctype2Key, &ctype2Attr, "C to C typedup (2)"); if (ctype2Attr != baseattrval + 1) { printf(" Did not increment int in C to C typedup: %d %d\n", ctype2Attr, baseattrval + 1); errcnt++; } ccomm1Attr = 0; MPI_Type_free(&cduptype); if (ctype2Attr != baseattrval) { printf(" Did not increment int in C to C typedelete (2): %d %d\n", ctype2Attr, baseattrval); errcnt++; } *errs = errcnt; } /* ----------------------------------------------------------------------- */ /* Routines to get and check an attribute value. Returns the number */ /* of errors found */ /* ----------------------------------------------------------------------- */ int cmpi1read(MPI_Comm comm, int key, void *expected, const char *msg) { void *attrval; int flag; MPI_Attr_get(comm, key, &attrval, &flag); if (!flag) { printf(" Error: flag false for Attr_get: %s\n", msg); return 1; } if (attrval != expected) { printf(" Error: expected %p but saw %p: %s\n", expected, attrval, msg); return 1; } return 0; } int cmpi2read(MPI_Comm comm, int key, void *expected, const char *msg) { void *attrval; int flag; MPI_Comm_get_attr(comm, key, &attrval, &flag); if (!flag) { printf(" Error: flag false for Comm_get_attr: %s\n", msg); return 1; } if (attrval != expected) { printf(" Error: expected %p but saw %p: %s\n", expected, attrval, msg); return 1; } return 0; } int cmpi2readtype(MPI_Datatype dtype, int key, void *expected, const char *msg) { void *attrval; int flag; MPI_Type_get_attr(dtype, key, &attrval, &flag); if (!flag) { printf(" Error: flag false for Type_get_attr: %s\n", msg); return 1; } if (attrval != expected) { printf(" Error: expected %p but saw %p: %s\n", expected, attrval, msg); return 1; } return 0; } int cmpi2readwin(MPI_Win win, int key, void *expected, const char *msg) { void *attrval; int flag; MPI_Win_get_attr(win, key, &attrval, &flag); if (!flag) { printf(" Error: flag false for Win_get_attr: %s\n", msg); return 1; } if (attrval != expected) { printf(" Error: expected %p but saw %p: %s\n", expected, attrval, msg); return 1; } return 0; } /* Set in Fortran (MPI-1), read in C */ void cmpif1read_(MPI_Fint * fcomm, MPI_Fint * fkey, MPI_Fint * expected, MPI_Fint * errs, const char *msg, int msglen) { void *attrval; int flag, result; MPI_Comm comm = MPI_Comm_f2c(*fcomm); char lmsg[MAX_ATTRTEST_MSG]; if (msglen > sizeof(lmsg) - 1) { fprintf(stderr, "Message too long for buffer (%d)\n", msglen); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Attr_get(comm, *fkey, &attrval, &flag); if (!flag) { *errs = *errs + 1; strncpy(lmsg, msg, msglen); lmsg[msglen] = 0; printf(" Error: flag false for Attr_get (set in F1): %s\n", lmsg); return; } /* Must be careful to compare as required in the MPI specification */ ccompareint2void_(expected, attrval, &result); if (!result) { *errs = *errs + 1; strncpy(lmsg, msg, msglen); lmsg[msglen] = 0; printf(" Error: (set in F1) expected %d but saw %d: %s\n", *expected, *(MPI_Fint *) attrval, lmsg); return; } return; } /* Set in Fortran (MPI-2), read in C */ void cmpif2read_(MPI_Fint * fcomm, MPI_Fint * fkey, MPI_Aint * expected, MPI_Fint * errs, const char *msg, int msglen) { void *attrval; int flag, result; MPI_Comm comm = MPI_Comm_f2c(*fcomm); char lmsg[MAX_ATTRTEST_MSG]; if (msglen > sizeof(lmsg) - 1) { fprintf(stderr, "Message too long for buffer (%d)\n", msglen); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_get_attr(comm, *fkey, &attrval, &flag); if (!flag) { *errs = *errs + 1; strncpy(lmsg, msg, msglen); lmsg[msglen] = 0; printf(" Error: flag false for Comm_get_attr (set in F2): %s\n", lmsg); return; } ccompareaint2void_(expected, attrval, &result); if (!result) { *errs = *errs + 1; strncpy(lmsg, msg, msglen); lmsg[msglen] = 0; printf(" Error: (set in F2) expected %ld but saw %ld: %s\n", (long) *expected, (long) *(MPI_Aint *) attrval, lmsg); return; } return; } void cmpif2readtype_(MPI_Fint * ftype, MPI_Fint * fkey, MPI_Aint * expected, MPI_Fint * errs, const char *msg, int msglen) { void *attrval; int flag, result; MPI_Datatype dtype = MPI_Type_f2c(*ftype); char lmsg[MAX_ATTRTEST_MSG]; if (msglen > sizeof(lmsg) - 1) { fprintf(stderr, "Message too long for buffer (%d)\n", msglen); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Type_get_attr(dtype, *fkey, &attrval, &flag); if (!flag) { *errs = *errs + 1; strncpy(lmsg, msg, msglen); lmsg[msglen] = 0; printf(" Error: flag false for Type_get_attr (set in F2): %s\n", lmsg); return; } ccompareaint2void_(expected, attrval, &result); if (!result) { *errs = *errs + 1; strncpy(lmsg, msg, msglen); lmsg[msglen] = 0; printf(" Error: (set in F2/Type) expected %ld but saw %ld: %s\n", (long) *expected, (long) *(MPI_Aint *) attrval, lmsg); return; } return; } void cmpif2readwin_(MPI_Fint * fwin, MPI_Fint * fkey, MPI_Aint * expected, MPI_Fint * errs, const char *msg, int msglen) { void *attrval; int flag, result; MPI_Win win = MPI_Win_f2c(*fwin); char lmsg[MAX_ATTRTEST_MSG]; if (msglen > sizeof(lmsg) - 1) { fprintf(stderr, "Message too long for buffer (%d)\n", msglen); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Win_get_attr(win, *fkey, &attrval, &flag); if (!flag) { *errs = *errs + 1; strncpy(lmsg, msg, msglen); lmsg[msglen] = 0; printf(" Error: flag false for Win_get_attr (set in F2): %s\n", lmsg); return; } ccompareaint2void_(expected, attrval, &result); if (!result) { *errs = *errs + 1; strncpy(lmsg, msg, msglen); lmsg[msglen] = 0; printf(" Error: (set in F2/Win) expected %ld but saw %ld: %s\n", (long) *expected, (long) *(MPI_Aint *) attrval, lmsg); return; } return; } /* ----------------------------------------------------------------------- */ /* Given a Fortran attribute (pointer to the value to store), set it using */ /* the C attribute functions */ /* ----------------------------------------------------------------------- */ void csetmpi_(MPI_Fint * fcomm, MPI_Fint * fkey, MPI_Fint * val, MPI_Fint * errs) { MPI_Comm comm = MPI_Comm_f2c(*fcomm); MPI_Comm_set_attr(comm, *fkey, (void *) (MPI_Aint) * val); } void csetmpi2_(MPI_Fint * fcomm, MPI_Fint * fkey, MPI_Aint * val, MPI_Fint * errs) { MPI_Comm comm = MPI_Comm_f2c(*fcomm); MPI_Comm_set_attr(comm, *fkey, (void *) *val); } void csetmpitype_(MPI_Fint * ftype, MPI_Fint * fkey, MPI_Aint * val, MPI_Fint * errs) { MPI_Datatype dtype = MPI_Type_f2c(*ftype); MPI_Type_set_attr(dtype, *fkey, (void *) *val); } void csetmpiwin_(MPI_Fint * fwin, MPI_Fint * fkey, MPI_Aint * val, MPI_Fint * errs) { MPI_Win win = MPI_Win_f2c(*fwin); MPI_Win_set_attr(win, *fkey, (void *) *val); } /* ----------------------------------------------------------------------- */ /* Comparisons */ /* int with aint */ /* int with void* */ /* aint with void* */ /* All routines use similar interfaces, though the routines that involve */ /* void * must be called from C */ /* Defined to be callable from either C or Fortran */ /* Here is the rule, defined in the MPI standard: */ /* If one item is shorter than the other, take the low bytes. */ /* If one item is longer than the other, sign extend */ /* ----------------------------------------------------------------------- */ void ccompareint2aint_(MPI_Fint * in1, MPI_Aint * in2, MPI_Fint * result) { static int idx = -1; if (sizeof(MPI_Fint) == sizeof(MPI_Aint)) { *result = *in1 == *in2; } else if (sizeof(MPI_Fint) < sizeof(MPI_Aint)) { /* Assume Aint no smaller than Fint, and that size of aint * is a multiple of the size of fint) */ MPI_Fint *v2 = (MPI_Fint *) in2; if (idx < 0) { MPI_Aint av = 1; MPI_Fint *fa = (MPI_Fint *) & av; if ((sizeof(MPI_Aint) % sizeof(MPI_Fint)) != 0) { fprintf(stderr, "PANIC: size of MPI_Aint = %d not a multiple of MPI_Fint = %d\n", (int) sizeof(MPI_Aint), (int) sizeof(MPI_Fint)); MPI_Abort(MPI_COMM_WORLD, 1); } for (idx = sizeof(MPI_Aint) / sizeof(MPI_Fint); idx >= 0; idx--) if (fa[idx]) break; if (idx < 0) { fprintf(stderr, "Unable to determine low word of Fint in Aint\n"); MPI_Abort(MPI_COMM_WORLD, 1); } *result = *in1 == v2[idx]; } } else { fprintf(stderr, "PANIC: sizeof(MPI_Fint) = %d > sizeof(MPI_Aint) %d\n", (int) sizeof(MPI_Fint), (int) sizeof(MPI_Aint)); MPI_Abort(MPI_COMM_WORLD, 1); } } void ccompareint2void_(MPI_Fint * in1, void *in2, MPI_Fint * result) { static int idx = -1; if (sizeof(MPI_Fint) == sizeof(void *)) { *result = *in1 == *(MPI_Fint *) in2; } else if (sizeof(MPI_Fint) < sizeof(void *)) { /* Assume void* no smaller than Fint, and that size of aint * is a multiple of the size of fint) */ MPI_Fint *v2 = (MPI_Fint *) in2; if (idx < 0) { void *av = (void *) 1; MPI_Fint *fa = (MPI_Fint *) & av; if ((sizeof(void *) % sizeof(MPI_Fint)) != 0) { fprintf(stderr, "PANIC: size of void * = %d not a multiple of MPI_Fint = %d\n", (int) sizeof(void *), (int) sizeof(MPI_Fint)); MPI_Abort(MPI_COMM_WORLD, 1); } for (idx = sizeof(void *) / sizeof(MPI_Fint); idx >= 0; idx--) if (fa[idx]) break; if (idx < 0) { fprintf(stderr, "Unable to determine low word of Fint in void*\n"); MPI_Abort(MPI_COMM_WORLD, 1); } *result = *in1 == v2[idx]; } } else { fprintf(stderr, "PANIC: sizeof(MPI_Fint) = %d > sizeof(void*) %d\n", (int) sizeof(MPI_Fint), (int) sizeof(void *)); MPI_Abort(MPI_COMM_WORLD, 1); } } void ccompareaint2void_(MPI_Aint * in1, void *in2, MPI_Fint * result) { /* Note that an aint must be >= void * by definition */ *result = *in1 == *(MPI_Aint *) in2; } mpi-testsuite-3.2+dfsg/f90/attr/typeattr2f90.f900000644000175000017500000000636712621010150020526 0ustar mbanckmbanck! This file created from test/mpi/f77/attr/typeattr2f.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! This is a modified version of typeattrf.f that uses two of the ! default functions ! program main use mpi integer errs, ierr integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val integer type1, type2 integer keyval logical flag ! ! The only difference between the MPI-2 and MPI-1 attribute caching ! routines in Fortran is that the take an address-sized integer ! instead of a simple integer. These still are not pointers, ! so the values are still just integers. ! errs = 0 call mtest_init( ierr ) type1 = MPI_INTEGER ! extrastate = 1001 call mpi_type_create_keyval( MPI_TYPE_DUP_FN, & & MPI_TYPE_NULL_DELETE_FN, keyval, & & extrastate, ierr ) flag = .true. call mpi_type_get_attr( type1, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' get attr returned true when no attr set' endif valin = 2003 call mpi_type_set_attr( type1, keyval, valin, ierr ) flag = .false. valout = -1 call mpi_type_get_attr( type1, keyval, valout, flag, ierr ) if (valout .ne. 2003) then errs = errs + 1 print *, 'Unexpected value (should be 2003)', valout, & & ' from attr' endif valin = 2001 call mpi_type_set_attr( type1, keyval, valin, ierr ) flag = .false. valout = -1 call mpi_type_get_attr( type1, keyval, valout, flag, ierr ) if (valout .ne. 2001) then errs = errs + 1 print *, 'Unexpected value (should be 2001)', valout, & & ' from attr' endif ! ! Test the copy function valin = 5001 call mpi_type_set_attr( type1, keyval, valin, ierr ) call mpi_type_dup( type1, type2, ierr ) flag = .false. call mpi_type_get_attr( type1, keyval, valout, flag, ierr ) if (valout .ne. 5001) then errs = errs + 1 print *, 'Unexpected output value in type ', valout endif flag = .false. call mpi_type_get_attr( type2, keyval, valout, flag, ierr ) if (valout .ne. 5001) then errs = errs + 1 print *, 'Unexpected output value in type2 ', valout endif ! Test the delete function call mpi_type_free( type2, ierr ) ! ! Test the attr delete function call mpi_type_dup( type1, type2, ierr ) valin = 6001 extrastate = 1001 call mpi_type_set_attr( type2, keyval, valin, ierr ) call mpi_type_delete_attr( type2, keyval, ierr ) flag = .true. call mpi_type_get_attr( type2, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' Delete_attr did not delete attribute' endif call mpi_type_free( type2, ierr ) ! ierr = -1 call mpi_type_free_keyval( keyval, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call mtestprinterror( ierr ) endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/attr/testlist.ap0000644000175000017500000000005412620254305020124 0ustar mbanckmbanckfandcattrf90 1 baseattr3f90 1 attrlangf90 1 mpi-testsuite-3.2+dfsg/f90/attr/testlist0000644000175000017500000000034012621010150017510 0ustar mbanckmbanck# This file generated by f77tof90 attrmpi1f90 1 baseattrf90 1 baseattr2f90 1 commattrf90 1 commattr2f90 1 commattr3f90 1 commattr4f90 1 typeattrf90 1 typeattr2f90 1 typeattr3f90 1 fandcattrf90 1 baseattr3f90 1 attrlangf90 1 mpi-testsuite-3.2+dfsg/f90/attr/Makefile.in0000644000175000017500000006515612621010234020002 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This Makefile.am generated automatically by f77tof90 # from test/mpi/f77/attr/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = attrmpi1f90$(EXEEXT) baseattrf90$(EXEEXT) \ baseattr2f90$(EXEEXT) commattrf90$(EXEEXT) \ commattr2f90$(EXEEXT) commattr3f90$(EXEEXT) \ commattr4f90$(EXEEXT) typeattrf90$(EXEEXT) \ typeattr2f90$(EXEEXT) typeattr3f90$(EXEEXT) \ fandcattrf90$(EXEEXT) baseattr3f90$(EXEEXT) \ attrlangf90$(EXEEXT) @MAINTAINER_MODE_TRUE@am__append_1 = Makefile.am-stamp testlist.ap Makefile.ap subdir = f90/attr ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am_attrlangf90_OBJECTS = attrlangf90.$(OBJEXT) attrlangc.$(OBJEXT) attrlangf90_OBJECTS = $(am_attrlangf90_OBJECTS) attrlangf90_LDADD = $(LDADD) attrlangf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o attrmpi1f90_SOURCES = attrmpi1f90.f90 attrmpi1f90_OBJECTS = attrmpi1f90.$(OBJEXT) attrmpi1f90_LDADD = $(LDADD) attrmpi1f90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o baseattr2f90_SOURCES = baseattr2f90.f90 baseattr2f90_OBJECTS = baseattr2f90.$(OBJEXT) baseattr2f90_LDADD = $(LDADD) baseattr2f90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o am_baseattr3f90_OBJECTS = baseattr3f90.$(OBJEXT) baseattr3f90_OBJECTS = $(am_baseattr3f90_OBJECTS) baseattr3f90_LDADD = $(LDADD) baseattr3f90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o baseattrf90_SOURCES = baseattrf90.f90 baseattrf90_OBJECTS = baseattrf90.$(OBJEXT) baseattrf90_LDADD = $(LDADD) baseattrf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o commattr2f90_SOURCES = commattr2f90.f90 commattr2f90_OBJECTS = commattr2f90.$(OBJEXT) commattr2f90_LDADD = $(LDADD) commattr2f90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o commattr3f90_SOURCES = commattr3f90.f90 commattr3f90_OBJECTS = commattr3f90.$(OBJEXT) commattr3f90_LDADD = $(LDADD) commattr3f90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o commattr4f90_SOURCES = commattr4f90.f90 commattr4f90_OBJECTS = commattr4f90.$(OBJEXT) commattr4f90_LDADD = $(LDADD) commattr4f90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o commattrf90_SOURCES = commattrf90.f90 commattrf90_OBJECTS = commattrf90.$(OBJEXT) commattrf90_LDADD = $(LDADD) commattrf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o am_fandcattrf90_OBJECTS = fandcattrf90.$(OBJEXT) fandcattrc.$(OBJEXT) fandcattrf90_OBJECTS = $(am_fandcattrf90_OBJECTS) fandcattrf90_LDADD = $(LDADD) fandcattrf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o typeattr2f90_SOURCES = typeattr2f90.f90 typeattr2f90_OBJECTS = typeattr2f90.$(OBJEXT) typeattr2f90_LDADD = $(LDADD) typeattr2f90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o typeattr3f90_SOURCES = typeattr3f90.f90 typeattr3f90_OBJECTS = typeattr3f90.$(OBJEXT) typeattr3f90_LDADD = $(LDADD) typeattr3f90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o typeattrf90_SOURCES = typeattrf90.f90 typeattrf90_OBJECTS = typeattrf90.$(OBJEXT) typeattrf90_LDADD = $(LDADD) typeattrf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = SOURCES = $(attrlangf90_SOURCES) attrmpi1f90.f90 baseattr2f90.f90 \ $(baseattr3f90_SOURCES) baseattrf90.f90 commattr2f90.f90 \ commattr3f90.f90 commattr4f90.f90 commattrf90.f90 \ $(fandcattrf90_SOURCES) typeattr2f90.f90 typeattr3f90.f90 \ typeattrf90.f90 DIST_SOURCES = $(attrlangf90_SOURCES) attrmpi1f90.f90 baseattr2f90.f90 \ $(baseattr3f90_SOURCES) baseattrf90.f90 commattr2f90.f90 \ commattr3f90.f90 commattr4f90.f90 commattrf90.f90 \ $(fandcattrf90_SOURCES) typeattr2f90.f90 typeattr3f90.f90 \ typeattrf90.f90 am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_f90.mtest $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F90 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f90/util/mtestf90.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist $(am__append_1) # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 @MAINTAINER_MODE_TRUE@MAINTAINERCLEANFILES = Makefile.am-stamp fandcattrf90_SOURCES = fandcattrf90.f90 fandcattrc.c baseattr3f90_SOURCES = baseattr3f90.f90 attrlangf90_SOURCES = attrlangf90.f90 attrlangc.c all: all-am .SUFFIXES: .SUFFIXES: .c .f90 .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f90.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f90/attr/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f90/attr/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f90.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) attrlangf90$(EXEEXT): $(attrlangf90_OBJECTS) $(attrlangf90_DEPENDENCIES) $(EXTRA_attrlangf90_DEPENDENCIES) @rm -f attrlangf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(attrlangf90_OBJECTS) $(attrlangf90_LDADD) $(LIBS) attrmpi1f90$(EXEEXT): $(attrmpi1f90_OBJECTS) $(attrmpi1f90_DEPENDENCIES) $(EXTRA_attrmpi1f90_DEPENDENCIES) @rm -f attrmpi1f90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(attrmpi1f90_OBJECTS) $(attrmpi1f90_LDADD) $(LIBS) baseattr2f90$(EXEEXT): $(baseattr2f90_OBJECTS) $(baseattr2f90_DEPENDENCIES) $(EXTRA_baseattr2f90_DEPENDENCIES) @rm -f baseattr2f90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(baseattr2f90_OBJECTS) $(baseattr2f90_LDADD) $(LIBS) baseattr3f90$(EXEEXT): $(baseattr3f90_OBJECTS) $(baseattr3f90_DEPENDENCIES) $(EXTRA_baseattr3f90_DEPENDENCIES) @rm -f baseattr3f90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(baseattr3f90_OBJECTS) $(baseattr3f90_LDADD) $(LIBS) baseattrf90$(EXEEXT): $(baseattrf90_OBJECTS) $(baseattrf90_DEPENDENCIES) $(EXTRA_baseattrf90_DEPENDENCIES) @rm -f baseattrf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(baseattrf90_OBJECTS) $(baseattrf90_LDADD) $(LIBS) commattr2f90$(EXEEXT): $(commattr2f90_OBJECTS) $(commattr2f90_DEPENDENCIES) $(EXTRA_commattr2f90_DEPENDENCIES) @rm -f commattr2f90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(commattr2f90_OBJECTS) $(commattr2f90_LDADD) $(LIBS) commattr3f90$(EXEEXT): $(commattr3f90_OBJECTS) $(commattr3f90_DEPENDENCIES) $(EXTRA_commattr3f90_DEPENDENCIES) @rm -f commattr3f90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(commattr3f90_OBJECTS) $(commattr3f90_LDADD) $(LIBS) commattr4f90$(EXEEXT): $(commattr4f90_OBJECTS) $(commattr4f90_DEPENDENCIES) $(EXTRA_commattr4f90_DEPENDENCIES) @rm -f commattr4f90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(commattr4f90_OBJECTS) $(commattr4f90_LDADD) $(LIBS) commattrf90$(EXEEXT): $(commattrf90_OBJECTS) $(commattrf90_DEPENDENCIES) $(EXTRA_commattrf90_DEPENDENCIES) @rm -f commattrf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(commattrf90_OBJECTS) $(commattrf90_LDADD) $(LIBS) fandcattrf90$(EXEEXT): $(fandcattrf90_OBJECTS) $(fandcattrf90_DEPENDENCIES) $(EXTRA_fandcattrf90_DEPENDENCIES) @rm -f fandcattrf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(fandcattrf90_OBJECTS) $(fandcattrf90_LDADD) $(LIBS) typeattr2f90$(EXEEXT): $(typeattr2f90_OBJECTS) $(typeattr2f90_DEPENDENCIES) $(EXTRA_typeattr2f90_DEPENDENCIES) @rm -f typeattr2f90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(typeattr2f90_OBJECTS) $(typeattr2f90_LDADD) $(LIBS) typeattr3f90$(EXEEXT): $(typeattr3f90_OBJECTS) $(typeattr3f90_DEPENDENCIES) $(EXTRA_typeattr3f90_DEPENDENCIES) @rm -f typeattr3f90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(typeattr3f90_OBJECTS) $(typeattr3f90_LDADD) $(LIBS) typeattrf90$(EXEEXT): $(typeattrf90_OBJECTS) $(typeattrf90_DEPENDENCIES) $(EXTRA_typeattrf90_DEPENDENCIES) @rm -f typeattrf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(typeattrf90_OBJECTS) $(typeattrf90_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/attrlangc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fandcattrc.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic clean-local clean-noinstPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-local clean-noinstPROGRAMS cscopelist-am ctags ctags-am \ distclean distclean-compile distclean-generic distclean-tags \ distdir dvi dvi-am html html-am info info-am install \ install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile $(top_builddir)/f90/util/mtestf90.o: $(top_srcdir)/f90/util/mtestf90.f90 (cd $(top_builddir)/f90/util && $(MAKE) mtestf90.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # ensure that "{comm,type}attr*f.o" will be rebuilt when attraints.h is updated # f77tof90 only replaces output files if the contents differ, so we must use a # separate timestamp file in order avoid constantly trying to remake the f90 # copy of the Makefile when the f77 copy is updated in a way that does not # change its contents @MAINTAINER_MODE_TRUE@$(srcdir)/Makefile.am: $(srcdir)/Makefile.am-stamp @MAINTAINER_MODE_TRUE@$(srcdir)/Makefile.am-stamp: $(master_top_srcdir)/test/mpi/f77/attr/Makefile.am $(master_top_srcdir)/maint/f77tof90 @MAINTAINER_MODE_TRUE@ ( cd $(master_top_srcdir) && ./maint/f77tof90 test/mpi/f77/attr test/mpi/f90/attr Makefile.am Makefile.ap ) # Remove any created module files, if we know the extension of those files clean-local: if [ "@FCMODEXT@" != "" ] ; then rm -f *.@FCMODEXT@ ; fi # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f90/attr/commattr3f90.f900000644000175000017500000000545312621010150020474 0ustar mbanckmbanck! This file created from test/mpi/f77/attr/commattr3f.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2004 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! This tests the null copy function (returns flag false; thus the ! attribute should not be propagated to a dup'ed communicator ! This is must like the test in commattr2f ! program main use mpi integer errs, ierr integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val integer comm1, comm2 integer keyval logical flag ! ! The only difference between the MPI-2 and MPI-1 attribute caching ! routines in Fortran is that the take an address-sized integer ! instead of a simple integer. These still are not pointers, ! so the values are still just integers. ! errs = 0 call mtest_init( ierr ) call mpi_comm_dup( MPI_COMM_WORLD, comm1, ierr ) ! extrastate = 1001 call mpi_comm_create_keyval( MPI_COMM_NULL_COPY_FN, & & MPI_COMM_NULL_DELETE_FN, keyval, & & extrastate, ierr ) flag = .true. call mpi_comm_get_attr( comm1, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' get attr returned true when no attr set' endif ! Test the null copy function valin = 5001 call mpi_comm_set_attr( comm1, keyval, valin, ierr ) call mpi_comm_dup( comm1, comm2, ierr ) ! Because we set NULL_COPY_FN, the attribute should not ! appear on the dup'ed communicator flag = .false. call mpi_comm_get_attr( comm1, keyval, valout, flag, ierr ) if (valout .ne. 5001) then errs = errs + 1 print *, 'Unexpected output value in comm ', valout endif flag = .true. call mpi_comm_get_attr( comm2, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' Attribute incorrectly present on dup communicator' endif ! Test the delete function call mpi_comm_free( comm2, ierr ) ! ! Test the attr delete function call mpi_comm_dup( comm1, comm2, ierr ) valin = 6001 extrastate = 1001 call mpi_comm_set_attr( comm2, keyval, valin, ierr ) call mpi_comm_delete_attr( comm2, keyval, ierr ) flag = .true. call mpi_comm_get_attr( comm2, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' Delete_attr did not delete attribute' endif call mpi_comm_free( comm2, ierr ) ! ierr = -1 call mpi_comm_free_keyval( keyval, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call mtestprinterror( ierr ) endif call mpi_comm_free( comm1, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/attr/fandcattrf90.f900000644000175000017500000001036712620254305020544 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2008 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! ! To do: Create a keyval from c, then change the attribute from Fortran, ! then dup. The C attribute copy function should be passed a pointer to ! the Fortran attribute value (e.g., it should dereference it to check ! its value) ! program main use mpi integer (kind=MPI_ADDRESS_KIND) val integer ierr, errs, fcomm2_keyval, ftype2_keyval integer ccomm2_keyval, ctype2_keyval, cwin2_keyval integer callcount, delcount integer (kind=MPI_ADDRESS_KIND) commextra, typeextra common /myattr/ callcount, delcount external mycopyfn, mydelfn, mytcopyfn, mytdelfn callcount = 0 delcount = 0 errs = 0 call mpi_init(ierr) commextra = 1001 call mpi_comm_create_keyval( mycopyfn, mydelfn, & & fcomm2_keyval, commextra, ierr ) typeextra = 2001 call mpi_type_create_keyval( mytcopyfn, mytdelfn, & ftype2_keyval, typeextra, ierr ) call chkckeyvals( ccomm2_keyval, ctype2_keyval, cwin2_keyval ) ! Address-sized ints may be 32, 64, or something else in size; ! we can't assume any particular size. We can use the Fortran 90 ! intrinsic range to determine the available size and compute ! a suitable value. val = 5555 call mpi_comm_set_attr( MPI_COMM_WORLD, fcomm2_keyval, val, ierr ) call chkcomm2inc( fcomm2_keyval, 5555, errs ) call mpi_comm_free_keyval( fcomm2_keyval, ierr ) call mpi_type_free_keyval( ftype2_keyval, ierr ) call mpi_comm_free_keyval( ccomm2_keyval, ierr ) call mpi_type_free_keyval( ctype2_keyval, ierr ) call mpi_win_free_keyval( cwin2_keyval, ierr ) if (errs .eq. 0) then print *, ' No Errors' else print *, ' Found ', errs, ' errors' endif call mpi_finalize(ierr) end ! subroutine mycopyfn( oldcomm, keyval, extrastate, valin, valout, & & flag, ierr ) use mpi integer oldcomm, keyval, ierr integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val logical flag integer callcount, delcount common /myattr/ callcount, delcount ! increment the attribute by 2 valout = valin + 2 callcount = callcount + 1 if (extrastate .eq. 1001) then flag = .true. ierr = MPI_SUCCESS else print *, ' Unexpected value of extrastate = ', extrastate flag = .false. ierr = MPI_ERR_OTHER endif end ! subroutine mydelfn( comm, keyval, val, extrastate, ierr ) use mpi integer comm, keyval, ierr integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val integer callcount, delcount common /myattr/ callcount, delcount delcount = delcount + 1 if (extrastate .eq. 1001) then ierr = MPI_SUCCESS else print *, ' Unexpected value of extrastate = ', extrastate ierr = MPI_ERR_OTHER endif end ! subroutine mytcopyfn( oldtype, keyval, extrastate, valin, valout, & & flag, ierr ) use mpi integer oldtype, keyval, ierr integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val logical flag integer callcount, delcount common /myattr/ callcount, delcount ! increment the attribute by 2 valout = valin + 2 callcount = callcount + 1 if (extrastate .eq. 2001) then flag = .true. ierr = MPI_SUCCESS else print *, ' Unexpected value of extrastate = ', extrastate flag = .false. ierr = MPI_ERR_OTHER endif end ! subroutine mytdelfn( dtype, keyval, val, extrastate, ierr ) use mpi integer dtype, keyval, ierr integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val integer callcount, delcount common /myattr/ callcount, delcount delcount = delcount + 1 if (extrastate .eq. 2001) then ierr = MPI_SUCCESS else print *, ' Unexpected value of extrastate = ', extrastate ierr = MPI_ERR_OTHER endif end mpi-testsuite-3.2+dfsg/f90/attr/Makefile.ap0000644000175000017500000000057012620254305017771 0ustar mbanckmbanck## vim: set ft=automake : noinst_PROGRAMS += fandcattrf90 baseattr3f90 attrlangf90 fandcattrf90_SOURCES = fandcattrf90.f90 fandcattrc.c baseattr3f90_SOURCES = baseattr3f90.f90 attrlangf90_SOURCES = attrlangf90.f90 attrlangc.c # Remove any created module files, if we know the extension of those files clean-local: if [ "@FCMODEXT@" != "" ] ; then rm -f *.@FCMODEXT@ ; fi mpi-testsuite-3.2+dfsg/f90/attr/Makefile.am0000644000175000017500000000351112621010150017751 0ustar mbanckmbanck# This Makefile.am generated automatically by f77tof90 # from test/mpi/f77/attr/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f90.mtest EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 noinst_PROGRAMS = \ attrmpi1f90 \ baseattrf90 baseattr2f90 \ commattrf90 commattr2f90 \ commattr3f90 commattr4f90 \ typeattrf90 typeattr2f90 typeattr3f90 ## attraints.h will be distributed because it's listed in AC_CONFIG_FILES/AC_OUTPUT # ensure that "{comm,type}attr*f.o" will be rebuilt when attraints.h is updated if MAINTAINER_MODE # f77tof90 only replaces output files if the contents differ, so we must use a # separate timestamp file in order avoid constantly trying to remake the f90 # copy of the Makefile when the f77 copy is updated in a way that does not # change its contents $(srcdir)/Makefile.am: $(srcdir)/Makefile.am-stamp $(srcdir)/Makefile.am-stamp: $(master_top_srcdir)/test/mpi/f77/attr/Makefile.am $(master_top_srcdir)/maint/f77tof90 ( cd $(master_top_srcdir) && ./maint/f77tof90 test/mpi/f77/attr test/mpi/f90/attr Makefile.am Makefile.ap ) MAINTAINERCLEANFILES = Makefile.am-stamp EXTRA_DIST += Makefile.am-stamp testlist.ap Makefile.ap endif MAINTAINER_MODE ## vim: set ft=automake : noinst_PROGRAMS += fandcattrf90 baseattr3f90 attrlangf90 fandcattrf90_SOURCES = fandcattrf90.f90 fandcattrc.c baseattr3f90_SOURCES = baseattr3f90.f90 attrlangf90_SOURCES = attrlangf90.f90 attrlangc.c # Remove any created module files, if we know the extension of those files clean-local: if [ "@FCMODEXT@" != "" ] ; then rm -f *.@FCMODEXT@ ; fi mpi-testsuite-3.2+dfsg/f90/attr/typeattr3f90.f900000644000175000017500000000534212621010150020517 0ustar mbanckmbanck! This file created from test/mpi/f77/attr/typeattr3f.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2004 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! This tests the null copy function (returns flag false; thus the ! attribute should not be propagated to a dup'ed communicator ! This is much like the test in typeattr2f ! program main use mpi integer errs, ierr integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val integer type1, type2 integer keyval logical flag ! ! The only difference between the MPI-2 and MPI-1 attribute caching ! routines in Fortran is that the take an address-sized integer ! instead of a simple integer. These still are not pointers, ! so the values are still just integers. ! errs = 0 call mtest_init( ierr ) type1 = MPI_INTEGER ! extrastate = 1001 call mpi_type_create_keyval( MPI_TYPE_NULL_COPY_FN, & & MPI_TYPE_NULL_DELETE_FN, keyval, & & extrastate, ierr ) flag = .true. call mpi_type_get_attr( type1, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' get attr returned true when no attr set' endif ! Test the null copy function valin = 5001 call mpi_type_set_attr( type1, keyval, valin, ierr ) call mpi_type_dup( type1, type2, ierr ) ! Because we set NULL_COPY_FN, the attribute should not ! appear on the dup'ed communicator flag = .false. call mpi_type_get_attr( type1, keyval, valout, flag, ierr ) if (valout .ne. 5001) then errs = errs + 1 print *, 'Unexpected output value in type ', valout endif flag = .true. call mpi_type_get_attr( type2, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' Attribute incorrectly present on dup datatype' endif ! Test the delete function call mpi_type_free( type2, ierr ) ! ! Test the attr delete function call mpi_type_dup( type1, type2, ierr ) valin = 6001 extrastate = 1001 call mpi_type_set_attr( type2, keyval, valin, ierr ) call mpi_type_delete_attr( type2, keyval, ierr ) flag = .true. call mpi_type_get_attr( type2, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' Delete_attr did not delete attribute' endif call mpi_type_free( type2, ierr ) ! ierr = -1 call mpi_type_free_keyval( keyval, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call mtestprinterror( ierr ) endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/attr/commattrf90.f900000644000175000017500000001145112621010150020404 0ustar mbanckmbanck! This file created from test/mpi/f77/attr/commattrf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer errs, ierr integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val integer comm1, comm2 integer curcount, keyval logical flag external mycopyfn, mydelfn integer callcount, delcount common /myattr/ callcount, delcount ! ! The only difference between the MPI-2 and MPI-1 attribute caching ! routines in Fortran is that the take an address-sized integer ! instead of a simple integer. These still are not pointers, ! so the values are still just integers. ! errs = 0 callcount = 0 delcount = 0 call mtest_init( ierr ) call mpi_comm_dup( MPI_COMM_WORLD, comm1, ierr ) ! extrastate = 1001 call mpi_comm_create_keyval( mycopyfn, mydelfn, keyval, & & extrastate, ierr ) flag = .true. call mpi_comm_get_attr( comm1, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' get attr returned true when no attr set' endif valin = 2003 call mpi_comm_set_attr( comm1, keyval, valin, ierr ) flag = .false. valout = -1 call mpi_comm_get_attr( comm1, keyval, valout, flag, ierr ) if (valout .ne. 2003) then errs = errs + 1 print *, 'Unexpected value (should be 2003)', valout, & & ' from attr' endif valin = 2001 call mpi_comm_set_attr( comm1, keyval, valin, ierr ) flag = .false. valout = -1 call mpi_comm_get_attr( comm1, keyval, valout, flag, ierr ) if (valout .ne. 2001) then errs = errs + 1 print *, 'Unexpected value (should be 2001)', valout, & & ' from attr' endif ! ! Test the copy function valin = 5001 call mpi_comm_set_attr( comm1, keyval, valin, ierr ) call mpi_comm_dup( comm1, comm2, ierr ) flag = .false. call mpi_comm_get_attr( comm1, keyval, valout, flag, ierr ) if (valout .ne. 5001) then errs = errs + 1 print *, 'Unexpected output value in comm ', valout endif flag = .false. call mpi_comm_get_attr( comm2, keyval, valout, flag, ierr ) if (valout .ne. 5003) then errs = errs + 1 print *, 'Unexpected output value in comm2 ', valout endif ! Test the delete function curcount = delcount call mpi_comm_free( comm2, ierr ) if (delcount .ne. curcount + 1) then errs = errs + 1 print *, ' did not get expected value of delcount ', & & delcount, curcount + 1 endif ! ! Test the attr delete function call mpi_comm_dup( comm1, comm2, ierr ) valin = 6001 extrastate = 1001 call mpi_comm_set_attr( comm2, keyval, valin, ierr ) delcount = 0 call mpi_comm_delete_attr( comm2, keyval, ierr ) if (delcount .ne. 1) then errs = errs + 1 print *, ' Delete_attr did not call delete function' endif flag = .true. call mpi_comm_get_attr( comm2, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' Delete_attr did not delete attribute' endif call mpi_comm_free( comm2, ierr ) ! ierr = -1 call mpi_comm_free_keyval( keyval, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call mtestprinterror( ierr ) endif call mpi_comm_free( comm1, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end ! subroutine mycopyfn( oldcomm, keyval, extrastate, valin, valout, & & flag, ierr ) use mpi integer oldcomm, keyval, ierr integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val logical flag integer callcount, delcount common /myattr/ callcount, delcount ! increment the attribute by 2 valout = valin + 2 callcount = callcount + 1 if (extrastate .eq. 1001) then flag = .true. ierr = MPI_SUCCESS else print *, ' Unexpected value of extrastate = ', extrastate flag = .false. ierr = MPI_ERR_OTHER endif end ! subroutine mydelfn( comm, keyval, val, extrastate, ierr ) use mpi integer comm, keyval, ierr integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val integer callcount, delcount common /myattr/ callcount, delcount delcount = delcount + 1 if (extrastate .eq. 1001) then ierr = MPI_SUCCESS else print *, ' Unexpected value of extrastate = ', extrastate ierr = MPI_ERR_OTHER endif end mpi-testsuite-3.2+dfsg/f90/attr/baseattr2f90.f900000644000175000017500000000700512621010150020445 0ustar mbanckmbanck! This file created from test/mpi/f77/attr/baseattr2f.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! ! (C) 2001 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer ierr, errs logical flag integer value, commsize, commrank errs = 0 call mpi_init( ierr ) call mpi_comm_size( MPI_COMM_WORLD, commsize, ierr ) call mpi_comm_rank( MPI_COMM_WORLD, commrank, ierr ) call mpi_attr_get( MPI_COMM_WORLD, MPI_TAG_UB, value, flag, ierr & & ) if (.not. flag) then errs = errs + 1 print *, "Could not get TAG_UB" else if (value .lt. 32767) then errs = errs + 1 print *, "Got too-small value (", value, ") for TAG_UB" endif endif call mpi_attr_get( MPI_COMM_WORLD, MPI_HOST, value, flag, ierr ) if (.not. flag) then errs = errs + 1 print *, "Could not get HOST" else if ((value .lt. 0 .or. value .ge. commsize) .and. value .ne. & & MPI_PROC_NULL) then errs = errs + 1 print *, "Got invalid value ", value, " for HOST" endif endif call mpi_attr_get( MPI_COMM_WORLD, MPI_IO, value, flag, ierr ) if (.not. flag) then errs = errs + 1 print *, "Could not get IO" else if ((value .lt. 0 .or. value .ge. commsize) .and. value .ne. & & MPI_ANY_SOURCE .and. value .ne. MPI_PROC_NULL) then errs = errs + 1 print *, "Got invalid value ", value, " for IO" endif endif call mpi_attr_get( MPI_COMM_WORLD, MPI_WTIME_IS_GLOBAL, value, & & flag, ierr ) if (flag) then ! Wtime need not be set if (value .lt. 0 .or. value .gt. 1) then errs = errs + 1 print *, "Invalid value for WTIME_IS_GLOBAL (got ", value, & & ")" endif endif call mpi_attr_get( MPI_COMM_WORLD, MPI_APPNUM, value, flag, ierr & & ) ! appnum need not be set if (flag) then if (value .lt. 0) then errs = errs + 1 print *, "MPI_APPNUM is defined as ", value, & & " but must be nonnegative" endif endif call mpi_attr_get( MPI_COMM_WORLD, MPI_UNIVERSE_SIZE, value, & & flag, ierr ) ! MPI_UNIVERSE_SIZE need not be set if (flag) then if (value .lt. commsize) then errs = errs + 1 print *, "MPI_UNIVERSE_SIZE = ", value, & & ", less than comm world (", commsize, ")" endif endif call mpi_attr_get( MPI_COMM_WORLD, MPI_LASTUSEDCODE, value, flag & & , ierr ) ! Last used code must be defined and >= MPI_ERR_LASTCODE if (flag) then if (value .lt. MPI_ERR_LASTCODE) then errs = errs + 1 print *, "MPI_LASTUSEDCODE points to an integer (", & & MPI_ERR_LASTCODE, ") smaller than MPI_ERR_LASTCODE (", & & value, ")" endif else errs = errs + 1 print *, "MPI_LASTUSECODE is not defined" endif ! Check for errors if (errs .eq. 0) then print *, " No Errors" else print *, " Found ", errs, " errors" endif call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/attr/commattr4f90.f900000644000175000017500000000423312621010150020470 0ustar mbanckmbanck! This file created from test/mpi/f77/attr/commattr4f.f with f77tof90 ! program main ! use mpi integer ierr integer errs logical found integer comm2 integer key integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val errs = 0 ! ! initialize the mpi environment ! call mpi_init(ierr) call mpi_comm_create_keyval(MPI_COMM_DUP_FN, & & MPI_NULL_DELETE_FN, & & key, & & extrastate, & & ierr) ! ! set a value for the attribute ! valin = huge(valin) ! ! set attr in comm_world ! call mpi_comm_set_attr(MPI_COMM_WORLD, & & key, & & valin, & & ierr) call mpi_comm_get_attr(MPI_COMM_WORLD, & & key, & & valout, & & found, & & ierr) if (found .neqv. .true.) then print *, "mpi_comm_set_attr reported key, but not found on ", & & "mpi_comm_world" errs = errs + 1 else if (valout .ne. valin) then print *, "key found, but valin does not match valout" print *, valout, " != ", valin errs = errs + 1 end if ! ! dup the communicator, attribute should follow ! call mpi_comm_dup(MPI_COMM_WORLD, & & comm2, & & ierr) ! ! get the value for the attribute ! call mpi_comm_get_attr(comm2, & & key, & & valout, & & found, & & ierr) if (found .neqv. .true.) then print *, "mpi_comm_set_attr reported key, but not found on ", & & "duped comm" errs = errs + 1 else if (valout .ne. valin) then print *, "key found, but value does not match that on ", & & "mpi_comm_world" print *, valout, " != ", valin errs = errs + 1 end if ! ! free the duped communicator ! call mpi_comm_free(comm2, ierr) ! ! free keyval ! call mpi_comm_delete_attr(MPI_COMM_WORLD, & & key, ierr) call mpi_comm_free_keyval(key, & & ierr) call mpi_finalize(ierr) if (errs .eq. 0) then print *, " No Errors" end if end mpi-testsuite-3.2+dfsg/f90/attr/fandcattrc.c0000644000175000017500000000772712620254305020222 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* style: allow:fprintf:10 sig:0 */ #include #include "mpi.h" #include "../../include/mpitestconf.h" #include /* Name mapping. All routines are created with names that are lower case with a single trailing underscore. This matches many compilers. We use #define to change the name for Fortran compilers that do not use the lowercase/underscore pattern */ #ifdef F77_NAME_UPPER #define chkcomm2inc_ CHKCOMM2INC #define chkckeyvals_ CHKCKEYVALS #elif defined(F77_NAME_LOWER) || defined(F77_NAME_MIXED) /* Mixed is ok because we use lowercase in all uses */ #define chkcomm2inc_ chkcomm2inc #define chkckeyvals_ chkckeyvals #elif defined(F77_NAME_LOWER_2USCORE) || defined(F77_NAME_LOWER_USCORE) || \ defined(F77_NAME_MIXED_USCORE) /* Else leave name alone (routines have no underscore, so both of these map to a lowercase, single underscore) */ #else #error 'Unrecognized Fortran name mapping' #endif int chkcomm2inc_(int *keyval, const int *expected, int *ierr); int chkcomm2inc_(int *keyval, const int *expected, int *ierr) { int flag; MPI_Aint *val; /* See Example 16.19 in MPI 2.2, part B. The use of MPI_Aint *val * and the address of val in the get_attr call is correct, as is * the use of *val to access the value. */ MPI_Comm_get_attr(MPI_COMM_WORLD, *keyval, &val, &flag); if (!flag) { *ierr = 1; } else { if (*val != *expected) { /* In some cases, using printf from a c routine linked * with a Fortran routine can cause linking difficulties. * To avoid problems in running the tests, this print * is commented out */ /* printf("Val = %x, expected = %d\n", val, *expected); */ *ierr = *ierr + 1; } } return 0; } /* Attribute delete and copy functions for each type */ int myCommCopyfn(MPI_Comm comm, int keyval, void *extra_state, void *attr_val_in, void *attr_val_out, int *flag); int myCommCopyfn(MPI_Comm comm, int keyval, void *extra_state, void *attr_val_in, void *attr_val_out, int *flag) { *(void **) attr_val_out = (char *) attr_val_in + 2; *flag = 1; return MPI_SUCCESS; } int myCommDelfn(MPI_Comm comm, int keyval, void *attr_val, void *extra_state); int myCommDelfn(MPI_Comm comm, int keyval, void *attr_val, void *extra_state) { return MPI_SUCCESS; } int myTypeCopyfn(MPI_Datatype dtype, int keyval, void *extra_state, void *attr_val_in, void *attr_val_out, int *flag); int myTypeCopyfn(MPI_Datatype dtype, int keyval, void *extra_state, void *attr_val_in, void *attr_val_out, int *flag) { *(void **) attr_val_out = (char *) attr_val_in + 2; *flag = 1; return MPI_SUCCESS; } int myTypeDelfn(MPI_Datatype dtype, int keyval, void *attr_val, void *extra_state); int myTypeDelfn(MPI_Datatype dtype, int keyval, void *attr_val, void *extra_state) { return MPI_SUCCESS; } int myWinCopyfn(MPI_Win win, int keyval, void *extra_state, void *attr_val_in, void *attr_val_out, int *flag); int myWinCopyfn(MPI_Win win, int keyval, void *extra_state, void *attr_val_in, void *attr_val_out, int *flag) { *(void **) attr_val_out = (char *) attr_val_in + 2; *flag = 1; return MPI_SUCCESS; } int myWinDelfn(MPI_Win win, int keyval, void *attr_val, void *extra_state); int myWinDelfn(MPI_Win win, int keyval, void *attr_val, void *extra_state) { return MPI_SUCCESS; } int chkckeyvals_(int *comm_keyval, int *type_keyval, int *win_keyval); int chkckeyvals_(int *comm_keyval, int *type_keyval, int *win_keyval) { MPI_Comm_create_keyval(myCommCopyfn, myCommDelfn, comm_keyval, 0); MPI_Type_create_keyval(myTypeCopyfn, myTypeDelfn, type_keyval, 0); MPI_Win_create_keyval(myWinCopyfn, myWinDelfn, win_keyval, 0); return 0; } mpi-testsuite-3.2+dfsg/f90/attr/commattr2f90.f900000644000175000017500000000647412621010150020477 0ustar mbanckmbanck! This file created from test/mpi/f77/attr/commattr2f.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! This is a modified version of commattrf.f that uses two of the ! default functions ! program main use mpi integer errs, ierr integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val integer comm1, comm2 integer keyval logical flag ! ! The only difference between the MPI-2 and MPI-1 attribute caching ! routines in Fortran is that the take an address-sized integer ! instead of a simple integer. These still are not pointers, ! so the values are still just integers. ! errs = 0 call mtest_init( ierr ) call mpi_comm_dup( MPI_COMM_WORLD, comm1, ierr ) ! extrastate = 1001 call mpi_comm_create_keyval( MPI_COMM_DUP_FN, & & MPI_COMM_NULL_DELETE_FN, keyval, & & extrastate, ierr ) flag = .true. call mpi_comm_get_attr( comm1, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' get attr returned true when no attr set' endif valin = 2003 call mpi_comm_set_attr( comm1, keyval, valin, ierr ) flag = .false. valout = -1 call mpi_comm_get_attr( comm1, keyval, valout, flag, ierr ) if (valout .ne. 2003) then errs = errs + 1 print *, 'Unexpected value (should be 2003)', valout, & & ' from attr' endif valin = 2001 call mpi_comm_set_attr( comm1, keyval, valin, ierr ) flag = .false. valout = -1 call mpi_comm_get_attr( comm1, keyval, valout, flag, ierr ) if (valout .ne. 2001) then errs = errs + 1 print *, 'Unexpected value (should be 2001)', valout, & & ' from attr' endif ! ! Test the copy function valin = 5001 call mpi_comm_set_attr( comm1, keyval, valin, ierr ) call mpi_comm_dup( comm1, comm2, ierr ) flag = .false. call mpi_comm_get_attr( comm1, keyval, valout, flag, ierr ) if (valout .ne. 5001) then errs = errs + 1 print *, 'Unexpected output value in comm ', valout endif flag = .false. call mpi_comm_get_attr( comm2, keyval, valout, flag, ierr ) if (valout .ne. 5001) then errs = errs + 1 print *, 'Unexpected output value in comm2 ', valout endif ! Test the delete function call mpi_comm_free( comm2, ierr ) ! ! Test the attr delete function call mpi_comm_dup( comm1, comm2, ierr ) valin = 6001 extrastate = 1001 call mpi_comm_set_attr( comm2, keyval, valin, ierr ) call mpi_comm_delete_attr( comm2, keyval, ierr ) flag = .true. call mpi_comm_get_attr( comm2, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' Delete_attr did not delete attribute' endif call mpi_comm_free( comm2, ierr ) ! ierr = -1 call mpi_comm_free_keyval( keyval, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call mtestprinterror( ierr ) endif call mpi_comm_free( comm1, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/attr/attrlangf90.f900000644000175000017500000007615312620254305020417 0ustar mbanckmbanck! ! -*- Mode: Fortran; -*- ! ! (C) 2012 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! ! In MPI 2.2, the behavior of attributes set in one language and retrieved ! from another was defined. There are three types of attribute values: ! 1. pointer (void *): "The C type" ! 2. INTEGER : "The MPI-1 Fortran type" ! 3. INTEGER (KIND=MPI_ADDRESS_KIND) : "The MPI-2 Fortran type" ! ! All three apply to Communicator attributes, with case 2 using the ! deprecated MPI_ATTR_GET and MPI_ATTR_PUT routines. For Datatype and ! RMA Window attributes, cases 1 and 3 apply. ! ! Note, just to make this more complex, there are some reasons why an MPI ! implementation may choose to make MPI_Aint (and the corresponding ! Fortran MPI_ADDRESS_KIND) larger than a void pointer. Specifically, ! make it as large as MPI_Offset, which simplifies certain operations ! with datatypes. ! ! There are 9 cases: ! 1. C sets, C gets ! 2. C sets, Fortran INTEGER gets ! 3. C sets, Fortran ADDRESS_KIND gets ! 4. Fortran INTEGER sets, C gets ! 5. Fortran INTEGER sets, Fortran INTEGER gets ! 6. Fortran INTEGER sets, Fortran ADDRESS_KIND gets ! 7. Fortran ADDRESS_KIND sets, C gets ! 8. Fortran ADDRESS_KIND sets, Fortran INTEGER gets ! 9. Fortran ADDRESS_KIND sets, Fortran ADDRESS_KIND gets ! ! These are the basic cases. They are complicated by the fact that ! the attribute values have 3 types: void * (C interface), MPI_Fint ! (Fortran INTEGER), and MPI_Aint (Fortran ADDRESS_KIND). These ! have the following size relationships: ! ! sizeof(void *) <= sizeof(MPI_Aint) ! (For some systems, MPI_Aint is set to the same size as ! MPI_Offset, and may be larger than a void *.) ! sizeof(MPI_Fint) <= sizeof(MPI_Aint) ! (Not strictly defined, but all reasonable implementations will ! have this property) ! ! When a value is stored, the full value is stored (this may be fewer ! bytes than the maximum-sized attribute, in which case the high ! bytes are stored as zero). When a value is retrieved, if the ! destination location is smaller, the low bytes (in value) are ! saved; this is the same as trunction. If the destination location ! is longer, then then value is sign-extended (See MPI-3, 17.2.7). ! ! Specifically, if the value was set from Fortran, C will return a ! pointer to the appropriate-sized integer. ! When the value is set from C but accessed from Fortran, the value ! is converted to an integer of the appropriate length, possibly truncated. ! ! FIXME: The above different-length attribute case is not yet handled ! in this code. ! ! In addition to setting and getting attributes, they are accessed ! through duplication (COMM_DUP and TYPE_DUP), and on deletion of the ! object to which they are attached, when the copy functions will be ! well-defined. ! ! This code was inspired by a code written by Jeff Squyres to test these ! nine cases. This code, however, is different. ! ! So, for each of the same->same tests: ! Store largest positive and negative attributes. Dup them, ! retrieve them, delete them. All bytes should remain value, and ! no other. Use keys created in all three languages for set/get; ! use language under test for dup. ! ! For X->Y tests: ! Using X, store into key created in all three. ! Using Y, retrive all attributes. See above for handling of ! truncated or sign-extended ! ! Use Fortran to drive tests (Fortran main program). Call C for ! C routines and to check data with different sizes (to ensure that ! the proper bytes are used in the value). ! ! Use the same keyval for attributes used in both C and Fortran (both ! modes). This found an error in MPICH, where the type of the ! attribute (e.g., pointer, integer, or address-sized integer) needs ! to be saved. ! ! Module containing the keys and other information, including ! interfaces to the C routines module keyvals use mpi, only: MPI_ADDRESS_KIND logical fverbose, useintSize integer ptrSize, intSize, aintSize integer fcomm1_key, fcomm1_extra integer fcomm2_key, ftype2_key, fwin2_key integer ccomm1_key integer ccomm2_key, ctype2_key, cwin2_key integer win integer (kind=MPI_ADDRESS_KIND) fcomm2_extra, ftype2_extra,& & fwin2_extra interface pure function bigint() integer bigint end function bigint pure function bigaint() use mpi, only : MPI_ADDRESS_KIND integer (kind=MPI_ADDRESS_KIND) bigaint end function bigaint ! Could use bind(c) once we require that level of Fortran support. subroutine csetmpi( fcomm, fkey, val, errs ) integer, INTENT(IN) :: fcomm, fkey, val integer errs end subroutine csetmpi subroutine csetmpi2( fcomm, fkey, val, errs ) use mpi, only : MPI_ADDRESS_KIND integer, INTENT(IN) :: fcomm, fkey integer errs integer (KIND=MPI_ADDRESS_KIND) val end subroutine csetmpi2 subroutine cattrinit( fv ) integer fv end subroutine cattrinit subroutine cgetsizes( ps, is, as ) integer, INTENT(OUT) :: ps, is, as end subroutine cgetsizes subroutine ccreatekeys( k1, k2, k3, k4 ) integer, INTENT(OUT) :: k1, k2, k3, k4 end subroutine ccreatekeys subroutine cfreekeys() end subroutine cfreekeys subroutine ctoctest( errs ) integer errs end subroutine ctoctest end interface end module keyvals ! program main use mpi use keyvals implicit none integer ierr integer errs, tv, rank integer(MPI_ADDRESS_KIND) tmp errs = 0 call MPI_INIT( ierr ) call MPI_COMM_RANK( MPI_COMM_WORLD, rank, ierr ) ! ! Let the C routines know about debugging call cgetenvbool( "MPITEST_VERBOSE", tv ) if (tv .eq. 1) then fverbose = .true. call cattrinit( 1 ) else fverbose = .false. call cattrinit( 0 ) endif ! ! If this value is true, define an "big MPI_Aint" value that fits in ! an MPI_Fint (see function bigaint) call cgetenvbool( "MPITEST_ATTR_INTFORAINT", tv ) if (tv .eq. 1) then useintSize = .true. else useintSize = .false. endif ! ! Get the sizes of the three types of attributes call cgetsizes( ptrSize, intSize, aintSize ) if (fverbose) then print *, 'sizeof(ptr)=',ptrSize, ' sizeof(int)=', intSize, ' & &sizeof(aint)=', aintSize endif ! ! Create the keyvals ! ! Create the attribute values to use. We want these to use the full ! available width, which depends on both the type and the test, ! since when switching between types of different sizes, we need to ! check only the "low" bits (those shared in types of each size). ! ! if (fverbose) then print *, "Creating Fortran attribute keys" endif call fCreateKeys() if (fverbose) then print *, "Creating C attribute keys" endif call ccreatekeys( ccomm1_key, ccomm2_key, ctype2_key, cwin2_key& & ) ! ! Create a window to use with the attribute tests in Fortran tmp = 0 call MPI_WIN_CREATE( MPI_BOTTOM, tmp, 1, MPI_INFO_NULL,& & MPI_COMM_WORLD, win, ierr ) ! if (fverbose) then print *, "Case 1: C sets and C gets" endif call ctoctest( errs ) if (fverbose) then print *, "Case 2: C sets and Fortran (MPI1) gets" endif call ctof1test( errs ) if (fverbose) then print *, "Case 3: C sets and Fortran (MPI2) gets" endif call ctof2test( errs ) if (fverbose) then print *, "Case 4: Fortran (MPI1) sets and C gets" endif call f1toctest( errs ) if (fverbose) then print *, "Case 5: Fortran (MPI1) sets and gets" endif call f1tof1test( errs ) if (fverbose) then print *, "Case 6: Fortran (MPI1) sets and Fortran (MPI2) gets" endif call f1tof2test( errs ) if (fverbose) then print *, "Case 7: Fortran (MPI2) sets and C gets" endif call f2toctest( errs ) if (fverbose) then print *, "Case 8: Fortran (MPI2) sets and Fortran (MPI1) gets" endif call f2tof1test( errs ) if (fverbose) then print *, "Case 9: Fortran (MPI2) sets and gets" endif call f2tof2test( errs ) ! Cleanup call ffreekeys() call cfreekeys() call MPI_WIN_FREE( win, ierr ) call MPI_REDUCE( MPI_IN_PLACE, errs, 1, MPI_INT, MPI_SUM, 0,& & MPI_COMM_WORLD, ierr ) if (rank .eq. 0) then if (errs .eq. 0) then print *, " No Errors" else print *, " Found ", errs, " errors" endif endif call MPI_FINALIZE( ierr ) end ! ! ------------------------------------------------------------------- ! Check attribute set in Fortran (MPI-1) and read from Fortran (MPI-1) ! ------------------------------------------------------------------- integer function FMPI1checkCommAttr( comm, key, expected, msg ) use mpi integer comm, key, expected character*(*) msg integer value, ierr logical flag ! FMPI1checkCommAttr = 0 call MPI_ATTR_GET( comm, key, value, flag, ierr ) if (.not. flag) then print *, "Error: reading Fortran INTEGER attribute: ", msg FMPI1checkCommAttr = 1 return endif if (value .ne. expected) then print *, "Error: Fortran INTEGER attribute: ", msg print *, "Expected ", expected, " but got ", value FMPI1checkCommAttr = 1 endif return end ! ! ------------------------------------------------------------------- ! Functions associated with attribute copy/delete. ! ------------------------------------------------------------------- subroutine FMPI1_COPY_FN( oldcomm, key, extrastate, inval,& & outval, flag, ierr ) use mpi use keyvals, only : fverbose integer oldcomm, key, extrastate, inval, outval, ierr logical flag ! if (fverbose) then print *, 'FMPI1_COPY: Attr in = ', inval, ' extra = ',& & extrastate endif flag = .true. outval = inval + 1 ierr = MPI_SUCCESS end ! subroutine FMPI1_DELETE_FN( oldcomm, key, extrastate, inval,& & ierr ) use mpi use keyvals, only : fverbose integer oldcomm, key, extrastate, inval, ierr logical flag ! if (fverbose) then print *, "FMPI1_DELETE: inval = ", inval, " extra = ",& & extrastate endif ierr = MPI_SUCCESS end ! ! subroutine FMPI2_COPY_FN( oldcomm, key, extrastate, inval, outval,& & flag, ierr ) use mpi use keyvals, only : fverbose implicit none integer oldcomm, key, ierr integer (KIND=MPI_ADDRESS_KIND) inval, outval, extrastate logical flag ! if (fverbose) then print *, 'FMPI2_COPY: Attr in = ', inval, ' extra = ',& & extrastate endif flag = .true. outval = inval + 1 ierr = MPI_SUCCESS end ! subroutine FMPI2_DELETE_FN( oldcomm, key, extrastate, inval,& & ierr ) use mpi use keyvals, only : fverbose implicit none integer oldcomm, key, ierr integer (kind=MPI_ADDRESS_KIND) inval, extrastate ! if (fverbose) then print *, "FMPI2_DELETE: inval = ", inval, " extra = ",& & extrastate endif ierr = MPI_SUCCESS end ! ------------------------------------------------------------------- ! ! Typical check pattern ! ! Set value ! Get value (check set in same form) ! Get value in other modes ! Dup object (updates value) ! Get value in other modes ! Delete dup'ed object; check correct value sent to delete routine ! subroutine fcreateKeys( ) use mpi use keyvals implicit none external FMPI1_COPY_FN, FMPI1_DELETE_FN, FMPI2_COPY_FN,& & FMPI2_DELETE_FN integer ierr fcomm1_extra = 0 fcomm2_extra = 0 ftype2_extra = 0 fwin2_extra = 0 call MPI_KEYVAL_CREATE( FMPI1_COPY_FN, FMPI1_DELETE_FN,& & fcomm1_key, fcomm1_extra, ierr ) call MPI_COMM_CREATE_KEYVAL( FMPI2_COPY_FN, FMPI2_DELETE_FN,& & fcomm2_key, fcomm2_extra, ierr ) call MPI_TYPE_CREATE_KEYVAL( FMPI2_COPY_FN, FMPI2_DELETE_FN,& & ftype2_key, ftype2_extra, ierr ) call MPI_WIN_CREATE_KEYVAL( FMPI2_COPY_FN, FMPI2_DELETE_FN,& & fwin2_key, fwin2_extra, ierr ) end subroutine fcreateKeys ! subroutine ffreekeys() use mpi use keyvals implicit none integer ierr call MPI_KEYVAL_FREE( fcomm1_key, ierr ) call MPI_COMM_FREE_KEYVAL( fcomm2_key, ierr ) call MPI_TYPE_FREE_KEYVAL( ftype2_key, ierr ) call MPI_WIN_FREE_KEYVAL( fwin2_key, ierr ) return end subroutine ffreekeys ! ------------------------------------------------------------------- ! Set attributes in Fortran (MPI-1) and read them from Fortran (MPI-1) subroutine f1tof1test(errs) use mpi use keyvals implicit none integer errs integer ierr, attrval, fcomm1attr, fdup ! fcomm1attr = bigint() attrval = fcomm1attr call MPI_ATTR_PUT( MPI_COMM_SELF, fcomm1_key, fcomm1attr,& & ierr ) call fmpi1read( MPI_COMM_SELF, fcomm1_key, attrval, & &"F to F (check value)", errs ) call MPI_COMM_DUP( MPI_COMM_SELF, fdup, ierr ) call fmpi1read( fdup, fcomm1_key, attrval + 1, "F to F dup",& & errs ) call MPI_COMM_FREE( fdup, ierr ) ! ! Use a negative value fcomm1attr = -bigint() attrval = fcomm1attr call MPI_ATTR_PUT( MPI_COMM_SELF, fcomm1_key, fcomm1attr,& & ierr ) call fmpi1read( MPI_COMM_SELF, fcomm1_key, attrval, & &"F to F (check neg value)", errs ) call MPI_COMM_DUP( MPI_COMM_SELF, fdup, ierr ) call fmpi1read( fdup, fcomm1_key, attrval + 1, "F to F dup",& & errs ) call MPI_COMM_FREE( fdup, ierr ) end subroutine f1tof1test ! ! Set attributes in C and read them from Fortran (MPI-1) subroutine ctof1test(errs) use mpi use keyvals implicit none integer errs integer ierr, attrval, fcomm1attr, fdup ! fcomm1attr = bigint() attrval = fcomm1attr call csetmpi( MPI_COMM_SELF, fcomm1_key, fcomm1attr, errs ) call fmpi1read( MPI_COMM_SELF, fcomm1_key, attrval, "C to F",& & errs ) if (ptrSize .eq. intSize) then call MPI_COMM_DUP( MPI_COMM_SELF, fdup, ierr ) call fmpi1read( fdup, fcomm1_key, attrval + 1, "C to F dup",& & errs ) call MPI_COMM_FREE( fdup, ierr ) endif ! fcomm1attr = -bigint() attrval = fcomm1attr call csetmpi( MPI_COMM_SELF, fcomm1_key, fcomm1attr, errs ) call fmpi1read( MPI_COMM_SELF, fcomm1_key, attrval, "C to F",& & errs ) if (ptrSize .eq. intSize) then call MPI_COMM_DUP( MPI_COMM_SELF, fdup, ierr ) call fmpi1read( fdup, fcomm1_key, attrval + 1, "C to F dup",& & errs ) call MPI_COMM_FREE( fdup, ierr ) endif end subroutine ctof1test ! ! Set attributes in Fortran (MPI-1) and read in Fortran (MPI-2) subroutine f1tof2test(errs) use mpi use keyvals implicit none integer errs integer ierr, attrval, fcomm1attr, fdup integer (kind=MPI_ADDRESS_KIND) expected ! fcomm1attr = bigint() attrval = fcomm1attr call MPI_ATTR_PUT( MPI_COMM_SELF, fcomm1_key, fcomm1attr,& & ierr ) call fmpi1read( MPI_COMM_SELF, fcomm1_key, attrval, & & "F to F (check value for F2 test)", errs ) if (intSize .eq. aintSize) then call MPI_COMM_DUP( MPI_COMM_SELF, fdup, ierr ) expected = attrval + 1 call fmpi2read( fdup, fcomm1_key, expected, "F to F2 dup",& & errs ) call MPI_COMM_FREE( fdup, ierr ) endif ! fcomm1attr = -bigint() attrval = fcomm1attr call MPI_ATTR_PUT( MPI_COMM_SELF, fcomm1_key, fcomm1attr,& & ierr ) call fmpi1read( MPI_COMM_SELF, fcomm1_key, attrval, & &"F to F (check neg value for F2 test)", errs ) if (intSize .eq. aintSize) then call MPI_COMM_DUP( MPI_COMM_SELF, fdup, ierr ) expected = attrval + 1 call fmpi2read( fdup, fcomm1_key, expected, "F to F2 dup",& & errs ) call MPI_COMM_FREE( fdup, ierr ) endif end subroutine f1tof2test ! subroutine fmpi1read( comm, key, expected, msg, errs ) use mpi implicit none integer comm, key, expected, errs character *(*) msg logical flag integer ierr, attrval ! call MPI_ATTR_GET( comm, key, attrval, flag, ierr ) if (.not. flag) then print *, 'Error: flag false for Attr_get: ', msg errs = errs + 1 return endif if (attrval .ne. expected) then print *, 'Error: expected ', expected, ' but saw ',& & attrval, ':', msg errs = errs + 1 endif return end subroutine fmpi1read subroutine fmpi2read( comm, key, expected, msg, errs ) use mpi implicit none integer comm, key, errs integer (kind=MPI_ADDRESS_KIND) expected character *(*) msg logical flag integer ierr integer (kind=MPI_ADDRESS_KIND) attrval ! call MPI_COMM_GET_ATTR( comm, key, attrval, flag, ierr ) if (.not. flag) then print *, 'Error: flag false for Attr_get: ', msg errs = errs + 1 return endif if (attrval .ne. expected) then print *, 'Error: expected ', expected, ' but saw ',& & attrval, ':', msg errs = errs + 1 endif return end subroutine fmpi2read subroutine fmpi2readwin( win, key, expected, msg, errs ) use mpi implicit none integer win, key, errs integer (kind=MPI_ADDRESS_KIND) expected character *(*) msg logical flag integer ierr integer (kind=MPI_ADDRESS_KIND) attrval ! call MPI_WIN_GET_ATTR( win, key, attrval, flag, ierr ) if (.not. flag) then print *, 'Error: flag false for Win_get_attr: ', msg errs = errs + 1 return endif if (attrval .ne. expected) then print *, 'Error: expected ', expected, ' but saw ',& & attrval, ':', msg errs = errs + 1 endif return end subroutine fmpi2readwin subroutine fmpi2readtype( dtype, key, expected, msg, errs ) use mpi implicit none integer dtype, key, errs integer (kind=MPI_ADDRESS_KIND) expected character *(*) msg logical flag integer ierr integer (kind=MPI_ADDRESS_KIND) attrval ! call MPI_TYPE_GET_ATTR( dtype, key, attrval, flag, ierr ) if (.not. flag) then print *, 'Error: flag false for Type_get_attr: ', msg errs = errs + 1 return endif if (attrval .ne. expected) then print *, 'Error: expected ', expected, ' but saw ',& & attrval, ':', msg errs = errs + 1 endif return end subroutine fmpi2readtype subroutine f2tof2test(errs) use mpi use keyvals implicit none integer errs integer ierr, fdup, tdup integer (kind=MPI_ADDRESS_KIND) fcomm2attr, ftype2attr,& & fwin2attr, attrval ! fcomm2attr = bigaint() attrval = fcomm2attr call MPI_COMM_SET_ATTR( MPI_COMM_SELF, fcomm2_key, fcomm2attr,& & ierr ) call fmpi2read( MPI_COMM_SELF, fcomm2_key, attrval, "F2 to F2",& & errs ) call MPI_COMM_DUP( MPI_COMM_SELF, fdup, ierr ) call fmpi2read( fdup, fcomm2_key, attrval + 1, "F2 to F2 dup",& & errs ) call MPI_COMM_FREE( fdup, ierr ) ! ftype2attr = bigaint()-9 attrval = ftype2attr call MPI_TYPE_SET_ATTR( MPI_INTEGER, ftype2_key, ftype2attr,& & ierr ) call fmpi2readtype( MPI_INTEGER, ftype2_key, attrval, "F2 type& & to F2", errs ) call MPI_TYPE_DUP( MPI_INTEGER, tdup, ierr ) call fmpi2readtype( tdup, ftype2_key, attrval + 1, "F2 type to& & F dup", errs ) call MPI_TYPE_FREE( tdup, ierr ) fwin2attr = bigaint()-9 attrval = fwin2attr call MPI_WIN_SET_ATTR( win, fwin2_key, fwin2attr,& & ierr ) call fmpi2readwin( win, fwin2_key, attrval, "F2 win to F2",& & errs ) ! fcomm2attr = -bigaint() attrval = fcomm2attr call MPI_COMM_SET_ATTR( MPI_COMM_SELF, fcomm2_key, fcomm2attr,& & ierr ) call fmpi2read( MPI_COMM_SELF, fcomm2_key, attrval, "F2 to F2",& & errs ) call MPI_COMM_DUP( MPI_COMM_SELF, fdup, ierr ) call fmpi2read( fdup, fcomm2_key, attrval + 1, "F2 to F2 dup",& & errs ) call MPI_COMM_FREE( fdup, ierr ) ! ftype2attr = -(bigaint()-9) attrval = ftype2attr call MPI_TYPE_SET_ATTR( MPI_INTEGER, ftype2_key, ftype2attr,& & ierr ) call fmpi2readtype( MPI_INTEGER, ftype2_key, attrval, "F2 type& & to F2", errs ) call MPI_TYPE_DUP( MPI_INTEGER, tdup, ierr ) call fmpi2readtype( tdup, ftype2_key, attrval + 1, "F2 type to& & F dup", errs ) call MPI_TYPE_FREE( tdup, ierr ) fwin2attr = -(bigaint()-9) attrval = fwin2attr call MPI_WIN_SET_ATTR( win, fwin2_key, fwin2attr,& & ierr ) call fmpi2readwin( win, fwin2_key, attrval, "F2 win to F2",& & errs ) end subroutine f2tof2test ! subroutine f1toctest( errs ) use mpi use keyvals implicit none integer errs integer ierr, attrval, fcomm1attr, fdup ! fcomm1attr = bigint() attrval = fcomm1attr call MPI_ATTR_PUT( MPI_COMM_SELF, fcomm1_key, fcomm1attr,& & ierr ) call fmpi1read( MPI_COMM_SELF, fcomm1_key, attrval, & & "F to F (check for F to C)", errs ) if (intSize .eq. ptrSize) then call MPI_COMM_DUP( MPI_COMM_SELF, fdup, ierr ) call cmpif1read( fdup, fcomm1_key, attrval + 1, errs, & & "F to F2 dup" ) call MPI_COMM_FREE( fdup, ierr ) endif ! fcomm1attr = -bigint() attrval = fcomm1attr call MPI_ATTR_PUT( MPI_COMM_SELF, fcomm1_key, fcomm1attr,& & ierr ) call fmpi1read( MPI_COMM_SELF, fcomm1_key, attrval, & &"F to F (check neg value for F to C)", errs ) if (intSize .eq. ptrSize) then call MPI_COMM_DUP( MPI_COMM_SELF, fdup, ierr ) call cmpif1read( fdup, fcomm1_key, attrval + 1, errs, & "F to C dup" ) call MPI_COMM_FREE( fdup, ierr ) endif end subroutine f1toctest subroutine f2tof1test(errs) use mpi use keyvals implicit none integer errs integer ierr, fdup, tdup integer (kind=MPI_ADDRESS_KIND) fcomm2attr, ftype2attr,& & fwin2attr, attrval integer expected ! fcomm2attr = bigaint() attrval = fcomm2attr call MPI_COMM_SET_ATTR( MPI_COMM_SELF, fcomm2_key, fcomm2attr,& & ierr ) call fmpi2read( MPI_COMM_SELF, fcomm2_key, attrval, "F2 to F2",& & errs ) if (aintSize .eq. intSize) then call MPI_COMM_DUP( MPI_COMM_SELF, fdup, ierr ) expected = attrval + 1 call fmpi1read( fdup, fcomm2_key, expected, "F2 to F1 dup",& & errs ) call MPI_COMM_FREE( fdup, ierr ) endif ! fcomm2attr = -bigaint() attrval = fcomm2attr call MPI_COMM_SET_ATTR( MPI_COMM_SELF, fcomm2_key, fcomm2attr,& & ierr ) call fmpi2read( MPI_COMM_SELF, fcomm2_key, attrval, "F2 to F2",& & errs ) if (aintSize .eq. intSize) then call MPI_COMM_DUP( MPI_COMM_SELF, fdup, ierr ) expected = attrval + 1 call fmpi1read( fdup, fcomm2_key, expected, "F2 to F1 dup",& & errs ) call MPI_COMM_FREE( fdup, ierr ) endif ! end subroutine f2tof1test ! subroutine f2toctest(errs) use mpi use keyvals implicit none integer errs integer ierr, fdup, tdup integer (kind=MPI_ADDRESS_KIND) fcomm2attr, ftype2attr,& & fwin2attr, attrval ! fcomm2attr = bigaint() attrval = fcomm2attr call MPI_COMM_SET_ATTR( MPI_COMM_SELF, fcomm2_key, fcomm2attr,& & ierr ) call fmpi2read( MPI_COMM_SELF, fcomm2_key, attrval, "F2 to F2",& & errs ) if (aintSize .eq. ptrSize) then call MPI_COMM_DUP( MPI_COMM_SELF, fdup, ierr ) call cmpif2read( fdup, fcomm2_key, attrval + 1, errs, "F2 t& &o c dup") call MPI_COMM_FREE( fdup, ierr ) endif ! ftype2attr = bigaint()-9 attrval = ftype2attr call MPI_TYPE_SET_ATTR( MPI_INTEGER, ftype2_key, ftype2attr,& & ierr ) call fmpi2readtype( MPI_INTEGER, ftype2_key, attrval, "F2 type& & to F2", errs ) if (aintSize .eq. ptrSize) then call MPI_TYPE_DUP( MPI_INTEGER, tdup, ierr ) call cmpif2readtype( tdup, ftype2_key, attrval + 1, errs, "F2 & &type toF dup" ) call MPI_TYPE_FREE( tdup, ierr ) endif fwin2attr = bigaint()-9 attrval = fwin2attr call MPI_WIN_SET_ATTR( win, fwin2_key, fwin2attr, ierr ) call cmpif2readwin( win, fwin2_key, attrval, errs, "F2 win to & &c" ) ! fcomm2attr = -bigaint() attrval = fcomm2attr call MPI_COMM_SET_ATTR( MPI_COMM_SELF, fcomm2_key, fcomm2attr,& & ierr ) call fmpi2read( MPI_COMM_SELF, fcomm2_key, attrval, "F2 to F2",& & errs ) if (aintSize .eq. ptrSize) then call MPI_COMM_DUP( MPI_COMM_SELF, fdup, ierr ) call cmpif2read( fdup, fcomm2_key, attrval + 1, errs, "F2 t& &o c dup") call MPI_COMM_FREE( fdup, ierr ) endif ! ftype2attr = -(bigaint()-9) attrval = ftype2attr call MPI_TYPE_SET_ATTR( MPI_INTEGER, ftype2_key, ftype2attr,& & ierr ) call fmpi2readtype( MPI_INTEGER, ftype2_key, attrval, "F2 type& & to F2", errs ) if (aintSize .eq. ptrSize) then call MPI_TYPE_DUP( MPI_INTEGER, tdup, ierr ) call cmpif2readtype( tdup, ftype2_key, attrval + 1, errs, "F2 & &type toF dup" ) call MPI_TYPE_FREE( tdup, ierr ) endif fwin2attr = -(bigaint()-9) attrval = fwin2attr call MPI_WIN_SET_ATTR( win, fwin2_key, fwin2attr, ierr ) call cmpif2readwin( win, fwin2_key, attrval, errs, "F2 win to & &c" ) end subroutine f2toctest ! subroutine ctof2test(errs) use mpi use keyvals implicit none integer errs integer ierr, fdup, tdup integer (kind=MPI_ADDRESS_KIND) fcomm2attr, ftype2attr,& & fwin2attr, attrval ! fcomm2attr = bigaint() attrval = fcomm2attr call csetmpi2( MPI_COMM_SELF, fcomm2_key, fcomm2attr, errs ) call fmpi2read( MPI_COMM_SELF, fcomm2_key, attrval, "c to F2",& & errs ) if (aintSize .eq. ptrSize) then call MPI_COMM_DUP( MPI_COMM_SELF, fdup, ierr ) call fmpi2read( fdup, fcomm2_key, attrval + 1, "c to F2 dup",& & errs ) call MPI_COMM_FREE( fdup, ierr ) endif ! ftype2attr = bigaint()-9 attrval = ftype2attr call csetmpitype( MPI_INTEGER, ftype2_key, ftype2attr, errs ) call fmpi2readtype( MPI_INTEGER, ftype2_key, attrval, "c type& & to F2", errs ) if (aintSize .eq. ptrSize) then call MPI_TYPE_DUP( MPI_INTEGER, tdup, ierr ) call fmpi2readtype( tdup, ftype2_key, attrval + 1, "c type to& & F2 dup", errs ) call MPI_TYPE_FREE( tdup, ierr ) endif fwin2attr = bigaint()-9 attrval = fwin2attr call csetmpiwin( win, fwin2_key, fwin2attr, errs ) call fmpi2readwin( win, fwin2_key, attrval, "c win to F2",& & errs ) ! fcomm2attr = -bigaint() attrval = fcomm2attr call csetmpi2( MPI_COMM_SELF, fcomm2_key, fcomm2attr, errs ) call fmpi2read( MPI_COMM_SELF, fcomm2_key, attrval, "c to F2",& & errs ) if (aintSize .eq. ptrSize) then call MPI_COMM_DUP( MPI_COMM_SELF, fdup, ierr ) call fmpi2read( fdup, fcomm2_key, attrval + 1, "c to F2 dup",& & errs ) call MPI_COMM_FREE( fdup, ierr ) endif ! ftype2attr = -(bigaint()-9) attrval = ftype2attr call csetmpitype( MPI_INTEGER, ftype2_key, ftype2attr, errs ) call fmpi2readtype( MPI_INTEGER, ftype2_key, attrval, "c type& & to F2", errs ) if (aintSize .eq. ptrSize) then call MPI_TYPE_DUP( MPI_INTEGER, tdup, ierr ) call fmpi2readtype( tdup, ftype2_key, attrval + 1, "c type to& & F2 dup", errs ) call MPI_TYPE_FREE( tdup, ierr ) endif fwin2attr = -(bigaint()-9) attrval = fwin2attr call csetmpiwin( win, fwin2_key, fwin2attr, errs ) call fmpi2readwin( win, fwin2_key, attrval, "c win to F2",& & errs ) end subroutine ctof2test ! ------------------------------------------------------------------- ! Return an integer value that fills all of the bytes pure integer function bigint() integer i, v, digits digits = range(i) v = 0 do i=1,digits v = v * 10 + i enddo bigint = v return end function bigint ! ! Return an integer value that fill all of the bytes in an AINT ! The logical "useintsize" allows us to specify that only an int-sized ! result should be returned pure function bigaint() use mpi, only : MPI_ADDRESS_KIND use keyvals, only : useintsize implicit none integer (kind=MPI_ADDRESS_KIND) bigaint, v integer i, digits if (useintsize) then digits = range(i) else digits = range(v) endif v = 0 do i=1,digits v = v * 10 + i enddo bigaint = v return end function bigaint mpi-testsuite-3.2+dfsg/f90/attr/baseattr3f90.f900000644000175000017500000000731112620254305020461 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! ! (C) 2012 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! This is a MPI-2 version of baseattr2f90.f90 which uses COMM_GET_ATTR ! instead of ATTR_GET, using an address-sized integer instead of ! an INTEGER. program main use mpi integer ierr, errs logical flag integer commsize, commrank integer (KIND=MPI_ADDRESS_KIND) value errs = 0 call mpi_init( ierr ) call mpi_comm_size( MPI_COMM_WORLD, commsize, ierr ) call mpi_comm_rank( MPI_COMM_WORLD, commrank, ierr ) call mpi_comm_get_attr( MPI_COMM_WORLD, MPI_TAG_UB, value, & & flag, ierr ) if (.not. flag) then errs = errs + 1 print *, "Could not get TAG_UB" else if (value .lt. 32767) then errs = errs + 1 print *, "Got too-small value (", value, ") for TAG_UB" endif endif call mpi_comm_get_attr( MPI_COMM_WORLD, MPI_HOST, value, flag& &, ierr ) if (.not. flag) then errs = errs + 1 print *, "Could not get HOST" else if ((value .lt. 0 .or. value .ge. commsize) .and. value .ne. & & MPI_PROC_NULL) then errs = errs + 1 print *, "Got invalid value ", value, " for HOST" endif endif call mpi_comm_get_attr( MPI_COMM_WORLD, MPI_IO, value, flag,& & ierr ) if (.not. flag) then errs = errs + 1 print *, "Could not get IO" else if ((value .lt. 0 .or. value .ge. commsize) .and. value .ne. & & MPI_ANY_SOURCE .and. value .ne. MPI_PROC_NULL) then errs = errs + 1 print *, "Got invalid value ", value, " for IO" endif endif call mpi_comm_get_attr( MPI_COMM_WORLD, MPI_WTIME_IS_GLOBAL,& & value, flag, ierr ) if (flag) then ! Wtime need not be set if (value .lt. 0 .or. value .gt. 1) then errs = errs + 1 print *, "Invalid value for WTIME_IS_GLOBAL (got ", value, & & ")" endif endif call mpi_comm_get_attr( MPI_COMM_WORLD, MPI_APPNUM, value,& & flag, ierr ) ! appnum need not be set if (flag) then if (value .lt. 0) then errs = errs + 1 print *, "MPI_APPNUM is defined as ", value, & & " but must be nonnegative" endif endif call mpi_comm_get_attr( MPI_COMM_WORLD, MPI_UNIVERSE_SIZE,& & value, flag, ierr ) ! MPI_UNIVERSE_SIZE need not be set if (flag) then if (value .lt. commsize) then errs = errs + 1 print *, "MPI_UNIVERSE_SIZE = ", value, & & ", less than comm world (", commsize, ")" endif endif call mpi_comm_get_attr( MPI_COMM_WORLD, MPI_LASTUSEDCODE,& & value, flag, ierr ) ! Last used code must be defined and >= MPI_ERR_LASTCODE if (flag) then if (value .lt. MPI_ERR_LASTCODE) then errs = errs + 1 print *, "MPI_LASTUSEDCODE points to an integer (", & & MPI_ERR_LASTCODE, ") smaller than MPI_ERR_LASTCODE (", & & value, ")" endif else errs = errs + 1 print *, "MPI_LASTUSECODE is not defined" endif ! Check for errors if (errs .eq. 0) then print *, " No Errors" else print *, " Found ", errs, " errors" endif call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/attr/baseattrf90.f900000644000175000017500000000342012621010150020360 0ustar mbanckmbanck! This file created from test/mpi/f77/attr/baseattrf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer value, commsize logical flag integer ierr, errs errs = 0 call mpi_init( ierr ) call mpi_comm_size( MPI_COMM_WORLD, commsize, ierr ) call mpi_attr_get( MPI_COMM_WORLD, MPI_UNIVERSE_SIZE, value, flag & & , ierr) ! MPI_UNIVERSE_SIZE need not be set if (flag) then if (value .lt. commsize) then print *, "MPI_UNIVERSE_SIZE is ", value, " less than world " & & , commsize errs = errs + 1 endif endif call mpi_attr_get( MPI_COMM_WORLD, MPI_LASTUSEDCODE, value, flag, & & ierr ) ! Last used code must be defined and >= MPI_ERR_LASTCODE if (flag) then if (value .lt. MPI_ERR_LASTCODE) then errs = errs + 1 print *, "MPI_LASTUSEDCODE points to an integer & & (", value, ") smaller than MPI_ERR_LASTCODE (", & & MPI_ERR_LASTCODE, ")" endif else errs = errs + 1 print *, "MPI_LASTUSECODE is not defined" endif call mpi_attr_get( MPI_COMM_WORLD, MPI_APPNUM, value, flag, ierr ) ! appnum need not be set if (flag) then if (value .lt. 0) then errs = errs + 1 print *, "MPI_APPNUM is defined as ", value, & & " but must be nonnegative" endif endif ! Check for errors if (errs .eq. 0) then print *, " No Errors" else print *, " Found ", errs, " errors" endif call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/attr/typeattrf90.f900000644000175000017500000001144312621010150020433 0ustar mbanckmbanck! This file created from test/mpi/f77/attr/typeattrf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer errs, ierr integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val integer comm integer type1, type2 integer curcount, keyval logical flag external mycopyfn, mydelfn integer callcount, delcount common /myattr/ callcount, delcount ! ! The only difference between the MPI-2 and MPI-1 attribute caching ! routines in Fortran is that the take an address-sized integer ! instead of a simple integer. These still are not pointers, ! so the values are still just integers. ! errs = 0 callcount = 0 delcount = 0 call mtest_init( ierr ) ! ! Attach an attribute to a predefined object type1 = MPI_INTEGER extrastate = 1001 call mpi_type_create_keyval( mycopyfn, mydelfn, keyval, & & extrastate, ierr ) flag = .true. call mpi_type_get_attr( type1, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' get attr returned true when no attr set' endif valin = 2003 call mpi_type_set_attr( type1, keyval, valin, ierr ) flag = .false. valout = -1 call mpi_type_get_attr( type1, keyval, valout, flag, ierr ) if (valout .ne. 2003) then errs = errs + 1 print *, 'Unexpected value (should be 2003)', valout, & & ' from attr' endif valin = 2001 call mpi_type_set_attr( type1, keyval, valin, ierr ) flag = .false. valout = -1 call mpi_type_get_attr( type1, keyval, valout, flag, ierr ) if (valout .ne. 2001) then errs = errs + 1 print *, 'Unexpected value (should be 2001)', valout, & & ' from attr' endif ! ! Test the copy function valin = 5001 call mpi_type_set_attr( type1, keyval, valin, ierr ) call mpi_type_dup( type1, type2, ierr ) flag = .false. call mpi_type_get_attr( type1, keyval, valout, flag, ierr ) if (valout .ne. 5001) then errs = errs + 1 print *, 'Unexpected output value in type ', valout endif flag = .false. call mpi_type_get_attr( type2, keyval, valout, flag, ierr ) if (valout .ne. 5003) then errs = errs + 1 print *, 'Unexpected output value in type2 ', valout endif ! Test the delete function curcount = delcount call mpi_type_free( type2, ierr ) if (delcount .ne. curcount + 1) then errs = errs + 1 print *, ' did not get expected value of delcount ', & & delcount, curcount + 1 endif ! ! Test the attr delete function call mpi_type_dup( type1, type2, ierr ) valin = 6001 extrastate = 1001 call mpi_type_set_attr( type2, keyval, valin, ierr ) delcount = 0 call mpi_type_delete_attr( type2, keyval, ierr ) if (delcount .ne. 1) then errs = errs + 1 print *, ' Delete_attr did not call delete function' endif flag = .true. call mpi_type_get_attr( type2, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' Delete_attr did not delete attribute' endif call mpi_type_free( type2, ierr ) ierr = -1 call mpi_type_free_keyval( keyval, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call mtestprinterror( ierr ) endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end ! subroutine mycopyfn( oldtype, keyval, extrastate, valin, valout, & & flag, ierr ) use mpi integer oldtype, keyval, ierr integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val logical flag integer callcount, delcount common /myattr/ callcount, delcount ! increment the attribute by 2 valout = valin + 2 callcount = callcount + 1 if (extrastate .eq. 1001) then flag = .true. ierr = MPI_SUCCESS else print *, ' Unexpected value of extrastate = ', extrastate flag = .false. ierr = MPI_ERR_OTHER endif end ! subroutine mydelfn( type, keyval, val, extrastate, ierr ) use mpi integer type, keyval, ierr integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val integer callcount, delcount common /myattr/ callcount, delcount delcount = delcount + 1 if (extrastate .eq. 1001) then ierr = MPI_SUCCESS else print *, ' Unexpected value of extrastate = ', extrastate ierr = MPI_ERR_OTHER endif end mpi-testsuite-3.2+dfsg/f90/attr/Makefile.am-stamp0000644000175000017500000000001212621010150021064 0ustar mbanckmbancktimestamp mpi-testsuite-3.2+dfsg/f90/attr/attrmpi1f90.f900000644000175000017500000000364512621010150020325 0ustar mbanckmbanck! This file created from test/mpi/f77/attr/attrmpi1f.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer value, wsize, wrank, extra, mykey integer rvalue, svalue, ncomm logical flag integer ierr, errs ! errs = 0 call mtest_init( ierr ) call mpi_comm_size( MPI_COMM_WORLD, wsize, ierr ) call mpi_comm_rank( MPI_COMM_WORLD, wrank, ierr ) ! ! Simple attribute put and get ! call mpi_keyval_create( MPI_NULL_COPY_FN, MPI_NULL_DELETE_FN, & & mykey, extra,ierr ) call mpi_attr_get( MPI_COMM_WORLD, mykey, value, flag, ierr ) if (flag) then errs = errs + 1 print *, & & "Did not get flag==.false. for attribute that was not set" endif ! value = 1234567 svalue = value call mpi_attr_put( MPI_COMM_WORLD, mykey, value, ierr ) value = -9876543 call mpi_attr_get( MPI_COMM_WORLD, mykey, rvalue, flag, ierr ) if (.not. flag) then errs = errs + 1 print *, "Did not find attribute after set" else if (rvalue .ne. svalue) then errs = errs + 1 print *, "Attribute value ", rvalue, " should be ", svalue endif endif value = -123456 svalue = value call mpi_attr_put( MPI_COMM_WORLD, mykey, value, ierr ) value = 987654 call mpi_attr_get( MPI_COMM_WORLD, mykey, rvalue, flag, ierr ) if (.not. flag) then errs = errs + 1 print *, "Did not find attribute after set (neg)" else if (rvalue .ne. svalue) then errs = errs + 1 print *, "Neg Attribute value ", rvalue," should be ",svalue endif endif ! call mpi_keyval_free( mykey, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/Makefile.am0000644000175000017500000000064412620254305017016 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f90.mtest EXTRA_DIST = testlist.in static_subdirs = util timer attr coll datatype pt2pt info comm topo ext init \ misc f90types profile SUBDIRS = $(static_subdirs) $(rmadir) $(spawndir) $(iodir) DIST_SUBDIRS = $(static_subdirs) rma spawn io mpi-testsuite-3.2+dfsg/f90/util/0000755000175000017500000000000012621010235015724 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f90/util/Makefile.in0000644000175000017500000004374212621010235020003 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This Makefile.am generated automatically by f77tof90 # from test/mpi/f77/util/Makefile.am. DO NOT EDIT am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = f90/util ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = ARFLAGS = cru AM_V_AR = $(am__v_AR_@AM_V@) am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) am__v_AR_0 = @echo " AR " $@; am__v_AR_1 = libmtest_dummy_a_AR = $(AR) $(ARFLAGS) libmtest_dummy_a_LIBADD = am_libmtest_dummy_a_OBJECTS = mtestf90.$(OBJEXT) libmtest_dummy_a_OBJECTS = $(am_libmtest_dummy_a_OBJECTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = SOURCES = $(libmtest_dummy_a_SOURCES) DIST_SOURCES = $(libmtest_dummy_a_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_LIBRARIES = libmtest_dummy.a libmtest_dummy_a_SOURCES = mtestf90.f90 @MAINTAINER_MODE_TRUE@MAINTAINERCLEANFILES = Makefile.am-stamp @MAINTAINER_MODE_TRUE@EXTRA_DIST = Makefile.am-stamp all: all-am .SUFFIXES: .SUFFIXES: .f90 .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f90/util/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f90/util/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): libmtest_dummy.a: $(libmtest_dummy_a_OBJECTS) $(libmtest_dummy_a_DEPENDENCIES) $(EXTRA_libmtest_dummy_a_DEPENDENCIES) $(AM_V_at)-rm -f libmtest_dummy.a $(AM_V_AR)$(libmtest_dummy_a_AR) libmtest_dummy.a $(libmtest_dummy_a_OBJECTS) $(libmtest_dummy_a_LIBADD) $(AM_V_at)$(RANLIB) libmtest_dummy.a mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile all-local installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \ clean-generic cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile all-local: mtestf90.$(OBJEXT) # f77tof90 only replaces output files if the contents differ, so we must use a # separate timestamp file in order avoid constantly trying to remake the f90 # copy of the Makefile when the f77 copy is updated in a way that does not # change its contents @MAINTAINER_MODE_TRUE@$(srcdir)/Makefile.am: $(srcdir)/Makefile.am-stamp @MAINTAINER_MODE_TRUE@$(srcdir)/Makefile.am-stamp: $(master_top_srcdir)/test/mpi/f77/util/Makefile.am $(master_top_srcdir)/maint/f77tof90 @MAINTAINER_MODE_TRUE@ ( cd $(master_top_srcdir) && ./maint/f77tof90 test/mpi/f77/util test/mpi/f90/util Makefile.am Makefile.ap ) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f90/util/Makefile.am0000644000175000017500000000220012621010150017746 0ustar mbanckmbanck# This Makefile.am generated automatically by f77tof90 # from test/mpi/f77/util/Makefile.am. DO NOT EDIT ## -*- Mode: Makefile; -*- ## vim: set ft=automake : ## ## (C) 2011 by Argonne National Laboratory. ## See COPYRIGHT in top-level directory. ## ## list a dummy library that we don't actually build in order to cause automake ## to emit a rule for building mtestf90.o from mtestf90.f90 EXTRA_LIBRARIES = libmtest_dummy.a libmtest_dummy_a_SOURCES = mtestf90.f90 all-local: mtestf90.$(OBJEXT) if MAINTAINER_MODE # f77tof90 only replaces output files if the contents differ, so we must use a # separate timestamp file in order avoid constantly trying to remake the f90 # copy of the Makefile when the f77 copy is updated in a way that does not # change its contents $(srcdir)/Makefile.am: $(srcdir)/Makefile.am-stamp $(srcdir)/Makefile.am-stamp: $(master_top_srcdir)/test/mpi/f77/util/Makefile.am $(master_top_srcdir)/maint/f77tof90 ( cd $(master_top_srcdir) && ./maint/f77tof90 test/mpi/f77/util test/mpi/f90/util Makefile.am Makefile.ap ) MAINTAINERCLEANFILES = Makefile.am-stamp EXTRA_DIST = Makefile.am-stamp endif MAINTAINER_MODE mpi-testsuite-3.2+dfsg/f90/util/mtestf90.f900000644000175000017500000001113412621010150017713 0ustar mbanckmbanck! This file created from test/mpi/f77/util/mtestf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! subroutine MTest_Init( ierr ) ! Place the include first so that we can automatically create a ! Fortran 90 version that uses the mpi module instead. If ! the module is in a different place, the compiler can complain ! about out-of-order statements use mpi integer ierr logical flag logical dbgflag integer wrank common /mtest/ dbgflag, wrank call MPI_Initialized( flag, ierr ) if (.not. flag) then call MPI_Init( ierr ) endif dbgflag = .false. call MPI_Comm_rank( MPI_COMM_WORLD, wrank, ierr ) end ! subroutine MTest_Finalize( errs ) use mpi integer errs integer rank, toterrs, ierr call MPI_Comm_rank( MPI_COMM_WORLD, rank, ierr ) call MPI_Allreduce( errs, toterrs, 1, MPI_INTEGER, MPI_SUM, & & MPI_COMM_WORLD, ierr ) if (rank .eq. 0) then if (toterrs .gt. 0) then print *, " Found ", toterrs, " errors" else print *, " No Errors" endif endif end ! ! A simple get intracomm for now logical function MTestGetIntracomm( comm, min_size, qsmaller ) use mpi integer ierr integer comm, min_size, size, rank logical qsmaller integer myindex save myindex data myindex /0/ comm = MPI_COMM_NULL if (myindex .eq. 0) then comm = MPI_COMM_WORLD else if (myindex .eq. 1) then call mpi_comm_dup( MPI_COMM_WORLD, comm, ierr ) else if (myindex .eq. 2) then call mpi_comm_size( MPI_COMM_WORLD, size, ierr ) call mpi_comm_rank( MPI_COMM_WORLD, rank, ierr ) call mpi_comm_split( MPI_COMM_WORLD, 0, size - rank, comm, & & ierr ) else if (min_size .eq. 1 .and. myindex .eq. 3) then comm = MPI_COMM_SELF endif endif myindex = mod( myindex, 4 ) + 1 MTestGetIntracomm = comm .ne. MPI_COMM_NULL end ! subroutine MTestFreeComm( comm ) use mpi integer comm, ierr if (comm .ne. MPI_COMM_WORLD .and. & & comm .ne. MPI_COMM_SELF .and. & & comm .ne. MPI_COMM_NULL) then call mpi_comm_free( comm, ierr ) endif end ! subroutine MTestPrintError( errcode ) use mpi integer errcode integer errclass, slen, ierr character*(MPI_MAX_ERROR_STRING) string call MPI_Error_class( errcode, errclass, ierr ) call MPI_Error_string( errcode, string, slen, ierr ) print *, "Error class ", errclass, "(", string(1:slen), ")" end ! subroutine MTestPrintErrorMsg( msg, errcode ) use mpi character*(*) msg integer errcode integer errclass, slen, ierr character*(MPI_MAX_ERROR_STRING) string call MPI_Error_class( errcode, errclass, ierr ) call MPI_Error_string( errcode, string, slen, ierr ) print *, msg, ": Error class ", errclass, " & & (", string(1:slen), ")" end subroutine MTestSpawnPossible( can_spawn, errs ) use mpi integer can_spawn integer errs integer(kind=MPI_ADDRESS_KIND) val integer ierror logical flag integer comm_size call mpi_comm_get_attr( MPI_COMM_WORLD, MPI_UNIVERSE_SIZE, val, & & flag, ierror ) if ( ierror .ne. MPI_SUCCESS ) then ! MPI_UNIVERSE_SIZE keyval missing from MPI_COMM_WORLD attributes can_spawn = -1 errs = errs + 1 else if ( flag ) then comm_size = -1 call mpi_comm_size( MPI_COMM_WORLD, comm_size, ierror ) if ( ierror .ne. MPI_SUCCESS ) then ! MPI_COMM_SIZE failed for MPI_COMM_WORLD can_spawn = -1 errs = errs + 1 return endif if ( val .le. comm_size ) then ! no additional processes can be spawned can_spawn = 0 else can_spawn = 1 endif else ! No attribute associated with key MPI_UNIVERSE_SIZE of MPI_COMM_WORLD can_spawn = -1 endif endif end mpi-testsuite-3.2+dfsg/f90/util/Makefile.am-stamp0000644000175000017500000000001212621010150021067 0ustar mbanckmbancktimestamp mpi-testsuite-3.2+dfsg/f90/comm/0000755000175000017500000000000012621010234015701 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f90/comm/commnamef90.f900000644000175000017500000000451012621010150020331 0ustar mbanckmbanck! This file created from test/mpi/f77/comm/commnamef.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer errs, ierr integer comm(4), i, rlen, ln integer ncomm character*(MPI_MAX_OBJECT_NAME) inname(4), cname logical MTestGetIntracomm errs = 0 call mtest_init( ierr ) ! Test the predefined communicators do ln=1,MPI_MAX_OBJECT_NAME cname(ln:ln) = 'X' enddo call mpi_comm_get_name( MPI_COMM_WORLD, cname, rlen, ierr ) do ln=MPI_MAX_OBJECT_NAME,1,-1 if (cname(ln:ln) .ne. ' ') then if (ln .ne. rlen) then errs = errs + 1 print *, 'result len ', rlen,' not equal to actual len ', & & ln endif goto 110 endif enddo if (cname(1:rlen) .ne. 'MPI_COMM_WORLD') then errs = errs + 1 print *, 'Did not get MPI_COMM_WORLD for world' endif 110 continue ! do ln=1,MPI_MAX_OBJECT_NAME cname(ln:ln) = 'X' enddo call mpi_comm_get_name( MPI_COMM_SELF, cname, rlen, ierr ) do ln=MPI_MAX_OBJECT_NAME,1,-1 if (cname(ln:ln) .ne. ' ') then if (ln .ne. rlen) then errs = errs + 1 print *, 'result len ', rlen,' not equal to actual len ', & & ln endif goto 120 endif enddo if (cname(1:rlen) .ne. 'MPI_COMM_SELF') then errs = errs + 1 print *, 'Did not get MPI_COMM_SELF for world' endif 120 continue ! do i = 1, 4 if (MTestGetIntracomm( comm(i), 1, .true. )) then ncomm = i write( inname(i), '(a,i1)') 'myname',i call mpi_comm_set_name( comm(i), inname(i), ierr ) else goto 130 endif enddo 130 continue ! ! Now test them all do i=1, ncomm call mpi_comm_get_name( comm(i), cname, rlen, ierr ) if (inname(i) .ne. cname) then errs = errs + 1 print *, ' Expected ', inname(i), ' got ', cname endif call MTestFreeComm( comm(i) ) enddo ! call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/comm/testlist0000644000175000017500000000007512621010150017476 0ustar mbanckmbanck# This file generated by f77tof90 commnamef90 2 commerrf90 2 mpi-testsuite-3.2+dfsg/f90/comm/Makefile.in0000644000175000017500000004667612621010234017771 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This Makefile.am generated automatically by f77tof90 # from test/mpi/f77/comm/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = commnamef90$(EXEEXT) commerrf90$(EXEEXT) @MAINTAINER_MODE_TRUE@am__append_1 = Makefile.am-stamp subdir = f90/comm ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) commerrf90_SOURCES = commerrf90.f90 commerrf90_OBJECTS = commerrf90.$(OBJEXT) commerrf90_LDADD = $(LDADD) commerrf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o commnamef90_SOURCES = commnamef90.f90 commnamef90_OBJECTS = commnamef90.$(OBJEXT) commnamef90_LDADD = $(LDADD) commnamef90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = SOURCES = commerrf90.f90 commnamef90.f90 DIST_SOURCES = commerrf90.f90 commnamef90.f90 am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_f90.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F90 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f90/util/mtestf90.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist $(am__append_1) # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 @MAINTAINER_MODE_TRUE@MAINTAINERCLEANFILES = Makefile.am-stamp all: all-am .SUFFIXES: .SUFFIXES: .f90 .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f90.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f90/comm/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f90/comm/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f90.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) commerrf90$(EXEEXT): $(commerrf90_OBJECTS) $(commerrf90_DEPENDENCIES) $(EXTRA_commerrf90_DEPENDENCIES) @rm -f commerrf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(commerrf90_OBJECTS) $(commerrf90_LDADD) $(LIBS) commnamef90$(EXEEXT): $(commnamef90_OBJECTS) $(commnamef90_DEPENDENCIES) $(EXTRA_commnamef90_DEPENDENCIES) @rm -f commnamef90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(commnamef90_OBJECTS) $(commnamef90_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f90/util/mtestf90.o: $(top_srcdir)/f90/util/mtestf90.f90 (cd $(top_builddir)/f90/util && $(MAKE) mtestf90.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # f77tof90 only replaces output files if the contents differ, so we must use a # separate timestamp file in order avoid constantly trying to remake the f90 # copy of the Makefile when the f77 copy is updated in a way that does not # change its contents @MAINTAINER_MODE_TRUE@$(srcdir)/Makefile.am: $(srcdir)/Makefile.am-stamp @MAINTAINER_MODE_TRUE@$(srcdir)/Makefile.am-stamp: $(master_top_srcdir)/test/mpi/f77/comm/Makefile.am $(master_top_srcdir)/maint/f77tof90 @MAINTAINER_MODE_TRUE@ ( cd $(master_top_srcdir) && ./maint/f77tof90 test/mpi/f77/comm test/mpi/f90/comm Makefile.am Makefile.ap ) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f90/comm/Makefile.am0000644000175000017500000000211012621010150017724 0ustar mbanckmbanck# This Makefile.am generated automatically by f77tof90 # from test/mpi/f77/comm/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f90.mtest EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 noinst_PROGRAMS = commnamef90 commerrf90 if MAINTAINER_MODE # f77tof90 only replaces output files if the contents differ, so we must use a # separate timestamp file in order avoid constantly trying to remake the f90 # copy of the Makefile when the f77 copy is updated in a way that does not # change its contents $(srcdir)/Makefile.am: $(srcdir)/Makefile.am-stamp $(srcdir)/Makefile.am-stamp: $(master_top_srcdir)/test/mpi/f77/comm/Makefile.am $(master_top_srcdir)/maint/f77tof90 ( cd $(master_top_srcdir) && ./maint/f77tof90 test/mpi/f77/comm test/mpi/f90/comm Makefile.am Makefile.ap ) MAINTAINERCLEANFILES = Makefile.am-stamp EXTRA_DIST += Makefile.am-stamp endif MAINTAINER_MODE mpi-testsuite-3.2+dfsg/f90/comm/commerrf90.f900000644000175000017500000001067012621010150020205 0ustar mbanckmbanck! This file created from test/mpi/f77/comm/commerrf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer errs, ierr, code(2), newerrclass, eclass character*(MPI_MAX_ERROR_STRING) errstring integer comm, rlen ! external myerrhanfunc INTERFACE SUBROUTINE myerrhanfunc(vv0,vv1) INTEGER vv0,vv1 END SUBROUTINE END INTERFACE integer myerrhan, qerr integer callcount, codesSeen(3) common /myerrhan/ callcount, codesSeen errs = 0 callcount = 0 call mtest_init( ierr ) ! ! Setup some new codes and classes call mpi_add_error_class( newerrclass, ierr ) call mpi_add_error_code( newerrclass, code(1), ierr ) call mpi_add_error_code( newerrclass, code(2), ierr ) call mpi_add_error_string( newerrclass, "New Class", ierr ) call mpi_add_error_string( code(1), "First new code", ierr ) call mpi_add_error_string( code(2), "Second new code", ierr ) ! ! call mpi_comm_create_errhandler( myerrhanfunc, myerrhan, ierr ) ! ! Create a new communicator so that we can leave the default errors-abort ! on MPI_COMM_WORLD call mpi_comm_dup( MPI_COMM_WORLD, comm, ierr ) ! call mpi_comm_set_errhandler( comm, myerrhan, ierr ) call mpi_comm_get_errhandler( comm, qerr, ierr ) if (qerr .ne. myerrhan) then errs = errs + 1 print *, ' Did not get expected error handler' endif call mpi_errhandler_free( qerr, ierr ) ! We can free our error handler now call mpi_errhandler_free( myerrhan, ierr ) call mpi_comm_call_errhandler( comm, newerrclass, ierr ) call mpi_comm_call_errhandler( comm, code(1), ierr ) call mpi_comm_call_errhandler( comm, code(2), ierr ) if (callcount .ne. 3) then errs = errs + 1 print *, ' Expected 3 calls to error handler, found ', & & callcount else if (codesSeen(1) .ne. newerrclass) then errs = errs + 1 print *, 'Expected class ', newerrclass, ' got ', & & codesSeen(1) endif if (codesSeen(2) .ne. code(1)) then errs = errs + 1 print *, 'Expected code ', code(1), ' got ', & & codesSeen(2) endif if (codesSeen(3) .ne. code(2)) then errs = errs + 1 print *, 'Expected code ', code(2), ' got ', & & codesSeen(3) endif endif call mpi_comm_free( comm, ierr ) ! ! Check error strings while here... call mpi_error_string( newerrclass, errstring, rlen, ierr ) if (errstring(1:rlen) .ne. "New Class") then errs = errs + 1 print *, ' Wrong string for error class: ', errstring(1:rlen) endif call mpi_error_class( code(1), eclass, ierr ) if (eclass .ne. newerrclass) then errs = errs + 1 print *, ' Class for new code is not correct' endif call mpi_error_string( code(1), errstring, rlen, ierr ) if (errstring(1:rlen) .ne. "First new code") then errs = errs + 1 print *, ' Wrong string for error code: ', errstring(1:rlen) endif call mpi_error_class( code(2), eclass, ierr ) if (eclass .ne. newerrclass) then errs = errs + 1 print *, ' Class for new code is not correct' endif call mpi_error_string( code(2), errstring, rlen, ierr ) if (errstring(1:rlen) .ne. "Second new code") then errs = errs + 1 print *, ' Wrong string for error code: ', errstring(1:rlen) endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end ! subroutine myerrhanfunc( comm, errcode ) use mpi integer comm, errcode integer rlen, ierr integer callcount, codesSeen(3) character*(MPI_MAX_ERROR_STRING) errstring common /myerrhan/ callcount, codesSeen callcount = callcount + 1 ! Remember the code we've seen if (callcount .le. 3) then codesSeen(callcount) = errcode endif call mpi_error_string( errcode, errstring, rlen, ierr ) if (ierr .ne. MPI_SUCCESS) then print *, ' Panic! could not get error string' call mpi_abort( MPI_COMM_WORLD, 1, ierr ) endif end mpi-testsuite-3.2+dfsg/f90/comm/Makefile.am-stamp0000644000175000017500000000001212621010150021045 0ustar mbanckmbancktimestamp mpi-testsuite-3.2+dfsg/f90/testlist.in0000644000175000017500000000015112620254305017156 0ustar mbanckmbanckattr coll comm ext info init @iodir@ misc pt2pt datatype f90types @rmadir@ @spawndir@ timer topo profile mpi-testsuite-3.2+dfsg/f90/ext/0000755000175000017500000000000012621010234015546 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f90/ext/Makefile.in0000644000175000017500000005640212621010234017622 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This Makefile.am generated automatically by f77tof90 # from test/mpi/f77/ext/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ EXTRA_PROGRAMS = allocmemf90$(EXEEXT) noinst_PROGRAMS = c2f2cf90$(EXEEXT) ctypesinf90$(EXEEXT) \ c2f90mult$(EXEEXT) @MAINTAINER_MODE_TRUE@am__append_1 = Makefile.am-stamp Makefile.ap subdir = f90/ext ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = testlist CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am_allocmemf90_OBJECTS = allocmemf90.$(OBJEXT) allocmemf90_OBJECTS = $(am_allocmemf90_OBJECTS) allocmemf90_LDADD = $(LDADD) allocmemf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o am_c2f2cf90_OBJECTS = c2f2cf90.$(OBJEXT) c2f902c.$(OBJEXT) c2f2cf90_OBJECTS = $(am_c2f2cf90_OBJECTS) c2f2cf90_LDADD = $(LDADD) c2f2cf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o am_c2f90mult_OBJECTS = c2f90mult.$(OBJEXT) c2f90mult_OBJECTS = $(am_c2f90mult_OBJECTS) c2f90mult_DEPENDENCIES = $(top_builddir)/util/mtest.o am_ctypesinf90_OBJECTS = ctypesinf90.$(OBJEXT) ctypesfromc.$(OBJEXT) ctypesinf90_OBJECTS = $(am_ctypesinf90_OBJECTS) ctypesinf90_LDADD = $(LDADD) ctypesinf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = SOURCES = $(allocmemf90_SOURCES) $(c2f2cf90_SOURCES) \ $(c2f90mult_SOURCES) $(ctypesinf90_SOURCES) DIST_SOURCES = $(allocmemf90_SOURCES) $(c2f2cf90_SOURCES) \ $(c2f90mult_SOURCES) $(ctypesinf90_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/testlist.in \ $(top_srcdir)/Makefile_f90.mtest $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F90 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f90/util/mtestf90.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist.in $(am__append_1) allocmemf90_SOURCES = allocmemf90.f90 c2f2cf90_SOURCES = c2f2cf90.f90 c2f902c.c ctypesinf90_SOURCES = ctypesinf90.f90 ctypesfromc.c # C programs get a different mtest utility object c2f90mult_LDADD = $(top_builddir)/util/mtest.o c2f90mult_SOURCES = c2f90mult.c @MAINTAINER_MODE_TRUE@MAINTAINERCLEANFILES = Makefile.am-stamp BUILT_SOURCES = c2f902c.c ctypesfromc.c all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: .SUFFIXES: .c .f90 .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f90.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f90/ext/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f90/ext/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f90.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): testlist: $(top_builddir)/config.status $(srcdir)/testlist.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) allocmemf90$(EXEEXT): $(allocmemf90_OBJECTS) $(allocmemf90_DEPENDENCIES) $(EXTRA_allocmemf90_DEPENDENCIES) @rm -f allocmemf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(allocmemf90_OBJECTS) $(allocmemf90_LDADD) $(LIBS) c2f2cf90$(EXEEXT): $(c2f2cf90_OBJECTS) $(c2f2cf90_DEPENDENCIES) $(EXTRA_c2f2cf90_DEPENDENCIES) @rm -f c2f2cf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(c2f2cf90_OBJECTS) $(c2f2cf90_LDADD) $(LIBS) c2f90mult$(EXEEXT): $(c2f90mult_OBJECTS) $(c2f90mult_DEPENDENCIES) $(EXTRA_c2f90mult_DEPENDENCIES) @rm -f c2f90mult$(EXEEXT) $(AM_V_CCLD)$(LINK) $(c2f90mult_OBJECTS) $(c2f90mult_LDADD) $(LIBS) ctypesinf90$(EXEEXT): $(ctypesinf90_OBJECTS) $(ctypesinf90_DEPENDENCIES) $(EXTRA_ctypesinf90_DEPENDENCIES) @rm -f ctypesinf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(ctypesinf90_OBJECTS) $(ctypesinf90_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c2f902c.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c2f90mult.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctypesfromc.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-am all-am: Makefile $(PROGRAMS) installdirs: install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: all check install install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f90/util/mtestf90.o: $(top_srcdir)/f90/util/mtestf90.f90 (cd $(top_builddir)/f90/util && $(MAKE) mtestf90.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # ensure that dependent tests will be rebuilt when add1size.h is updated # we don't get this from Makefile_f90.mtest and we don't include Makefile.mtest $(top_builddir)/util/mtest.o: (cd $(top_builddir)/util && $(MAKE) mtest.o) # f77tof90 only replaces output files if the contents differ, so we must use a # separate timestamp file in order avoid constantly trying to remake the f90 # copy of the Makefile when the f77 copy is updated in a way that does not # change its contents @MAINTAINER_MODE_TRUE@$(srcdir)/Makefile.am: $(srcdir)/Makefile.am-stamp @MAINTAINER_MODE_TRUE@$(srcdir)/Makefile.am-stamp: $(master_top_srcdir)/test/mpi/f77/ext/Makefile.am $(master_top_srcdir)/maint/f77tof90 @MAINTAINER_MODE_TRUE@ ( cd $(master_top_srcdir) && ./maint/f77tof90 test/mpi/f77/ext test/mpi/f90/ext Makefile.am Makefile.ap ) # FIXME what's up with these rules? They appear to copy a file to itself in # non-VPATH builds... c2f902c.c: $(srcdir)/../../f90/ext/c2f902c.c cp $(srcdir)/../../f90/ext/c2f902c.c c2f902c.c ctypesfromc.c: $(srcdir)/../../f77/ext/ctypesfromc.c cp $(srcdir)/../../f77/ext/ctypesfromc.c ctypesfromc.c # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f90/ext/ctypesinf90.f900000644000175000017500000000326612621010150020247 0ustar mbanckmbanck! This file created from test/mpi/f77/ext/ctypesinf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2008 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer ierr integer errs, wrank integer f2ctype ! call mtest_init( ierr ) call mpi_comm_rank( MPI_COMM_WORLD, wrank, ierr ) ! errs = 0 ! errs = errs + f2ctype( MPI_CHAR, 0 ) errs = errs + f2ctype( MPI_SIGNED_CHAR, 1 ) errs = errs + f2ctype( MPI_UNSIGNED_CHAR, 2 ) errs = errs + f2ctype( MPI_WCHAR, 3 ) errs = errs + f2ctype( MPI_SHORT, 4 ) errs = errs + f2ctype( MPI_UNSIGNED_SHORT, 5 ) errs = errs + f2ctype( MPI_INT, 6 ) errs = errs + f2ctype( MPI_UNSIGNED, 7 ) errs = errs + f2ctype( MPI_LONG, 8 ) errs = errs + f2ctype( MPI_UNSIGNED_LONG, 9 ) errs = errs + f2ctype( MPI_FLOAT, 10 ) errs = errs + f2ctype( MPI_DOUBLE, 11 ) errs = errs + f2ctype( MPI_FLOAT_INT, 12 ) errs = errs + f2ctype( MPI_DOUBLE_INT, 13 ) errs = errs + f2ctype( MPI_LONG_INT, 14 ) errs = errs + f2ctype( MPI_SHORT_INT, 15 ) errs = errs + f2ctype( MPI_2INT, 16 ) if (MPI_LONG_DOUBLE .ne. MPI_DATATYPE_NULL) then errs = errs + f2ctype( MPI_LONG_DOUBLE, 17 ) errs = errs + f2ctype( MPI_LONG_DOUBLE_INT, 21 ) endif if (MPI_LONG_LONG .ne. MPI_DATATYPE_NULL) then errs = errs + f2ctype( MPI_LONG_LONG_INT, 18 ) errs = errs + f2ctype( MPI_LONG_LONG, 19 ) errs = errs + f2ctype( MPI_UNSIGNED_LONG_LONG, 20 ) endif ! ! Summarize the errors ! call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/ext/Makefile.ap0000644000175000017500000000056312620254305017621 0ustar mbanckmbanck## vim: set ft=automake : BUILT_SOURCES = c2f902c.c ctypesfromc.c # FIXME what's up with these rules? They appear to copy a file to itself in # non-VPATH builds... c2f902c.c: $(srcdir)/../../f90/ext/c2f902c.c cp $(srcdir)/../../f90/ext/c2f902c.c c2f902c.c ctypesfromc.c: $(srcdir)/../../f77/ext/ctypesfromc.c cp $(srcdir)/../../f77/ext/ctypesfromc.c ctypesfromc.c mpi-testsuite-3.2+dfsg/f90/ext/Makefile.am0000644000175000017500000000403612621010150017602 0ustar mbanckmbanck# This Makefile.am generated automatically by f77tof90 # from test/mpi/f77/ext/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f90.mtest EXTRA_DIST = testlist.in # allocmemf is an "extra" program because it requires a Fortran extension EXTRA_PROGRAMS = allocmemf90 noinst_PROGRAMS = c2f2cf90 ctypesinf90 c2f90mult allocmemf90_SOURCES = allocmemf90.f90 c2f2cf90_SOURCES = c2f2cf90.f90 c2f902c.c ctypesinf90_SOURCES = ctypesinf90.f90 ctypesfromc.c # C programs get a different mtest utility object c2f90mult_LDADD = $(top_builddir)/util/mtest.o c2f90mult_SOURCES = c2f90mult.c ## add1size.h will be distributed because it's listed in AC_CONFIG_FILES/AC_OUTPUT # ensure that dependent tests will be rebuilt when add1size.h is updated # we don't get this from Makefile_f90.mtest and we don't include Makefile.mtest $(top_builddir)/util/mtest.o: (cd $(top_builddir)/util && $(MAKE) mtest.o) if MAINTAINER_MODE # f77tof90 only replaces output files if the contents differ, so we must use a # separate timestamp file in order avoid constantly trying to remake the f90 # copy of the Makefile when the f77 copy is updated in a way that does not # change its contents $(srcdir)/Makefile.am: $(srcdir)/Makefile.am-stamp $(srcdir)/Makefile.am-stamp: $(master_top_srcdir)/test/mpi/f77/ext/Makefile.am $(master_top_srcdir)/maint/f77tof90 ( cd $(master_top_srcdir) && ./maint/f77tof90 test/mpi/f77/ext test/mpi/f90/ext Makefile.am Makefile.ap ) MAINTAINERCLEANFILES = Makefile.am-stamp EXTRA_DIST += Makefile.am-stamp Makefile.ap endif MAINTAINER_MODE ## vim: set ft=automake : BUILT_SOURCES = c2f902c.c ctypesfromc.c # FIXME what's up with these rules? They appear to copy a file to itself in # non-VPATH builds... c2f902c.c: $(srcdir)/../../f90/ext/c2f902c.c cp $(srcdir)/../../f90/ext/c2f902c.c c2f902c.c ctypesfromc.c: $(srcdir)/../../f77/ext/ctypesfromc.c cp $(srcdir)/../../f77/ext/ctypesfromc.c ctypesfromc.c mpi-testsuite-3.2+dfsg/f90/ext/testlist.in0000644000175000017500000000012412621010150017743 0ustar mbanckmbanck# This file generated by f77tof90 c2f2cf90 1 c2f90mult 1 ctypesinf90 1 @ALLOCMEMFC@ mpi-testsuite-3.2+dfsg/f90/ext/c2f90mult.c0000644000175000017500000000331512621010150017436 0ustar mbanckmbanck/* This file created from test/mpi/f77/ext/c2fmult.c with f77tof90 */ /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Check that MPI_xxxx_c2f, applied to the same object several times, yields the same handle. We do this because when MPI handles in C are a different length than those in Fortran, care needs to be exercised to ensure that the mapping from one to another is unique. (Test added to test a potential problem in ROMIO for handling MPI_File on 64-bit systems) */ #include "mpi.h" #include #include "mpitest.h" int main(int argc, char *argv[]) { MPI_Fint handleA, handleB; int rc; int errs = 0; int buf[1]; MPI_Request cRequest; MPI_Status st; int tFlag; MTest_Init(&argc, &argv); /* Request */ rc = MPI_Irecv(buf, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, &cRequest); if (rc) { errs++; printf("Unable to create request\n"); } else { handleA = MPI_Request_c2f(cRequest); handleB = MPI_Request_c2f(cRequest); if (handleA != handleB) { errs++; printf("MPI_Request_c2f does not give the same handle twice on the same MPI_Request\n"); } } MPI_Cancel(&cRequest); MPI_Test(&cRequest, &tFlag, &st); MPI_Test_cancelled(&st, &tFlag); if (!tFlag) { errs++; printf("Unable to cancel MPI_Irecv request\n"); } /* Using MPI_Request_free should be ok, but some MPI implementations * object to it imediately after the cancel and that isn't essential to * this test */ MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/f90/ext/c2f2cf90.f900000644000175000017500000000727112621010150017310 0ustar mbanckmbanck! This file created from test/mpi/f77/ext/c2f2cf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer errs, toterrs, ierr integer wrank, wsize integer wgroup, info, req integer fsize, frank integer comm, group, type, op, errh, result integer c2fcomm, c2fgroup, c2ftype, c2finfo, c2frequest, & & c2ferrhandler, c2fop character value*100 logical flag errs = 0 call mpi_init( ierr ) ! ! Test passing a Fortran MPI object to C call mpi_comm_rank( MPI_COMM_WORLD, wrank, ierr ) errs = errs + c2fcomm( MPI_COMM_WORLD ) call mpi_comm_group( MPI_COMM_WORLD, wgroup, ierr ) errs = errs + c2fgroup( wgroup ) call mpi_group_free( wgroup, ierr ) call mpi_info_create( info, ierr ) call mpi_info_set( info, "host", "myname", ierr ) call mpi_info_set( info, "wdir", "/rdir/foo", ierr ) errs = errs + c2finfo( info ) call mpi_info_free( info, ierr ) errs = errs + c2ftype( MPI_INTEGER ) call mpi_irecv( 0, 0, MPI_INTEGER, MPI_ANY_SOURCE, MPI_ANY_TAG, & & MPI_COMM_WORLD, req, ierr ) call mpi_cancel( req, ierr ) errs = errs + c2frequest( req ) call mpi_wait( req, MPI_STATUS_IGNORE, ierr ) errs = errs + c2ferrhandler( MPI_ERRORS_RETURN ) errs = errs + c2fop( MPI_SUM ) ! ! Test using a C routine to provide the Fortran handle call mpi_comm_size( MPI_COMM_WORLD, wsize, ierr ) call mpi_comm_rank( MPI_COMM_WORLD, wrank, ierr ) call f2ccomm( comm ) call mpi_comm_size( comm, fsize, ierr ) call mpi_comm_rank( comm, frank, ierr ) if (fsize.ne.wsize .or. frank.ne.wrank) then errs = errs + 1 print *, "Comm(fortran) has wrong size or rank" endif call f2cgroup( group ) call mpi_group_size( group, fsize, ierr ) call mpi_group_rank( group, frank, ierr ) if (fsize.ne.wsize .or. frank.ne.wrank) then errs = errs + 1 print *, "Group(fortran) has wrong size or rank" endif call mpi_group_free( group, ierr ) call f2ctype( type ) if (type .ne. MPI_INTEGER) then errs = errs + 1 print *, "Datatype(fortran) is not MPI_INT" endif call f2cinfo( info ) call mpi_info_get( info, "host", 100, value, flag, ierr ) if (.not. flag) then errs = errs + 1 print *, "Info test for host returned false" else if (value .ne. "myname") then errs = errs + 1 print *, "Info test for host returned ", value endif call mpi_info_get( info, "wdir", 100, value, flag, ierr ) if (.not. flag) then errs = errs + 1 print *, "Info test for wdir returned false" else if (value .ne. "/rdir/foo") then errs = errs + 1 print *, "Info test for wdir returned ", value endif call mpi_info_free( info, ierr ) call f2cop( op ) if (op .ne. MPI_SUM) then errs = errs + 1 print *, "Fortran MPI_SUM not MPI_SUM in C" endif call f2cerrhandler( errh ) if (errh .ne. MPI_ERRORS_RETURN) then errs = errs + 1 print *,"Fortran MPI_ERRORS_RETURN not MPI_ERRORS_RETURN in C" endif ! ! Summarize the errors ! call mpi_allreduce( errs, toterrs, 1, MPI_INTEGER, MPI_SUM, & & MPI_COMM_WORLD, ierr ) if (wrank .eq. 0) then if (toterrs .eq. 0) then print *, ' No Errors' else print *, ' Found ', toterrs, ' errors' endif endif call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/ext/ctypesfromc.c0000644000175000017500000001032112621010150020242 0ustar mbanckmbanck/* This file created from test/mpi/f77/ext/ctypesfromc.c with f77tof90 */ /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2008 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * This file contains the C routines used in testing that all C datatypes * are available in Fortran and have the correct values. * * The tests follow this pattern: * * Fortran main program * calls the c routine f2ctype with each of the C types and the name of * the type. That c routine using MPI_Type_f2c to convert the * Fortran handle to a C handle, and then compares it to the corresponding * C type, which is found by looking up the C handle by name * * C routine uses xxx_f2c routine to get C handle, checks some * properties (i.e., size and rank of communicator, contents of datatype) * * Then the Fortran main program calls a C routine that provides * a handle, and the Fortran program performs similar checks. * * We also assume that a C int is a Fortran integer. If this is not the * case, these tests must be modified. */ /* style: allow:fprintf:10 sig:0 */ #include #include "mpi.h" #include "../../include/mpitestconf.h" #include /* Create an array with all of the MPI names in it */ /* This is extracted from the test in test/mpi/types/typename.c ; only the C types are included. */ typedef struct mpi_names_t { MPI_Datatype dtype; const char *name; } mpi_names_t; /* The MPI standard specifies that the names must be the MPI names, not the related language names (e.g., MPI_CHAR, not char) */ static mpi_names_t mpi_names[] = { {MPI_CHAR, "MPI_CHAR"}, {MPI_SIGNED_CHAR, "MPI_SIGNED_CHAR"}, {MPI_UNSIGNED_CHAR, "MPI_UNSIGNED_CHAR"}, {MPI_WCHAR, "MPI_WCHAR"}, {MPI_SHORT, "MPI_SHORT"}, {MPI_UNSIGNED_SHORT, "MPI_UNSIGNED_SHORT"}, {MPI_INT, "MPI_INT"}, {MPI_UNSIGNED, "MPI_UNSIGNED"}, {MPI_LONG, "MPI_LONG"}, {MPI_UNSIGNED_LONG, "MPI_UNSIGNED_LONG"}, {MPI_FLOAT, "MPI_FLOAT"}, {MPI_DOUBLE, "MPI_DOUBLE"}, {MPI_FLOAT_INT, "MPI_FLOAT_INT"}, {MPI_DOUBLE_INT, "MPI_DOUBLE_INT"}, {MPI_LONG_INT, "MPI_LONG_INT"}, {MPI_SHORT_INT, "MPI_SHORT_INT"}, {MPI_2INT, "MPI_2INT"}, {MPI_LONG_DOUBLE, "MPI_LONG_DOUBLE"}, {MPI_LONG_LONG_INT, "MPI_LONG_LONG_INT"}, {MPI_LONG_LONG, "MPI_LONG_LONG"}, {MPI_UNSIGNED_LONG_LONG, "MPI_UNSIGNED_LONG_LONG"}, {MPI_LONG_DOUBLE_INT, "MPI_LONG_DOUBLE_INT"}, {0, (char *) 0}, /* Sentinal used to indicate the last element */ }; /* Name mapping. All routines are created with names that are lower case with a single trailing underscore. This matches many compilers. We use #define to change the name for Fortran compilers that do not use the lowercase/underscore pattern */ #ifdef F77_NAME_UPPER #define f2ctype_ F2CTYPE #elif defined(F77_NAME_LOWER) || defined(F77_NAME_MIXED) /* Mixed is ok because we use lowercase in all uses */ #define f2ctype_ f2ctype #elif defined(F77_NAME_LOWER_2USCORE) || defined(F77_NAME_LOWER_USCORE) || \ defined(F77_NAME_MIXED_USCORE) /* Else leave name alone (routines have no underscore, so both of these map to a lowercase, single underscore) */ #else #error 'Unrecognized Fortran name mapping' #endif /* Prototypes to keep compilers happy */ int f2ctype_(MPI_Fint *, MPI_Fint *); /* */ int f2ctype_(MPI_Fint * fhandle, MPI_Fint * typeidx) { int errs = 0; MPI_Datatype ctype; /* printf("Testing %s\n", mpi_names[*typeidx].name); */ ctype = MPI_Type_f2c(*fhandle); if (ctype != mpi_names[*typeidx].dtype) { char mytypename[MPI_MAX_OBJECT_NAME]; int mytypenamelen; /* An implementation is not *required* to deliver the * corresponding C version of the MPI Datatype bit-for-bit. But * if *must* act like it - e.g., the datatype name must be the same */ MPI_Type_get_name(ctype, mytypename, &mytypenamelen); if (strcmp(mytypename, mpi_names[*typeidx].name) != 0) { errs++; printf("C and Fortran types for %s (c name is %s) do not match f=%d, ctof=%d.\n", mpi_names[*typeidx].name, mytypename, *fhandle, MPI_Type_c2f(ctype)); } } return errs; } mpi-testsuite-3.2+dfsg/f90/ext/Makefile.am-stamp0000644000175000017500000000001212621010150020712 0ustar mbanckmbancktimestamp mpi-testsuite-3.2+dfsg/f90/ext/c2f902c.c0000644000175000017500000001477012621010150016770 0ustar mbanckmbanck/* This file created from test/mpi/f77/ext/c2f2c.c with f77tof90 */ /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * This file contains the C routines used in testing the c2f and f2c * handle conversion functions, except for MPI_File and MPI_Win (to * allow working with MPI implementations that do not include those * features). * * The tests follow this pattern: * * Fortran main program * calls c routine with each handle type, with a prepared * and valid handle (often requires constructing an object) * * C routine uses xxx_f2c routine to get C handle, checks some * properties (i.e., size and rank of communicator, contents of datatype) * * Then the Fortran main program calls a C routine that provides * a handle, and the Fortran program performs similar checks. * * We also assume that a C int is a Fortran integer. If this is not the * case, these tests must be modified. */ /* style: allow:fprintf:10 sig:0 */ #include #include "mpi.h" #include "../../include/mpitestconf.h" #include /* Name mapping. All routines are created with names that are lower case with a single trailing underscore. This matches many compilers. We use #define to change the name for Fortran compilers that do not use the lowercase/underscore pattern */ #ifdef F77_NAME_UPPER #define c2fcomm_ C2FCOMM #define c2fgroup_ C2FGROUP #define c2ftype_ C2FTYPE #define c2finfo_ C2FINFO #define c2frequest_ C2FREQUEST #define c2fop_ C2FOP #define c2ferrhandler_ C2FERRHANDLER #define f2ccomm_ F2CCOMM #define f2cgroup_ F2CGROUP #define f2ctype_ F2CTYPE #define f2cinfo_ F2CINFO #define f2crequest_ F2CREQUEST #define f2cop_ F2COP #define f2cerrhandler_ F2CERRHANDLER #elif defined(F77_NAME_LOWER) || defined(F77_NAME_MIXED) /* Mixed is ok because we use lowercase in all uses */ #define c2fcomm_ c2fcomm #define c2fgroup_ c2fgroup #define c2ftype_ c2ftype #define c2finfo_ c2finfo #define c2frequest_ c2frequest #define c2fop_ c2fop #define c2ferrhandler_ c2ferrhandler #define f2ccomm_ f2ccomm #define f2cgroup_ f2cgroup #define f2ctype_ f2ctype #define f2cinfo_ f2cinfo #define f2crequest_ f2crequest #define f2cop_ f2cop #define f2cerrhandler_ f2cerrhandler #elif defined(F77_NAME_LOWER_2USCORE) || defined(F77_NAME_LOWER_USCORE) || \ defined(F77_NAME_MIXED_USCORE) /* Else leave name alone (routines have no underscore, so both of these map to a lowercase, single underscore) */ #else #error 'Unrecognized Fortran name mapping' #endif /* Prototypes to keep compilers happy */ MPI_Fint c2fcomm_(MPI_Fint *); MPI_Fint c2fgroup_(MPI_Fint *); MPI_Fint c2finfo_(MPI_Fint *); MPI_Fint c2frequest_(MPI_Fint *); MPI_Fint c2ftype_(MPI_Fint *); MPI_Fint c2fop_(MPI_Fint *); MPI_Fint c2ferrhandler_(MPI_Fint *); void f2ccomm_(MPI_Fint *); void f2cgroup_(MPI_Fint *); void f2cinfo_(MPI_Fint *); void f2crequest_(MPI_Fint *); void f2ctype_(MPI_Fint *); void f2cop_(MPI_Fint *); void f2cerrhandler_(MPI_Fint *); MPI_Fint c2fcomm_(MPI_Fint * comm) { MPI_Comm cComm = MPI_Comm_f2c(*comm); int cSize, wSize, cRank, wRank; MPI_Comm_size(MPI_COMM_WORLD, &wSize); MPI_Comm_rank(MPI_COMM_WORLD, &wRank); MPI_Comm_size(cComm, &cSize); MPI_Comm_rank(cComm, &cRank); if (wSize != cSize || wRank != cRank) { fprintf(stderr, "Comm: Did not get expected size,rank (got %d,%d)", cSize, cRank); return 1; } return 0; } MPI_Fint c2fgroup_(MPI_Fint * group) { MPI_Group cGroup = MPI_Group_f2c(*group); int cSize, wSize, cRank, wRank; /* We pass in the group of comm world */ MPI_Comm_size(MPI_COMM_WORLD, &wSize); MPI_Comm_rank(MPI_COMM_WORLD, &wRank); MPI_Group_size(cGroup, &cSize); MPI_Group_rank(cGroup, &cRank); if (wSize != cSize || wRank != cRank) { fprintf(stderr, "Group: Did not get expected size,rank (got %d,%d)", cSize, cRank); return 1; } return 0; } MPI_Fint c2ftype_(MPI_Fint * type) { MPI_Datatype dtype = MPI_Type_f2c(*type); if (dtype != MPI_INTEGER) { fprintf(stderr, "Type: Did not get expected type\n"); return 1; } return 0; } MPI_Fint c2finfo_(MPI_Fint * info) { MPI_Info cInfo = MPI_Info_f2c(*info); int flag; char value[100]; MPI_Fint errs = 0; MPI_Info_get(cInfo, (char *) "host", sizeof(value), value, &flag); if (!flag || strcmp(value, "myname") != 0) { fprintf(stderr, "Info: Wrong value or no value for host\n"); errs++; } MPI_Info_get(cInfo, (char *) "wdir", sizeof(value), value, &flag); if (!flag || strcmp(value, "/rdir/foo") != 0) { fprintf(stderr, "Info: Wrong value of no value for wdir\n"); errs++; } return errs; } MPI_Fint c2frequest_(MPI_Fint * request) { MPI_Request req = MPI_Request_f2c(*request); MPI_Status status; int flag; MPI_Test(&req, &flag, &status); MPI_Test_cancelled(&status, &flag); if (!flag) { fprintf(stderr, "Request: Wrong value for flag\n"); return 1; } else { *request = MPI_Request_c2f(req); } return 0; } MPI_Fint c2fop_(MPI_Fint * op) { MPI_Op cOp = MPI_Op_f2c(*op); if (cOp != MPI_SUM) { fprintf(stderr, "Op: did not get sum\n"); return 1; } return 0; } MPI_Fint c2ferrhandler_(MPI_Fint * errh) { MPI_Errhandler errhand = MPI_Errhandler_f2c(*errh); if (errhand != MPI_ERRORS_RETURN) { fprintf(stderr, "Errhandler: did not get errors return\n"); return 1; } return 0; } /* * The following routines provide handles to the calling Fortran program */ void f2ccomm_(MPI_Fint * comm) { *comm = MPI_Comm_c2f(MPI_COMM_WORLD); } void f2cgroup_(MPI_Fint * group) { MPI_Group wgroup; MPI_Comm_group(MPI_COMM_WORLD, &wgroup); *group = MPI_Group_c2f(wgroup); } void f2ctype_(MPI_Fint * type) { *type = MPI_Type_c2f(MPI_INTEGER); } void f2cinfo_(MPI_Fint * info) { MPI_Info cinfo; MPI_Info_create(&cinfo); MPI_Info_set(cinfo, (char *) "host", (char *) "myname"); MPI_Info_set(cinfo, (char *) "wdir", (char *) "/rdir/foo"); *info = MPI_Info_c2f(cinfo); } void f2crequest_(MPI_Fint * req) { MPI_Request cReq; MPI_Irecv(NULL, 0, MPI_INT, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &cReq); MPI_Cancel(&cReq); *req = MPI_Request_c2f(cReq); } void f2cop_(MPI_Fint * op) { *op = MPI_Op_c2f(MPI_SUM); } void f2cerrhandler_(MPI_Fint * errh) { *errh = MPI_Errhandler_c2f(MPI_ERRORS_RETURN); } mpi-testsuite-3.2+dfsg/f90/ext/allocmemf90.f900000644000175000017500000000233212621010150020173 0ustar mbanckmbanck! This file created from test/mpi/f77/ext/allocmemf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2004 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi ! ! This program makes use of a common (but not universal; g77 doesn't ! have it) extension: the "Cray" pointer. This allows MPI_Alloc_mem ! to allocate memory and return it to Fortran, where it can be used. ! As this is not standard Fortran, this test is not run by default. ! To run it, build (with a suitable compiler) and run with ! mpiexec -n 1 ./allocmemf ! real a pointer (p,a(100,100)) integer (kind=MPI_ADDRESS_KIND) asize integer ierr, sizeofreal, errs integer i,j ! errs = 0 call mtest_init(ierr) call mpi_type_size( MPI_REAL, sizeofreal, ierr ) ! Make sure we pass in an integer of the correct type asize = sizeofreal * 100 * 100 call mpi_alloc_mem( asize,MPI_INFO_NULL,p,ierr ) do i=1,100 do j=1,100 a(i,j) = -1 enddo enddo a(3,5) = 10.0 call mpi_free_mem( a, ierr ) call mtest_finalize(errs) call mpi_finalize(ierr) end mpi-testsuite-3.2+dfsg/f90/misc/0000755000175000017500000000000012621010235015702 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f90/misc/testlist.ap0000644000175000017500000000001212620254305020077 0ustar mbanckmbancksizeof2 1 mpi-testsuite-3.2+dfsg/f90/misc/testlist0000644000175000017500000000001212620254305017500 0ustar mbanckmbancksizeof2 1 mpi-testsuite-3.2+dfsg/f90/misc/Makefile.in0000644000175000017500000004406612621010235017761 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = sizeof2$(EXEEXT) subdir = f90/misc ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am_sizeof2_OBJECTS = sizeof2.$(OBJEXT) sizeof2_OBJECTS = $(am_sizeof2_OBJECTS) sizeof2_LDADD = $(LDADD) sizeof2_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = SOURCES = $(sizeof2_SOURCES) DIST_SOURCES = $(sizeof2_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_f90.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F90 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f90/util/mtestf90.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist testlist.ap sizeof2_SOURCES = sizeof2.f90 all: all-am .SUFFIXES: .SUFFIXES: .f90 .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f90.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f90/misc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f90/misc/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f90.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) sizeof2$(EXEEXT): $(sizeof2_OBJECTS) $(sizeof2_DEPENDENCIES) $(EXTRA_sizeof2_DEPENDENCIES) @rm -f sizeof2$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(sizeof2_OBJECTS) $(sizeof2_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f90/util/mtestf90.o: $(top_srcdir)/f90/util/mtestf90.f90 (cd $(top_builddir)/f90/util && $(MAKE) mtestf90.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f90/misc/Makefile.am0000644000175000017500000000044412620254305017747 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f90.mtest EXTRA_DIST = testlist EXTRA_DIST += testlist.ap noinst_PROGRAMS = sizeof2 sizeof2_SOURCES = sizeof2.f90 mpi-testsuite-3.2+dfsg/f90/misc/sizeof2.f900000644000175000017500000000403212620254305017611 0ustar mbanckmbanck! ! (C) 2004 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer ierr, errs integer size1, size2 real a real d(20) double precision b complex c errs = 0 call mpi_init(ierr) call mpi_sizeof( errs, size1, ierr ) call mpi_type_size( MPI_INTEGER, size2, ierr ) if (size1 .ne. size2) then errs = errs + 1 print *, "integer size is ", size2, " sizeof claims ", size1 endif call mpi_sizeof( a, size1, ierr ) call mpi_type_size( MPI_REAL, size2, ierr ) if (size1 .ne. size2) then errs = errs + 1 print *, "real size is ", size2, " sizeof claims ", size1 endif call mpi_sizeof( b, size1, ierr ) call mpi_type_size( MPI_DOUBLE_PRECISION, size2, ierr ) if (size1 .ne. size2) then errs = errs + 1 print *, "double precision size is ", size2, " sizeof claims ", size1 endif call mpi_sizeof( c, size1, ierr ) call mpi_type_size( MPI_COMPLEX, size2, ierr ) if (size1 .ne. size2) then errs = errs + 1 print *, "complex size is ", size2, " sizeof claims ", size1 endif ! ! A previous version of this test called mpi_sizeof with a character variable. ! However, the MPI 2.2 standard, p 494, line 41, defines MPI_SIZEOF only ! for "numeric intrinsic type", so that test was removed. ! call mpi_sizeof( d, size1, ierr ) call mpi_type_size( MPI_REAL, size2, ierr ) if (size1 .ne. size2) then errs = errs + 1 print *, "real array size is ", size2, " sizeof claims ", size1 endif if (errs .gt. 0) then print *, ' Found ', errs, ' errors' else print *, ' No Errors' endif call mpi_finalize(ierr) end program main mpi-testsuite-3.2+dfsg/f90/pt2pt/0000755000175000017500000000000012621010235016020 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f90/pt2pt/greqf90.f900000644000175000017500000000677412621010150017627 0ustar mbanckmbanck! This file created from test/mpi/f77/pt2pt/greqf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! subroutine query_fn( extrastate, status, ierr ) use mpi integer status(MPI_STATUS_SIZE), ierr integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val ! ! set a default status status(MPI_SOURCE) = MPI_UNDEFINED status(MPI_TAG) = MPI_UNDEFINED call mpi_status_set_cancelled( status, .false., ierr) call mpi_status_set_elements( status, MPI_BYTE, 0, ierr ) ierr = MPI_SUCCESS end ! subroutine free_fn( extrastate, ierr ) use mpi integer value, ierr integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val integer freefncall common /fnccalls/ freefncall ! ! For testing purposes, the following print can be used to check whether ! the free_fn is called ! print *, 'Free_fn called' ! extrastate = extrastate - 1 ! The value returned by the free function is the error code ! returned by the wait/test function ierr = MPI_SUCCESS end ! subroutine cancel_fn( extrastate, complete, ierr ) use mpi integer ierr logical complete integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val ierr = MPI_SUCCESS end ! ! ! This is a very simple test of generalized requests. Normally, the ! MPI_Grequest_complete function would be called from another routine, ! often running in a separate thread. This simple code allows us to ! check that requests can be created, tested, and waited on in the ! case where the request is complete before the wait is called. ! ! Note that MPI did *not* define a routine that can be called within ! test or wait to advance the state of a generalized request. ! Most uses of generalized requests will need to use a separate thread. ! program main use mpi integer errs, ierr logical flag integer status(MPI_STATUS_SIZE) integer request external query_fn, free_fn, cancel_fn integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val integer freefncall common /fnccalls/ freefncall errs = 0 freefncall = 0 call MTest_Init( ierr ) extrastate = 0 call mpi_grequest_start( query_fn, free_fn, cancel_fn, & & extrastate, request, ierr ) call mpi_test( request, flag, status, ierr ) if (flag) then errs = errs + 1 print *, 'Generalized request marked as complete' endif call mpi_grequest_complete( request, ierr ) call MPI_Wait( request, status, ierr ) extrastate = 1 call mpi_grequest_start( query_fn, free_fn, cancel_fn, & & extrastate, request, ierr ) call mpi_grequest_complete( request, ierr ) call mpi_wait( request, MPI_STATUS_IGNORE, ierr ) ! ! The following routine may prevent an optimizing compiler from ! just remembering that extrastate was set in grequest_start call dummyupdate(extrastate) if (extrastate .ne. 0) then errs = errs + 1 if (freefncall .eq. 0) then print *, 'Free routine not called' else print *, 'Free routine did not update extra_data' print *, 'extrastate = ', extrastate endif endif ! call MTest_Finalize( errs ) call mpi_finalize( ierr ) end ! mpi-testsuite-3.2+dfsg/f90/pt2pt/statusesf90.f900000644000175000017500000000324112621010150020526 0ustar mbanckmbanck! This file created from test/mpi/f77/pt2pt/statusesf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main ! Test support for MPI_STATUS_IGNORE and MPI_STATUSES_IGNORE use mpi integer nreqs parameter (nreqs = 100) integer reqs(nreqs) integer ierr, rank, i integer errs ierr = -1 errs = 0 call mpi_init( ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 print *, 'Unexpected return from MPI_INIT', ierr endif ierr = -1 call mpi_comm_rank( MPI_COMM_WORLD, rank, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 print *, 'Unexpected return from MPI_COMM_WORLD', ierr endif do i=1, nreqs, 2 ierr = -1 call mpi_isend( MPI_BOTTOM, 0, MPI_BYTE, rank, i, & & MPI_COMM_WORLD, reqs(i), ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 print *, 'Unexpected return from MPI_ISEND', ierr endif ierr = -1 call mpi_irecv( MPI_BOTTOM, 0, MPI_BYTE, rank, i, & & MPI_COMM_WORLD, reqs(i+1), ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 print *, 'Unexpected return from MPI_IRECV', ierr endif enddo ierr = -1 call mpi_waitall( nreqs, reqs, MPI_STATUSES_IGNORE, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 print *, 'Unexpected return from MPI_WAITALL', ierr endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/pt2pt/testlist0000644000175000017500000000014212621010150017607 0ustar mbanckmbanck# This file generated by f77tof90 statusesf90 1 greqf90 1 allpairf90 2 mprobef90 2 mpiversion=3.0 mpi-testsuite-3.2+dfsg/f90/pt2pt/Makefile.in0000644000175000017500000005060212621010235020070 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This Makefile.am generated automatically by f77tof90 # from test/mpi/f77/pt2pt/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = allpairf90$(EXEEXT) statusesf90$(EXEEXT) \ greqf90$(EXEEXT) mprobef90$(EXEEXT) @MAINTAINER_MODE_TRUE@am__append_1 = Makefile.am-stamp subdir = f90/pt2pt ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) allpairf90_SOURCES = allpairf90.f90 allpairf90_OBJECTS = allpairf90.$(OBJEXT) allpairf90_LDADD = $(LDADD) allpairf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o am_greqf90_OBJECTS = greqf90.$(OBJEXT) dummyf90.$(OBJEXT) greqf90_OBJECTS = $(am_greqf90_OBJECTS) greqf90_LDADD = $(LDADD) greqf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o mprobef90_SOURCES = mprobef90.f90 mprobef90_OBJECTS = mprobef90.$(OBJEXT) mprobef90_LDADD = $(LDADD) mprobef90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o statusesf90_SOURCES = statusesf90.f90 statusesf90_OBJECTS = statusesf90.$(OBJEXT) statusesf90_LDADD = $(LDADD) statusesf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = SOURCES = allpairf90.f90 $(greqf90_SOURCES) mprobef90.f90 \ statusesf90.f90 DIST_SOURCES = allpairf90.f90 $(greqf90_SOURCES) mprobef90.f90 \ statusesf90.f90 am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_f90.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F90 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f90/util/mtestf90.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist $(am__append_1) # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 greqf90_SOURCES = greqf90.f90 dummyf90.f90 @MAINTAINER_MODE_TRUE@MAINTAINERCLEANFILES = Makefile.am-stamp all: all-am .SUFFIXES: .SUFFIXES: .f90 .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f90.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f90/pt2pt/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f90/pt2pt/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f90.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) allpairf90$(EXEEXT): $(allpairf90_OBJECTS) $(allpairf90_DEPENDENCIES) $(EXTRA_allpairf90_DEPENDENCIES) @rm -f allpairf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(allpairf90_OBJECTS) $(allpairf90_LDADD) $(LIBS) greqf90$(EXEEXT): $(greqf90_OBJECTS) $(greqf90_DEPENDENCIES) $(EXTRA_greqf90_DEPENDENCIES) @rm -f greqf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(greqf90_OBJECTS) $(greqf90_LDADD) $(LIBS) mprobef90$(EXEEXT): $(mprobef90_OBJECTS) $(mprobef90_DEPENDENCIES) $(EXTRA_mprobef90_DEPENDENCIES) @rm -f mprobef90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(mprobef90_OBJECTS) $(mprobef90_LDADD) $(LIBS) statusesf90$(EXEEXT): $(statusesf90_OBJECTS) $(statusesf90_DEPENDENCIES) $(EXTRA_statusesf90_DEPENDENCIES) @rm -f statusesf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(statusesf90_OBJECTS) $(statusesf90_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f90/util/mtestf90.o: $(top_srcdir)/f90/util/mtestf90.f90 (cd $(top_builddir)/f90/util && $(MAKE) mtestf90.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # ensure that dependent tests will be rebuilt when typeaints.h is updated # f77tof90 only replaces output files if the contents differ, so we must use a # separate timestamp file in order avoid constantly trying to remake the f90 # copy of the Makefile when the f77 copy is updated in a way that does not # change its contents @MAINTAINER_MODE_TRUE@$(srcdir)/Makefile.am: $(srcdir)/Makefile.am-stamp @MAINTAINER_MODE_TRUE@$(srcdir)/Makefile.am-stamp: $(master_top_srcdir)/test/mpi/f77/pt2pt/Makefile.am $(master_top_srcdir)/maint/f77tof90 @MAINTAINER_MODE_TRUE@ ( cd $(master_top_srcdir) && ./maint/f77tof90 test/mpi/f77/pt2pt test/mpi/f90/pt2pt Makefile.am Makefile.ap ) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f90/pt2pt/allpairf90.f900000644000175000017500000007272212621010150020311 0ustar mbanckmbanck! This file created from test/mpi/f77/pt2pt/allpairf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2012 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! This program is based on the allpair.f test from the MPICH-1 test ! (test/pt2pt/allpair.f), which in turn was inspired by a bug report from ! fsset@corelli.lerc.nasa.gov (Scott Townsend) program allpair use mpi integer ierr, errs, comm logical mtestGetIntraComm logical verbose common /flags/ verbose errs = 0 verbose = .false. ! verbose = .true. call MTest_Init( ierr ) do while ( mtestGetIntraComm( comm, 2, .false. ) ) call test_pair_send( comm, errs ) call test_pair_ssend( comm, errs ) call test_pair_rsend( comm, errs ) call test_pair_isend( comm, errs ) call test_pair_irsend( comm, errs ) call test_pair_issend( comm, errs ) call test_pair_psend( comm, errs ) call test_pair_prsend( comm, errs ) call test_pair_pssend( comm, errs ) call test_pair_sendrecv( comm, errs ) call test_pair_sendrecvrepl( comm, errs ) call mtestFreeComm( comm ) enddo ! call MTest_Finalize( errs ) call MPI_Finalize(ierr) ! end ! subroutine test_pair_send( comm, errs ) use mpi integer comm, errs integer rank, size, ierr, next, prev, tag, count integer TEST_SIZE parameter (TEST_SIZE=2000) integer status(MPI_STATUS_SIZE) real send_buf(TEST_SIZE), recv_buf(TEST_SIZE) logical verbose common /flags/ verbose ! if (verbose) then print *, ' Send and recv' endif ! call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) next = rank + 1 if (next .ge. size) next = 0 ! prev = rank - 1 if (prev .lt. 0) prev = size - 1 ! tag = 1123 count = TEST_SIZE / 5 ! call clear_test_data(recv_buf,TEST_SIZE) ! if (rank .eq. 0) then ! call init_test_data(send_buf,TEST_SIZE) ! call MPI_Send(send_buf, count, MPI_REAL, next, tag, & & comm, ierr) ! call MPI_Recv(recv_buf, TEST_SIZE, MPI_REAL, & & MPI_ANY_SOURCE, MPI_ANY_TAG, comm, status, ierr) ! call msg_check( recv_buf, next, tag, count, status, TEST_SIZE, & & 'send and recv', errs ) else if (prev .eq. 0) then call MPI_Recv(recv_buf, TEST_SIZE, MPI_REAL, & & MPI_ANY_SOURCE, MPI_ANY_TAG, comm, status, ierr) call msg_check( recv_buf, prev, tag, count, status, TEST_SIZE, & & 'send and recv', errs ) ! call MPI_Send(recv_buf, count, MPI_REAL, prev, tag, comm, ierr) end if ! end ! subroutine test_pair_rsend( comm, errs ) use mpi integer comm, errs integer rank, size, ierr, next, prev, tag, count, i integer TEST_SIZE parameter (TEST_SIZE=2000) integer status(MPI_STATUS_SIZE), requests(1) real send_buf(TEST_SIZE), recv_buf(TEST_SIZE) logical verbose common /flags/ verbose ! if (verbose) then print *, ' Rsend and recv' endif ! ! call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) next = rank + 1 if (next .ge. size) next = 0 ! prev = rank - 1 if (prev .lt. 0) prev = size - 1 ! tag = 1456 count = TEST_SIZE / 3 ! call clear_test_data(recv_buf,TEST_SIZE) ! if (rank .eq. 0) then ! call init_test_data(send_buf,TEST_SIZE) ! call MPI_Recv( MPI_BOTTOM, 0, MPI_INTEGER, next, tag, & & comm, status, ierr ) ! call MPI_Rsend(send_buf, count, MPI_REAL, next, tag, & & comm, ierr) ! call MPI_Probe(MPI_ANY_SOURCE, tag, comm, status, ierr) ! if (status(MPI_SOURCE) .ne. next) then print *, 'Rsend: Incorrect source, expected', next, & & ', got', status(MPI_SOURCE) errs = errs + 1 end if ! if (status(MPI_TAG) .ne. tag) then print *, 'Rsend: Incorrect tag, expected', tag, & & ', got', status(MPI_TAG) errs = errs + 1 end if ! call MPI_Get_count(status, MPI_REAL, i, ierr) ! if (i .ne. count) then print *, 'Rsend: Incorrect count, expected', count, & & ', got', i errs = errs + 1 end if ! call MPI_Recv(recv_buf, TEST_SIZE, MPI_REAL, & & MPI_ANY_SOURCE, MPI_ANY_TAG, comm, & & status, ierr) ! call msg_check( recv_buf, next, tag, count, status, TEST_SIZE, & & 'rsend and recv', errs ) ! else if (prev .eq. 0) then ! call MPI_Irecv(recv_buf, TEST_SIZE, MPI_REAL, & & MPI_ANY_SOURCE, MPI_ANY_TAG, comm, & & requests(1), ierr) call MPI_Send( MPI_BOTTOM, 0, MPI_INTEGER, prev, tag, & & comm, ierr ) call MPI_Wait( requests(1), status, ierr ) call msg_check( recv_buf, prev, tag, count, status, TEST_SIZE, & & 'rsend and recv', errs ) ! call MPI_Send(recv_buf, count, MPI_REAL, prev, tag, & & comm, ierr) end if ! end ! subroutine test_pair_ssend( comm, errs ) use mpi integer comm, errs integer rank, size, ierr, next, prev, tag, count, i integer TEST_SIZE parameter (TEST_SIZE=2000) integer status(MPI_STATUS_SIZE) logical flag real send_buf(TEST_SIZE), recv_buf(TEST_SIZE) logical verbose common /flags/ verbose ! if (verbose) then print *, ' Ssend and recv' endif ! ! call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) next = rank + 1 if (next .ge. size) next = 0 ! prev = rank - 1 if (prev .lt. 0) prev = size - 1 ! tag = 1789 count = TEST_SIZE / 3 ! call clear_test_data(recv_buf,TEST_SIZE) ! if (rank .eq. 0) then ! call init_test_data(send_buf,TEST_SIZE) ! call MPI_Iprobe(MPI_ANY_SOURCE, tag, & & comm, flag, status, ierr) ! if (flag) then print *, 'Ssend: Iprobe succeeded! source', & & status(MPI_SOURCE), & & ', tag', status(MPI_TAG) errs = errs + 1 end if ! call MPI_Ssend(send_buf, count, MPI_REAL, next, tag, & & comm, ierr) ! do while (.not. flag) call MPI_Iprobe(MPI_ANY_SOURCE, tag, & & comm, flag, status, ierr) end do ! if (status(MPI_SOURCE) .ne. next) then print *, 'Ssend: Incorrect source, expected', next, & & ', got', status(MPI_SOURCE) errs = errs + 1 end if ! if (status(MPI_TAG) .ne. tag) then print *, 'Ssend: Incorrect tag, expected', tag, & & ', got', status(MPI_TAG) errs = errs + 1 end if ! call MPI_Get_count(status, MPI_REAL, i, ierr) ! if (i .ne. count) then print *, 'Ssend: Incorrect count, expected', count, & & ', got', i errs = errs + 1 end if ! call MPI_Recv(recv_buf, TEST_SIZE, MPI_REAL, & & MPI_ANY_SOURCE, MPI_ANY_TAG, comm, & & status, ierr) ! call msg_check( recv_buf, next, tag, count, status, & & TEST_SIZE, 'ssend and recv', errs ) ! else if (prev .eq. 0) then ! call MPI_Recv(recv_buf, TEST_SIZE, MPI_REAL, & & MPI_ANY_SOURCE, MPI_ANY_TAG, comm, & & status, ierr) ! call msg_check( recv_buf, prev, tag, count, status, TEST_SIZE, & & 'ssend and recv', errs ) ! call MPI_Ssend(recv_buf, count, MPI_REAL, prev, tag, & & comm, ierr) end if ! end ! subroutine test_pair_isend( comm, errs ) use mpi integer comm, errs integer rank, size, ierr, next, prev, tag, count integer TEST_SIZE parameter (TEST_SIZE=2000) integer status(MPI_STATUS_SIZE), requests(2) integer statuses(MPI_STATUS_SIZE,2) real send_buf(TEST_SIZE), recv_buf(TEST_SIZE) logical verbose common /flags/ verbose ! if (verbose) then print *, ' isend and irecv' endif ! ! call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) next = rank + 1 if (next .ge. size) next = 0 ! prev = rank - 1 if (prev .lt. 0) prev = size - 1 ! tag = 2123 count = TEST_SIZE / 5 ! call clear_test_data(recv_buf,TEST_SIZE) ! if (rank .eq. 0) then ! call MPI_Irecv(recv_buf, TEST_SIZE, MPI_REAL, & & MPI_ANY_SOURCE, MPI_ANY_TAG, comm, & & requests(1), ierr) ! call init_test_data(send_buf,TEST_SIZE) ! call MPI_Isend(send_buf, count, MPI_REAL, next, tag, & & comm, requests(2), ierr) ! call MPI_Waitall(2, requests, statuses, ierr) ! call rq_check( requests, 2, 'isend and irecv' ) ! call msg_check( recv_buf, next, tag, count, statuses(1,1), & & TEST_SIZE, 'isend and irecv', errs ) ! else if (prev .eq. 0) then ! call MPI_Recv(recv_buf, TEST_SIZE, MPI_REAL, & & MPI_ANY_SOURCE, MPI_ANY_TAG, comm, & & status, ierr) ! call msg_check( recv_buf, prev, tag, count, status, TEST_SIZE, & & 'isend and irecv', errs ) ! call MPI_Isend(recv_buf, count, MPI_REAL, prev, tag, & & comm, requests(1), ierr) ! call MPI_Wait(requests(1), status, ierr) ! call rq_check( requests(1), 1, 'isend and irecv' ) ! end if ! end ! subroutine test_pair_irsend( comm, errs ) use mpi integer comm, errs integer rank, size, ierr, next, prev, tag, count, index, i integer TEST_SIZE integer dupcom parameter (TEST_SIZE=2000) integer status(MPI_STATUS_SIZE), requests(2) integer statuses(MPI_STATUS_SIZE,2) logical flag real send_buf(TEST_SIZE), recv_buf(TEST_SIZE) logical verbose common /flags/ verbose ! if (verbose) then print *, ' Irsend and irecv' endif ! call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) next = rank + 1 if (next .ge. size) next = 0 ! prev = rank - 1 if (prev .lt. 0) prev = size - 1 ! call mpi_comm_dup( comm, dupcom, ierr ) ! tag = 2456 count = TEST_SIZE / 3 ! call clear_test_data(recv_buf,TEST_SIZE) ! if (rank .eq. 0) then ! call MPI_Irecv(recv_buf, TEST_SIZE, MPI_REAL, & & MPI_ANY_SOURCE, MPI_ANY_TAG, comm, & & requests(1), ierr) ! call init_test_data(send_buf,TEST_SIZE) ! call MPI_Sendrecv( MPI_BOTTOM, 0, MPI_INTEGER, next, 0, & & MPI_BOTTOM, 0, MPI_INTEGER, next, 0, & & dupcom, status, ierr ) ! call MPI_Irsend(send_buf, count, MPI_REAL, next, tag, & & comm, requests(2), ierr) ! index = -1 do while (index .ne. 1) call MPI_Waitany(2, requests, index, statuses, ierr) end do ! call rq_check( requests(1), 1, 'irsend and irecv' ) ! call msg_check( recv_buf, next, tag, count, statuses, & & TEST_SIZE, 'irsend and irecv', errs ) ! else if (prev .eq. 0) then ! call MPI_Irecv(recv_buf, TEST_SIZE, MPI_REAL, & & MPI_ANY_SOURCE, MPI_ANY_TAG, comm, & & requests(1), ierr) ! call MPI_Sendrecv( MPI_BOTTOM, 0, MPI_INTEGER, prev, 0, & & MPI_BOTTOM, 0, MPI_INTEGER, prev, 0, & & dupcom, status, ierr ) ! flag = .FALSE. do while (.not. flag) call MPI_Test(requests(1), flag, status, ierr) end do ! call rq_check( requests, 1, 'irsend and irecv (test)' ) ! call msg_check( recv_buf, prev, tag, count, status, TEST_SIZE, & & 'irsend and irecv', errs ) ! call MPI_Irsend(recv_buf, count, MPI_REAL, prev, tag, & & comm, requests(1), ierr) ! call MPI_Waitall(1, requests, statuses, ierr) ! call rq_check( requests, 1, 'irsend and irecv' ) ! end if ! call mpi_comm_free( dupcom, ierr ) ! end ! subroutine test_pair_issend( comm, errs ) use mpi integer comm, errs integer rank, size, ierr, next, prev, tag, count, index integer TEST_SIZE parameter (TEST_SIZE=2000) integer status(MPI_STATUS_SIZE), requests(2) integer statuses(MPI_STATUS_SIZE,2) logical flag real send_buf(TEST_SIZE), recv_buf(TEST_SIZE) logical verbose common /flags/ verbose ! if (verbose) then print *, ' issend and irecv (testall)' endif ! ! call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) next = rank + 1 if (next .ge. size) next = 0 ! prev = rank - 1 if (prev .lt. 0) prev = size - 1 ! tag = 2789 count = TEST_SIZE / 3 ! call clear_test_data(recv_buf,TEST_SIZE) ! if (rank .eq. 0) then ! call MPI_Irecv(recv_buf, TEST_SIZE, MPI_REAL, & & MPI_ANY_SOURCE, MPI_ANY_TAG, comm, & & requests(1), ierr) ! call init_test_data(send_buf,TEST_SIZE) ! call MPI_Issend(send_buf, count, MPI_REAL, next, tag, & & comm, requests(2), ierr) ! flag = .FALSE. do while (.not. flag) call MPI_Testall(2, requests, flag, statuses, ierr) end do ! call rq_check( requests, 2, 'issend and irecv (testall)' ) ! call msg_check( recv_buf, next, tag, count, statuses(1,1), & & TEST_SIZE, 'issend and recv (testall)', errs ) ! else if (prev .eq. 0) then ! call MPI_Recv(recv_buf, TEST_SIZE, MPI_REAL, & & MPI_ANY_SOURCE, MPI_ANY_TAG, comm, & & status, ierr) call msg_check( recv_buf, prev, tag, count, status, TEST_SIZE, & & 'issend and recv', errs ) call MPI_Issend(recv_buf, count, MPI_REAL, prev, tag, & & comm, requests(1), ierr) ! flag = .FALSE. do while (.not. flag) call MPI_Testany(1, requests(1), index, flag, & & statuses(1,1), ierr) end do ! call rq_check( requests, 1, 'issend and recv (testany)' ) ! end if ! end ! subroutine test_pair_psend( comm, errs ) use mpi integer comm, errs integer rank, size, ierr, next, prev, tag, count, i integer TEST_SIZE parameter (TEST_SIZE=2000) integer status(MPI_STATUS_SIZE) integer statuses(MPI_STATUS_SIZE,2), requests(2) real send_buf(TEST_SIZE), recv_buf(TEST_SIZE) logical verbose common /flags/ verbose ! if (verbose) then print *, ' Persistent send and recv' endif ! call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) next = rank + 1 if (next .ge. size) next = 0 ! prev = rank - 1 if (prev .lt. 0) prev = size - 1 ! tag = 3123 count = TEST_SIZE / 5 ! call clear_test_data(recv_buf,TEST_SIZE) call MPI_Recv_init(recv_buf, TEST_SIZE, MPI_REAL, & & MPI_ANY_SOURCE, MPI_ANY_TAG, comm, & & requests(2), ierr) ! if (rank .eq. 0) then ! call init_test_data(send_buf,TEST_SIZE) ! call MPI_Send_init(send_buf, count, MPI_REAL, next, tag, & & comm, requests(1), ierr) ! call MPI_Startall(2, requests, ierr) call MPI_Waitall(2, requests, statuses, ierr) ! call msg_check( recv_buf, next, tag, count, statuses(1,2), & & TEST_SIZE, 'persistent send/recv', errs ) ! call MPI_Request_free(requests(1), ierr) ! else if (prev .eq. 0) then ! call MPI_Send_init(send_buf, count, MPI_REAL, prev, tag, & & comm, requests(1), ierr) call MPI_Start(requests(2), ierr) call MPI_Wait(requests(2), status, ierr) ! call msg_check( recv_buf, prev, tag, count, status, TEST_SIZE, & & 'persistent send/recv', errs ) ! do i = 1,count send_buf(i) = recv_buf(i) end do ! call MPI_Start(requests(1), ierr) call MPI_Wait(requests(1), status, ierr) ! call MPI_Request_free(requests(1), ierr) end if ! call dummyRef( send_buf, count, ierr ) call MPI_Request_free(requests(2), ierr) ! end ! subroutine test_pair_prsend( comm, errs ) use mpi integer comm, errs integer rank, size, ierr, next, prev, tag, count, index, i integer outcount, indices(2) integer TEST_SIZE parameter (TEST_SIZE=2000) integer statuses(MPI_STATUS_SIZE,2), requests(2) integer status(MPI_STATUS_SIZE) logical flag real send_buf(TEST_SIZE), recv_buf(TEST_SIZE) logical verbose common /flags/ verbose ! if (verbose) then print *, ' Persistent Rsend and recv' endif ! call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) next = rank + 1 if (next .ge. size) next = 0 ! prev = rank - 1 if (prev .lt. 0) prev = size - 1 ! tag = 3456 count = TEST_SIZE / 3 ! call clear_test_data(recv_buf,TEST_SIZE) ! call MPI_Recv_init(recv_buf, TEST_SIZE, MPI_REAL, & & MPI_ANY_SOURCE, MPI_ANY_TAG, comm, & & requests(2), ierr) ! if (rank .eq. 0) then ! call MPI_Rsend_init(send_buf, count, MPI_REAL, next, tag, & & comm, requests(1), ierr) ! call init_test_data(send_buf,TEST_SIZE) ! call MPI_Recv( MPI_BOTTOM, 0, MPI_INTEGER, next, tag, & & comm, status, ierr ) ! call MPI_Startall(2, requests, ierr) ! index = -1 ! do while (index .ne. 2) call MPI_Waitsome(2, requests, outcount, & & indices, statuses, ierr) do i = 1,outcount if (indices(i) .eq. 2) then call msg_check( recv_buf, next, tag, count, & & statuses(1,i), TEST_SIZE, 'waitsome', errs ) index = 2 end if end do end do ! call MPI_Request_free(requests(1), ierr) else if (prev .eq. 0) then ! call MPI_Rsend_init(send_buf, count, MPI_REAL, prev, tag, & & comm, requests(1), ierr) ! call MPI_Start(requests(2), ierr) ! call MPI_Send( MPI_BOTTOM, 0, MPI_INTEGER, prev, tag, & & comm, ierr ) ! flag = .FALSE. do while (.not. flag) call MPI_Test(requests(2), flag, status, ierr) end do call msg_check( recv_buf, prev, tag, count, status, TEST_SIZE, & & 'test', errs ) ! do i = 1,count send_buf(i) = recv_buf(i) end do ! call MPI_Start(requests(1), ierr) call MPI_Wait(requests(1), status, ierr) ! call MPI_Request_free(requests(1), ierr) end if ! call dummyRef( send_buf, count, ierr ) call MPI_Request_free(requests(2), ierr) ! end ! subroutine test_pair_pssend( comm, errs ) use mpi integer comm, errs integer rank, size, ierr, next, prev, tag, count, index, i integer outcount, indices(2) integer TEST_SIZE parameter (TEST_SIZE=2000) integer statuses(MPI_STATUS_SIZE,2), requests(2) integer status(MPI_STATUS_SIZE) logical flag real send_buf(TEST_SIZE), recv_buf(TEST_SIZE) logical verbose common /flags/ verbose ! if (verbose) then print *, ' Persistent Ssend and recv' endif ! call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) next = rank + 1 if (next .ge. size) next = 0 ! prev = rank - 1 if (prev .lt. 0) prev = size - 1 ! tag = 3789 count = TEST_SIZE / 3 ! call clear_test_data(recv_buf,TEST_SIZE) ! call MPI_Recv_init(recv_buf, TEST_SIZE, MPI_REAL, & & MPI_ANY_SOURCE, MPI_ANY_TAG, comm, & & requests(1), ierr) ! if (rank .eq. 0) then ! call MPI_Ssend_init(send_buf, count, MPI_REAL, next, tag, & & comm, requests(2), ierr) ! call init_test_data(send_buf,TEST_SIZE) ! call MPI_Startall(2, requests, ierr) ! index = -1 do while (index .ne. 1) call MPI_Testsome(2, requests, outcount, & & indices, statuses, ierr) do i = 1,outcount if (indices(i) .eq. 1) then call msg_check( recv_buf, next, tag, count, & & statuses(1,i), TEST_SIZE, 'testsome', errs ) index = 1 end if end do end do ! call MPI_Request_free(requests(2), ierr) ! else if (prev .eq. 0) then ! call MPI_Ssend_init(send_buf, count, MPI_REAL, prev, tag, & & comm, requests(2), ierr) ! call MPI_Start(requests(1), ierr) ! flag = .FALSE. do while (.not. flag) call MPI_Testany(1, requests(1), index, flag, & & statuses(1,1), ierr) end do call msg_check( recv_buf, prev, tag, count, statuses(1,1), & & TEST_SIZE, 'testany', errs ) do i = 1,count send_buf(i) = recv_buf(i) end do ! call MPI_Start(requests(2), ierr) call MPI_Wait(requests(2), status, ierr) ! call MPI_Request_free(requests(2), ierr) ! end if ! call dummyRef( send_buf, count, ierr ) call MPI_Request_free(requests(1), ierr) ! end ! subroutine test_pair_sendrecv( comm, errs ) use mpi integer comm, errs integer rank, size, ierr, next, prev, tag, count integer TEST_SIZE parameter (TEST_SIZE=2000) integer status(MPI_STATUS_SIZE) real send_buf(TEST_SIZE), recv_buf(TEST_SIZE) logical verbose common /flags/ verbose ! if (verbose) then print *, ' Sendrecv' endif ! ! call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) next = rank + 1 if (next .ge. size) next = 0 ! prev = rank - 1 if (prev .lt. 0) prev = size - 1 ! tag = 4123 count = TEST_SIZE / 5 call clear_test_data(recv_buf,TEST_SIZE) if (rank .eq. 0) then call init_test_data(send_buf,TEST_SIZE) call MPI_Sendrecv(send_buf, count, MPI_REAL, next, tag, & & recv_buf, count, MPI_REAL, next, tag, & & comm, status, ierr) call msg_check( recv_buf, next, tag, count, status, TEST_SIZE, & & 'sendrecv', errs ) else if (prev .eq. 0) then call MPI_Recv(recv_buf, TEST_SIZE, MPI_REAL, & & MPI_ANY_SOURCE, MPI_ANY_TAG, comm, & & status, ierr) call msg_check( recv_buf, prev, tag, count, status, TEST_SIZE, & & 'recv/send', errs ) call MPI_Send(recv_buf, count, MPI_REAL, prev, tag, & & comm, ierr) end if ! end ! subroutine test_pair_sendrecvrepl( comm, errs ) use mpi integer comm, errs integer rank, size, ierr, next, prev, tag, count, i integer TEST_SIZE parameter (TEST_SIZE=2000) integer status(MPI_STATUS_SIZE) real send_buf(TEST_SIZE), recv_buf(TEST_SIZE) logical verbose common /flags/ verbose ! if (verbose) then print *, ' Sendrecv replace' endif ! call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) next = rank + 1 if (next .ge. size) next = 0 ! prev = rank - 1 if (prev .lt. 0) prev = size - 1 ! tag = 4456 count = TEST_SIZE / 3 if (rank .eq. 0) then ! call init_test_data(recv_buf, TEST_SIZE) ! do 11 i = count+1,TEST_SIZE recv_buf(i) = 0.0 11 continue ! call MPI_Sendrecv_replace(recv_buf, count, MPI_REAL, & & next, tag, next, tag, & & comm, status, ierr) call msg_check( recv_buf, next, tag, count, status, TEST_SIZE, & & 'sendrecvreplace', errs ) else if (prev .eq. 0) then call clear_test_data(recv_buf,TEST_SIZE) call MPI_Recv(recv_buf, TEST_SIZE, MPI_REAL, & & MPI_ANY_SOURCE, MPI_ANY_TAG, comm, & & status, ierr) call msg_check( recv_buf, prev, tag, count, status, TEST_SIZE, & & 'recv/send for replace', errs ) call MPI_Send(recv_buf, count, MPI_REAL, prev, tag, & & comm, ierr) end if ! end ! !------------------------------------------------------------------------------ ! ! Check for correct source, tag, count, and data in test message. ! !------------------------------------------------------------------------------ subroutine msg_check( recv_buf, source, tag, count, status, n, & & name, errs ) use mpi integer n, errs real recv_buf(n) integer source, tag, count, rank, status(MPI_STATUS_SIZE) character*(*) name logical foundError integer ierr, recv_src, recv_tag, recv_count foundError = .false. recv_src = status(MPI_SOURCE) recv_tag = status(MPI_TAG) call MPI_Comm_rank( MPI_COMM_WORLD, rank, ierr ) call MPI_Get_count(status, MPI_REAL, recv_count, ierr) if (recv_src .ne. source) then print *, '[', rank, '] Unexpected source:', recv_src, & & ' in ', name errs = errs + 1 foundError = .true. end if if (recv_tag .ne. tag) then print *, '[', rank, '] Unexpected tag:', recv_tag, ' in ', name errs = errs + 1 foundError = .true. end if if (recv_count .ne. count) then print *, '[', rank, '] Unexpected count:', recv_count, & & ' in ', name errs = errs + 1 foundError = .true. end if call verify_test_data(recv_buf, count, n, name, errs ) end !------------------------------------------------------------------------------ ! ! Check that requests have been set to null ! !------------------------------------------------------------------------------ subroutine rq_check( requests, n, msg ) use mpi integer n, requests(n) character*(*) msg integer i ! do 10 i=1, n if (requests(i) .ne. MPI_REQUEST_NULL) then print *, 'Nonnull request in ', msg endif 10 continue ! end !------------------------------------------------------------------------------ ! ! Initialize test data buffer with integral sequence. ! !------------------------------------------------------------------------------ subroutine init_test_data(buf,n) integer n real buf(n) integer i do 10 i = 1, n buf(i) = REAL(i) 10 continue end !------------------------------------------------------------------------------ ! ! Clear test data buffer ! !------------------------------------------------------------------------------ subroutine clear_test_data(buf, n) integer n real buf(n) integer i do 10 i = 1, n buf(i) = 0. 10 continue end !------------------------------------------------------------------------------ ! ! Verify test data buffer ! !------------------------------------------------------------------------------ subroutine verify_test_data( buf, count, n, name, errs ) use mpi integer n, errs real buf(n) character *(*) name integer count, ierr, i ! do 10 i = 1, count if (buf(i) .ne. REAL(i)) then print 100, buf(i), i, count, name errs = errs + 1 endif 10 continue ! do 20 i = count + 1, n if (buf(i) .ne. 0.) then print 100, buf(i), i, n, name errs = errs + 1 endif 20 continue ! 100 format('Invalid data', f6.1, ' at ', i4, ' of ', i4, ' in ', a) ! end ! ! This routine is used to prevent the compiler from deallocating the ! array "a", which may happen in some of the tests (see the text in ! the MPI standard about why this may be a problem in valid Fortran ! codes). Without this, for example, tests fail with the Cray ftn ! compiler. ! subroutine dummyRef( a, n, ie ) integer n, ie real a(n) ! This condition will never be true, but the compile won't know that if (ie .eq. -1) then print *, a(n) endif return end mpi-testsuite-3.2+dfsg/f90/pt2pt/Makefile.am0000644000175000017500000000245312621010150020054 0ustar mbanckmbanck# This Makefile.am generated automatically by f77tof90 # from test/mpi/f77/pt2pt/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f90.mtest EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 noinst_PROGRAMS = allpairf90 statusesf90 greqf90 mprobef90 greqf90_SOURCES = greqf90.f90 dummyf90.f90 ## attr1aints.h will be distributed because it's listed in AC_CONFIG_FILES/AC_OUTPUT # ensure that dependent tests will be rebuilt when typeaints.h is updated if MAINTAINER_MODE # f77tof90 only replaces output files if the contents differ, so we must use a # separate timestamp file in order avoid constantly trying to remake the f90 # copy of the Makefile when the f77 copy is updated in a way that does not # change its contents $(srcdir)/Makefile.am: $(srcdir)/Makefile.am-stamp $(srcdir)/Makefile.am-stamp: $(master_top_srcdir)/test/mpi/f77/pt2pt/Makefile.am $(master_top_srcdir)/maint/f77tof90 ( cd $(master_top_srcdir) && ./maint/f77tof90 test/mpi/f77/pt2pt test/mpi/f90/pt2pt Makefile.am Makefile.ap ) MAINTAINERCLEANFILES = Makefile.am-stamp EXTRA_DIST += Makefile.am-stamp endif MAINTAINER_MODE mpi-testsuite-3.2+dfsg/f90/pt2pt/mprobef90.f900000644000175000017500000005732012621010150020146 0ustar mbanckmbanck! This file created from test/mpi/f77/pt2pt/mprobef.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2012 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer idx, ierr, rank, size, count integer sendbuf(8), recvbuf(8) integer s1(MPI_STATUS_SIZE), s2(MPI_STATUS_SIZE) integer msg, errs integer rreq logical found, flag ierr = -1 errs = 0 call mpi_init( ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 print *, ' Unexpected return from MPI_INIT', ierr endif call mpi_comm_rank( MPI_COMM_WORLD, rank, ierr ) call mpi_comm_size( MPI_COMM_WORLD, size, ierr ) if (size .lt. 2) then errs = errs + 1 print *, ' This test requires at least 2 processes' ! Abort now - do not continue in this case. call mpi_abort( MPI_COMM_WORLD, 1, ierr ) endif if (size .gt. 2) then print *, ' This test is running with ', size, ' processes,' print *, ' only 2 processes are used.' endif ! Test 0: simple Send and Mprobe+Mrecv. if (rank .eq. 0) then sendbuf(1) = 1735928559 sendbuf(2) = 1277009102 call MPI_Send(sendbuf, 2, MPI_INTEGER, & & 1, 5, MPI_COMM_WORLD, ierr) else do idx = 1, MPI_STATUS_SIZE s1(idx) = 0 s2(idx) = 0 enddo ! the error fields are initialized for modification check. s1(MPI_ERROR) = MPI_ERR_DIMS s2(MPI_ERROR) = MPI_ERR_OTHER msg = MPI_MESSAGE_NULL call MPI_Mprobe(0, 5, MPI_COMM_WORLD, msg, s1, ierr) if (s1(MPI_SOURCE) .ne. 0) then errs = errs + 1 print *, 's1(MPI_SOURCE) != 0 at T0 Mprobe().' endif if (s1(MPI_TAG) .ne. 5) then errs = errs + 1 print *, 's1(MPI_TAG) != 5 at T0 Mprobe().' endif if (s1(MPI_ERROR) .ne. MPI_ERR_DIMS) then errs = errs + 1 print *, 's1(MPI_ERROR) != MPI_ERR_DIMS at T0 Mprobe().' endif if (msg .eq. MPI_MESSAGE_NULL) then errs = errs + 1 print *, 'msg == MPI_MESSAGE_NULL at T0 Mprobe().' endif count = -1 call MPI_Get_count(s1, MPI_INTEGER, count, ierr) if (count .ne. 2) then errs = errs + 1 print *, 'probed buffer does not have 2 MPI_INTEGERs.' endif recvbuf(1) = 19088743 recvbuf(2) = 1309737967 call MPI_Mrecv(recvbuf, count, MPI_INTEGER, msg, s2, ierr) if (recvbuf(1) .ne. 1735928559) then errs = errs + 1 print *, 'recvbuf(1) is corrupted at T0 Mrecv().' endif if (recvbuf(2) .ne. 1277009102) then errs = errs + 1 print *, 'recvbuf(2) is corrupted at T0 Mrecv().' endif if (s2(MPI_SOURCE) .ne. 0) then errs = errs + 1 print *, 's2(MPI_SOURCE) != 0 at T0 Mrecv().' endif if (s2(MPI_TAG) .ne. 5) then errs = errs + 1 print *, 's2(MPI_TAG) != 5 at T0 Mrecv().' endif if (s2(MPI_ERROR) .ne. MPI_ERR_OTHER) then errs = errs + 1 print *, 's2(MPI_ERROR) != MPI_ERR_OTHER at T0 Mrecv().' endif if (msg .ne. MPI_MESSAGE_NULL) then errs = errs + 1 print *, 'msg != MPI_MESSAGE_NULL at T0 Mrecv().' endif endif ! Test 1: simple Send and Mprobe+Imrecv. if (rank .eq. 0) then sendbuf(1) = 1735928559 sendbuf(2) = 1277009102 call MPI_Send(sendbuf, 2, MPI_INTEGER, & & 1, 5, MPI_COMM_WORLD, ierr) else do idx = 1, MPI_STATUS_SIZE s1(idx) = 0 s2(idx) = 0 enddo ! the error fields are initialized for modification check. s1(MPI_ERROR) = MPI_ERR_DIMS s2(MPI_ERROR) = MPI_ERR_OTHER msg = MPI_MESSAGE_NULL call MPI_Mprobe(0, 5, MPI_COMM_WORLD, msg, s1, ierr) if (s1(MPI_SOURCE) .ne. 0) then errs = errs + 1 print *, 's1(MPI_SOURCE) != 0 at T1 Mprobe().' endif if (s1(MPI_TAG) .ne. 5) then errs = errs + 1 print *, 's1(MPI_TAG) != 5 at T1 Mprobe().' endif if (s1(MPI_ERROR) .ne. MPI_ERR_DIMS) then errs = errs + 1 print *, 's1(MPI_ERROR) != MPI_ERR_DIMS at T1 Mprobe().' endif if (msg .eq. MPI_MESSAGE_NULL) then errs = errs + 1 print *, 'msg == MPI_MESSAGE_NULL at T1 Mprobe().' endif count = -1 call MPI_Get_count(s1, MPI_INTEGER, count, ierr) if (count .ne. 2) then errs = errs + 1 print *, 'probed buffer does not have 2 MPI_INTEGERs.' endif rreq = MPI_REQUEST_NULL recvbuf(1) = 19088743 recvbuf(2) = 1309737967 call MPI_Imrecv(recvbuf, count, MPI_INTEGER, msg, rreq, ierr) if (rreq .eq. MPI_REQUEST_NULL) then errs = errs + 1 print *, 'rreq is unmodified at T1 Imrecv().' endif call MPI_Wait(rreq, s2, ierr) if (recvbuf(1) .ne. 1735928559) then errs = errs + 1 print *, 'recvbuf(1) is corrupted at T1 Imrecv().' endif if (recvbuf(2) .ne. 1277009102) then errs = errs + 1 print *, 'recvbuf(2) is corrupted at T1 Imrecv().' endif if (s2(MPI_SOURCE) .ne. 0) then errs = errs + 1 print *, 's2(MPI_SOURCE) != 0 at T1 Imrecv().' endif if (s2(MPI_TAG) .ne. 5) then errs = errs + 1 print *, 's2(MPI_TAG) != 5 at T1 Imrecv().' endif if (s2(MPI_ERROR) .ne. MPI_ERR_OTHER) then errs = errs + 1 print *, 's2(MPI_ERROR) != MPI_ERR_OTHER at T1 Imrecv().' endif if (msg .ne. MPI_MESSAGE_NULL) then errs = errs + 1 print *, 'msg != MPI_MESSAGE_NULL at T1 Imrecv().' endif endif ! Test 2: simple Send and Improbe+Mrecv. if (rank .eq. 0) then sendbuf(1) = 1735928559 sendbuf(2) = 1277009102 call MPI_Send(sendbuf, 2, MPI_INTEGER, & & 1, 5, MPI_COMM_WORLD, ierr) else do idx = 1, MPI_STATUS_SIZE s1(idx) = 0 s2(idx) = 0 enddo ! the error fields are initialized for modification check. s1(MPI_ERROR) = MPI_ERR_DIMS s2(MPI_ERROR) = MPI_ERR_OTHER msg = MPI_MESSAGE_NULL call MPI_Improbe(0, 5, MPI_COMM_WORLD, found, msg, s1, ierr) do while (.not. found) call MPI_Improbe(0, 5, MPI_COMM_WORLD, & & found, msg, s1, ierr) enddo if (msg .eq. MPI_MESSAGE_NULL) then errs = errs + 1 print *, 'msg == MPI_MESSAGE_NULL at T2 Improbe().' endif if (s1(MPI_SOURCE) .ne. 0) then errs = errs + 1 print *, 's1(MPI_SOURCE) != 0 at T2 Improbe().' endif if (s1(MPI_TAG) .ne. 5) then errs = errs + 1 print *, 's1(MPI_TAG) != 5 at T2 Improbe().' endif if (s1(MPI_ERROR) .ne. MPI_ERR_DIMS) then errs = errs + 1 print *, 's1(MPI_ERROR) != MPI_ERR_DIMS at T2 Improbe().' endif count = -1 call MPI_Get_count(s1, MPI_INTEGER, count, ierr) if (count .ne. 2) then errs = errs + 1 print *, 'probed buffer does not have 2 MPI_INTEGERs.' endif recvbuf(1) = 19088743 recvbuf(2) = 1309737967 call MPI_Mrecv(recvbuf, count, MPI_INTEGER, msg, s2, ierr) if (recvbuf(1) .ne. 1735928559) then errs = errs + 1 print *, 'recvbuf(1) is corrupted at T2 Mrecv().' endif if (recvbuf(2) .ne. 1277009102) then errs = errs + 1 print *, 'recvbuf(2) is corrupted at T2 Mrecv().' endif if (s2(MPI_SOURCE) .ne. 0) then errs = errs + 1 print *, 's2(MPI_SOURCE) != 0 at T2 Mrecv().' endif if (s2(MPI_TAG) .ne. 5) then errs = errs + 1 print *, 's2(MPI_TAG) != 5 at T2 Mrecv().' endif if (s2(MPI_ERROR) .ne. MPI_ERR_OTHER) then errs = errs + 1 print *, 's2(MPI_ERROR) != MPI_ERR_OTHER at T2 Mrecv().' endif if (msg .ne. MPI_MESSAGE_NULL) then errs = errs + 1 print *, 'msg != MPI_MESSAGE_NULL at T2 Mrecv().' endif endif ! Test 3: simple Send and Improbe+Imrecv. if (rank .eq. 0) then sendbuf(1) = 1735928559 sendbuf(2) = 1277009102 call MPI_Send(sendbuf, 2, MPI_INTEGER, & & 1, 5, MPI_COMM_WORLD, ierr) else do idx = 1, MPI_STATUS_SIZE s1(idx) = 0 s2(idx) = 0 enddo ! the error fields are initialized for modification check. s1(MPI_ERROR) = MPI_ERR_DIMS s2(MPI_ERROR) = MPI_ERR_OTHER msg = MPI_MESSAGE_NULL call MPI_Improbe(0, 5, MPI_COMM_WORLD, found, msg, s1, ierr) do while (.not. found) call MPI_Improbe(0, 5, MPI_COMM_WORLD, & & found, msg, s1, ierr) enddo if (msg .eq. MPI_MESSAGE_NULL) then errs = errs + 1 print *, 'msg == MPI_MESSAGE_NULL at T3 Improbe().' endif if (s1(MPI_SOURCE) .ne. 0) then errs = errs + 1 print *, 's1(MPI_SOURCE) != 0 at T3 Improbe().' endif if (s1(MPI_TAG) .ne. 5) then errs = errs + 1 print *, 's1(MPI_TAG) != 5 at T3 Improbe().' endif if (s1(MPI_ERROR) .ne. MPI_ERR_DIMS) then errs = errs + 1 print *, 's1(MPI_ERROR) != MPI_ERR_DIMS at T3 Improbe().' endif count = -1 call MPI_Get_count(s1, MPI_INTEGER, count, ierr) if (count .ne. 2) then errs = errs + 1 print *, 'probed buffer does not have 2 MPI_INTEGERs.' endif rreq = MPI_REQUEST_NULL recvbuf(1) = 19088743 recvbuf(2) = 1309737967 call MPI_Imrecv(recvbuf, count, MPI_INTEGER, msg, rreq, ierr) if (rreq .eq. MPI_REQUEST_NULL) then errs = errs + 1 print *, 'rreq is unmodified at T3 Imrecv().' endif call MPI_Wait(rreq, s2, ierr) if (recvbuf(1) .ne. 1735928559) then errs = errs + 1 print *, 'recvbuf(1) is corrupted at T3 Imrecv().' endif if (recvbuf(2) .ne. 1277009102) then errs = errs + 1 print *, 'recvbuf(2) is corrupted at T3 Imrecv().' endif if (s2(MPI_SOURCE) .ne. 0) then errs = errs + 1 print *, 's2(MPI_SOURCE) != 0 at T3 Imrecv().' endif if (s2(MPI_TAG) .ne. 5) then errs = errs + 1 print *, 's2(MPI_TAG) != 5 at T3 Imrecv().' endif if (s2(MPI_ERROR) .ne. MPI_ERR_OTHER) then errs = errs + 1 print *, 's2(MPI_ERROR) != MPI_ERR_OTHER at T3 Imrecv().' endif if (msg .ne. MPI_MESSAGE_NULL) then errs = errs + 1 print *, 'msg != MPI_MESSAGE_NULL at T3 Imrecv().' endif endif ! Test 4: Mprobe+Mrecv with MPI_PROC_NULL if (.true.) then do idx = 1, MPI_STATUS_SIZE s1(idx) = 0 s2(idx) = 0 enddo ! the error fields are initialized for modification check. s1(MPI_ERROR) = MPI_ERR_DIMS s2(MPI_ERROR) = MPI_ERR_OTHER msg = MPI_MESSAGE_NULL call MPI_Mprobe(MPI_PROC_NULL, 5, MPI_COMM_WORLD, & & msg, s1, ierr) if (s1(MPI_SOURCE) .ne. MPI_PROC_NULL) then errs = errs + 1 print *, 's1(MPI_SOURCE) != MPI_PROC_NULL at T4 Mprobe().' endif if (s1(MPI_TAG) .ne. MPI_ANY_TAG) then errs = errs + 1 print *, 's1(MPI_TAG) != MPI_ANY_TAG at T4 Mprobe().' endif if (s1(MPI_ERROR) .ne. MPI_ERR_DIMS) then errs = errs + 1 print *, 's1(MPI_ERROR) != MPI_ERR_DIMS at T4 Mprobe().' endif if (msg .ne. MPI_MESSAGE_NO_PROC) then errs = errs + 1 print *, 'msg != MPI_MESSAGE_NO_PROC at T4 Mprobe().' endif count = -1 call MPI_Get_count(s1, MPI_INTEGER, count, ierr) if (count .ne. 0) then errs = errs + 1 print *, 'probed buffer does not have 0 MPI_INTEGER.' endif recvbuf(1) = 19088743 recvbuf(2) = 1309737967 call MPI_Mrecv(recvbuf, count, MPI_INTEGER, msg, s2, ierr) ! recvbuf() should remain unmodified if (recvbuf(1) .ne. 19088743) then errs = errs + 1 print *, 'recvbuf(1) is corrupted at T4 Mrecv().' endif if (recvbuf(2) .ne. 1309737967) then errs = errs + 1 print *, 'recvbuf(2) is corrupted at T4 Mrecv().' endif if (s2(MPI_SOURCE) .ne. MPI_PROC_NULL) then errs = errs + 1 print *, 's2(MPI_SOURCE) != MPI_PROC_NULL at T4 Mrecv().' endif if (s2(MPI_TAG) .ne. MPI_ANY_TAG) then errs = errs + 1 print *, 's2(MPI_TAG) != MPI_ANY_TAG at T4 Mrecv().' endif if (s2(MPI_ERROR) .ne. MPI_ERR_OTHER) then errs = errs + 1 print *, 's2(MPI_ERROR) != MPI_ERR_OTHER at T4 Mrecv().' endif if (msg .ne. MPI_MESSAGE_NULL) then errs = errs + 1 print *, 'msg != MPI_MESSAGE_NULL at T4 Mrecv().' endif count = -1 call MPI_Get_count(s2, MPI_INTEGER, count, ierr) if (count .ne. 0) then errs = errs + 1 print *, 'recv buffer does not have 0 MPI_INTEGER.' endif endif ! Test 5: Mprobe+Imrecv with MPI_PROC_NULL if (.true.) then do idx = 1, MPI_STATUS_SIZE s1(idx) = 0 s2(idx) = 0 enddo ! the error fields are initialized for modification check. s1(MPI_ERROR) = MPI_ERR_DIMS s2(MPI_ERROR) = MPI_ERR_OTHER msg = MPI_MESSAGE_NULL call MPI_Mprobe(MPI_PROC_NULL, 5, MPI_COMM_WORLD, & & msg, s1, ierr) if (s1(MPI_SOURCE) .ne. MPI_PROC_NULL) then errs = errs + 1 print *, 's1(MPI_SOURCE) != MPI_PROC_NULL at T5 Mprobe().' endif if (s1(MPI_TAG) .ne. MPI_ANY_TAG) then errs = errs + 1 print *, 's1(MPI_TAG) != MPI_ANY_TAG at T5 Mprobe().' endif if (s1(MPI_ERROR) .ne. MPI_ERR_DIMS) then errs = errs + 1 print *, 's1(MPI_ERROR) != MPI_ERR_DIMS at T5 Mprobe().' endif if (msg .ne. MPI_MESSAGE_NO_PROC) then errs = errs + 1 print *, 'msg != MPI_MESSAGE_NO_PROC at T5 Mprobe().' endif count = -1 call MPI_Get_count(s1, MPI_INTEGER, count, ierr) if (count .ne. 0) then errs = errs + 1 print *, 'probed buffer does not have 0 MPI_INTEGER.' endif rreq = MPI_REQUEST_NULL recvbuf(1) = 19088743 recvbuf(2) = 1309737967 call MPI_Imrecv(recvbuf, count, MPI_INTEGER, msg, rreq, ierr) if (rreq .eq. MPI_REQUEST_NULL) then errs = errs + 1 print *, 'rreq == MPI_REQUEST_NULL at T5 Imrecv().' endif flag = .false. call MPI_Test(rreq, flag, s2, ierr) if (.not. flag) then errs = errs + 1 print *, 'flag is false at T5 Imrecv().' endif ! recvbuf() should remain unmodified if (recvbuf(1) .ne. 19088743) then errs = errs + 1 print *, 'recvbuf(1) is corrupted at T5 Imrecv().' endif if (recvbuf(2) .ne. 1309737967) then errs = errs + 1 print *, 'recvbuf(2) is corrupted at T5 Imrecv().' endif if (s2(MPI_SOURCE) .ne. MPI_PROC_NULL) then errs = errs + 1 print *, 's2(MPI_SOURCE) != MPI_PROC_NULL at T5 Imrecv().' endif if (s2(MPI_TAG) .ne. MPI_ANY_TAG) then errs = errs + 1 print *, 's2(MPI_TAG) != MPI_ANY_TAG at T5 Imrecv().' endif if (s2(MPI_ERROR) .ne. MPI_ERR_OTHER) then errs = errs + 1 print *, 's2(MPI_ERROR) != MPI_ERR_OTHER at T5 Imrecv().' endif if (msg .ne. MPI_MESSAGE_NULL) then errs = errs + 1 print *, 'msg != MPI_MESSAGE_NULL at T5 Imrecv().' endif count = -1 call MPI_Get_count(s2, MPI_INTEGER, count, ierr) if (count .ne. 0) then errs = errs + 1 print *, 'recv buffer does not have 0 MPI_INTEGER.' endif endif ! Test 6: Improbe+Mrecv with MPI_PROC_NULL if (.true.) then do idx = 1, MPI_STATUS_SIZE s1(idx) = 0 s2(idx) = 0 enddo ! the error fields are initialized for modification check. s1(MPI_ERROR) = MPI_ERR_DIMS s2(MPI_ERROR) = MPI_ERR_OTHER found = .false. msg = MPI_MESSAGE_NULL call MPI_Improbe(MPI_PROC_NULL, 5, MPI_COMM_WORLD, & & found, msg, s1, ierr) if (.not. found) then errs = errs + 1 print *, 'found is false at T6 Improbe().' endif if (s1(MPI_SOURCE) .ne. MPI_PROC_NULL) then errs = errs + 1 print *, 's1(MPI_SOURCE) != MPI_PROC_NULL at T6 Improbe()' endif if (s1(MPI_TAG) .ne. MPI_ANY_TAG) then errs = errs + 1 print *, 's1(MPI_TAG) != MPI_ANY_TAG at T6 Improbe().' endif if (s1(MPI_ERROR) .ne. MPI_ERR_DIMS) then errs = errs + 1 print *, 's1(MPI_ERROR) != MPI_ERR_DIMS at T6 Improbe().' endif if (msg .ne. MPI_MESSAGE_NO_PROC) then errs = errs + 1 print *, 'msg != MPI_MESSAGE_NO_PROC at T6 Improbe().' endif count = -1 call MPI_Get_count(s1, MPI_INTEGER, count, ierr) if (count .ne. 0) then errs = errs + 1 print *, 'probed buffer does not have 0 MPI_INTEGER.' endif recvbuf(1) = 19088743 recvbuf(2) = 1309737967 call MPI_Mrecv(recvbuf, count, MPI_INTEGER, msg, s2, ierr) ! recvbuf() should remain unmodified if (recvbuf(1) .ne. 19088743) then errs = errs + 1 print *, 'recvbuf(1) is corrupted at T6 Mrecv().' endif if (recvbuf(2) .ne. 1309737967) then errs = errs + 1 print *, 'recvbuf(2) is corrupted at T6 Mrecv().' endif if (s2(MPI_SOURCE) .ne. MPI_PROC_NULL) then errs = errs + 1 print *, 's2(MPI_SOURCE) != MPI_PROC_NULL at T6 Mrecv().' endif if (s2(MPI_TAG) .ne. MPI_ANY_TAG) then errs = errs + 1 print *, 's2(MPI_TAG) != MPI_ANY_TAG at T6 Mrecv().' endif if (s2(MPI_ERROR) .ne. MPI_ERR_OTHER) then errs = errs + 1 print *, 's2(MPI_ERROR) != MPI_ERR_OTHER at T6 Mrecv().' endif if (msg .ne. MPI_MESSAGE_NULL) then errs = errs + 1 print *, 'msg != MPI_MESSAGE_NULL at T6 Mrecv().' endif count = -1 call MPI_Get_count(s2, MPI_INTEGER, count, ierr) if (count .ne. 0) then errs = errs + 1 print *, 'recv buffer does not have 0 MPI_INTEGER.' endif endif ! Test 7: Improbe+Imrecv with MPI_PROC_NULL if (.true.) then do idx = 1, MPI_STATUS_SIZE s1(idx) = 0 s2(idx) = 0 enddo ! the error fields are initialized for modification check. s1(MPI_ERROR) = MPI_ERR_DIMS s2(MPI_ERROR) = MPI_ERR_OTHER found = .false. msg = MPI_MESSAGE_NULL call MPI_Improbe(MPI_PROC_NULL, 5, MPI_COMM_WORLD, & & found, msg, s1, ierr) if (.not. found) then errs = errs + 1 print *, 'found is false at T7 Improbe().' endif if (s1(MPI_SOURCE) .ne. MPI_PROC_NULL) then errs = errs + 1 print *, 's1(MPI_SOURCE) != MPI_PROC_NULL at T7 Improbe()' endif if (s1(MPI_TAG) .ne. MPI_ANY_TAG) then errs = errs + 1 print *, 's1(MPI_TAG) != MPI_ANY_TAG at T7 Improbe().' endif if (s1(MPI_ERROR) .ne. MPI_ERR_DIMS) then errs = errs + 1 print *, 's1(MPI_ERROR) != MPI_ERR_DIMS at T7 Improbe().' endif if (msg .ne. MPI_MESSAGE_NO_PROC) then errs = errs + 1 print *, 'msg != MPI_MESSAGE_NO_PROC at T7 Improbe().' endif count = -1 call MPI_Get_count(s1, MPI_INTEGER, count, ierr) if (count .ne. 0) then errs = errs + 1 print *, 'probed buffer does not have 0 MPI_INTEGER.' endif rreq = MPI_REQUEST_NULL recvbuf(1) = 19088743 recvbuf(2) = 1309737967 call MPI_Imrecv(recvbuf, count, MPI_INTEGER, msg, rreq, ierr) if (rreq .eq. MPI_REQUEST_NULL) then errs = errs + 1 print *, 'rreq == MPI_REQUEST_NULL at T7 Imrecv().' endif flag = .false. call MPI_Test(rreq, flag, s2, ierr) if (.not. flag) then errs = errs + 1 print *, 'flag is false at T7 Imrecv().' endif ! recvbuf() should remain unmodified if (recvbuf(1) .ne. 19088743) then errs = errs + 1 print *, 'recvbuf(1) is corrupted at T7 Imrecv().' endif if (recvbuf(2) .ne. 1309737967) then errs = errs + 1 print *, 'recvbuf(2) is corrupted at T7 Imrecv().' endif if (s2(MPI_SOURCE) .ne. MPI_PROC_NULL) then errs = errs + 1 print *, 's2(MPI_SOURCE) != MPI_PROC_NULL at T7 Imrecv().' endif if (s2(MPI_TAG) .ne. MPI_ANY_TAG) then errs = errs + 1 print *, 's2(MPI_TAG) != MPI_ANY_TAG at T7 Imrecv().' endif if (s2(MPI_ERROR) .ne. MPI_ERR_OTHER) then errs = errs + 1 print *, 's2(MPI_ERROR) != MPI_ERR_OTHER at T7 Imrecv().' endif if (msg .ne. MPI_MESSAGE_NULL) then errs = errs + 1 print *, 'msg != MPI_MESSAGE_NULL at T7 Imrecv().' endif count = -1 call MPI_Get_count(s2, MPI_INTEGER, count, ierr) if (count .ne. 0) then errs = errs + 1 print *, 'recv buffer does not have 0 MPI_INTEGER.' endif endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/pt2pt/Makefile.am-stamp0000644000175000017500000000001212621010150021163 0ustar mbanckmbancktimestamp mpi-testsuite-3.2+dfsg/f90/pt2pt/dummyf90.f900000644000175000017500000000145112621010150020007 0ustar mbanckmbanck! This file created from test/mpi/f77/pt2pt/dummyf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2011 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! ! This file is used to disable certain compiler optimizations that ! can cause incorrect results with the test in greqf.f. It provides a ! point where extrastate may be modified, limiting the compilers ability ! to move code around. ! The include of mpif.h is not needed in the F77 case but in the ! F90 case it is, because in that case, extrastate is defined as an ! integer (kind=MPI_ADDRESS_KIND), and the script that creates the ! F90 tests from the F77 tests looks for mpif.h subroutine dummyupdate( extrastate ) use mpi integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val end mpi-testsuite-3.2+dfsg/f90/timer/0000755000175000017500000000000012621010235016067 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f90/timer/wtimef90.f900000644000175000017500000000201312620254305020056 0ustar mbanckmbanck! ! (C) 2004 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main ! This is a simple test to check that both the MPI and PMPI versions of the ! timers are available, and that they return double precision values. ! If this code links, there are no problems. ! use mpi implicit none integer err double precision time1 call mpi_init(err) time1 = mpi_wtime() time1 = time1 + mpi_wtick() time1 = time1 + pmpi_wtime() time1 = time1 + pmpi_wtick() ! Add a test on time1 to ensure that the compiler does not remove the calls ! (The compiler should call them anyway because they aren't pure, but ! including these operations ensures that a buggy compiler doesn't ! pass this test by mistake). if (time1 .lt. 0.0d0) then print *, ' Negative time result' else print *, ' No Errors' endif call mpi_finalize(err) end mpi-testsuite-3.2+dfsg/f90/timer/testlist0000644000175000017500000000001312620254305017666 0ustar mbanckmbanckwtimef90 1 mpi-testsuite-3.2+dfsg/f90/timer/Makefile.in0000644000175000017500000004407712621010235020150 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = wtimef90$(EXEEXT) subdir = f90/timer ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am_wtimef90_OBJECTS = wtimef90.$(OBJEXT) wtimef90_OBJECTS = $(am_wtimef90_OBJECTS) wtimef90_LDADD = $(LDADD) wtimef90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = SOURCES = $(wtimef90_SOURCES) DIST_SOURCES = $(wtimef90_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_f90.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F90 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f90/util/mtestf90.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist wtimef90_SOURCES = wtimef90.f90 all: all-am .SUFFIXES: .SUFFIXES: .f90 .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f90.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f90/timer/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f90/timer/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f90.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) wtimef90$(EXEEXT): $(wtimef90_OBJECTS) $(wtimef90_DEPENDENCIES) $(EXTRA_wtimef90_DEPENDENCIES) @rm -f wtimef90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(wtimef90_OBJECTS) $(wtimef90_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f90/util/mtestf90.o: $(top_srcdir)/f90/util/mtestf90.f90 (cd $(top_builddir)/f90/util && $(MAKE) mtestf90.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f90/timer/Makefile.am0000644000175000017500000000041412620254305020131 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f90.mtest EXTRA_DIST = testlist noinst_PROGRAMS = wtimef90 wtimef90_SOURCES = wtimef90.f90 mpi-testsuite-3.2+dfsg/f90/profile/0000755000175000017500000000000012621010235016407 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f90/profile/testlist0000644000175000017500000000006012621010150020175 0ustar mbanckmbanck# This file generated by f77tof90 profile1f90 2 mpi-testsuite-3.2+dfsg/f90/profile/Makefile.in0000644000175000017500000004616612621010235020471 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This Makefile.am generated automatically by f77tof90 # from test/mpi/f77/profile/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = profile1f90$(EXEEXT) @MAINTAINER_MODE_TRUE@am__append_1 = Makefile.am-stamp subdir = f90/profile ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) profile1f90_SOURCES = profile1f90.f90 profile1f90_OBJECTS = profile1f90.$(OBJEXT) profile1f90_LDADD = $(LDADD) profile1f90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = SOURCES = profile1f90.f90 DIST_SOURCES = profile1f90.f90 am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_f90.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F90 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f90/util/mtestf90.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist $(am__append_1) # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 @MAINTAINER_MODE_TRUE@MAINTAINERCLEANFILES = Makefile.am-stamp all: all-am .SUFFIXES: .SUFFIXES: .f90 .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f90.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f90/profile/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f90/profile/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f90.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) profile1f90$(EXEEXT): $(profile1f90_OBJECTS) $(profile1f90_DEPENDENCIES) $(EXTRA_profile1f90_DEPENDENCIES) @rm -f profile1f90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(profile1f90_OBJECTS) $(profile1f90_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f90/util/mtestf90.o: $(top_srcdir)/f90/util/mtestf90.f90 (cd $(top_builddir)/f90/util && $(MAKE) mtestf90.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # ensure that dependent tests will be rebuilt when typeaints.h is updated # f77tof90 only replaces output files if the contents differ, so we must use a # separate timestamp file in order avoid constantly trying to remake the f90 # copy of the Makefile when the f77 copy is updated in a way that does not # change its contents @MAINTAINER_MODE_TRUE@$(srcdir)/Makefile.am: $(srcdir)/Makefile.am-stamp @MAINTAINER_MODE_TRUE@$(srcdir)/Makefile.am-stamp: $(master_top_srcdir)/test/mpi/f77/profile/Makefile.am $(master_top_srcdir)/maint/f77tof90 @MAINTAINER_MODE_TRUE@ ( cd $(master_top_srcdir) && ./maint/f77tof90 test/mpi/f77/profile test/mpi/f90/profile Makefile.am Makefile.ap ) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f90/profile/Makefile.am0000644000175000017500000000235212621010150020441 0ustar mbanckmbanck# This Makefile.am generated automatically by f77tof90 # from test/mpi/f77/profile/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f90.mtest EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 noinst_PROGRAMS = profile1f90 ## attr1aints.h will be distributed because it's listed in AC_CONFIG_FILES/AC_OUTPUT # ensure that dependent tests will be rebuilt when typeaints.h is updated if MAINTAINER_MODE # f77tof90 only replaces output files if the contents differ, so we must use a # separate timestamp file in order avoid constantly trying to remake the f90 # copy of the Makefile when the f77 copy is updated in a way that does not # change its contents $(srcdir)/Makefile.am: $(srcdir)/Makefile.am-stamp $(srcdir)/Makefile.am-stamp: $(master_top_srcdir)/test/mpi/f77/profile/Makefile.am $(master_top_srcdir)/maint/f77tof90 ( cd $(master_top_srcdir) && ./maint/f77tof90 test/mpi/f77/profile test/mpi/f90/profile Makefile.am Makefile.ap ) MAINTAINERCLEANFILES = Makefile.am-stamp EXTRA_DIST += Makefile.am-stamp endif MAINTAINER_MODE mpi-testsuite-3.2+dfsg/f90/profile/profile1f90.f900000644000175000017500000000633012621010150020765 0ustar mbanckmbanck! This file created from test/mpi/f77/profile/profile1f.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2013 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer ierr integer smsg(3), rmsg(3), toterrs, wsize, wrank common /myinfo/ calls, amount, rcalls, ramount integer calls, amount, rcalls, ramount toterrs = 0 call mpi_init( ierr ) call init_counts() call mpi_comm_rank( MPI_COMM_WORLD, wrank, ierr ) call mpi_comm_size( MPI_COMM_WORLD, wsize, ierr ) if (wrank .eq. 0) then smsg(1) = 3 call mpi_send( smsg, 1, MPI_INT, 1, 0, MPI_COMM_WORLD, ierr ) else if (wrank .eq. 1) then call mpi_recv( rmsg, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, & & MPI_STATUS_IGNORE, ierr ) if (rmsg(1) .ne. 3) then toterrs = toterrs + 1 print *, "Unexpected received value ", rmsg(1) endif endif ! ! check that we used the profiling versions of the routines toterrs = 0 if (wrank .eq. 0) then if (calls.ne.1) then toterrs = toterrs + 1 print *, "Sender calls is ", calls endif if (amount.ne.1) then toterrs = toterrs + 1 print *, "Sender amount is ", amount endif else if (wrank .eq. 1) then if (rcalls.ne.1) then toterrs = toterrs + 1 print *, "Receiver calls is ", rcalls endif if (ramount.ne.1) then toterrs = toterrs + 1 print *, "Receiver amount is ", ramount endif endif call mpi_allreduce( MPI_IN_PLACE, toterrs, 1, MPI_INT, MPI_SUM, & & MPI_COMM_WORLD, ierr ) if (wrank .eq. 0) then if (toterrs .eq. 0) then print *, " No Errors" else print *, " Found ", toterrs, " errors" endif endif ! call mpi_finalize( ierr ) end ! subroutine mpi_send( smsg, count, dtype, dest, tag, comm, ierr ) use mpi integer count, dtype, dest, tag, comm, ierr integer smsg(count) common /myinfo/ calls, amount, rcalls, ramount integer calls, amount, rcalls, ramount ! calls = calls + 1 amount = amount + count call pmpi_send( smsg, count, dtype, dest, tag, comm, ierr ) return end ! subroutine mpi_recv( rmsg, count, dtype, src, tag, comm, status, & & ierr ) use mpi integer count, dtype, src, tag, comm, status(MPI_STATUS_SIZE), & & ierr integer rmsg(count) common /myinfo/ calls, amount, rcalls, ramount integer calls, amount, rcalls, ramount rcalls = rcalls + 1 ramount = ramount + 1 call pmpi_recv( rmsg, count, dtype, src, tag, comm, status, ierr & & ) return end ! subroutine init_counts() common /myinfo/ calls, amount, rcalls, ramount integer calls, amount, rcalls, ramount calls = 0 amount = 0 rcalls = 0 ramount = 0 end ! subroutine mpi_pcontrol( ierr ) integer ierr return end mpi-testsuite-3.2+dfsg/f90/profile/Makefile.am-stamp0000644000175000017500000000001212621010150021552 0ustar mbanckmbancktimestamp mpi-testsuite-3.2+dfsg/f90/io/0000755000175000017500000000000012621010235015356 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f90/io/fileerrf90.f900000644000175000017500000001276112621010150017650 0ustar mbanckmbanck! This file created from test/mpi/f77/io/fileerrf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer errs, ierr, code(2), newerrclass, eclass character*(MPI_MAX_ERROR_STRING) errstring integer comm, rlen integer buf(10) integer file ! external myerrhanfunc INTERFACE SUBROUTINE myerrhanfunc(vv0,vv1) INTEGER vv0,vv1 END SUBROUTINE END INTERFACE integer myerrhan, qerr integer callcount, codesSeen(3) common /myerrhan/ callcount, codesSeen errs = 0 callcount = 0 call mtest_init( ierr ) ! ! Setup some new codes and classes call mpi_add_error_class( newerrclass, ierr ) call mpi_add_error_code( newerrclass, code(1), ierr ) call mpi_add_error_code( newerrclass, code(2), ierr ) call mpi_add_error_string( newerrclass, "New Class", ierr ) call mpi_add_error_string( code(1), "First new code", ierr ) call mpi_add_error_string( code(2), "Second new code", ierr ) ! call mpi_file_create_errhandler( myerrhanfunc, myerrhan, ierr ) ! ! Create a new communicator so that we can leave the default errors-abort ! on MPI_COMM_WORLD. Use this comm for file_open, just to leave a little ! more separation from comm_world ! call mpi_comm_dup( MPI_COMM_WORLD, comm, ierr ) call mpi_file_open( comm, "testfile.txt", MPI_MODE_RDWR + & & MPI_MODE_CREATE, MPI_INFO_NULL, file, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintError( ierr ) endif ! call mpi_file_set_errhandler( file, myerrhan, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintError( ierr ) endif call mpi_file_get_errhandler( file, qerr, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintError( ierr ) endif if (qerr .ne. myerrhan) then errs = errs + 1 print *, ' Did not get expected error handler' endif call mpi_errhandler_free( qerr, ierr ) ! We can free our error handler now call mpi_errhandler_free( myerrhan, ierr ) call mpi_file_call_errhandler( file, newerrclass, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintError( ierr ) endif call mpi_file_call_errhandler( file, code(1), ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintError( ierr ) endif call mpi_file_call_errhandler( file, code(2), ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintError( ierr ) endif if (callcount .ne. 3) then errs = errs + 1 print *, ' Expected 3 calls to error handler, found ', & & callcount else if (codesSeen(1) .ne. newerrclass) then errs = errs + 1 print *, 'Expected class ', newerrclass, ' got ', & & codesSeen(1) endif if (codesSeen(2) .ne. code(1)) then errs = errs + 1 print *, 'Expected code ', code(1), ' got ', & & codesSeen(2) endif if (codesSeen(3) .ne. code(2)) then errs = errs + 1 print *, 'Expected code ', code(2), ' got ', & & codesSeen(3) endif endif call mpi_file_close( file, ierr ) call mpi_comm_free( comm, ierr ) call mpi_file_delete( "testfile.txt", MPI_INFO_NULL, ierr ) ! ! Check error strings while here here... call mpi_error_string( newerrclass, errstring, rlen, ierr ) if (errstring(1:rlen) .ne. "New Class") then errs = errs + 1 print *, ' Wrong string for error class: ', errstring(1:rlen) endif call mpi_error_class( code(1), eclass, ierr ) if (eclass .ne. newerrclass) then errs = errs + 1 print *, ' Class for new code is not correct' endif call mpi_error_string( code(1), errstring, rlen, ierr ) if (errstring(1:rlen) .ne. "First new code") then errs = errs + 1 print *, ' Wrong string for error code: ', errstring(1:rlen) endif call mpi_error_class( code(2), eclass, ierr ) if (eclass .ne. newerrclass) then errs = errs + 1 print *, ' Class for new code is not correct' endif call mpi_error_string( code(2), errstring, rlen, ierr ) if (errstring(1:rlen) .ne. "Second new code") then errs = errs + 1 print *, ' Wrong string for error code: ', errstring(1:rlen) endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end ! subroutine myerrhanfunc( file, errcode ) use mpi integer file, errcode integer rlen, ierr integer callcount, codesSeen(3) character*(MPI_MAX_ERROR_STRING) errstring common /myerrhan/ callcount, codesSeen callcount = callcount + 1 ! Remember the code we've seen if (callcount .le. 3) then codesSeen(callcount) = errcode endif call mpi_error_string( errcode, errstring, rlen, ierr ) if (ierr .ne. MPI_SUCCESS) then print *, ' Panic! could not get error string' call mpi_abort( MPI_COMM_WORLD, 1, ierr ) endif end mpi-testsuite-3.2+dfsg/f90/io/Makefile.in0000644000175000017500000010446112621010235017431 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This Makefile.am generated automatically by f77tof90 # from test/mpi/f77/io/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = iwriteatf90$(EXEEXT) iwritef90$(EXEEXT) \ iwriteshf90$(EXEEXT) writef90$(EXEEXT) writeatf90$(EXEEXT) \ writeallf90$(EXEEXT) writeallbef90$(EXEEXT) \ writeordf90$(EXEEXT) writeordbef90$(EXEEXT) \ writeshf90$(EXEEXT) writeatallf90$(EXEEXT) \ writeatallbef90$(EXEEXT) fileerrf90$(EXEEXT) \ fileinfof90$(EXEEXT) shpositionf90$(EXEEXT) \ atomicityf90$(EXEEXT) miscfilef90$(EXEEXT) \ setviewcurf90$(EXEEXT) c2f90multio$(EXEEXT) \ c2f2ciof90$(EXEEXT) $(am__EXEEXT_1) @BUILD_MPIX_TESTS_TRUE@am__append_1 = \ @BUILD_MPIX_TESTS_TRUE@ i_setviewcurf90 \ @BUILD_MPIX_TESTS_TRUE@ iwriteatallf90 @MAINTAINER_MODE_TRUE@am__append_2 = Makefile.am-stamp Makefile.ap subdir = f90/io ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = testlist CONFIG_CLEAN_VPATH_FILES = @BUILD_MPIX_TESTS_TRUE@am__EXEEXT_1 = i_setviewcurf90$(EXEEXT) \ @BUILD_MPIX_TESTS_TRUE@ iwriteatallf90$(EXEEXT) PROGRAMS = $(noinst_PROGRAMS) atomicityf90_SOURCES = atomicityf90.f90 atomicityf90_OBJECTS = atomicityf90.$(OBJEXT) atomicityf90_LDADD = $(LDADD) atomicityf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o am_c2f2ciof90_OBJECTS = c2f2ciof90.$(OBJEXT) c2f902cio.$(OBJEXT) c2f2ciof90_OBJECTS = $(am_c2f2ciof90_OBJECTS) c2f2ciof90_LDADD = $(LDADD) c2f2ciof90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o am_c2f90multio_OBJECTS = c2f90multio.$(OBJEXT) c2f90multio_OBJECTS = $(am_c2f90multio_OBJECTS) c2f90multio_DEPENDENCIES = fileerrf90_SOURCES = fileerrf90.f90 fileerrf90_OBJECTS = fileerrf90.$(OBJEXT) fileerrf90_LDADD = $(LDADD) fileerrf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o fileinfof90_SOURCES = fileinfof90.f90 fileinfof90_OBJECTS = fileinfof90.$(OBJEXT) fileinfof90_LDADD = $(LDADD) fileinfof90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o i_setviewcurf90_SOURCES = i_setviewcurf90.f90 i_setviewcurf90_OBJECTS = i_setviewcurf90.$(OBJEXT) i_setviewcurf90_LDADD = $(LDADD) i_setviewcurf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o nodist_iwriteatallf90_OBJECTS = iwriteatallf90.$(OBJEXT) iwriteatallf90_OBJECTS = $(nodist_iwriteatallf90_OBJECTS) iwriteatallf90_LDADD = $(LDADD) iwriteatallf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o nodist_iwriteatf90_OBJECTS = iwriteatf90.$(OBJEXT) iwriteatf90_OBJECTS = $(nodist_iwriteatf90_OBJECTS) iwriteatf90_LDADD = $(LDADD) iwriteatf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o nodist_iwritef90_OBJECTS = iwritef90.$(OBJEXT) iwritef90_OBJECTS = $(nodist_iwritef90_OBJECTS) iwritef90_LDADD = $(LDADD) iwritef90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o nodist_iwriteshf90_OBJECTS = iwriteshf90.$(OBJEXT) iwriteshf90_OBJECTS = $(nodist_iwriteshf90_OBJECTS) iwriteshf90_LDADD = $(LDADD) iwriteshf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o miscfilef90_SOURCES = miscfilef90.f90 miscfilef90_OBJECTS = miscfilef90.$(OBJEXT) miscfilef90_LDADD = $(LDADD) miscfilef90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o setviewcurf90_SOURCES = setviewcurf90.f90 setviewcurf90_OBJECTS = setviewcurf90.$(OBJEXT) setviewcurf90_LDADD = $(LDADD) setviewcurf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o shpositionf90_SOURCES = shpositionf90.f90 shpositionf90_OBJECTS = shpositionf90.$(OBJEXT) shpositionf90_LDADD = $(LDADD) shpositionf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o nodist_writeallbef90_OBJECTS = writeallbef90.$(OBJEXT) writeallbef90_OBJECTS = $(nodist_writeallbef90_OBJECTS) writeallbef90_LDADD = $(LDADD) writeallbef90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o nodist_writeallf90_OBJECTS = writeallf90.$(OBJEXT) writeallf90_OBJECTS = $(nodist_writeallf90_OBJECTS) writeallf90_LDADD = $(LDADD) writeallf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o nodist_writeatallbef90_OBJECTS = writeatallbef90.$(OBJEXT) writeatallbef90_OBJECTS = $(nodist_writeatallbef90_OBJECTS) writeatallbef90_LDADD = $(LDADD) writeatallbef90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o nodist_writeatallf90_OBJECTS = writeatallf90.$(OBJEXT) writeatallf90_OBJECTS = $(nodist_writeatallf90_OBJECTS) writeatallf90_LDADD = $(LDADD) writeatallf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o nodist_writeatf90_OBJECTS = writeatf90.$(OBJEXT) writeatf90_OBJECTS = $(nodist_writeatf90_OBJECTS) writeatf90_LDADD = $(LDADD) writeatf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o nodist_writef90_OBJECTS = writef90.$(OBJEXT) writef90_OBJECTS = $(nodist_writef90_OBJECTS) writef90_LDADD = $(LDADD) writef90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o nodist_writeordbef90_OBJECTS = writeordbef90.$(OBJEXT) writeordbef90_OBJECTS = $(nodist_writeordbef90_OBJECTS) writeordbef90_LDADD = $(LDADD) writeordbef90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o nodist_writeordf90_OBJECTS = writeordf90.$(OBJEXT) writeordf90_OBJECTS = $(nodist_writeordf90_OBJECTS) writeordf90_LDADD = $(LDADD) writeordf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o nodist_writeshf90_OBJECTS = writeshf90.$(OBJEXT) writeshf90_OBJECTS = $(nodist_writeshf90_OBJECTS) writeshf90_LDADD = $(LDADD) writeshf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = SOURCES = atomicityf90.f90 $(c2f2ciof90_SOURCES) \ $(c2f90multio_SOURCES) fileerrf90.f90 fileinfof90.f90 \ i_setviewcurf90.f90 $(nodist_iwriteatallf90_SOURCES) \ $(nodist_iwriteatf90_SOURCES) $(nodist_iwritef90_SOURCES) \ $(nodist_iwriteshf90_SOURCES) miscfilef90.f90 \ setviewcurf90.f90 shpositionf90.f90 \ $(nodist_writeallbef90_SOURCES) $(nodist_writeallf90_SOURCES) \ $(nodist_writeatallbef90_SOURCES) \ $(nodist_writeatallf90_SOURCES) $(nodist_writeatf90_SOURCES) \ $(nodist_writef90_SOURCES) $(nodist_writeordbef90_SOURCES) \ $(nodist_writeordf90_SOURCES) $(nodist_writeshf90_SOURCES) DIST_SOURCES = atomicityf90.f90 $(c2f2ciof90_SOURCES) \ $(c2f90multio_SOURCES) fileerrf90.f90 fileinfof90.f90 \ i_setviewcurf90.f90 miscfilef90.f90 setviewcurf90.f90 \ shpositionf90.f90 am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/testlist.in \ $(top_srcdir)/Makefile_f90.mtest $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F90 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f90/util/mtestf90.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. # just in case CLEANFILES = summary.xml summary.tap gen-src-tmp gen-src-stamp EXTRA_DIST = testlist.in ioharness.defn ioharness.tlt $(am__append_2) # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 # We don't want to distribute these source files because they are created by # "testmerge", hence "nodist_foo_SOURCES" nodist_iwriteatf90_SOURCES = iwriteatf90.f90 nodist_iwriteatallf90_SOURCES = iwriteatallf90.f90 nodist_iwritef90_SOURCES = iwritef90.f90 nodist_iwriteshf90_SOURCES = iwriteshf90.f90 nodist_writeallbef90_SOURCES = writeallbef90.f90 nodist_writeallf90_SOURCES = writeallf90.f90 nodist_writeatallbef90_SOURCES = writeatallbef90.f90 nodist_writeatallf90_SOURCES = writeatallf90.f90 nodist_writeatf90_SOURCES = writeatf90.f90 nodist_writef90_SOURCES = writef90.f90 nodist_writeordbef90_SOURCES = writeordbef90.f90 nodist_writeordf90_SOURCES = writeordf90.f90 nodist_writeshf90_SOURCES = writeshf90.f90 c2f90multio_SOURCES = c2f90multio.c # this is a C only program, so we must either: # A) prevent the makefile-wide "LDADD=mtestf90.o" from affecting this program, or # B) link with the fortran compiler, otherwise we'll get link failures from # compilers with runtime support libs, such as PGI c2f90multio_LDADD = c2f2ciof90_SOURCES = c2f2ciof90.f90 c2f902cio.c # ensure that dependent tests will be rebuilt when headers are updated # these files are genereated using testmerge (see below) generated_io_sources = \ iwriteatf90.f90 \ iwriteatallf90.f90 \ iwritef90.f90 \ iwriteshf90.f90 \ writeallbef90.f90 \ writeallf90.f90 \ writeatallbef90.f90 \ writeatallf90.f90 \ writeatf90.f90 \ writef90.f90 \ writeordbef90.f90 \ writeordf90.f90 \ writeshf90.f90 DISTCLEANFILES = $(generated_io_sources) @MAINTAINER_MODE_TRUE@MAINTAINERCLEANFILES = Makefile.am-stamp all: all-am .SUFFIXES: .SUFFIXES: .c .f90 .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f90.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f90/io/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f90/io/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f90.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): testlist: $(top_builddir)/config.status $(srcdir)/testlist.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) atomicityf90$(EXEEXT): $(atomicityf90_OBJECTS) $(atomicityf90_DEPENDENCIES) $(EXTRA_atomicityf90_DEPENDENCIES) @rm -f atomicityf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(atomicityf90_OBJECTS) $(atomicityf90_LDADD) $(LIBS) c2f2ciof90$(EXEEXT): $(c2f2ciof90_OBJECTS) $(c2f2ciof90_DEPENDENCIES) $(EXTRA_c2f2ciof90_DEPENDENCIES) @rm -f c2f2ciof90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(c2f2ciof90_OBJECTS) $(c2f2ciof90_LDADD) $(LIBS) c2f90multio$(EXEEXT): $(c2f90multio_OBJECTS) $(c2f90multio_DEPENDENCIES) $(EXTRA_c2f90multio_DEPENDENCIES) @rm -f c2f90multio$(EXEEXT) $(AM_V_CCLD)$(LINK) $(c2f90multio_OBJECTS) $(c2f90multio_LDADD) $(LIBS) fileerrf90$(EXEEXT): $(fileerrf90_OBJECTS) $(fileerrf90_DEPENDENCIES) $(EXTRA_fileerrf90_DEPENDENCIES) @rm -f fileerrf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(fileerrf90_OBJECTS) $(fileerrf90_LDADD) $(LIBS) fileinfof90$(EXEEXT): $(fileinfof90_OBJECTS) $(fileinfof90_DEPENDENCIES) $(EXTRA_fileinfof90_DEPENDENCIES) @rm -f fileinfof90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(fileinfof90_OBJECTS) $(fileinfof90_LDADD) $(LIBS) i_setviewcurf90$(EXEEXT): $(i_setviewcurf90_OBJECTS) $(i_setviewcurf90_DEPENDENCIES) $(EXTRA_i_setviewcurf90_DEPENDENCIES) @rm -f i_setviewcurf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(i_setviewcurf90_OBJECTS) $(i_setviewcurf90_LDADD) $(LIBS) iwriteatallf90$(EXEEXT): $(iwriteatallf90_OBJECTS) $(iwriteatallf90_DEPENDENCIES) $(EXTRA_iwriteatallf90_DEPENDENCIES) @rm -f iwriteatallf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(iwriteatallf90_OBJECTS) $(iwriteatallf90_LDADD) $(LIBS) iwriteatf90$(EXEEXT): $(iwriteatf90_OBJECTS) $(iwriteatf90_DEPENDENCIES) $(EXTRA_iwriteatf90_DEPENDENCIES) @rm -f iwriteatf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(iwriteatf90_OBJECTS) $(iwriteatf90_LDADD) $(LIBS) iwritef90$(EXEEXT): $(iwritef90_OBJECTS) $(iwritef90_DEPENDENCIES) $(EXTRA_iwritef90_DEPENDENCIES) @rm -f iwritef90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(iwritef90_OBJECTS) $(iwritef90_LDADD) $(LIBS) iwriteshf90$(EXEEXT): $(iwriteshf90_OBJECTS) $(iwriteshf90_DEPENDENCIES) $(EXTRA_iwriteshf90_DEPENDENCIES) @rm -f iwriteshf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(iwriteshf90_OBJECTS) $(iwriteshf90_LDADD) $(LIBS) miscfilef90$(EXEEXT): $(miscfilef90_OBJECTS) $(miscfilef90_DEPENDENCIES) $(EXTRA_miscfilef90_DEPENDENCIES) @rm -f miscfilef90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(miscfilef90_OBJECTS) $(miscfilef90_LDADD) $(LIBS) setviewcurf90$(EXEEXT): $(setviewcurf90_OBJECTS) $(setviewcurf90_DEPENDENCIES) $(EXTRA_setviewcurf90_DEPENDENCIES) @rm -f setviewcurf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(setviewcurf90_OBJECTS) $(setviewcurf90_LDADD) $(LIBS) shpositionf90$(EXEEXT): $(shpositionf90_OBJECTS) $(shpositionf90_DEPENDENCIES) $(EXTRA_shpositionf90_DEPENDENCIES) @rm -f shpositionf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(shpositionf90_OBJECTS) $(shpositionf90_LDADD) $(LIBS) writeallbef90$(EXEEXT): $(writeallbef90_OBJECTS) $(writeallbef90_DEPENDENCIES) $(EXTRA_writeallbef90_DEPENDENCIES) @rm -f writeallbef90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(writeallbef90_OBJECTS) $(writeallbef90_LDADD) $(LIBS) writeallf90$(EXEEXT): $(writeallf90_OBJECTS) $(writeallf90_DEPENDENCIES) $(EXTRA_writeallf90_DEPENDENCIES) @rm -f writeallf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(writeallf90_OBJECTS) $(writeallf90_LDADD) $(LIBS) writeatallbef90$(EXEEXT): $(writeatallbef90_OBJECTS) $(writeatallbef90_DEPENDENCIES) $(EXTRA_writeatallbef90_DEPENDENCIES) @rm -f writeatallbef90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(writeatallbef90_OBJECTS) $(writeatallbef90_LDADD) $(LIBS) writeatallf90$(EXEEXT): $(writeatallf90_OBJECTS) $(writeatallf90_DEPENDENCIES) $(EXTRA_writeatallf90_DEPENDENCIES) @rm -f writeatallf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(writeatallf90_OBJECTS) $(writeatallf90_LDADD) $(LIBS) writeatf90$(EXEEXT): $(writeatf90_OBJECTS) $(writeatf90_DEPENDENCIES) $(EXTRA_writeatf90_DEPENDENCIES) @rm -f writeatf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(writeatf90_OBJECTS) $(writeatf90_LDADD) $(LIBS) writef90$(EXEEXT): $(writef90_OBJECTS) $(writef90_DEPENDENCIES) $(EXTRA_writef90_DEPENDENCIES) @rm -f writef90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(writef90_OBJECTS) $(writef90_LDADD) $(LIBS) writeordbef90$(EXEEXT): $(writeordbef90_OBJECTS) $(writeordbef90_DEPENDENCIES) $(EXTRA_writeordbef90_DEPENDENCIES) @rm -f writeordbef90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(writeordbef90_OBJECTS) $(writeordbef90_LDADD) $(LIBS) writeordf90$(EXEEXT): $(writeordf90_OBJECTS) $(writeordf90_DEPENDENCIES) $(EXTRA_writeordf90_DEPENDENCIES) @rm -f writeordf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(writeordf90_OBJECTS) $(writeordf90_LDADD) $(LIBS) writeshf90$(EXEEXT): $(writeshf90_OBJECTS) $(writeshf90_DEPENDENCIES) $(EXTRA_writeshf90_DEPENDENCIES) @rm -f writeshf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(writeshf90_OBJECTS) $(writeshf90_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c2f902cio.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c2f90multio.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic clean-local clean-noinstPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-local clean-noinstPROGRAMS cscopelist-am ctags ctags-am \ distclean distclean-compile distclean-generic distclean-tags \ distdir dvi dvi-am html html-am info info-am install \ install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile $(top_builddir)/f90/util/mtestf90.o: $(top_srcdir)/f90/util/mtestf90.f90 (cd $(top_builddir)/f90/util && $(MAKE) mtestf90.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # a parallel-safe scheme to generate the tests, see the automake-1.11.1 manual, # section 27.9 "Handling Tools That Produce Multiple Outputs" for an explanation # # Note that using testmerge at make-time adds a dependency on perl for users. # It's been like this for a long time, so I don't think it's a problem in # practice. The best way to fix this is to drop the nodist_foo_SOURCES lines, # modify testmerge to output the stamp file, and then enclose modified versions # of these rules in an "if MAINAINER_MODE". The files also should then move to # MAINTAINERCLEANFILES from DISTCLEANFILES. [goodell@ 2011-07-11] gen-src-stamp: $(srcdir)/ioharness.defn $(srcdir)/ioharness.tlt @rm -f gen-src-tmp @touch gen-src-tmp $(top_builddir)/maint/testmerge -defn=$(top_srcdir)/maint/common.defn \ $(srcdir)/ioharness.defn $(srcdir)/ioharness.tlt @mv -f gen-src-tmp $@ $(generated_io_sources): gen-src-stamp @if test -f $@; then :; else \ trap 'rm -rf gen-src-lock gen-src-stamp' 1 2 13 15; \ if mkdir gen-src-lock 2>/dev/null; then \ rm -f gen-src-stamp; \ $(MAKE) $(AM_MAKEFLAGS) gen-src-stamp; \ rmdir gen-src-lock; \ else \ while test -d gen-src-lock; do sleep 1; done; \ test -f gen-src-stamp; exit $$?; \ fi; \ fi # clean up after the test programs clean-local: -rm -f .iotest.txt.* # f77tof90 only replaces output files if the contents differ, so we must use a # separate timestamp file in order avoid constantly trying to remake the f90 # copy of the Makefile when the f77 copy is updated in a way that does not # change its contents @MAINTAINER_MODE_TRUE@$(srcdir)/Makefile.am: $(srcdir)/Makefile.am-stamp @MAINTAINER_MODE_TRUE@$(srcdir)/Makefile.am-stamp: $(master_top_srcdir)/test/mpi/f77/io/Makefile.am $(master_top_srcdir)/maint/f77tof90 @MAINTAINER_MODE_TRUE@ ( cd $(master_top_srcdir) && ./maint/f77tof90 test/mpi/f77/io test/mpi/f90/io Makefile.am Makefile.ap ) $(srcdir)/ioharness.defn: $(srcdir)/../../f77/io/ioharness.defn sed -e 's/filename="\(.*\)f.f\"/filename="\1f90.f90"/g' \ -e 's/include.*iooffset.*/integer (kind=MPI_OFFSET_KIND)offset/g' \ $(srcdir)/../../f77/io/ioharness.defn > $(srcdir)/ioharness.defn $(srcdir)/ioharness.tlt: $(srcdir)/../../f77/io/ioharness.tlt sed -e 's/include.*mpif.*/use mpi/g' \ -e 's/fheader/f90header/g' \ -e 's/^C/!/g' \ -e '/implicit *none/d' \ $(srcdir)/../../f77/io/ioharness.tlt > $(srcdir)/ioharness.tlt c2f902cio.c: $(srcdir)/../../f90/io/c2f902cio.c cp $(srcdir)/../../f90/io/c2f902cio.c c2f902cio.c # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f90/io/Makefile.ap0000644000175000017500000000114012620254305017420 0ustar mbanckmbanck$(srcdir)/ioharness.defn: $(srcdir)/../../f77/io/ioharness.defn sed -e 's/filename="\(.*\)f.f\"/filename="\1f90.f90"/g' \ -e 's/include.*iooffset.*/integer (kind=MPI_OFFSET_KIND)offset/g' \ $(srcdir)/../../f77/io/ioharness.defn > $(srcdir)/ioharness.defn $(srcdir)/ioharness.tlt: $(srcdir)/../../f77/io/ioharness.tlt sed -e 's/include.*mpif.*/use mpi/g' \ -e 's/fheader/f90header/g' \ -e 's/^C/!/g' \ -e '/implicit *none/d' \ $(srcdir)/../../f77/io/ioharness.tlt > $(srcdir)/ioharness.tlt c2f902cio.c: $(srcdir)/../../f90/io/c2f902cio.c cp $(srcdir)/../../f90/io/c2f902cio.c c2f902cio.c mpi-testsuite-3.2+dfsg/f90/io/miscfilef90.f900000644000175000017500000001664512621010150020020 0ustar mbanckmbanck! This file created from test/mpi/f77/io/miscfilef.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2004 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi ! iooffset.h provides a variable "offset" that is of type MPI_Offset ! (in Fortran 90, kind=MPI_OFFSET_KIND) integer (kind=MPI_OFFSET_KIND) offset ! iodisp.h declares disp as an MPI_Offset integer integer (kind=MPI_OFFSET_KIND) disp integer rank, size integer fh, i, group, worldgroup, result integer ierr, errs integer BUFSIZE parameter (BUFSIZE=1024) integer buf(BUFSIZE) character*(50) filename character*(MPI_MAX_DATAREP_STRING) datarep integer amode logical atomicity integer newtype, etype, filetype integer integer_size, type_size ! errs = 0 call mtest_init( ierr ) call mpi_comm_rank( MPI_COMM_WORLD, rank, ierr ) call mpi_comm_size( MPI_COMM_WORLD, size, ierr ) ! ! Create a file that we'll then query properties filename = "testfile.txt" call mpi_file_open( MPI_COMM_WORLD, filename, MPI_MODE_CREATE + & & MPI_MODE_RDWR, MPI_INFO_NULL, fh, ierr ) if (ierr .ne. MPI_SUCCESS) then print *, "Unable to create file ", filename call mpi_abort( MPI_COMM_WORLD, 1, ierr ) endif ! ! Fill in some data do i=1, BUFSIZE buf(i) = i enddo call mpi_file_write( fh, buf, BUFSIZE, MPI_INTEGER, & & MPI_STATUS_IGNORE, ierr ) call MPI_File_sync( fh, ierr ) ! ! Now, query properties of the file and the file handle call MPI_File_get_amode(fh, amode, ierr ) if (amode .ne. MPI_MODE_CREATE + MPI_MODE_RDWR) then errs = errs + 1 print *, " Amode was different than expected" endif ! call MPI_File_get_atomicity( fh, atomicity, ierr ) if (atomicity) then errs = errs + 1 print *, " Atomicity was true but should be false" endif ! call MPI_File_set_atomicity( fh, .true., ierr ) call MPI_File_get_atomicity( fh, atomicity, ierr ) if (.not. atomicity) then errs = errs + 1 print *, " Atomicity was set to true but ", & & "get_atomicity returned false" endif call MPI_File_set_atomicity( fh, .false., ierr ) ! ! FIXME: original code use 10,10,20, and the following code ! assumed the original ! ! Create a vector type of 10 elements, each of 20 elements, with a stride of ! 30 elements call mpi_type_vector( 10, 20, 30, MPI_INTEGER, newtype, ierr ) call mpi_type_commit( newtype, ierr ) ! ! All processes are getting the same view, with a 1000 byte offset offset = 1000 call mpi_file_set_view( fh, offset, MPI_INTEGER, newtype, "native" & & , MPI_INFO_NULL, ierr ) call mpi_file_get_view( fh, offset, etype, filetype, datarep, ierr & & ) if (offset .ne. 1000) then print *, " displacement was ", offset, ", expected 1000" errs = errs + 1 endif if (datarep .ne. "native") then print *, " data representation form was ", datarep, & & ", expected native" errs = errs + 1 endif ! Find the byte offset, given an offset of 20 etypes relative to the ! current view (the same as the blockcount of the filetype, which ! places it at the beginning of the next block, hence a stride ! distance away). offset = 20 call mpi_file_get_byte_offset( fh, offset, disp, ierr ) call mpi_type_size( MPI_INTEGER, integer_size, ierr ) if (disp .ne. 1000 + 30 * integer_size) then errs = errs + 1 print *, " (offset20)Byte offset = ", disp, ", should be ", & & 1000+20*integer_size endif ! ! We should also compare file and etypes. We just look at the ! sizes and extents for now call mpi_type_size( etype, type_size, ierr ) if (type_size .ne. integer_size) then print *, " Etype has size ", type_size, ", but should be ", & & integer_size errs = errs + 1 endif call mpi_type_size( filetype, type_size, ierr ) if (type_size .ne. 10*20*integer_size) then print *, " filetype has size ", type_size, ", but should be ", & & 10*20*integer_size errs = errs + 1 endif ! ! Only free derived type call mpi_type_free( filetype, ierr ) call mpi_file_get_group( fh, group, ierr ) call mpi_comm_group( MPI_COMM_WORLD, worldgroup, ierr ) call mpi_group_compare( group, worldgroup, result, ierr ) if (result .ne. MPI_IDENT) then print *, " Group of file does not match group of comm_world" errs = errs + 1 endif call mpi_group_free( group, ierr ) call mpi_group_free( worldgroup, ierr ) offset = 1000+25*integer_size call mpi_file_set_size(fh, offset, ierr ) call mpi_barrier(MPI_COMM_WORLD, ierr ) call mpi_file_sync(fh, ierr ) call mpi_file_get_size( fh, offset, ierr ) if (offset .ne. 1000+25*integer_size) then errs = errs + 1 print *, " File size is ", offset, ", should be ", 1000 + 25 & & * integer_size endif ! ! File size is 1000+25ints. Seek to end. Note that the file size ! places the end of the file into the gap in the view, so seeking ! to the end, which is relative to the view, needs to give the end ! of the first block of 20 ints) offset = 0 call mpi_file_seek( fh, offset, MPI_SEEK_END, ierr ) call mpi_file_get_position( fh, disp, ierr ) if (disp .ne. 20) then errs = errs + 1 print *, "File pointer position = ", disp, ", should be 20" if (disp .eq. 25) then ! See MPI 2.1, section 13.4, page 399, lines 7-8. The disp must be ! relative to the current view, in the etype units of the current view print *, " MPI implementation failed to position the "// & & "displacement within the current file view" endif ! Make sure we use the expected position in the next step. disp = 20 endif call mpi_file_get_byte_offset(fh, disp, offset, ierr ) if (offset .ne. 1000+30*integer_size) then errs = errs + 1 print *, " (seek)Byte offset = ", offset, ", should be ", 1000 & & +30*integer_size endif call mpi_barrier(MPI_COMM_WORLD, ierr ) offset = -20 call mpi_file_seek(fh, offset, MPI_SEEK_CUR, ierr ) call mpi_file_get_position(fh, disp, ierr ) call mpi_file_get_byte_offset(fh, disp, offset, ierr ) if (offset .ne. 1000) then errs = errs + 1 print *, " File pointer position in bytes = ", offset, & & ", should be 1000" endif offset = 8192 call mpi_file_preallocate(fh, offset, ierr ) offset = 0 call mpi_file_get_size( fh, offset, ierr ) if (offset .lt. 8192) then errs = errs + 1 print *, " Size after preallocate is ", offset, & & ", should be at least 8192" endif call mpi_file_close( fh, ierr ) call mpi_barrier(MPI_COMM_WORLD, ierr ) if (rank .eq. 0) then call MPI_File_delete(filename, MPI_INFO_NULL, ierr ) endif call mpi_type_free( newtype, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/io/Makefile.am0000644000175000017500000001302012621010150017402 0ustar mbanckmbanck# This Makefile.am generated automatically by f77tof90 # from test/mpi/f77/io/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f90.mtest EXTRA_DIST = testlist.in # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 noinst_PROGRAMS = \ iwriteatf90 \ iwritef90 \ iwriteshf90 \ writef90 \ writeatf90 \ writeallf90 \ writeallbef90 \ writeordf90 \ writeordbef90 \ writeshf90 \ writeatallf90 \ writeatallbef90 \ fileerrf90 \ fileinfof90 \ shpositionf90 \ atomicityf90 \ miscfilef90 \ setviewcurf90 \ c2f90multio \ c2f2ciof90 if BUILD_MPIX_TESTS noinst_PROGRAMS += \ i_setviewcurf90 \ iwriteatallf90 endif # We don't want to distribute these source files because they are created by # "testmerge", hence "nodist_foo_SOURCES" nodist_iwriteatf90_SOURCES = iwriteatf90.f90 nodist_iwriteatallf90_SOURCES = iwriteatallf90.f90 nodist_iwritef90_SOURCES = iwritef90.f90 nodist_iwriteshf90_SOURCES = iwriteshf90.f90 nodist_writeallbef90_SOURCES = writeallbef90.f90 nodist_writeallf90_SOURCES = writeallf90.f90 nodist_writeatallbef90_SOURCES = writeatallbef90.f90 nodist_writeatallf90_SOURCES = writeatallf90.f90 nodist_writeatf90_SOURCES = writeatf90.f90 nodist_writef90_SOURCES = writef90.f90 nodist_writeordbef90_SOURCES = writeordbef90.f90 nodist_writeordf90_SOURCES = writeordf90.f90 nodist_writeshf90_SOURCES = writeshf90.f90 c2f90multio_SOURCES = c2f90multio.c # this is a C only program, so we must either: # A) prevent the makefile-wide "LDADD=mtestf90.o" from affecting this program, or # B) link with the fortran compiler, otherwise we'll get link failures from # compilers with runtime support libs, such as PGI c2f90multio_LDADD = c2f2ciof90_SOURCES = c2f2ciof90.f90 c2f902cio.c ## these header files will be distributed because they're listed in ## AC_CONFIG_FILES/AC_OUTPUT # ensure that dependent tests will be rebuilt when headers are updated # these files are genereated using testmerge (see below) generated_io_sources = \ iwriteatf90.f90 \ iwriteatallf90.f90 \ iwritef90.f90 \ iwriteshf90.f90 \ writeallbef90.f90 \ writeallf90.f90 \ writeatallbef90.f90 \ writeatallf90.f90 \ writeatf90.f90 \ writef90.f90 \ writeordbef90.f90 \ writeordf90.f90 \ writeshf90.f90 EXTRA_DIST += ioharness.defn ioharness.tlt # a parallel-safe scheme to generate the tests, see the automake-1.11.1 manual, # section 27.9 "Handling Tools That Produce Multiple Outputs" for an explanation # # Note that using testmerge at make-time adds a dependency on perl for users. # It's been like this for a long time, so I don't think it's a problem in # practice. The best way to fix this is to drop the nodist_foo_SOURCES lines, # modify testmerge to output the stamp file, and then enclose modified versions # of these rules in an "if MAINAINER_MODE". The files also should then move to # MAINTAINERCLEANFILES from DISTCLEANFILES. [goodell@ 2011-07-11] gen-src-stamp: $(srcdir)/ioharness.defn $(srcdir)/ioharness.tlt @rm -f gen-src-tmp @touch gen-src-tmp $(top_builddir)/maint/testmerge -defn=$(top_srcdir)/maint/common.defn \ $(srcdir)/ioharness.defn $(srcdir)/ioharness.tlt @mv -f gen-src-tmp $@ $(generated_io_sources): gen-src-stamp ## Recover from the removal of $@ @if test -f $@; then :; else \ trap 'rm -rf gen-src-lock gen-src-stamp' 1 2 13 15; \ ## mkdir is a portable test-and-set if mkdir gen-src-lock 2>/dev/null; then \ ## This code is being executed by the first process. rm -f gen-src-stamp; \ $(MAKE) $(AM_MAKEFLAGS) gen-src-stamp; \ rmdir gen-src-lock; \ else \ ## This code is being executed by the follower processes. ## Wait until the first process is done. while test -d gen-src-lock; do sleep 1; done; \ ## Succeed if and only if the first process succeeded. test -f gen-src-stamp; exit $$?; \ fi; \ fi # just in case CLEANFILES += gen-src-tmp gen-src-stamp # clean up after the test programs clean-local: -rm -f .iotest.txt.* DISTCLEANFILES = $(generated_io_sources) if MAINTAINER_MODE # f77tof90 only replaces output files if the contents differ, so we must use a # separate timestamp file in order avoid constantly trying to remake the f90 # copy of the Makefile when the f77 copy is updated in a way that does not # change its contents $(srcdir)/Makefile.am: $(srcdir)/Makefile.am-stamp $(srcdir)/Makefile.am-stamp: $(master_top_srcdir)/test/mpi/f77/io/Makefile.am $(master_top_srcdir)/maint/f77tof90 ( cd $(master_top_srcdir) && ./maint/f77tof90 test/mpi/f77/io test/mpi/f90/io Makefile.am Makefile.ap ) MAINTAINERCLEANFILES = Makefile.am-stamp EXTRA_DIST += Makefile.am-stamp Makefile.ap endif MAINTAINER_MODE $(srcdir)/ioharness.defn: $(srcdir)/../../f77/io/ioharness.defn sed -e 's/filename="\(.*\)f.f\"/filename="\1f90.f90"/g' \ -e 's/include.*iooffset.*/integer (kind=MPI_OFFSET_KIND)offset/g' \ $(srcdir)/../../f77/io/ioharness.defn > $(srcdir)/ioharness.defn $(srcdir)/ioharness.tlt: $(srcdir)/../../f77/io/ioharness.tlt sed -e 's/include.*mpif.*/use mpi/g' \ -e 's/fheader/f90header/g' \ -e 's/^C/!/g' \ -e '/implicit *none/d' \ $(srcdir)/../../f77/io/ioharness.tlt > $(srcdir)/ioharness.tlt c2f902cio.c: $(srcdir)/../../f90/io/c2f902cio.c cp $(srcdir)/../../f90/io/c2f902cio.c c2f902cio.c mpi-testsuite-3.2+dfsg/f90/io/i_setviewcurf90.f900000644000175000017500000000770212621010150020727 0ustar mbanckmbanck! This file created from test/mpi/f77/io/i_setviewcurf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer (kind=MPI_OFFSET_KIND) offset integer errs, ierr, size, rank integer fh, comm, status(MPI_STATUS_SIZE) integer buf(1024) integer request errs = 0 call MTest_Init( ierr ) ! This test reads a header then sets the view to every "size" int, ! using set view and current displacement. The file is first written ! using a combination of collective and ordered writes comm = MPI_COMM_WORLD call MPI_File_open( comm, "test.ord", MPI_MODE_WRONLY + & & MPI_MODE_CREATE, MPI_INFO_NULL, fh, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Open(1)", ierr ) endif call MPI_Comm_size( comm, size, ierr ) call MPI_Comm_rank( comm, rank, ierr ) if (size .gt. 1024) then if (rank .eq. 0) then print *, & &"This program must be run with no more than 1024 processes" call MPI_Abort( MPI_COMM_WORLD, 1, ierr ) endif endif buf(1) = size call MPI_File_iwrite_all( fh, buf, 1, MPI_INTEGER, request, ierr) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "iwrite_all", ierr ) endif call MPI_Wait(request, status, ierr) call MPI_File_get_position( fh, offset, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Get_position", ierr ) endif call MPI_File_seek_shared( fh, offset, MPI_SEEK_SET, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Seek_shared", ierr ) endif buf(1) = rank call MPI_File_write_ordered( fh, buf, 1, MPI_INTEGER, status,ierr) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Write_ordered", ierr ) endif call MPI_File_close( fh, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Close(1)", ierr ) endif ! Reopen the file as sequential call MPI_File_open( comm, "test.ord", MPI_MODE_RDONLY + & & MPI_MODE_SEQUENTIAL + MPI_MODE_DELETE_ON_CLOSE, & & MPI_INFO_NULL, fh, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Open(Read)", ierr ) endif if (rank .eq. 0) then call MPI_File_read_shared( fh, buf, 1, MPI_INTEGER, status, & & ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Read_all", ierr ) endif if (buf(1) .ne. size) then errs = errs + 1 print *, "Unexpected value for the header = ", buf(1), & & ", should be ", size endif endif call MPI_Barrier( comm, ierr ) ! All processes must provide the same file view for MODE_SEQUENTIAL call MPI_File_set_view( fh, MPI_DISPLACEMENT_CURRENT, MPI_INTEGER & & ,MPI_INTEGER, "native", MPI_INFO_NULL, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Set_view", ierr ) endif buf(1) = -1 call MPI_File_read_ordered( fh, buf, 1, MPI_INTEGER, status, ierr & & ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Read_all", ierr ) endif if (buf(1) .ne. rank) then errs = errs + 1 print *, rank, ": buf(1) = ", buf(1) endif call MPI_File_close( fh, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Close(2)", ierr ) endif call MTest_Finalize( errs ) call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/io/testlist.in0000644000175000017500000000060112621010150017552 0ustar mbanckmbanck# This file generated by f77tof90 iwriteatf90 4 iwritef90 4 iwriteshf90 4 writef90 4 writeatf90 4 writeallf90 4 writeshf90 4 writeordf90 4 writeatallf90 4 writeatallbef90 4 writeallbef90 4 writeordbef90 4 fileerrf90 1 fileinfof90 3 shpositionf90 4 atomicityf90 8 miscfilef90 4 setviewcurf90 4 c2f2ciof90 1 c2f90multio 1 i_setviewcurf90 4 mpiversion=3.1 iwriteatallf90 4 mpiversion=3.1 mpi-testsuite-3.2+dfsg/f90/io/c2f902cio.c0000644000175000017500000000536412621010150017126 0ustar mbanckmbanck/* This file created from test/mpi/f77/io/c2f2cio.c with f77tof90 */ /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * This file contains the C routines used in testing the c2f and f2c * handle conversion functions for MPI_File * The tests follow this pattern: * * Fortran main program * calls c routine with each handle type, with a prepared * and valid handle (often requires constructing an object) * * C routine uses xxx_f2c routine to get C handle, checks some * properties (i.e., size and rank of communicator, contents of datatype) * * Then the Fortran main program calls a C routine that provides * a handle, and the Fortran program performs similar checks. * * We also assume that a C int is a Fortran integer. If this is not the * case, these tests must be modified. */ /* style: allow:fprintf:1 sig:0 */ #include #include "mpi.h" #include "../../include/mpitestconf.h" #include /* Name mapping. All routines are created with names that are lower case with a single trailing underscore. This matches many compilers. We use #define to change the name for Fortran compilers that do not use the lowercase/underscore pattern */ #ifdef F77_NAME_UPPER #define c2ffile_ C2FFILE #define f2cfile_ F2CFILE #elif defined(F77_NAME_LOWER) || defined(F77_NAME_MIXED) /* Mixed is ok because we use lowercase in all uses */ #define c2ffile_ c2ffile #define f2cfile_ f2cfile #elif defined(F77_NAME_LOWER_2USCORE) || defined(F77_NAME_LOWER_USCORE) || \ defined(F77_NAME_MIXED_USCORE) /* Else leave name alone (routines have no underscore, so both of these map to a lowercase, single underscore) */ #else #error 'Unrecognized Fortran name mapping' #endif /* Prototypes to keep compilers happy */ int c2ffile_(int *); void f2cfile_(int *); int c2ffile_(int *file) { MPI_File cFile = MPI_File_f2c(*file); MPI_Group group, wgroup; int result; MPI_File_get_group(cFile, &group); MPI_Comm_group(MPI_COMM_WORLD, &wgroup); MPI_Group_compare(group, wgroup, &result); if (result != MPI_IDENT) { fprintf(stderr, "File: did not get expected group\n"); return 1; } MPI_Group_free(&group); MPI_Group_free(&wgroup); return 0; } /* * The following routines provide handles to the calling Fortran program */ void f2cfile_(int *file) { MPI_File cFile; int rc; rc = MPI_File_open(MPI_COMM_WORLD, (char *) "temp", MPI_MODE_RDWR | MPI_MODE_DELETE_ON_CLOSE | MPI_MODE_CREATE, MPI_INFO_NULL, &cFile); if (rc) { *file = 0; } else { *file = MPI_File_c2f(cFile); } } mpi-testsuite-3.2+dfsg/f90/io/shpositionf90.f900000644000175000017500000000447712621010150020424 0ustar mbanckmbanck! This file created from test/mpi/f77/io/shpositionf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer comm, fh, r, s, i integer fileintsize integer errs, err, ierr character *(100) filename integer (kind=MPI_OFFSET_KIND) offset integer (kind=MPI_ADDRESS_KIND) aint errs = 0 call MTest_Init( ierr ) filename = "iotest.txt" comm = MPI_COMM_WORLD call mpi_comm_size( comm, s, ierr ) call mpi_comm_rank( comm, r, ierr ) ! Try writing the file, then check it call mpi_file_open( comm, filename, MPI_MODE_RDWR + & & MPI_MODE_CREATE, MPI_INFO_NULL, fh, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 if (errs .le. 10) then call MTestPrintError( ierr ) endif endif ! ! Get the size of an INTEGER in the file call mpi_file_get_type_extent( fh, MPI_INTEGER, aint, ierr ) fileintsize = aint ! ! We let each process write in turn, getting the position after each ! write do i=1, s if (i .eq. r + 1) then call mpi_file_write_shared( fh, i, 1, MPI_INTEGER, & & MPI_STATUS_IGNORE, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 if (errs .le. 10) then call MTestPrintError( ierr ) endif endif endif call mpi_barrier( comm, ierr ) call mpi_file_get_position_shared( fh, offset, ierr ) if (offset .ne. fileintsize * i) then errs = errs + 1 print *, r, ' Shared position is ', offset,' should be ', & & fileintsize * i endif call mpi_barrier( comm, ierr ) enddo call mpi_file_close( fh, ierr ) if (r .eq. 0) then call mpi_file_delete( filename, MPI_INFO_NULL, ierr ) endif if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 if (errs .le. 10) then call MTestPrintError( ierr ) endif endif ! call MTest_Finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/io/atomicityf90.f900000644000175000017500000001571612621010150020225 0ustar mbanckmbanck! This file created from test/mpi/f77/io/atomicityf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2004 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer (kind=MPI_OFFSET_KIND) disp ! tests whether atomicity semantics are satisfied for overlapping accesses ! in atomic mode. The probability of detecting errors is higher if you run ! it on 8 or more processes. ! This is a version of the test in romio/test/atomicity.c . integer BUFSIZE parameter (BUFSIZE=10000) integer writebuf(BUFSIZE), readbuf(BUFSIZE) integer i, mynod, nprocs, len, ierr, errs, toterrs character*50 filename integer newtype, fh, info, status(MPI_STATUS_SIZE) errs = 0 call MPI_Init(ierr) call MPI_Comm_rank(MPI_COMM_WORLD, mynod, ierr ) call MPI_Comm_size(MPI_COMM_WORLD, nprocs, ierr ) ! Unlike the C version, we fix the filename because of the difficulties ! in accessing the command line from different Fortran environments filename = "testfile.txt" ! test atomicity of contiguous accesses ! initialize file to all zeros if (mynod .eq. 0) then call MPI_File_delete(filename, MPI_INFO_NULL, ierr ) call MPI_File_open(MPI_COMM_SELF, filename, MPI_MODE_CREATE + & & MPI_MODE_RDWR, MPI_INFO_NULL, fh, ierr ) do i=1, BUFSIZE writebuf(i) = 0 enddo call MPI_File_write(fh, writebuf, BUFSIZE, MPI_INTEGER, status, & & ierr) call MPI_File_close(fh, ierr ) endif call MPI_Barrier(MPI_COMM_WORLD, ierr ) do i=1, BUFSIZE writebuf(i) = 10 readbuf(i) = 20 enddo call MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_CREATE + & & MPI_MODE_RDWR, MPI_INFO_NULL, fh, ierr ) ! set atomicity to true call MPI_File_set_atomicity(fh, .true., ierr) if (ierr .ne. MPI_SUCCESS) then print *, "Atomic mode not supported on this file system." call MPI_Abort(MPI_COMM_WORLD, 1, ierr ) endif call MPI_Barrier(MPI_COMM_WORLD, ierr ) ! process 0 writes and others concurrently read. In atomic mode, ! the data read must be either all old values or all new values; nothing ! in between. if (mynod .eq. 0) then call MPI_File_write(fh, writebuf, BUFSIZE, MPI_INTEGER, status, & & ierr) else call MPI_File_read(fh, readbuf, BUFSIZE, MPI_INTEGER, status, & & ierr ) if (ierr .eq. MPI_SUCCESS) then if (readbuf(1) .eq. 0) then ! the rest must also be 0 do i=2, BUFSIZE if (readbuf(i) .ne. 0) then errs = errs + 1 print *, "(contig)Process ", mynod, ": readbuf(", i & & ,") is ", readbuf(i), ", should be 0" call MPI_Abort(MPI_COMM_WORLD, 1, ierr ) endif enddo else if (readbuf(1) .eq. 10) then ! the rest must also be 10 do i=2, BUFSIZE if (readbuf(i) .ne. 10) then errs = errs + 1 print *, "(contig)Process ", mynod, ": readbuf(", i & & ,") is ", readbuf(i), ", should be 10" call MPI_Abort(MPI_COMM_WORLD, 1, ierr ) endif enddo else errs = errs + 1 print *, "(contig)Process ", mynod, ": readbuf(1) is ", & & readbuf(1), ", should be either 0 or 10" endif endif endif call MPI_File_close( fh, ierr ) call MPI_Barrier( MPI_COMM_WORLD, ierr ) ! repeat the same test with a noncontiguous filetype call MPI_Type_vector(BUFSIZE, 1, 2, MPI_INTEGER, newtype, ierr) call MPI_Type_commit(newtype, ierr ) call MPI_Info_create(info, ierr ) ! I am setting these info values for testing purposes only. It is ! better to use the default values in practice. */ call MPI_Info_set(info, "ind_rd_buffer_size", "1209", ierr ) call MPI_Info_set(info, "ind_wr_buffer_size", "1107", ierr ) if (mynod .eq. 0) then call MPI_File_delete(filename, MPI_INFO_NULL, ierr ) call MPI_File_open(MPI_COMM_SELF, filename, MPI_MODE_CREATE + & & MPI_MODE_RDWR, info, fh, ierr ) do i=1, BUFSIZE writebuf(i) = 0 enddo disp = 0 call MPI_File_set_view(fh, disp, MPI_INTEGER, newtype, "native" & & ,info, ierr) call MPI_File_write(fh, writebuf, BUFSIZE, MPI_INTEGER, status, & & ierr ) call MPI_File_close( fh, ierr ) endif call MPI_Barrier( MPI_COMM_WORLD, ierr ) do i=1, BUFSIZE writebuf(i) = 10 readbuf(i) = 20 enddo call MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_CREATE + & & MPI_MODE_RDWR, info, fh, ierr ) call MPI_File_set_atomicity(fh, .true., ierr) disp = 0 call MPI_File_set_view(fh, disp, MPI_INTEGER, newtype, "native", & & info, ierr ) call MPI_Barrier(MPI_COMM_WORLD, ierr ) if (mynod .eq. 0) then call MPI_File_write(fh, writebuf, BUFSIZE, MPI_INTEGER, status, & & ierr ) else call MPI_File_read(fh, readbuf, BUFSIZE, MPI_INTEGER, status, & & ierr ) if (ierr .eq. MPI_SUCCESS) then if (readbuf(1) .eq. 0) then do i=2, BUFSIZE if (readbuf(i) .ne. 0) then errs = errs + 1 print *, "(noncontig)Process ", mynod, ": readbuf(" & & , i,") is ", readbuf(i), ", should be 0" call MPI_Abort(MPI_COMM_WORLD, 1, ierr ) endif enddo else if (readbuf(1) .eq. 10) then do i=2, BUFSIZE if (readbuf(i) .ne. 10) then errs = errs + 1 print *, "(noncontig)Process ", mynod, ": readbuf(" & & , i,") is ", readbuf(i), ", should be 10" call MPI_Abort(MPI_COMM_WORLD, 1, ierr ) endif enddo else errs = errs + 1 print *, "(noncontig)Process ", mynod, ": readbuf(1) is " & & ,readbuf(1), ", should be either 0 or 10" endif endif endif call MPI_File_close( fh, ierr ) call MPI_Barrier(MPI_COMM_WORLD, ierr ) call MPI_Allreduce( errs, toterrs, 1, MPI_INTEGER, MPI_SUM, & & MPI_COMM_WORLD, ierr ) if (mynod .eq. 0) then if( toterrs .gt. 0) then print *, "Found ", toterrs, " errors" else print *, " No Errors" endif endif call MPI_Type_free(newtype, ierr ) call MPI_Info_free(info, ierr ) call MPI_Finalize(ierr) end mpi-testsuite-3.2+dfsg/f90/io/fileinfof90.f900000644000175000017500000000427512621010150020014 0ustar mbanckmbanck! This file created from test/mpi/f77/io/fileinfof.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer ierr, errs integer fh, info1, info2, rank logical flag character*(50) filename character*(MPI_MAX_INFO_KEY) mykey character*(MPI_MAX_INFO_VAL) myvalue errs = 0 call mtest_init( ierr ) call mpi_comm_rank( MPI_COMM_WORLD, rank, ierr ) ! ! Open a simple file ierr = -1 filename = "iotest.txt" call mpi_file_open( MPI_COMM_WORLD, filename, MPI_MODE_RDWR + & & MPI_MODE_CREATE, MPI_INFO_NULL, fh, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintError( ierr ) endif ! ! Try to set one of the available info hints call mpi_info_create( info1, ierr ) call mpi_info_set( info1, "access_style", & & "read_once,write_once", ierr ) ierr = -1 call mpi_file_set_info( fh, info1, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintError( ierr ) endif call mpi_info_free( info1, ierr ) ierr = -1 call mpi_file_get_info( fh, info2, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintError( ierr ) endif call mpi_info_get( info2, "filename", MPI_MAX_INFO_VAL, & & myvalue, flag, ierr ) ! ! An implementation isn't required to provide the filename (though ! a high-quality implementation should) if (flag) then ! If we find it, we must have the correct name if (myvalue(1:10) .ne. filename(1:10) .or. & & myvalue(11:11) .ne. ' ') then errs = errs + 1 print *, ' Returned wrong value for the filename' endif endif call mpi_info_free( info2, ierr ) ! call mpi_file_close( fh, ierr ) call mpi_barrier( MPI_COMM_WORLD, ierr ) if (rank .eq. 0) then call mpi_file_delete( filename, MPI_INFO_NULL, ierr ) endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/io/c2f2ciof90.f900000644000175000017500000000327612621010150017450 0ustar mbanckmbanck! This file created from test/mpi/f77/io/c2f2ciof.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! Test just the MPI-IO FILE object program main use mpi integer errs, toterrs, ierr integer wrank integer wgroup integer fsize, frank integer comm, file, group, result integer c2ffile errs = 0 call mpi_init( ierr ) call mpi_comm_rank( MPI_COMM_WORLD, wrank, ierr ) call mpi_comm_group( MPI_COMM_WORLD, wgroup, ierr ) call mpi_file_open( MPI_COMM_WORLD, "temp", MPI_MODE_RDWR + & & MPI_MODE_DELETE_ON_CLOSE + MPI_MODE_CREATE, MPI_INFO_NULL, & & file, ierr ) if (ierr .ne. 0) then errs = errs + 1 else errs = errs + c2ffile( file ) call mpi_file_close( file, ierr ) endif call f2cfile( file ) ! name is temp, in comm world, no info provided call mpi_file_get_group( file, group, ierr ) call mpi_group_compare( group, wgroup, result, ierr ) if (result .ne. MPI_IDENT) then errs = errs + 1 print *, "Group of file not the group of comm_world" endif call mpi_group_free( group, ierr ) call mpi_group_free( wgroup, ierr ) call mpi_file_close( file, ierr ) ! ! Summarize the errors ! call mpi_allreduce( errs, toterrs, 1, MPI_INTEGER, MPI_SUM, & & MPI_COMM_WORLD, ierr ) if (wrank .eq. 0) then if (toterrs .eq. 0) then print *, ' No Errors' else print *, ' Found ', toterrs, ' errors' endif endif call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/io/Makefile.am-stamp0000644000175000017500000000001212621010150020521 0ustar mbanckmbancktimestamp mpi-testsuite-3.2+dfsg/f90/io/setviewcurf90.f900000644000175000017500000000762612621010150020424 0ustar mbanckmbanck! This file created from test/mpi/f77/io/setviewcurf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer (kind=MPI_OFFSET_KIND) offset integer errs, ierr, size, rank integer fh, comm, status(MPI_STATUS_SIZE) integer buf(1024) errs = 0 call MTest_Init( ierr ) ! This test reads a header then sets the view to every "size" int, ! using set view and current displacement. The file is first written ! using a combination of collective and ordered writes comm = MPI_COMM_WORLD call MPI_File_open( comm, "test.ord", MPI_MODE_WRONLY + & & MPI_MODE_CREATE, MPI_INFO_NULL, fh, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Open(1)", ierr ) endif call MPI_Comm_size( comm, size, ierr ) call MPI_Comm_rank( comm, rank, ierr ) if (size .gt. 1024) then if (rank .eq. 0) then print *, & &"This program must be run with no more than 1024 processes" call MPI_Abort( MPI_COMM_WORLD, 1, ierr ) endif endif buf(1) = size call MPI_File_write_all( fh, buf, 1, MPI_INTEGER, status, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Write_all", ierr ) endif call MPI_File_get_position( fh, offset, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Get_position", ierr ) endif call MPI_File_seek_shared( fh, offset, MPI_SEEK_SET, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Seek_shared", ierr ) endif buf(1) = rank call MPI_File_write_ordered( fh, buf, 1, MPI_INTEGER, status,ierr) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Write_ordered", ierr ) endif call MPI_File_close( fh, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Close(1)", ierr ) endif ! Reopen the file as sequential call MPI_File_open( comm, "test.ord", MPI_MODE_RDONLY + & & MPI_MODE_SEQUENTIAL + MPI_MODE_DELETE_ON_CLOSE, & & MPI_INFO_NULL, fh, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Open(Read)", ierr ) endif if (rank .eq. 0) then call MPI_File_read_shared( fh, buf, 1, MPI_INTEGER, status, & & ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Read_all", ierr ) endif if (buf(1) .ne. size) then errs = errs + 1 print *, "Unexpected value for the header = ", buf(1), & & ", should be ", size endif endif call MPI_Barrier( comm, ierr ) ! All processes must provide the same file view for MODE_SEQUENTIAL call MPI_File_set_view( fh, MPI_DISPLACEMENT_CURRENT, MPI_INTEGER & & ,MPI_INTEGER, "native", MPI_INFO_NULL, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Set_view", ierr ) endif buf(1) = -1 call MPI_File_read_ordered( fh, buf, 1, MPI_INTEGER, status, ierr & & ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Read_all", ierr ) endif if (buf(1) .ne. rank) then errs = errs + 1 print *, rank, ": buf(1) = ", buf(1) endif call MPI_File_close( fh, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Close(2)", ierr ) endif call MTest_Finalize( errs ) call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/io/c2f90multio.c0000644000175000017500000000313412621010150017574 0ustar mbanckmbanck/* This file created from test/mpi/f77/io/c2fmultio.c with f77tof90 */ /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Check that MPI_File_c2f, applied to the same object several times, yields the same handle. We do this because when MPI handles in C are a different length than those in Fortran, care needs to be exercised to ensure that the mapping from one to another is unique. (Test added to test a potential problem in ROMIO for handling MPI_File on 64-bit systems) */ #include "mpi.h" #include int main(int argc, char *argv[]) { MPI_Fint handleA, handleB; int rc; int errs = 0; int rank; MPI_File cFile; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); /* File */ rc = MPI_File_open(MPI_COMM_WORLD, (char *) "temp", MPI_MODE_RDWR | MPI_MODE_DELETE_ON_CLOSE | MPI_MODE_CREATE, MPI_INFO_NULL, &cFile); if (rc) { errs++; printf("Unable to open file \"temp\"\n"); } else { handleA = MPI_File_c2f(cFile); handleB = MPI_File_c2f(cFile); if (handleA != handleB) { errs++; printf("MPI_File_c2f does not give the same handle twice on the same MPI_File\n"); } } MPI_File_close(&cFile); if (rank == 0) { if (errs) { fprintf(stderr, "Found %d errors\n", errs); } else { printf(" No Errors\n"); } } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/f90/f90types/0000755000175000017500000000000012621010234016431 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f90/f90types/testlist0000644000175000017500000000005412620254305020236 0ustar mbanckmbanckcreatef90types 1 createf90types 1 arg=10000 mpi-testsuite-3.2+dfsg/f90/f90types/Makefile.in0000644000175000017500000004712012621010234020502 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = createf90types$(EXEEXT) subdir = f90/f90types ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am_createf90types_OBJECTS = createf90types.$(OBJEXT) createf90types_OBJECTS = $(am_createf90types_OBJECTS) createf90types_LDADD = $(LDADD) createf90types_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(createf90types_SOURCES) DIST_SOURCES = $(createf90types_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.mtest \ $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml # these are tests of f90-related functionality, but it's testing the C API, so # we use the C makefile stub EXTRA_DIST = testlist createf90types_SOURCES = createf90types.c all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f90/f90types/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f90/f90types/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) createf90types$(EXEEXT): $(createf90types_OBJECTS) $(createf90types_DEPENDENCIES) $(EXTRA_createf90types_DEPENDENCIES) @rm -f createf90types$(EXEEXT) $(AM_V_CCLD)$(LINK) $(createf90types_OBJECTS) $(createf90types_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/createf90types.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f90/f90types/Makefile.am0000644000175000017500000000060412620254305020475 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # these are tests of f90-related functionality, but it's testing the C API, so # we use the C makefile stub include $(top_srcdir)/Makefile.mtest EXTRA_DIST = testlist noinst_PROGRAMS = createf90types createf90types_SOURCES = createf90types.c mpi-testsuite-3.2+dfsg/f90/f90types/createf90types.c0000644000175000017500000001314712620254305021462 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include #include #include "mpitest.h" static int cases[6][2] = { {3, 10}, {3, MPI_UNDEFINED}, {MPI_UNDEFINED, 10}, {7, 30}, {7, MPI_UNDEFINED}, {MPI_UNDEFINED, 30} }; /* static char MTEST_Descrip[] = "Test the routines to access the Fortran 90 datatypes from C"; */ #define check_err(fn_name_) \ do { \ if (err) { \ char errstr[MPI_MAX_ERROR_STRING] = {'\0'}; \ int resultlen = 0; \ errs++; \ MPI_Error_string(err, errstr, &resultlen); \ printf("err in " #fn_name_ ": %s\n", errstr); \ } \ } while (0) /* Check the return from the routine */ static int checkType(const char str[], int p, int r, int f90kind, int err, MPI_Datatype dtype) { int errs = 0; if (dtype == MPI_DATATYPE_NULL) { printf("Unable to find a real type for (p=%d,r=%d) in %s\n", p, r, str); errs++; } if (err) { errs++; MTestPrintError(err); } if (!errs) { int nints, nadds, ndtypes, combiner; /* Check that we got the correct type */ MPI_Type_get_envelope(dtype, &nints, &nadds, &ndtypes, &combiner); if (combiner != f90kind) { errs++; printf("Wrong combiner type (got %d, should be %d) for %s\n", combiner, f90kind, str); } else { int parms[2]; MPI_Datatype outtype; parms[0] = 0; parms[1] = 0; if (ndtypes != 0) { errs++; printf ("Section 8.6 states that the array_of_datatypes entry is empty for the create_f90 types\n"); } MPI_Type_get_contents(dtype, 2, 0, 1, parms, 0, &outtype); switch (combiner) { case MPI_COMBINER_F90_REAL: case MPI_COMBINER_F90_COMPLEX: if (nints != 2) { errs++; printf("Returned %d integer values, 2 expected for %s\n", nints, str); } if (parms[0] != p || parms[1] != r) { errs++; printf("Returned (p=%d,r=%d); expected (p=%d,r=%d) for %s\n", parms[0], parms[1], p, r, str); } break; case MPI_COMBINER_F90_INTEGER: if (nints != 1) { errs++; printf("Returned %d integer values, 1 expected for %s\n", nints, str); } if (parms[0] != p) { errs++; printf("Returned (p=%d); expected (p=%d) for %s\n", parms[0], p, str); } break; default: errs++; printf("Unrecognized combiner for %s\n", str); break; } } } if (!errs) { char buf0[64]; /* big enough to hold any single type */ char buf1[64]; /* big enough to hold any single type */ MPI_Request req[2]; int dt_size = 0; /* check that we can actually use the type for communication, * regression for tt#1028 */ err = MPI_Type_size(dtype, &dt_size); check_err(MPI_Type_size); assert(dt_size <= sizeof(buf0)); memset(buf0, 0, sizeof(buf0)); memset(buf1, 0, sizeof(buf1)); if (!errs) { err = MPI_Isend(&buf0, 1, dtype, 0, 42, MPI_COMM_SELF, &req[0]); check_err(MPI_Isend); } if (!errs) { err = MPI_Irecv(&buf1, 1, dtype, 0, 42, MPI_COMM_SELF, &req[1]); check_err(MPI_Irecv); } if (!errs) { err = MPI_Waitall(2, req, MPI_STATUSES_IGNORE); check_err(MPI_Waitall); } } return errs; } int main(int argc, char *argv[]) { int p, r; int errs = 0; int err; int i, j, nLoop = 1; MPI_Datatype newtype; MTest_Init(0, 0); if (argc > 1) { nLoop = atoi(argv[1]); } /* Set the handler to errors return, since according to the * standard, it is invalid to provide p and/or r that are unsupported */ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); for (i = 0; i < nLoop; i++) { /* These should be a valid type similar to MPI_REAL and MPI_REAL8 */ for (j = 0; j < 6; j++) { p = cases[j][0]; r = cases[j][1]; err = MPI_Type_create_f90_real(p, r, &newtype); errs += checkType("REAL", p, r, MPI_COMBINER_F90_REAL, err, newtype); } /* These should be a valid type similar to MPI_COMPLEX and MPI_COMPLEX8 */ for (j = 0; j < 6; j++) { p = cases[j][0]; r = cases[j][1]; err = MPI_Type_create_f90_complex(p, r, &newtype); errs += checkType("COMPLEX", p, r, MPI_COMBINER_F90_COMPLEX, err, newtype); } /* This should be a valid type similar to MPI_INTEGER */ p = 3; r = 10; err = MPI_Type_create_f90_integer(p, &newtype); errs += checkType("INTEGER", p, r, MPI_COMBINER_F90_INTEGER, err, newtype); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/f90/rma/0000755000175000017500000000000012621010235015526 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f90/rma/winnamef90.f900000644000175000017500000000444612621010150020027 0ustar mbanckmbanck! This file created from test/mpi/f77/rma/winnamef.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer errs, ierr integer win, rlen, ln character*(MPI_MAX_OBJECT_NAME) cname integer buf(10) integer intsize ! Include addsize defines asize as an address-sized integer integer (kind=MPI_ADDRESS_KIND) asize logical found ! errs = 0 call mtest_init( ierr ) ! ! Create a window and get, set the names on it ! call mpi_type_size( MPI_INTEGER, intsize, ierr ) asize = 10 call mpi_win_create( buf, asize, intsize, & & MPI_INFO_NULL, MPI_COMM_WORLD, win, ierr ) ! ! Check that there is no name yet cname = 'XXXXXX' rlen = -1 call mpi_win_get_name( win, cname, rlen, ierr ) if (rlen .ne. 0) then errs = errs + 1 print *, ' Did not get empty name from new window' else if (cname(1:6) .ne. 'XXXXXX') then found = .false. do ln=MPI_MAX_OBJECT_NAME,1,-1 if (cname(ln:ln) .ne. ' ') then found = .true. endif enddo if (found) then errs = errs + 1 print *, ' Found a non-empty name' endif endif ! ! Now, set a name and check it call mpi_win_set_name( win, 'MyName', ierr ) cname = 'XXXXXX' rlen = -1 call mpi_win_get_name( win, cname, rlen, ierr ) if (rlen .ne. 6) then errs = errs + 1 print *, ' Expected 6, got ', rlen, ' for rlen' if (rlen .gt. 0 .and. rlen .lt. MPI_MAX_OBJECT_NAME) then print *, ' Cname = ', cname(1:rlen) endif else if (cname(1:6) .ne. 'MyName') then errs = errs + 1 print *, ' Expected MyName, got ', cname(1:6) else found = .false. do ln=MPI_MAX_OBJECT_NAME,7,-1 if (cname(ln:ln) .ne. ' ') then found = .true. endif enddo if (found) then errs = errs + 1 print *, ' window name is not blank padded' endif endif ! call mpi_win_free( win, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/rma/baseattrwinf90.f900000644000175000017500000000504012620254305020716 0ustar mbanckmbanck! This file created from test/mpi/f77/rma/baseattrwinf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val logical flag integer ierr, errs integer base(1024) integer disp integer win integer commsize ! Include addsize defines asize as an address-sized integer integer (kind=MPI_ADDRESS_KIND) asize errs = 0 call mtest_init( ierr ) call mpi_comm_size( MPI_COMM_WORLD, commsize, ierr ) ! Create a window; then extract the values asize = 1024 disp = 4 call MPI_Win_create( base, asize, disp, MPI_INFO_NULL, & & MPI_COMM_WORLD, win, ierr ) ! ! In order to check the base, we need an address-of function. ! We use MPI_Get_address, even though that isn't strictly correct call MPI_Win_get_attr( win, MPI_WIN_BASE, valout, flag, ierr ) if (.not. flag) then errs = errs + 1 print *, "Could not get WIN_BASE" ! ! There is no easy way to get the actual value of base to compare ! against. MPI_Address gives a value relative to MPI_BOTTOM, which ! is different from 0 in Fortran (unless you can define MPI_BOTTOM ! as something like %pointer(0)). ! else ! !C For this Fortran 77 version, we use the older MPI_Address function ! call MPI_Address( base, baseadd, ierr ) ! if (valout .ne. baseadd) then ! errs = errs + 1 ! print *, "Got incorrect value for WIN_BASE (", valout, ! & ", should be ", baseadd, ")" ! endif endif call MPI_Win_get_attr( win, MPI_WIN_SIZE, valout, flag, ierr ) if (.not. flag) then errs = errs + 1 print *, "Could not get WIN_SIZE" else if (valout .ne. asize) then errs = errs + 1 print *, "Got incorrect value for WIN_SIZE (", valout, & & ", should be ", asize, ")" endif endif call MPI_Win_get_attr( win, MPI_WIN_DISP_UNIT, valout, flag, ierr) if (.not. flag) then errs = errs + 1 print *, "Could not get WIN_DISP_UNIT" else if (valout .ne. disp) then errs = errs + 1 print *, "Got wrong value for WIN_DISP_UNIT (", valout, & & ", should be ", disp, ")" endif endif call MPI_Win_free( win, ierr ) call mtest_finalize( errs ) call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/rma/winattrf90.f900000644000175000017500000001354712620254305020076 0ustar mbanckmbanck! This file created from test/mpi/f77/rma/winattrf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer errs, ierr integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val integer comm, win, buf(10) integer curcount, keyval logical flag external mycopyfn, mydelfn integer callcount, delcount common /myattr/ callcount, delcount ! ! The only difference between the MPI-2 and MPI-1 attribute caching ! routines in Fortran is that the take an address-sized integer ! instead of a simple integer. These still are not pointers, ! so the values are still just integers. ! errs = 0 callcount = 0 delcount = 0 call mtest_init( ierr ) call mpi_comm_dup( MPI_COMM_WORLD, comm, ierr ) ! Create a new window; use val for an address-sized int val = 10 call mpi_win_create( buf, val, 1, & & MPI_INFO_NULL, comm, win, ierr ) ! extrastate = 1001 call mpi_win_create_keyval( mycopyfn, mydelfn, keyval, & & extrastate, ierr ) flag = .true. call mpi_win_get_attr( win, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' get attr returned true when no attr set' endif valin = 2003 call mpi_win_set_attr( win, keyval, valin, ierr ) flag = .false. valout = -1 call mpi_win_get_attr( win, keyval, valout, flag, ierr ) if (valout .ne. 2003) then errs = errs + 1 print *, 'Unexpected value (should be 2003)', valout, & & ' from attr' endif valin = 2001 call mpi_win_set_attr( win, keyval, valin, ierr ) flag = .false. valout = -1 call mpi_win_get_attr( win, keyval, valout, flag, ierr ) if (valout .ne. 2001) then errs = errs + 1 print *, 'Unexpected value (should be 2001)', valout, & & ' from attr' endif ! ! Test the attr delete function delcount = 0 call mpi_win_delete_attr( win, keyval, ierr ) if (delcount .ne. 1) then errs = errs + 1 print *, ' Delete_attr did not call delete function' endif flag = .true. call mpi_win_get_attr( win, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' Delete_attr did not delete attribute' endif ! Test the delete function on window free valin = 2001 call mpi_win_set_attr( win, keyval, valin, ierr ) curcount = delcount call mpi_win_free( win, ierr ) if (delcount .ne. curcount + 1) then errs = errs + 1 print *, ' did not get expected value of delcount ', & & delcount, curcount + 1 endif ierr = -1 call mpi_win_free_keyval( keyval, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call mtestprinterror( ierr ) endif ! ! The MPI standard defines null copy and duplicate functions. ! However, are only used when an object is duplicated. Since ! MPI_Win objects cannot be duplicated, so under normal circumstances, ! these will not be called. Since they are defined, they should behave ! as defined. To test them, we simply call them here flag = .false. valin = 7001 valout = -1 ierr = -1 call MPI_WIN_DUP_FN( win, keyval, extrastate, valin, valout, & & flag, ierr ) if (.not. flag) then errs = errs + 1 print *, " Flag was false after MPI_WIN_DUP_FN" else if (valout .ne. 7001) then errs = errs + 1 if (valout .eq. -1 ) then print *, " output attr value was not copied in MPI_WIN_DUP_FN" endif print *, " value was ", valout, " but expected 7001" else if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 print *, " MPI_WIN_DUP_FN did not return MPI_SUCCESS" endif flag = .true. valin = 7001 valout = -1 ierr = -1 call MPI_WIN_NULL_COPY_FN( win, keyval, extrastate, valin, valout & & ,flag, ierr ) if (flag) then errs = errs + 1 print *, " Flag was true after MPI_WIN_NULL_COPY_FN" else if (valout .ne. -1) then errs = errs + 1 print *, & & " output attr value was copied in MPI_WIN_NULL_COPY_FN" else if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 print *, " MPI_WIN_NULL_COPY_FN did not return MPI_SUCCESS" endif ! call mpi_comm_free( comm, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end ! ! Note that the copyfn is unused for MPI windows, since there is ! (and because of alias rules, can be) no MPI_Win_dup function subroutine mycopyfn( oldwin, keyval, extrastate, valin, valout, & & flag, ierr ) use mpi integer oldwin, keyval, ierr integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val logical flag integer callcount, delcount common /myattr/ callcount, delcount ! increment the attribute by 2 valout = valin + 2 callcount = callcount + 1 ! ! Since we should *never* call this, indicate an error print *, ' Unexpected use of mycopyfn' flag = .false. ierr = MPI_ERR_OTHER end ! subroutine mydelfn( win, keyval, val, extrastate, ierr ) use mpi integer win, keyval, ierr integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val integer callcount, delcount common /myattr/ callcount, delcount delcount = delcount + 1 if (extrastate .eq. 1001) then ierr = MPI_SUCCESS else print *, ' Unexpected value of extrastate = ', extrastate ierr = MPI_ERR_OTHER endif end mpi-testsuite-3.2+dfsg/f90/rma/c2f2cwinf90.f900000644000175000017500000000257012621010150020002 0ustar mbanckmbanck! This file created from test/mpi/f77/rma/c2f2cwinf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! Test just MPI-RMA ! program main use mpi integer errs, toterrs, ierr integer wrank, wsize integer wgroup, info, req, win integer result integer c2fwin ! The integer asize must be of ADDRESS_KIND size integer (kind=MPI_ADDRESS_KIND) asize errs = 0 call mpi_init( ierr ) ! ! Test passing a Fortran MPI object to C call mpi_comm_rank( MPI_COMM_WORLD, wrank, ierr ) asize = 0 call mpi_win_create( 0, asize, 1, MPI_INFO_NULL, & & MPI_COMM_WORLD, win, ierr ) errs = errs + c2fwin( win ) call mpi_win_free( win, ierr ) ! ! Test using a C routine to provide the Fortran handle call f2cwin( win ) ! no info, in comm world, created with no memory (base address 0, ! displacement unit 1 call mpi_win_free( win, ierr ) ! ! Summarize the errors ! call mpi_allreduce( errs, toterrs, 1, MPI_INTEGER, MPI_SUM, & & MPI_COMM_WORLD, ierr ) if (wrank .eq. 0) then if (toterrs .eq. 0) then print *, ' No Errors' else print *, ' Found ', toterrs, ' errors' endif endif call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/rma/c2f902cwin.c0000644000175000017500000000504012621010150017453 0ustar mbanckmbanck/* This file created from test/mpi/f77/rma/c2f2cwin.c with f77tof90 */ /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * This file contains the C routines used in testing the c2f and f2c * handle conversion functions for MPI_Win * * The tests follow this pattern: * * Fortran main program * calls c routine with each handle type, with a prepared * and valid handle (often requires constructing an object) * * C routine uses xxx_f2c routine to get C handle, checks some * properties (i.e., size and rank of communicator, contents of datatype) * * Then the Fortran main program calls a C routine that provides * a handle, and the Fortran program performs similar checks. * * We also assume that a C int is a Fortran integer. If this is not the * case, these tests must be modified. */ /* style: allow:fprintf:1 sig:0 */ #include #include "mpi.h" #include "../../include/mpitestconf.h" #include /* Name mapping. All routines are created with names that are lower case with a single trailing underscore. This matches many compilers. We use #define to change the name for Fortran compilers that do not use the lowercase/underscore pattern */ #ifdef F77_NAME_UPPER #define c2fwin_ C2FWIN #define f2cwin_ F2CWIN #elif defined(F77_NAME_LOWER) || defined(F77_NAME_MIXED) /* Mixed is ok because we use lowercase in all uses */ #define c2fwin_ c2fwin #define f2cwin_ f2cwin #elif defined(F77_NAME_LOWER_2USCORE) || defined(F77_NAME_LOWER_USCORE) || \ defined(F77_NAME_MIXED_USCORE) /* Else leave name alone (routines have no underscore, so both of these map to a lowercase, single underscore) */ #else #error 'Unrecognized Fortran name mapping' #endif /* Prototypes to keep compilers happy */ int c2fwin_(int *); void f2cwin_(int *); int c2fwin_(int *win) { MPI_Win cWin = MPI_Win_f2c(*win); MPI_Group group, wgroup; int result; MPI_Win_get_group(cWin, &group); MPI_Comm_group(MPI_COMM_WORLD, &wgroup); MPI_Group_compare(group, wgroup, &result); if (result != MPI_IDENT) { fprintf(stderr, "Win: did not get expected group\n"); return 1; } MPI_Group_free(&group); MPI_Group_free(&wgroup); return 0; } /* * The following routines provide handles to the calling Fortran program */ void f2cwin_(int *win) { MPI_Win cWin; MPI_Win_create(0, 0, 1, MPI_INFO_NULL, MPI_COMM_WORLD, &cWin); *win = MPI_Win_c2f(cWin); } mpi-testsuite-3.2+dfsg/f90/rma/wingroupf90.f900000644000175000017500000000236712621010150020243 0ustar mbanckmbanck! This file created from test/mpi/f77/rma/wingroupf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer ierr, errs integer buf(10) integer comm, group1, group2, result, win, intsize logical mtestGetIntraComm integer (kind=MPI_ADDRESS_KIND) asize errs = 0 call mtest_init( ierr ) call mpi_type_size( MPI_INTEGER, intsize, ierr ) do while( mtestGetIntraComm( comm, 2, .false. ) ) asize = 10 call mpi_win_create( buf, asize, intsize, & & MPI_INFO_NULL, comm, win, ierr ) call mpi_comm_group( comm, group1, ierr ) call mpi_win_get_group( win, group2, ierr ) call mpi_group_compare( group1, group2, result, ierr ) if (result .ne. MPI_IDENT) then errs = errs + 1 print *, ' Did not get the ident groups' endif call mpi_group_free( group1, ierr ) call mpi_group_free( group2, ierr ) call mpi_win_free( win, ierr ) call mtestFreeComm( comm ) enddo ! call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/rma/Makefile.in0000644000175000017500000006451312621010235017604 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This Makefile.am generated automatically by f77tof90 # from test/mpi/f77/rma/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = winscale1f90$(EXEEXT) winscale2f90$(EXEEXT) \ winfencef90$(EXEEXT) wingetf90$(EXEEXT) winerrf90$(EXEEXT) \ winnamef90$(EXEEXT) wingroupf90$(EXEEXT) winaccf90$(EXEEXT) \ winaccf90$(EXEEXT) c2f2cwinf90$(EXEEXT) \ baseattrwinf90$(EXEEXT) winattrf90$(EXEEXT) \ winattr2f90$(EXEEXT) $(am__EXEEXT_1) @BUILD_MPIX_TESTS_TRUE@am__append_1 = aintf90 @MAINTAINER_MODE_TRUE@am__append_2 = Makefile.am-stamp subdir = f90/rma ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = testlist CONFIG_CLEAN_VPATH_FILES = @BUILD_MPIX_TESTS_TRUE@am__EXEEXT_1 = aintf90$(EXEEXT) PROGRAMS = $(noinst_PROGRAMS) aintf90_SOURCES = aintf90.f90 aintf90_OBJECTS = aintf90.$(OBJEXT) aintf90_LDADD = $(LDADD) aintf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o baseattrwinf90_SOURCES = baseattrwinf90.f90 baseattrwinf90_OBJECTS = baseattrwinf90.$(OBJEXT) baseattrwinf90_LDADD = $(LDADD) baseattrwinf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o am_c2f2cwinf90_OBJECTS = c2f2cwinf90.$(OBJEXT) c2f902cwin.$(OBJEXT) c2f2cwinf90_OBJECTS = $(am_c2f2cwinf90_OBJECTS) c2f2cwinf90_LDADD = $(LDADD) c2f2cwinf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o winaccf90_SOURCES = winaccf90.f90 winaccf90_OBJECTS = winaccf90.$(OBJEXT) winaccf90_LDADD = $(LDADD) winaccf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o winattr2f90_SOURCES = winattr2f90.f90 winattr2f90_OBJECTS = winattr2f90.$(OBJEXT) winattr2f90_LDADD = $(LDADD) winattr2f90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o winattrf90_SOURCES = winattrf90.f90 winattrf90_OBJECTS = winattrf90.$(OBJEXT) winattrf90_LDADD = $(LDADD) winattrf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o winerrf90_SOURCES = winerrf90.f90 winerrf90_OBJECTS = winerrf90.$(OBJEXT) winerrf90_LDADD = $(LDADD) winerrf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o winfencef90_SOURCES = winfencef90.f90 winfencef90_OBJECTS = winfencef90.$(OBJEXT) winfencef90_LDADD = $(LDADD) winfencef90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o wingetf90_SOURCES = wingetf90.f90 wingetf90_OBJECTS = wingetf90.$(OBJEXT) wingetf90_LDADD = $(LDADD) wingetf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o wingroupf90_SOURCES = wingroupf90.f90 wingroupf90_OBJECTS = wingroupf90.$(OBJEXT) wingroupf90_LDADD = $(LDADD) wingroupf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o winnamef90_SOURCES = winnamef90.f90 winnamef90_OBJECTS = winnamef90.$(OBJEXT) winnamef90_LDADD = $(LDADD) winnamef90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o winscale1f90_SOURCES = winscale1f90.f90 winscale1f90_OBJECTS = winscale1f90.$(OBJEXT) winscale1f90_LDADD = $(LDADD) winscale1f90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o winscale2f90_SOURCES = winscale2f90.f90 winscale2f90_OBJECTS = winscale2f90.$(OBJEXT) winscale2f90_LDADD = $(LDADD) winscale2f90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = SOURCES = aintf90.f90 baseattrwinf90.f90 $(c2f2cwinf90_SOURCES) \ winaccf90.f90 winattr2f90.f90 winattrf90.f90 winerrf90.f90 \ winfencef90.f90 wingetf90.f90 wingroupf90.f90 winnamef90.f90 \ winscale1f90.f90 winscale2f90.f90 DIST_SOURCES = aintf90.f90 baseattrwinf90.f90 $(c2f2cwinf90_SOURCES) \ winaccf90.f90 winattr2f90.f90 winattrf90.f90 winerrf90.f90 \ winfencef90.f90 wingetf90.f90 wingroupf90.f90 winnamef90.f90 \ winscale1f90.f90 winscale2f90.f90 am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/testlist.in \ $(top_srcdir)/Makefile_f90.mtest $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F90 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f90/util/mtestf90.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. # see include note in Makefile_f90.mtest AM_FFLAGS = -I. -I../attr CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist.in $(am__append_2) # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 c2f2cwinf90_SOURCES = c2f2cwinf90.f90 c2f902cwin.c # ensure that dependent tests will be rebuilt when addsize.h is updated # bindir may be used in MPIEXEC, so make sure it is defined BINDIR = ${bindir} @MAINTAINER_MODE_TRUE@MAINTAINERCLEANFILES = Makefile.am-stamp all: all-am .SUFFIXES: .SUFFIXES: .c .f90 .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f90.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f90/rma/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f90/rma/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f90.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): testlist: $(top_builddir)/config.status $(srcdir)/testlist.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) aintf90$(EXEEXT): $(aintf90_OBJECTS) $(aintf90_DEPENDENCIES) $(EXTRA_aintf90_DEPENDENCIES) @rm -f aintf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(aintf90_OBJECTS) $(aintf90_LDADD) $(LIBS) baseattrwinf90$(EXEEXT): $(baseattrwinf90_OBJECTS) $(baseattrwinf90_DEPENDENCIES) $(EXTRA_baseattrwinf90_DEPENDENCIES) @rm -f baseattrwinf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(baseattrwinf90_OBJECTS) $(baseattrwinf90_LDADD) $(LIBS) c2f2cwinf90$(EXEEXT): $(c2f2cwinf90_OBJECTS) $(c2f2cwinf90_DEPENDENCIES) $(EXTRA_c2f2cwinf90_DEPENDENCIES) @rm -f c2f2cwinf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(c2f2cwinf90_OBJECTS) $(c2f2cwinf90_LDADD) $(LIBS) winaccf90$(EXEEXT): $(winaccf90_OBJECTS) $(winaccf90_DEPENDENCIES) $(EXTRA_winaccf90_DEPENDENCIES) @rm -f winaccf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(winaccf90_OBJECTS) $(winaccf90_LDADD) $(LIBS) winattr2f90$(EXEEXT): $(winattr2f90_OBJECTS) $(winattr2f90_DEPENDENCIES) $(EXTRA_winattr2f90_DEPENDENCIES) @rm -f winattr2f90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(winattr2f90_OBJECTS) $(winattr2f90_LDADD) $(LIBS) winattrf90$(EXEEXT): $(winattrf90_OBJECTS) $(winattrf90_DEPENDENCIES) $(EXTRA_winattrf90_DEPENDENCIES) @rm -f winattrf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(winattrf90_OBJECTS) $(winattrf90_LDADD) $(LIBS) winerrf90$(EXEEXT): $(winerrf90_OBJECTS) $(winerrf90_DEPENDENCIES) $(EXTRA_winerrf90_DEPENDENCIES) @rm -f winerrf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(winerrf90_OBJECTS) $(winerrf90_LDADD) $(LIBS) winfencef90$(EXEEXT): $(winfencef90_OBJECTS) $(winfencef90_DEPENDENCIES) $(EXTRA_winfencef90_DEPENDENCIES) @rm -f winfencef90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(winfencef90_OBJECTS) $(winfencef90_LDADD) $(LIBS) wingetf90$(EXEEXT): $(wingetf90_OBJECTS) $(wingetf90_DEPENDENCIES) $(EXTRA_wingetf90_DEPENDENCIES) @rm -f wingetf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(wingetf90_OBJECTS) $(wingetf90_LDADD) $(LIBS) wingroupf90$(EXEEXT): $(wingroupf90_OBJECTS) $(wingroupf90_DEPENDENCIES) $(EXTRA_wingroupf90_DEPENDENCIES) @rm -f wingroupf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(wingroupf90_OBJECTS) $(wingroupf90_LDADD) $(LIBS) winnamef90$(EXEEXT): $(winnamef90_OBJECTS) $(winnamef90_DEPENDENCIES) $(EXTRA_winnamef90_DEPENDENCIES) @rm -f winnamef90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(winnamef90_OBJECTS) $(winnamef90_LDADD) $(LIBS) winscale1f90$(EXEEXT): $(winscale1f90_OBJECTS) $(winscale1f90_DEPENDENCIES) $(EXTRA_winscale1f90_DEPENDENCIES) @rm -f winscale1f90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(winscale1f90_OBJECTS) $(winscale1f90_LDADD) $(LIBS) winscale2f90$(EXEEXT): $(winscale2f90_OBJECTS) $(winscale2f90_DEPENDENCIES) $(EXTRA_winscale2f90_DEPENDENCIES) @rm -f winscale2f90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(winscale2f90_OBJECTS) $(winscale2f90_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c2f902cwin.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f90/util/mtestf90.o: $(top_srcdir)/f90/util/mtestf90.f90 (cd $(top_builddir)/f90/util && $(MAKE) mtestf90.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # f77tof90 only replaces output files if the contents differ, so we must use a # separate timestamp file in order avoid constantly trying to remake the f90 # copy of the Makefile when the f77 copy is updated in a way that does not # change its contents @MAINTAINER_MODE_TRUE@$(srcdir)/Makefile.am: $(srcdir)/Makefile.am-stamp @MAINTAINER_MODE_TRUE@$(srcdir)/Makefile.am-stamp: $(master_top_srcdir)/test/mpi/f77/rma/Makefile.am $(master_top_srcdir)/maint/f77tof90 @MAINTAINER_MODE_TRUE@ ( cd $(master_top_srcdir) && ./maint/f77tof90 test/mpi/f77/rma test/mpi/f90/rma Makefile.am Makefile.ap ) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f90/rma/aintf90.f900000644000175000017500000000465012621010150017321 0ustar mbanckmbanck! This file created from test/mpi/f77/rma/aintf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! This program tests MPI_Aint_add/diff in MPI-3.1. ! The two functions are often used in RMA code. ! See https://svn.mpi-forum.org/trac/mpi-forum-web/ticket/349 program main use mpi integer :: rank, nproc integer :: ierr, errs integer :: array(0:1023) integer :: val, target_rank; integer(kind=MPI_ADDRESS_KIND) :: bases(0:1), disp, offset integer(kind=MPI_ADDRESS_KIND) :: winsize integer :: win integer :: intsize errs = 0 call mtest_init(ierr); call MPI_Comm_rank(MPI_COMM_WORLD, rank, ierr) call MPI_Comm_size(MPI_COMM_WORLD, nproc, ierr) if (rank == 0 .and. nproc /= 2) then print *, 'Must run with 2 ranks' call MPI_Abort(MPI_COMM_WORLD, 1, ierr) endif ! Get the base address in the middle of the array if (rank == 0) then target_rank = 1 array(0) = 1234 call MPI_Get_address(array(512), bases(0), ierr) else if (rank == 1) then target_rank = 0 array(1023) = 1234 call MPI_Get_address(array(512), bases(1), ierr) endif ! Exchange bases call MPI_Type_size(MPI_INTEGER, intsize, ierr); call MPI_Allgather(MPI_IN_PLACE, 0, MPI_DATATYPE_NULL, bases, & & 1, MPI_AINT, MPI_COMM_WORLD, ierr) call MPI_Win_create_dynamic(MPI_INFO_NULL, & & MPI_COMM_WORLD, win, ierr) winsize = intsize*1024 call MPI_Win_attach(win, array, winsize, ierr) ! Do MPI_Aint addressing arithmetic if (rank == 0) then disp = intsize*511 offset = MPI_Aint_add(bases(1), disp) else if (rank == 1) then disp = intsize*512 offset = MPI_Aint_diff(bases(0), disp) endif ! Get value and verify it call MPI_Win_fence(MPI_MODE_NOPRECEDE, win, ierr) call MPI_Get(val, 1, MPI_INTEGER, target_rank, & & offset, 1, MPI_INTEGER, win, ierr) call MPI_Win_fence(MPI_MODE_NOSUCCEED, win, ierr) if (val /= 1234) then errs = errs + 1 print *, rank, ' -- Got', val, 'expected 1234' endif call MPI_Win_detach(win, array, ierr) call MPI_Win_free(win, ierr) call MTest_Finalize(errs) call MPI_Finalize(ierr); end mpi-testsuite-3.2+dfsg/f90/rma/winscale1f90.f900000644000175000017500000000670312621010150020255 0ustar mbanckmbanck! This file created from test/mpi/f77/rma/winscale1f.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer ierr, errs integer win, intsize integer left, right, rank, size integer nrows, ncols parameter (nrows=25,ncols=10) integer buf(1:nrows,0:ncols+1) integer comm, group, group2, ans integer nneighbors, nbrs(2), i, j logical mtestGetIntraComm ! Include addsize defines asize as an address-sized integer integer (kind=MPI_ADDRESS_KIND) asize errs = 0 call mtest_init( ierr ) call mpi_type_size( MPI_INTEGER, intsize, ierr ) do while( mtestGetIntraComm( comm, 2, .false. ) ) asize = nrows * (ncols + 2) * intsize call mpi_win_create( buf, asize, intsize * nrows, & & MPI_INFO_NULL, comm, win, ierr ) ! Create the group for the neighbors call mpi_comm_size( comm, size, ierr ) call mpi_comm_rank( comm, rank, ierr ) nneighbors = 0 left = rank - 1 if (left .lt. 0) then left = MPI_PROC_NULL else nneighbors = nneighbors + 1 nbrs(nneighbors) = left endif right = rank + 1 if (right .ge. size) then right = MPI_PROC_NULL else nneighbors = nneighbors + 1 nbrs(nneighbors) = right endif call mpi_comm_group( comm, group, ierr ) call mpi_group_incl( group, nneighbors, nbrs, group2, ierr ) call mpi_group_free( group, ierr ) ! ! Initialize the buffer do i=1,nrows buf(i,0) = -1 buf(i,ncols+1) = -1 enddo do j=1,ncols do i=1,nrows buf(i,j) = rank * (ncols * nrows) + i + (j-1) * nrows enddo enddo call mpi_win_post( group2, 0, win, ierr ) call mpi_win_start( group2, 0, win, ierr ) ! asize = ncols+1 call mpi_put( buf(1,1), nrows, MPI_INTEGER, left, asize, & & nrows, MPI_INTEGER, win, ierr ) asize = 0 call mpi_put( buf(1,ncols), nrows, MPI_INTEGER, right, asize, & & nrows, MPI_INTEGER, win, ierr ) ! call mpi_win_complete( win, ierr ) call mpi_win_wait( win, ierr ) ! ! Check the results if (left .ne. MPI_PROC_NULL) then do i=1, nrows ans = rank * (ncols * nrows) - nrows + i if (buf(i,0) .ne. ans) then errs = errs + 1 if (errs .le. 10) then print *, ' buf(',i,'0) = ', buf(i,0) endif endif enddo endif if (right .ne. MPI_PROC_NULL) then do i=1, nrows ans = (rank+1) * (ncols * nrows) + i if (buf(i,ncols+1) .ne. ans) then errs = errs + 1 if (errs .le. 10) then print *, ' buf(',i,',',ncols+1,') = ', & & buf(i,ncols+1) endif endif enddo endif call mpi_group_free( group2, ierr ) call mpi_win_free( win, ierr ) call mtestFreeComm( comm ) enddo call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/rma/winscale2f90.f900000644000175000017500000000712712621010150020257 0ustar mbanckmbanck! This file created from test/mpi/f77/rma/winscale2f.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer ierr, errs integer win, intsize integer left, right, rank, size integer nrows, ncols parameter (nrows=25,ncols=10) integer buf(1:nrows,0:ncols+1) integer comm, group, group2, ans integer nneighbors, nbrs(2), i, j logical mtestGetIntraComm logical flag ! Include addsize defines asize as an address-sized integer integer (kind=MPI_ADDRESS_KIND) asize errs = 0 call mtest_init( ierr ) call mpi_type_size( MPI_INTEGER, intsize, ierr ) do while( mtestGetIntraComm( comm, 2, .false. ) ) asize = nrows * (ncols + 2) * intsize call mpi_win_create( buf, asize, intsize * nrows, & & MPI_INFO_NULL, comm, win, ierr ) ! Create the group for the neighbors call mpi_comm_size( comm, size, ierr ) call mpi_comm_rank( comm, rank, ierr ) nneighbors = 0 left = rank - 1 if (left .lt. 0) then left = MPI_PROC_NULL else nneighbors = nneighbors + 1 nbrs(nneighbors) = left endif right = rank + 1 if (right .ge. size) then right = MPI_PROC_NULL else nneighbors = nneighbors + 1 nbrs(nneighbors) = right endif call mpi_comm_group( comm, group, ierr ) call mpi_group_incl( group, nneighbors, nbrs, group2, ierr ) call mpi_group_free( group, ierr ) ! ! Initialize the buffer do i=1,nrows buf(i,0) = -1 buf(i,ncols+1) = -1 enddo do j=1,ncols do i=1,nrows buf(i,j) = rank * (ncols * nrows) + i + (j-1) * nrows enddo enddo call mpi_win_post( group2, 0, win, ierr ) call mpi_win_start( group2, 0, win, ierr ) ! asize = ncols+1 call mpi_put( buf(1,1), nrows, MPI_INTEGER, left, asize, & & nrows, MPI_INTEGER, win, ierr ) asize = 0 call mpi_put( buf(1,ncols), nrows, MPI_INTEGER, right, asize, & & nrows, MPI_INTEGER, win, ierr ) ! call mpi_win_complete( win, ierr ) flag = .false. do while (.not. flag) call mpi_win_test( win, flag, ierr ) enddo ! ! Check the results if (left .ne. MPI_PROC_NULL) then do i=1, nrows ans = rank * (ncols * nrows) - nrows + i if (buf(i,0) .ne. ans) then errs = errs + 1 if (errs .le. 10) then print *, ' buf(',i,',0) = ', buf(i,0), & & 'expected ', ans endif endif enddo endif if (right .ne. MPI_PROC_NULL) then do i=1, nrows ans = (rank+1) * (ncols * nrows) + i if (buf(i,ncols+1) .ne. ans) then errs = errs + 1 if (errs .le. 10) then print *, ' buf(',i,',',ncols+1,') = ', & & buf(i,ncols+1), ' expected ', ans endif endif enddo endif call mpi_group_free( group2, ierr ) call mpi_win_free( win, ierr ) call mtestFreeComm( comm ) enddo call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/rma/Makefile.am0000644000175000017500000000363312621010150017563 0ustar mbanckmbanck# This Makefile.am generated automatically by f77tof90 # from test/mpi/f77/rma/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f90.mtest EXTRA_DIST = testlist.in # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 noinst_PROGRAMS = \ winscale1f90 \ winscale2f90 \ winfencef90 \ wingetf90 \ winerrf90 \ winnamef90 \ wingroupf90 \ winaccf90 \ winaccf90 \ c2f2cwinf90 \ baseattrwinf90 \ winattrf90 \ winattr2f90 if BUILD_MPIX_TESTS noinst_PROGRAMS += aintf90 endif ## this test was commented out in the simplemake version... ## allocmem c2f2cwinf90_SOURCES = c2f2cwinf90.f90 c2f902cwin.c # see include note in Makefile_f90.mtest AM_FFLAGS += -I../attr ## addsize.h will be distributed because it's listed in AC_CONFIG_FILES/AC_OUTPUT # ensure that dependent tests will be rebuilt when addsize.h is updated ## DJG: the following comment+code was present in the simplemake version... I'm ## not sure how accurate it is. # bindir may be used in MPIEXEC, so make sure it is defined BINDIR=${bindir} if MAINTAINER_MODE # f77tof90 only replaces output files if the contents differ, so we must use a # separate timestamp file in order avoid constantly trying to remake the f90 # copy of the Makefile when the f77 copy is updated in a way that does not # change its contents $(srcdir)/Makefile.am: $(srcdir)/Makefile.am-stamp $(srcdir)/Makefile.am-stamp: $(master_top_srcdir)/test/mpi/f77/rma/Makefile.am $(master_top_srcdir)/maint/f77tof90 ( cd $(master_top_srcdir) && ./maint/f77tof90 test/mpi/f77/rma test/mpi/f90/rma Makefile.am Makefile.ap ) MAINTAINERCLEANFILES = Makefile.am-stamp EXTRA_DIST += Makefile.am-stamp endif MAINTAINER_MODE mpi-testsuite-3.2+dfsg/f90/rma/testlist.in0000644000175000017500000000034012621010150017722 0ustar mbanckmbanck# This file generated by f77tof90 winscale1f90 4 winfencef90 4 wingetf90 5 winscale2f90 4 winerrf90 1 winnamef90 1 wingroupf90 4 winaccf90 4 c2f2cwinf90 1 baseattrwinf90 1 winattrf90 1 winattr2f90 1 aintf90 2 mpiversion=3.1 mpi-testsuite-3.2+dfsg/f90/rma/winaccf90.f900000644000175000017500000000604312621010150017630 0ustar mbanckmbanck! This file created from test/mpi/f77/rma/winaccf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer ierr, errs integer win, intsize integer left, right, rank, size integer nrows, ncols parameter (nrows=25,ncols=10) integer buf(1:nrows,0:ncols+1) integer comm, ans integer i, j logical mtestGetIntraComm ! Include addsize defines asize as an address-sized integer integer (kind=MPI_ADDRESS_KIND) asize errs = 0 call mtest_init( ierr ) call mpi_type_size( MPI_INTEGER, intsize, ierr ) do while( mtestGetIntraComm( comm, 2, .false. ) ) asize = nrows * (ncols + 2) * intsize call mpi_win_create( buf, asize, intsize * nrows, & & MPI_INFO_NULL, comm, win, ierr ) call mpi_comm_size( comm, size, ierr ) call mpi_comm_rank( comm, rank, ierr ) left = rank - 1 if (left .lt. 0) then left = MPI_PROC_NULL endif right = rank + 1 if (right .ge. size) then right = MPI_PROC_NULL endif ! ! Initialize the buffer do i=1,nrows buf(i,0) = -1 buf(i,ncols+1) = -1 enddo do j=1,ncols do i=1,nrows buf(i,j) = rank * (ncols * nrows) + i + (j-1) * nrows enddo enddo call mpi_win_fence( MPI_MODE_NOPRECEDE, win, ierr ) ! asize = ncols + 1 call mpi_accumulate( buf(1,1), nrows, MPI_INTEGER, & & left, asize, & & nrows, MPI_INTEGER, MPI_SUM, win, ierr ) asize = 0 call mpi_accumulate( buf(1,ncols), nrows, MPI_INTEGER, right, & & asize, nrows, MPI_INTEGER, MPI_SUM, win, ierr ) ! call mpi_win_fence( MPI_MODE_NOSTORE + MPI_MODE_NOPUT + & & MPI_MODE_NOSUCCEED, win, ierr ) ! ! Check the results if (left .ne. MPI_PROC_NULL) then do i=1, nrows ans = rank * (ncols * nrows) - nrows + i - 1 if (buf(i,0) .ne. ans) then errs = errs + 1 if (errs .le. 10) then print *, ' buf(',i,',0) = ', buf(i,0) endif endif enddo endif if (right .ne. MPI_PROC_NULL) then do i=1, nrows ans = (rank + 1) * (ncols * nrows) + i - 1 if (buf(i,ncols+1) .ne. ans) then errs = errs + 1 if (errs .le. 10) then print *, ' buf(',i,',',ncols+1,') = ', & & buf(i,ncols+1) endif endif enddo endif call mpi_win_free( win, ierr ) call mtestFreeComm( comm ) enddo call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/rma/winfencef90.f900000644000175000017500000000605512621010150020165 0ustar mbanckmbanck! This file created from test/mpi/f77/rma/winfencef.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer ierr, errs integer win, intsize integer left, right, rank, size integer nrows, ncols parameter (nrows=25,ncols=10) integer buf(1:nrows,0:ncols+1) integer comm, ans integer i, j logical mtestGetIntraComm ! Include addsize defines asize as an address-sized integer integer (kind=MPI_ADDRESS_KIND) asize errs = 0 call mtest_init( ierr ) call mpi_type_size( MPI_INTEGER, intsize, ierr ) do while( mtestGetIntraComm( comm, 2, .false. ) ) asize = nrows * (ncols + 2) * intsize call mpi_win_create( buf, asize, intsize * nrows, & & MPI_INFO_NULL, comm, win, ierr ) call mpi_comm_size( comm, size, ierr ) call mpi_comm_rank( comm, rank, ierr ) left = rank - 1 if (left .lt. 0) then left = MPI_PROC_NULL endif right = rank + 1 if (right .ge. size) then right = MPI_PROC_NULL endif ! ! Initialize the buffer do i=1,nrows buf(i,0) = -1 buf(i,ncols+1) = -1 enddo do j=1,ncols do i=1,nrows buf(i,j) = rank * (ncols * nrows) + i + (j-1) * nrows enddo enddo call mpi_win_fence( MPI_MODE_NOPRECEDE, win, ierr ) ! asize = ncols+1 call mpi_put( buf(1,1), nrows, MPI_INTEGER, left, asize, & & nrows, MPI_INTEGER, win, ierr ) asize = 0 call mpi_put( buf(1,ncols), nrows, MPI_INTEGER, right, asize, & & nrows, MPI_INTEGER, win, ierr ) ! call mpi_win_fence( MPI_MODE_NOSTORE + MPI_MODE_NOPUT + & & MPI_MODE_NOSUCCEED, win, ierr ) ! ! Check the results if (left .ne. MPI_PROC_NULL) then do i=1, nrows ans = rank * (ncols * nrows) - nrows + i if (buf(i,0) .ne. ans) then errs = errs + 1 if (errs .le. 10) then print *, rank, ' buf(',i,',0) = ', buf(i,0), & & ' expected', ans endif endif enddo endif if (right .ne. MPI_PROC_NULL) then do i=1, nrows ans = (rank + 1)* (ncols * nrows) + i if (buf(i,ncols+1) .ne. ans) then errs = errs + 1 if (errs .le. 10) then print *, rank, ' buf(',i,',',ncols+1,') = ', & & buf(i,ncols+1), ' expected ', ans endif endif enddo endif call mpi_win_free( win, ierr ) call mtestFreeComm( comm ) enddo call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/rma/Makefile.am-stamp0000644000175000017500000000001212621010150020671 0ustar mbanckmbancktimestamp mpi-testsuite-3.2+dfsg/f90/rma/wingetf90.f900000644000175000017500000000604712621010150017665 0ustar mbanckmbanck! This file created from test/mpi/f77/rma/wingetf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer ierr, errs integer win, intsize integer left, right, rank, size integer nrows, ncols parameter (nrows=25,ncols=10) integer buf(1:nrows,0:ncols+1) integer comm, ans integer i, j logical mtestGetIntraComm ! Include addsize defines asize as an address-sized integer integer (kind=MPI_ADDRESS_KIND) asize errs = 0 call mtest_init( ierr ) call mpi_type_size( MPI_INTEGER, intsize, ierr ) do while( mtestGetIntraComm( comm, 2, .false. ) ) asize = nrows * (ncols + 2) * intsize call mpi_win_create( buf, asize, intsize * nrows, & & MPI_INFO_NULL, comm, win, ierr ) call mpi_comm_size( comm, size, ierr ) call mpi_comm_rank( comm, rank, ierr ) left = rank - 1 if (left .lt. 0) then left = MPI_PROC_NULL endif right = rank + 1 if (right .ge. size) then right = MPI_PROC_NULL endif ! ! Initialize the buffer do i=1,nrows buf(i,0) = -1 buf(i,ncols+1) = -1 enddo do j=1,ncols do i=1,nrows buf(i,j) = rank * (ncols * nrows) + i + (j-1) * nrows enddo enddo call mpi_win_fence( MPI_MODE_NOPRECEDE, win, ierr ) ! asize = 1 call mpi_get( buf(1,ncols+1), nrows, MPI_INTEGER, right, & & asize, nrows, MPI_INTEGER, win, ierr ) asize = ncols call mpi_get( buf(1,0), nrows, MPI_INTEGER, left, & & asize, nrows, MPI_INTEGER, win, ierr ) ! call mpi_win_fence( MPI_MODE_NOSTORE + MPI_MODE_NOPUT + & & MPI_MODE_NOSUCCEED, win, ierr ) ! ! Check the results if (left .ne. MPI_PROC_NULL) then do i=1, nrows ans = rank * (ncols * nrows) - nrows + i if (buf(i,0) .ne. ans) then errs = errs + 1 if (errs .le. 10) then print *, rank, ' buf(',i,',0) = ', buf(i,0), & & ' expected', ans endif endif enddo endif if (right .ne. MPI_PROC_NULL) then do i=1, nrows ans = (rank + 1)* (ncols * nrows) + i if (buf(i,ncols+1) .ne. ans) then errs = errs + 1 if (errs .le. 10) then print *, rank, ' buf(',i,',',ncols+1,') = ', & & buf(i,ncols+1), ' expected ', ans endif endif enddo endif call mpi_win_free( win, ierr ) call mtestFreeComm( comm ) enddo call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/rma/winattr2f90.f900000644000175000017500000000542612620254305020155 0ustar mbanckmbanck! This file created from test/mpi/f77/rma/winattr2f.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! This is a modified version of winattrf.f that uses two of the ! default functions ! program main use mpi integer errs, ierr integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val integer comm, win, buf(10) integer keyval logical flag ! ! The only difference between the MPI-2 and MPI-1 attribute caching ! routines in Fortran is that the take an address-sized integer ! instead of a simple integer. These still are not pointers, ! so the values are still just integers. ! errs = 0 call mtest_init( ierr ) call mpi_comm_dup( MPI_COMM_WORLD, comm, ierr ) ! Create a new window; use val for an address-sized int val = 10 call mpi_win_create( buf, val, 1, & & MPI_INFO_NULL, comm, win, ierr ) ! extrastate = 1001 call mpi_win_create_keyval( MPI_WIN_DUP_FN, & & MPI_WIN_NULL_DELETE_FN, keyval, & & extrastate, ierr ) flag = .true. call mpi_win_get_attr( win, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' get attr returned true when no attr set' endif valin = 2003 call mpi_win_set_attr( win, keyval, valin, ierr ) flag = .false. valout = -1 call mpi_win_get_attr( win, keyval, valout, flag, ierr ) if (valout .ne. 2003) then errs = errs + 1 print *, 'Unexpected value (should be 2003)', valout, & & ' from attr' endif valin = 2001 call mpi_win_set_attr( win, keyval, valin, ierr ) flag = .false. valout = -1 call mpi_win_get_attr( win, keyval, valout, flag, ierr ) if (valout .ne. 2001) then errs = errs + 1 print *, 'Unexpected value (should be 2001)', valout, & & ' from attr' endif ! ! Test the attr delete function call mpi_win_delete_attr( win, keyval, ierr ) flag = .true. call mpi_win_get_attr( win, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' Delete_attr did not delete attribute' endif ! Test the delete function on window free valin = 2001 call mpi_win_set_attr( win, keyval, valin, ierr ) call mpi_win_free( win, ierr ) call mpi_comm_free( comm, ierr ) ierr = -1 call mpi_win_free_keyval( keyval, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call mtestprinterror( ierr ) endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f90/rma/winerrf90.f900000644000175000017500000001152412621010150017672 0ustar mbanckmbanck! This file created from test/mpi/f77/rma/winerrf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer errs, ierr, code(2), newerrclass, eclass character*(MPI_MAX_ERROR_STRING) errstring integer comm, rlen, intsize integer buf(10) integer win ! external myerrhanfunc INTERFACE SUBROUTINE myerrhanfunc(vv0,vv1) INTEGER vv0,vv1 END SUBROUTINE END INTERFACE integer myerrhan, qerr integer (kind=MPI_ADDRESS_KIND) asize integer callcount, codesSeen(3) common /myerrhan/ callcount, codesSeen errs = 0 callcount = 0 call mtest_init( ierr ) ! ! Setup some new codes and classes call mpi_add_error_class( newerrclass, ierr ) call mpi_add_error_code( newerrclass, code(1), ierr ) call mpi_add_error_code( newerrclass, code(2), ierr ) call mpi_add_error_string( newerrclass, "New Class", ierr ) call mpi_add_error_string( code(1), "First new code", ierr ) call mpi_add_error_string( code(2), "Second new code", ierr ) ! call mpi_win_create_errhandler( myerrhanfunc, myerrhan, ierr ) ! ! Create a new communicator so that we can leave the default errors-abort ! on MPI_COMM_WORLD. Use this comm for win_create, just to leave a little ! more separation from comm_world ! call mpi_comm_dup( MPI_COMM_WORLD, comm, ierr ) call mpi_type_size( MPI_INTEGER, intsize, ierr ) asize = 10 * intsize call mpi_win_create( buf, asize, intsize, MPI_INFO_NULL, & & comm, win, ierr ) ! call mpi_win_set_errhandler( win, myerrhan, ierr ) call mpi_win_get_errhandler( win, qerr, ierr ) if (qerr .ne. myerrhan) then errs = errs + 1 print *, ' Did not get expected error handler' endif call mpi_errhandler_free( qerr, ierr ) ! We can free our error handler now call mpi_errhandler_free( myerrhan, ierr ) call mpi_win_call_errhandler( win, newerrclass, ierr ) call mpi_win_call_errhandler( win, code(1), ierr ) call mpi_win_call_errhandler( win, code(2), ierr ) if (callcount .ne. 3) then errs = errs + 1 print *, ' Expected 3 calls to error handler, found ', & & callcount else if (codesSeen(1) .ne. newerrclass) then errs = errs + 1 print *, 'Expected class ', newerrclass, ' got ', & & codesSeen(1) endif if (codesSeen(2) .ne. code(1)) then errs = errs + 1 print *, 'Expected code ', code(1), ' got ', & & codesSeen(2) endif if (codesSeen(3) .ne. code(2)) then errs = errs + 1 print *, 'Expected code ', code(2), ' got ', & & codesSeen(3) endif endif call mpi_win_free( win, ierr ) call mpi_comm_free( comm, ierr ) ! ! Check error strings while here here... call mpi_error_string( newerrclass, errstring, rlen, ierr ) if (errstring(1:rlen) .ne. "New Class") then errs = errs + 1 print *, ' Wrong string for error class: ', errstring(1:rlen) endif call mpi_error_class( code(1), eclass, ierr ) if (eclass .ne. newerrclass) then errs = errs + 1 print *, ' Class for new code is not correct' endif call mpi_error_string( code(1), errstring, rlen, ierr ) if (errstring(1:rlen) .ne. "First new code") then errs = errs + 1 print *, ' Wrong string for error code: ', errstring(1:rlen) endif call mpi_error_class( code(2), eclass, ierr ) if (eclass .ne. newerrclass) then errs = errs + 1 print *, ' Class for new code is not correct' endif call mpi_error_string( code(2), errstring, rlen, ierr ) if (errstring(1:rlen) .ne. "Second new code") then errs = errs + 1 print *, ' Wrong string for error code: ', errstring(1:rlen) endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end ! subroutine myerrhanfunc( win, errcode ) use mpi integer win, errcode integer rlen, ierr integer callcount, codesSeen(3) character*(MPI_MAX_ERROR_STRING) errstring common /myerrhan/ callcount, codesSeen callcount = callcount + 1 ! Remember the code we've seen if (callcount .le. 3) then codesSeen(callcount) = errcode endif call mpi_error_string( errcode, errstring, rlen, ierr ) if (ierr .ne. MPI_SUCCESS) then print *, ' Panic! could not get error string' call mpi_abort( MPI_COMM_WORLD, 1, ierr ) endif end mpi-testsuite-3.2+dfsg/f90/topo/0000755000175000017500000000000012621010235015730 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f90/topo/testlist0000644000175000017500000000015612621010150017524 0ustar mbanckmbanck# This file generated by f77tof90 cartcrf90 4 dgraph_wgtf90 4 mpiversion=2.2 dgraph_unwgtf90 4 mpiversion=3.0 mpi-testsuite-3.2+dfsg/f90/topo/Makefile.in0000644000175000017500000004771112621010235020007 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This Makefile.am generated automatically by f77tof90 # from test/mpi/f77/topo/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = cartcrf90$(EXEEXT) dgraph_wgtf90$(EXEEXT) \ dgraph_unwgtf90$(EXEEXT) @MAINTAINER_MODE_TRUE@am__append_1 = Makefile.am-stamp subdir = f90/topo ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) cartcrf90_SOURCES = cartcrf90.f90 cartcrf90_OBJECTS = cartcrf90.$(OBJEXT) cartcrf90_LDADD = $(LDADD) cartcrf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o dgraph_unwgtf90_SOURCES = dgraph_unwgtf90.f90 dgraph_unwgtf90_OBJECTS = dgraph_unwgtf90.$(OBJEXT) dgraph_unwgtf90_LDADD = $(LDADD) dgraph_unwgtf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o dgraph_wgtf90_SOURCES = dgraph_wgtf90.f90 dgraph_wgtf90_OBJECTS = dgraph_wgtf90.$(OBJEXT) dgraph_wgtf90_LDADD = $(LDADD) dgraph_wgtf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = SOURCES = cartcrf90.f90 dgraph_unwgtf90.f90 dgraph_wgtf90.f90 DIST_SOURCES = cartcrf90.f90 dgraph_unwgtf90.f90 dgraph_wgtf90.f90 am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_f90.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F90 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f90/util/mtestf90.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist $(am__append_1) # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 @MAINTAINER_MODE_TRUE@MAINTAINERCLEANFILES = Makefile.am-stamp all: all-am .SUFFIXES: .SUFFIXES: .f90 .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f90.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f90/topo/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f90/topo/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f90.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) cartcrf90$(EXEEXT): $(cartcrf90_OBJECTS) $(cartcrf90_DEPENDENCIES) $(EXTRA_cartcrf90_DEPENDENCIES) @rm -f cartcrf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(cartcrf90_OBJECTS) $(cartcrf90_LDADD) $(LIBS) dgraph_unwgtf90$(EXEEXT): $(dgraph_unwgtf90_OBJECTS) $(dgraph_unwgtf90_DEPENDENCIES) $(EXTRA_dgraph_unwgtf90_DEPENDENCIES) @rm -f dgraph_unwgtf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(dgraph_unwgtf90_OBJECTS) $(dgraph_unwgtf90_LDADD) $(LIBS) dgraph_wgtf90$(EXEEXT): $(dgraph_wgtf90_OBJECTS) $(dgraph_wgtf90_DEPENDENCIES) $(EXTRA_dgraph_wgtf90_DEPENDENCIES) @rm -f dgraph_wgtf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(dgraph_wgtf90_OBJECTS) $(dgraph_wgtf90_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f90/util/mtestf90.o: $(top_srcdir)/f90/util/mtestf90.f90 (cd $(top_builddir)/f90/util && $(MAKE) mtestf90.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # f77tof90 only replaces output files if the contents differ, so we must use a # separate timestamp file in order avoid constantly trying to remake the f90 # copy of the Makefile when the f77 copy is updated in a way that does not # change its contents @MAINTAINER_MODE_TRUE@$(srcdir)/Makefile.am: $(srcdir)/Makefile.am-stamp @MAINTAINER_MODE_TRUE@$(srcdir)/Makefile.am-stamp: $(master_top_srcdir)/test/mpi/f77/topo/Makefile.am $(master_top_srcdir)/maint/f77tof90 @MAINTAINER_MODE_TRUE@ ( cd $(master_top_srcdir) && ./maint/f77tof90 test/mpi/f77/topo test/mpi/f90/topo Makefile.am Makefile.ap ) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f90/topo/Makefile.am0000644000175000017500000000213112621010150017755 0ustar mbanckmbanck# This Makefile.am generated automatically by f77tof90 # from test/mpi/f77/topo/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f90.mtest EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 noinst_PROGRAMS = cartcrf90 dgraph_wgtf90 dgraph_unwgtf90 if MAINTAINER_MODE # f77tof90 only replaces output files if the contents differ, so we must use a # separate timestamp file in order avoid constantly trying to remake the f90 # copy of the Makefile when the f77 copy is updated in a way that does not # change its contents $(srcdir)/Makefile.am: $(srcdir)/Makefile.am-stamp $(srcdir)/Makefile.am-stamp: $(master_top_srcdir)/test/mpi/f77/topo/Makefile.am $(master_top_srcdir)/maint/f77tof90 ( cd $(master_top_srcdir) && ./maint/f77tof90 test/mpi/f77/topo test/mpi/f90/topo Makefile.am Makefile.ap ) MAINTAINERCLEANFILES = Makefile.am-stamp EXTRA_DIST += Makefile.am-stamp endif MAINTAINER_MODE mpi-testsuite-3.2+dfsg/f90/topo/dgraph_unwgtf90.f900000644000175000017500000001676212621010150021270 0ustar mbanckmbanck! This file created from test/mpi/f77/topo/dgraph_unwgtf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2011 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! This program is Fortran version of dgraph_unwgt.c ! Specify a distributed graph of a bidirectional ring of the MPI_COMM_WORLD, ! i.e. everyone only talks to left and right neighbors. logical function validate_dgraph(dgraph_comm) use mpi integer dgraph_comm integer comm_topo integer src_sz, dest_sz integer ierr; logical wgt_flag; integer srcs(2), dests(2) integer world_rank, world_size; integer idx, nbr_sep comm_topo = MPI_UNDEFINED call MPI_Topo_test(dgraph_comm, comm_topo, ierr); if (comm_topo .ne. MPI_DIST_GRAPH) then validate_dgraph = .false. write(6,*) "dgraph_comm is NOT of type MPI_DIST_GRAPH." return endif call MPI_Dist_graph_neighbors_count(dgraph_comm, & & src_sz, dest_sz, wgt_flag, & & ierr) if (ierr .ne. MPI_SUCCESS) then validate_dgraph = .false. write(6,*) "MPI_Dist_graph_neighbors_count() fails!" return endif if (wgt_flag) then validate_dgraph = .false. write(6,*) "dgraph_comm is NOT created with MPI_UNWEIGHTED." return endif if (src_sz .ne. 2 .or. dest_sz .ne. 2) then validate_dgraph = .false. write(6,*) "source or destination edge array is not size 2." write(6,"('src_sz = ',I3,', dest_sz = ',I3)") src_sz, dest_sz return endif call MPI_Dist_graph_neighbors(dgraph_comm, & & src_sz, srcs, MPI_UNWEIGHTED, & & dest_sz, dests, MPI_UNWEIGHTED, & & ierr) if (ierr .ne. MPI_SUCCESS) then validate_dgraph = .false. write(6,*) "MPI_Dist_graph_neighbors() fails!" return endif ! Check if the neighbors returned from MPI are really ! the nearest neighbors that within a ring. call MPI_Comm_rank(MPI_COMM_WORLD, world_rank, ierr) call MPI_Comm_size(MPI_COMM_WORLD, world_size, ierr) do idx = 1, src_sz nbr_sep = iabs(srcs(idx) - world_rank) if (nbr_sep .ne. 1 .and. nbr_sep .ne. (world_size-1)) then validate_dgraph = .false. write(6,"('srcs[',I3,']=',I3, & & ' is NOT a neighbor of my rank',I3)") & & idx, srcs(idx), world_rank return endif enddo do idx = 1, dest_sz nbr_sep = iabs(dests(idx) - world_rank) if (nbr_sep .ne. 1 .and. nbr_sep .ne. (world_size-1)) then validate_dgraph = .false. write(6,"('dests[',I3,']=',I3, & & ' is NOT a neighbor of my rank',I3)") & & idx, dests(idx), world_rank return endif enddo validate_dgraph = .true. return end integer function ring_rank(world_size, in_rank) integer world_size, in_rank if (in_rank .ge. 0 .and. in_rank .lt. world_size) then ring_rank = in_rank return endif if (in_rank .lt. 0 ) then ring_rank = in_rank + world_size return endif if (in_rank .ge. world_size) then ring_rank = in_rank - world_size return endif ring_rank = -99999 return end program dgraph_unwgt use mpi integer ring_rank external ring_rank logical validate_dgraph external validate_dgraph integer errs, ierr integer dgraph_comm integer world_size, world_rank integer src_sz, dest_sz integer degs(1) integer srcs(2), dests(2) errs = 0 call MTEST_Init(ierr) call MPI_Comm_rank(MPI_COMM_WORLD, world_rank, ierr) call MPI_Comm_size(MPI_COMM_WORLD, world_size, ierr) srcs(1) = world_rank degs(1) = 2; dests(1) = ring_rank(world_size, world_rank-1) dests(2) = ring_rank(world_size, world_rank+1) call MPI_Dist_graph_create(MPI_COMM_WORLD, 1, srcs, degs, dests, & & MPI_UNWEIGHTED, MPI_INFO_NULL, & & .true., dgraph_comm, ierr) if (ierr .ne. MPI_SUCCESS) then write(6,*) "MPI_Dist_graph_create() fails!" call MPI_Abort(MPI_COMM_WORLD, 1, ierr) stop endif if (.not. validate_dgraph(dgraph_comm)) then write(6,*) "MPI_Dist_graph_create() does not create" & & //"a bidirectional ring graph!" call MPI_Abort(MPI_COMM_WORLD, 1, ierr) stop endif call MPI_Comm_free(dgraph_comm, ierr) ! now create one with MPI_WEIGHTS_EMPTY ! NOTE that MPI_WEIGHTS_EMPTY was added in MPI-3 and does not ! appear before then. Incluing this test means that this test cannot ! be compiled if the MPI version is less than 3 (see the testlist file) degs(1) = 0; call MPI_Dist_graph_create(MPI_COMM_WORLD, 1, srcs, degs, dests, & & MPI_WEIGHTS_EMPTY, MPI_INFO_NULL, & & .true., dgraph_comm, ierr) if (ierr .ne. MPI_SUCCESS) then write(6,*) "MPI_Dist_graph_create() fails!" call MPI_Abort(MPI_COMM_WORLD, 1, ierr) stop endif call MPI_Comm_free(dgraph_comm, ierr) src_sz = 2 srcs(1) = ring_rank(world_size, world_rank-1) srcs(2) = ring_rank(world_size, world_rank+1) dest_sz = 2 dests(1) = ring_rank(world_size, world_rank-1) dests(2) = ring_rank(world_size, world_rank+1) call MPI_Dist_graph_create_adjacent(MPI_COMM_WORLD, & & src_sz, srcs, & & MPI_UNWEIGHTED, & & dest_sz, dests, & & MPI_UNWEIGHTED, & & MPI_INFO_NULL, .true., & & dgraph_comm, ierr) if (ierr .ne. MPI_SUCCESS) then write(6,*) "MPI_Dist_graph_create_adjacent() fails!" call MPI_Abort(MPI_COMM_WORLD, 1, ierr) stop endif if (.not. validate_dgraph(dgraph_comm)) then write(6,*) "MPI_Dist_graph_create_adjacent() does not create" & & //"a bidirectional ring graph!" call MPI_Abort(MPI_COMM_WORLD, 1, ierr) stop endif call MPI_Comm_free(dgraph_comm, ierr) ! now create one with MPI_WEIGHTS_EMPTY src_sz = 0 dest_sz = 0 call MPI_Dist_graph_create_adjacent(MPI_COMM_WORLD, & & src_sz, srcs, & & MPI_WEIGHTS_EMPTY, & & dest_sz, dests, & & MPI_WEIGHTS_EMPTY, & & MPI_INFO_NULL, .true., & & dgraph_comm, ierr) if (ierr .ne. MPI_SUCCESS) then write(6,*) "MPI_Dist_graph_create_adjacent() fails!" call MPI_Abort(MPI_COMM_WORLD, 1, ierr) stop endif call MPI_Comm_free(dgraph_comm, ierr) call MTEST_Finalize(errs) call MPI_Finalize(ierr) end mpi-testsuite-3.2+dfsg/f90/topo/Makefile.am-stamp0000644000175000017500000000001212621010150021073 0ustar mbanckmbancktimestamp mpi-testsuite-3.2+dfsg/f90/topo/dgraph_wgtf90.f900000644000175000017500000001523612621010150020720 0ustar mbanckmbanck! This file created from test/mpi/f77/topo/dgraph_wgtf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2011 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! This program is Fortran version of dgraph_unwgt.c ! Specify a distributed graph of a bidirectional ring of the MPI_COMM_WORLD, ! i.e. everyone only talks to left and right neighbors. logical function validate_dgraph(dgraph_comm) use mpi integer dgraph_comm integer comm_topo integer src_sz, dest_sz integer ierr; logical wgt_flag; integer srcs(2), dests(2) integer src_wgts(2), dest_wgts(2) integer world_rank, world_size; integer idx, nbr_sep comm_topo = MPI_UNDEFINED call MPI_Topo_test(dgraph_comm, comm_topo, ierr); if (comm_topo .ne. MPI_DIST_GRAPH) then validate_dgraph = .false. write(6,*) "dgraph_comm is NOT of type MPI_DIST_GRAPH." return endif call MPI_Dist_graph_neighbors_count(dgraph_comm, & & src_sz, dest_sz, wgt_flag, & & ierr) if (ierr .ne. MPI_SUCCESS) then validate_dgraph = .false. write(6,*) "MPI_Dist_graph_neighbors_count() fails!" return endif if (.not. wgt_flag) then validate_dgraph = .false. write(6,*) "dgraph_comm is created with MPI_UNWEIGHTED!" return endif if (src_sz .ne. 2 .or. dest_sz .ne. 2) then validate_dgraph = .false. write(6,*) "source or destination edge array is not size 2." write(6,"('src_sz = ',I3,', dest_sz = ',I3)") src_sz, dest_sz return endif call MPI_Dist_graph_neighbors(dgraph_comm, & & src_sz, srcs, src_wgts, & & dest_sz, dests, dest_wgts, & & ierr) if (ierr .ne. MPI_SUCCESS) then validate_dgraph = .false. write(6,*) "MPI_Dist_graph_neighbors() fails!" return endif ! Check if the neighbors returned from MPI are really ! the nearest neighbors that within a ring. call MPI_Comm_rank(MPI_COMM_WORLD, world_rank, ierr) call MPI_Comm_size(MPI_COMM_WORLD, world_size, ierr) do idx = 1, src_sz nbr_sep = iabs(srcs(idx) - world_rank) if (nbr_sep .ne. 1 .and. nbr_sep .ne. (world_size-1)) then validate_dgraph = .false. write(6,"('srcs[',I3,']=',I3, & & ' is NOT a neighbor of my rank',I3)") & & idx, srcs(idx), world_rank return endif enddo if (src_wgts(1) .ne. src_wgts(2)) then validate_dgraph = .false. write(6,"('src_wgts = [',I3,',',I3,']')") & & src_wgts(1), src_wgts(2) return endif do idx = 1, dest_sz nbr_sep = iabs(dests(idx) - world_rank) if (nbr_sep .ne. 1 .and. nbr_sep .ne. (world_size-1)) then validate_dgraph = .false. write(6,"('dests[',I3,']=',I3, & & ' is NOT a neighbor of my rank',I3)") & & idx, dests(idx), world_rank return endif enddo if (dest_wgts(1) .ne. dest_wgts(2)) then validate_dgraph = .false. write(6,"('dest_wgts = [',I3,',',I3,']')") & & dest_wgts(1), dest_wgts(2) return endif validate_dgraph = .true. return end integer function ring_rank(world_size, in_rank) integer world_size, in_rank if (in_rank .ge. 0 .and. in_rank .lt. world_size) then ring_rank = in_rank return endif if (in_rank .lt. 0 ) then ring_rank = in_rank + world_size return endif if (in_rank .ge. world_size) then ring_rank = in_rank - world_size return endif ring_rank = -99999 return end program dgraph_unwgt use mpi integer ring_rank external ring_rank logical validate_dgraph external validate_dgraph integer errs, ierr integer dgraph_comm integer world_size, world_rank integer src_sz, dest_sz integer degs(1) integer srcs(2), dests(2) integer src_wgts(2), dest_wgts(2) errs = 0 call MTEST_Init(ierr) call MPI_Comm_rank(MPI_COMM_WORLD, world_rank, ierr) call MPI_Comm_size(MPI_COMM_WORLD, world_size, ierr) srcs(1) = world_rank degs(1) = 2; dests(1) = ring_rank(world_size, world_rank-1) dests(2) = ring_rank(world_size, world_rank+1) dest_wgts(1) = 1 dest_wgts(2) = 1 call MPI_Dist_graph_create(MPI_COMM_WORLD, 1, srcs, degs, dests, & & dest_wgts, MPI_INFO_NULL, & & .true., dgraph_comm, ierr) if (ierr .ne. MPI_SUCCESS) then write(6,*) "MPI_Dist_graph_create() fails!" call MPI_Abort(MPI_COMM_WORLD, 1, ierr) stop endif if (.not. validate_dgraph(dgraph_comm)) then write(6,*) "MPI_Dist_graph_create() does not create " & & //"a bidirectional ring graph!" call MPI_Abort(MPI_COMM_WORLD, 1, ierr) stop endif call MPI_Comm_free(dgraph_comm, ierr) src_sz = 2 srcs(1) = ring_rank(world_size, world_rank-1) srcs(2) = ring_rank(world_size, world_rank+1) src_wgts(1) = 1 src_wgts(2) = 1 dest_sz = 2 dests(1) = ring_rank(world_size, world_rank-1) dests(2) = ring_rank(world_size, world_rank+1) dest_wgts(1) = 1 dest_wgts(2) = 1 call MPI_Dist_graph_create_adjacent(MPI_COMM_WORLD, & & src_sz, srcs, src_wgts, & & dest_sz, dests, dest_wgts, & & MPI_INFO_NULL, .true., & & dgraph_comm, ierr) if (ierr .ne. MPI_SUCCESS) then write(6,*) "MPI_Dist_graph_create_adjacent() fails!" call MPI_Abort(MPI_COMM_WORLD, 1, ierr) stop endif if (.not. validate_dgraph(dgraph_comm)) then write(6,*) "MPI_Dist_graph_create_adjacent() does not create " & & //"a bidirectional ring graph!" call MPI_Abort(MPI_COMM_WORLD, 1, ierr) stop endif call MPI_Comm_free(dgraph_comm, ierr) call MTEST_Finalize(errs) call MPI_Finalize(ierr) end mpi-testsuite-3.2+dfsg/f90/topo/cartcrf90.f900000644000175000017500000000700512621010150020043 0ustar mbanckmbanck! This file created from test/mpi/f77/topo/cartcrf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2004 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! Test various combinations of periodic and non-periodic Cartesian ! communicators ! program main use mpi integer errs, ierr integer ndims, nperiods, i, size integer comm, source, dest, newcomm integer maxdims parameter (maxdims=7) logical periods(maxdims), outperiods(maxdims) integer dims(maxdims), outdims(maxdims) integer outcoords(maxdims) errs = 0 call mtest_init( ierr ) ! ! For upto 6 dimensions, test with periodicity in 0 through all ! dimensions. The test is computed by both: ! get info about the created communicator ! apply cart shift ! Note that a dimension can have size one, so that these tests ! can work with small numbers (even 1) of processes ! comm = MPI_COMM_WORLD call mpi_comm_size( comm, size, ierr ) do ndims = 1, 6 do nperiods = 0, ndims do i=1,ndims periods(i) = .false. dims(i) = 0 enddo do i=1,nperiods periods(i) = .true. enddo call mpi_dims_create( size, ndims, dims, ierr ) call mpi_cart_create( comm, ndims, dims, periods, .false., & & newcomm, ierr ) if (newcomm .ne. MPI_COMM_NULL) then call mpi_cart_get( newcomm, maxdims, outdims, outperiods, & & outcoords, ierr ) ! print *, 'Coords = ' do i=1, ndims ! print *, i, '(', outcoords(i), ')' if (periods(i) .neqv. outperiods(i)) then errs = errs + 1 print *, ' Wrong value for periods ', i print *, ' ndims = ', ndims endif enddo do i=1, ndims call mpi_cart_shift( newcomm, i-1, 1, source, dest, & & ierr ) if (outcoords(i) .eq. outdims(i)-1) then if (periods(i)) then if (dest .eq. MPI_PROC_NULL) then errs = errs + 1 print *, 'Expected rank, got proc_null' endif else if (dest .ne. MPI_PROC_NULL) then errs = errs + 1 print *, 'Expected procnull, got ', dest endif endif endif call mpi_cart_shift( newcomm, i-1, -1, source, dest, & & ierr ) if (outcoords(i) .eq. 0) then if (periods(i)) then if (dest .eq. MPI_PROC_NULL) then errs = errs + 1 print *, 'Expected rank, got proc_null' endif else if (dest .ne. MPI_PROC_NULL) then errs = errs + 1 print *, 'Expected procnull, got ', dest endif endif endif enddo call mpi_comm_free( newcomm, ierr ) endif enddo enddo call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/init/0000755000175000017500000000000012621010235015314 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/init/testlist0000644000175000017500000000027312620254305017123 0ustar mbanckmbanckexitst1 2 resultTest=TestStatus exitst2 4 resultTest=TestStatus initstat 1 timeout 2 resultTest=TestTimeout timeLimit=10 version 1 finalized 1 attrself 1 library_version 1 mpiversion=3.0 mpi-testsuite-3.2+dfsg/init/exitst1.c0000644000175000017500000000060212620254305017066 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" /* * This is a special test to check that mpiexec handles zero/non-zero * return status from an application */ int main(int argc, char *argv[]) { MPI_Init(0, 0); MPI_Finalize(); return 1; } mpi-testsuite-3.2+dfsg/init/Makefile.in0000644000175000017500000005702112621010235017366 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = attrself$(EXEEXT) exitst1$(EXEEXT) exitst2$(EXEEXT) \ exitst3$(EXEEXT) initstat$(EXEEXT) version$(EXEEXT) \ library_version$(EXEEXT) timeout$(EXEEXT) finalized$(EXEEXT) subdir = init ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) attrself_SOURCES = attrself.c attrself_OBJECTS = attrself.$(OBJEXT) attrself_LDADD = $(LDADD) attrself_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o exitst1_SOURCES = exitst1.c exitst1_OBJECTS = exitst1.$(OBJEXT) exitst1_LDADD = $(LDADD) exitst1_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o exitst2_SOURCES = exitst2.c exitst2_OBJECTS = exitst2.$(OBJEXT) exitst2_LDADD = $(LDADD) exitst2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o exitst3_SOURCES = exitst3.c exitst3_OBJECTS = exitst3.$(OBJEXT) exitst3_LDADD = $(LDADD) exitst3_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o finalized_SOURCES = finalized.c finalized_OBJECTS = finalized.$(OBJEXT) finalized_LDADD = $(LDADD) finalized_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o initstat_SOURCES = initstat.c initstat_OBJECTS = initstat.$(OBJEXT) initstat_LDADD = $(LDADD) initstat_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o library_version_SOURCES = library_version.c library_version_OBJECTS = library_version.$(OBJEXT) library_version_LDADD = $(LDADD) library_version_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o timeout_SOURCES = timeout.c timeout_OBJECTS = timeout.$(OBJEXT) timeout_LDADD = $(LDADD) timeout_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o version_SOURCES = version.c version_OBJECTS = version.$(OBJEXT) version_LDADD = $(LDADD) version_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = attrself.c exitst1.c exitst2.c exitst3.c finalized.c \ initstat.c library_version.c timeout.c version.c DIST_SOURCES = attrself.c exitst1.c exitst2.c exitst3.c finalized.c \ initstat.c library_version.c timeout.c version.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.mtest \ $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign init/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign init/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) attrself$(EXEEXT): $(attrself_OBJECTS) $(attrself_DEPENDENCIES) $(EXTRA_attrself_DEPENDENCIES) @rm -f attrself$(EXEEXT) $(AM_V_CCLD)$(LINK) $(attrself_OBJECTS) $(attrself_LDADD) $(LIBS) exitst1$(EXEEXT): $(exitst1_OBJECTS) $(exitst1_DEPENDENCIES) $(EXTRA_exitst1_DEPENDENCIES) @rm -f exitst1$(EXEEXT) $(AM_V_CCLD)$(LINK) $(exitst1_OBJECTS) $(exitst1_LDADD) $(LIBS) exitst2$(EXEEXT): $(exitst2_OBJECTS) $(exitst2_DEPENDENCIES) $(EXTRA_exitst2_DEPENDENCIES) @rm -f exitst2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(exitst2_OBJECTS) $(exitst2_LDADD) $(LIBS) exitst3$(EXEEXT): $(exitst3_OBJECTS) $(exitst3_DEPENDENCIES) $(EXTRA_exitst3_DEPENDENCIES) @rm -f exitst3$(EXEEXT) $(AM_V_CCLD)$(LINK) $(exitst3_OBJECTS) $(exitst3_LDADD) $(LIBS) finalized$(EXEEXT): $(finalized_OBJECTS) $(finalized_DEPENDENCIES) $(EXTRA_finalized_DEPENDENCIES) @rm -f finalized$(EXEEXT) $(AM_V_CCLD)$(LINK) $(finalized_OBJECTS) $(finalized_LDADD) $(LIBS) initstat$(EXEEXT): $(initstat_OBJECTS) $(initstat_DEPENDENCIES) $(EXTRA_initstat_DEPENDENCIES) @rm -f initstat$(EXEEXT) $(AM_V_CCLD)$(LINK) $(initstat_OBJECTS) $(initstat_LDADD) $(LIBS) library_version$(EXEEXT): $(library_version_OBJECTS) $(library_version_DEPENDENCIES) $(EXTRA_library_version_DEPENDENCIES) @rm -f library_version$(EXEEXT) $(AM_V_CCLD)$(LINK) $(library_version_OBJECTS) $(library_version_LDADD) $(LIBS) timeout$(EXEEXT): $(timeout_OBJECTS) $(timeout_DEPENDENCIES) $(EXTRA_timeout_DEPENDENCIES) @rm -f timeout$(EXEEXT) $(AM_V_CCLD)$(LINK) $(timeout_OBJECTS) $(timeout_LDADD) $(LIBS) version$(EXEEXT): $(version_OBJECTS) $(version_DEPENDENCIES) $(EXTRA_version_DEPENDENCIES) @rm -f version$(EXEEXT) $(AM_V_CCLD)$(LINK) $(version_OBJECTS) $(version_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/attrself.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exitst1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exitst2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exitst3.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/finalized.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/initstat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/library_version.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timeout.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/init/finalized.c0000644000175000017500000000573512620254305017446 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include /* FIXME: This test program assumes that MPI_Error_string will work even if MPI is not initialized. That is not guaranteed. */ /* Normally, when checking for error returns from MPI calls, you must ensure that the error handler on the relevant object (communicator, file, or window) has been set to MPI_ERRORS_RETURN. The tests in this program are a special case, as either a failure or an abort will indicate a problem */ int main(int argc, char *argv[]) { int error; int flag; char err_string[1024]; int length = 1024; int rank; flag = 0; error = MPI_Finalized(&flag); if (error != MPI_SUCCESS) { MPI_Error_string(error, err_string, &length); printf("MPI_Finalized failed: %s\n", err_string); fflush(stdout); return error; } if (flag) { printf("MPI_Finalized returned true before MPI_Init.\n"); return -1; } error = MPI_Init(&argc, &argv); if (error != MPI_SUCCESS) { MPI_Error_string(error, err_string, &length); printf("MPI_Init failed: %s\n", err_string); fflush(stdout); return error; } error = MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (error != MPI_SUCCESS) { MPI_Error_string(error, err_string, &length); printf("MPI_Comm_rank failed: %s\n", err_string); fflush(stdout); MPI_Abort(MPI_COMM_WORLD, error); return error; } flag = 0; error = MPI_Finalized(&flag); if (error != MPI_SUCCESS) { MPI_Error_string(error, err_string, &length); printf("MPI_Finalized failed: %s\n", err_string); fflush(stdout); MPI_Abort(MPI_COMM_WORLD, error); return error; } if (flag) { printf("MPI_Finalized returned true before MPI_Finalize.\n"); fflush(stdout); MPI_Abort(MPI_COMM_WORLD, error); return -1; } error = MPI_Barrier(MPI_COMM_WORLD); if (error != MPI_SUCCESS) { MPI_Error_string(error, err_string, &length); printf("MPI_Barrier failed: %s\n", err_string); fflush(stdout); MPI_Abort(MPI_COMM_WORLD, error); return error; } error = MPI_Finalize(); if (error != MPI_SUCCESS) { MPI_Error_string(error, err_string, &length); printf("MPI_Finalize failed: %s\n", err_string); fflush(stdout); return error; } flag = 0; error = MPI_Finalized(&flag); if (error != MPI_SUCCESS) { MPI_Error_string(error, err_string, &length); printf("MPI_Finalized failed: %s\n", err_string); fflush(stdout); return error; } if (!flag) { printf("MPI_Finalized returned false after MPI_Finalize.\n"); return -1; } if (rank == 0) { printf(" No Errors\n"); } return 0; } mpi-testsuite-3.2+dfsg/init/timeout.c0000644000175000017500000000102312620254305017151 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" /* This is a program that tests the ability of mpiexec to timeout a process after no more than 3 minutes. By default, it will run for 5 minutes */ int main(int argc, char *argv[]) { double t1; double deltaTime = 300; MPI_Init(0, 0); t1 = MPI_Wtime(); while (MPI_Wtime() - t1 < deltaTime); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/init/Makefile.am0000644000175000017500000000106512620254305017361 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile.mtest EXTRA_DIST = testlist ## for all programs that are just built from the single corresponding source ## file, we don't need per-target _SOURCES rules, automake will infer them ## correctly noinst_PROGRAMS = \ attrself \ exitst1 \ exitst2 \ exitst3 \ initstat \ version \ library_version \ timeout \ finalized mpi-testsuite-3.2+dfsg/init/exitst3.c0000644000175000017500000000121212620254305017066 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" /* * This is a special test to check that mpiexec handles the death of * some processes without an Abort or clean exit */ int main(int argc, char *argv[]) { int rank, size; MPI_Init(0, 0); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Barrier(MPI_COMM_WORLD); if (rank == size - 1) { /* Cause some processes to exit */ int *p = 0; *p = rank; } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/init/version.c0000644000175000017500000000137412620254305017161 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" int main(int argc, char *argv[]) { int errs = 0; int majversion, subversion; MTest_Init(&argc, &argv); MPI_Get_version(&majversion, &subversion); if (majversion != MPI_VERSION) { errs++; printf("Major version is %d but is %d in the mpi.h file\n", majversion, MPI_VERSION); } if (subversion != MPI_SUBVERSION) { errs++; printf("Minor version is %d but is %d in the mpi.h file\n", subversion, MPI_SUBVERSION); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/init/initstat.c0000644000175000017500000000144712620254305017334 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" int main(int argc, char *argv[]) { int errs = 0; int provided, flag, claimed; /* MTest_Init(&argc, &argv); */ MPI_Init_thread(0, 0, MPI_THREAD_MULTIPLE, &provided); MPI_Is_thread_main(&flag); if (!flag) { errs++; printf("This thread called init_thread but Is_thread_main gave false\n"); } MPI_Query_thread(&claimed); if (claimed != provided) { errs++; printf("Query thread gave thread level %d but Init_thread gave %d\n", claimed, provided); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/init/library_version.c0000644000175000017500000000125412620254305020702 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" static int verbose = 0; int main(int argc, char *argv[]) { int errs = 0, resultlen = -1; char version[MPI_MAX_LIBRARY_VERSION_STRING]; MTest_Init(&argc, &argv); MPI_Get_library_version(version, &resultlen); if (resultlen < 0) { errs++; printf("Resultlen is %d\n", resultlen); } else { if (verbose) printf("%s\n", version); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/init/exitst2.c0000644000175000017500000000077712620254305017104 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" /* * This is a special test to check that mpiexec handles zero/non-zero * return status from an application. In this case, each process * returns a different return status */ int main(int argc, char *argv[]) { int rank; MPI_Init(0, 0); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Finalize(); return rank; } mpi-testsuite-3.2+dfsg/init/attrself.c0000644000175000017500000000731212620254305017316 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2009 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* static char MTestDescrip[] = "Test creating and inserting attributes in \ different orders to ensure that the list management code handles all cases."; */ int checkAttrs(MPI_Comm, int, int[], int[]); int delete_fn(MPI_Comm, int, void *, void *); #define NKEYS 5 static int key[NKEYS]; /* Keys in creation order */ static int keyorder[NKEYS]; /* Index (into key) of keys in order added to comm * (key[keyorder[0]] is first set) */ static int nkeys = 0; static int ncall = 0; static int errs = 0; /* * Test that attributes on comm self are deleted in LIFO order */ int main(int argc, char *argv[]) { int attrval[10]; int wrank, i; MPI_Comm comm; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &wrank); comm = MPI_COMM_SELF; /* Create key values */ for (nkeys = 0; nkeys < NKEYS; nkeys++) { MPI_Comm_create_keyval(MPI_NULL_COPY_FN, delete_fn, &key[nkeys], (void *) 0); attrval[nkeys] = 1024 * nkeys; } /* Insert attribute in several orders. Test after put with get, * then delete, then confirm delete with get. */ MPI_Comm_set_attr(comm, key[3], &attrval[3]); keyorder[0] = 3; MPI_Comm_set_attr(comm, key[2], &attrval[2]); keyorder[1] = 2; MPI_Comm_set_attr(comm, key[0], &attrval[0]); keyorder[2] = 0; MPI_Comm_set_attr(comm, key[1], &attrval[1]); keyorder[3] = 1; MPI_Comm_set_attr(comm, key[4], &attrval[4]); keyorder[4] = 4; errs += checkAttrs(comm, NKEYS, key, attrval); for (i = 0; i < NKEYS; i++) { /* Save the key value so that we can compare it in the * delete function */ int keyval = key[i]; MPI_Comm_free_keyval(&keyval); } MPI_Finalize(); if (wrank == 0) { if (ncall != nkeys) { printf("Deleted %d keys but should have deleted %d\n", ncall, nkeys); errs++; } if (errs == 0) printf(" No Errors\n"); else printf(" Found %d errors\n", errs); } return 0; } int checkAttrs(MPI_Comm comm, int n, int lkey[], int attrval[]) { int lerrs = 0; int i, flag, *val_p; for (i = 0; i < n; i++) { MPI_Comm_get_attr(comm, lkey[i], &val_p, &flag); if (!flag) { lerrs++; fprintf(stderr, "Attribute for key %d not set\n", i); } else if (val_p != &attrval[i]) { lerrs++; fprintf(stderr, "Atribute value for key %d not correct\n", i); } } return lerrs; } /* We *should* be deleting key[keyorder[nkeys-ncall]] */ int delete_fn(MPI_Comm comm, int keyval, void *attribute_val, void *extra_state) { if (ncall >= nkeys) { printf("delete function called too many times!\n"); errs++; } /* As of MPI 2.2, the order of deletion of attributes on * MPI_COMM_SELF is defined */ if (MPI_VERSION > 2 || (MPI_VERSION == 2 && MPI_SUBVERSION >= 2)) { if (keyval != key[keyorder[nkeys - 1 - ncall]]) { printf("Expected key # %d but found key with value %d\n", keyorder[nkeys - 1 - ncall], keyval); errs++; } } ncall++; return MPI_SUCCESS; } /* int checkNoAttrs(MPI_Comm comm, int n, int lkey[]) { int lerrs = 0; int i, flag, *val_p; for (i=0; i&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = write_ckpoint$(EXEEXT) subdir = ckpoint ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) write_ckpoint_SOURCES = write_ckpoint.c write_ckpoint_OBJECTS = write_ckpoint.$(OBJEXT) write_ckpoint_LDADD = $(LDADD) write_ckpoint_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = write_ckpoint.c DIST_SOURCES = write_ckpoint.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.mtest \ $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign ckpoint/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign ckpoint/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) write_ckpoint$(EXEEXT): $(write_ckpoint_OBJECTS) $(write_ckpoint_DEPENDENCIES) $(EXTRA_write_ckpoint_DEPENDENCIES) @rm -f write_ckpoint$(EXEEXT) $(AM_V_CCLD)$(LINK) $(write_ckpoint_OBJECTS) $(write_ckpoint_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/write_ckpoint.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/ckpoint/Makefile.am0000644000175000017500000000062112620254305020062 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile.mtest EXTRA_DIST = testlist ## for all programs that are just built from the single corresponding source ## file, we don't need per-target _SOURCES rules, automake will infer them ## correctly noinst_PROGRAMS = write_ckpoint mpi-testsuite-3.2+dfsg/ckpoint/write_ckpoint.c0000644000175000017500000000201412620254305021051 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include #include int main(int argc, char *argv[]) { int numprocs, myid, i; int namelen; char processor_name[MPI_MAX_PROCESSOR_NAME]; struct stat fileStat; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &numprocs); MPI_Comm_rank(MPI_COMM_WORLD, &myid); MPI_Get_processor_name(processor_name, &namelen); for (i = 0; i < 22; i++) { MPI_Barrier(MPI_COMM_WORLD); MTestSleep(1); } if (myid == 0) { if (stat("/tmp/context-num2-0-0", &fileStat) < 0) { printf("failed to find ckpoint file\n"); } else if (fileStat.st_size == 0) { printf("ckpoint file is empty\n"); } else { printf("No Errors\n"); } } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/info/0000755000175000017500000000000012621010235015304 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/info/infotest.c0000644000175000017500000000231312620254305017311 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Simple info test */ #include "mpi.h" #include #include #include "mpitestconf.h" #ifdef HAVE_STRING_H #include #endif int main(int argc, char *argv[]) { MPI_Info i1, i2; int errs = 0; char value[64]; int flag; MPI_Init(0, 0); MPI_Info_create(&i1); MPI_Info_create(&i2); MPI_Info_set(i1, (char *) "key1", (char *) "value1"); MPI_Info_set(i2, (char *) "key2", (char *) "value2"); MPI_Info_get(i1, (char *) "key2", 64, value, &flag); if (flag) { printf("Found key2 in info1\n"); errs++; } MPI_Info_get(i1, (char *) "key1", 64, value, &flag); if (!flag) { errs++; printf("Did not find key1 in info1\n"); } else if (strcmp(value, "value1")) { errs++; printf("Found wrong value (%s), expected value1\n", value); } MPI_Info_free(&i1); MPI_Info_free(&i2); if (errs) { printf(" Found %d errors\n", errs); } else { printf(" No Errors\n"); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/info/infoenv.c0000644000175000017500000000131712620254305017125 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include static int verbose = 0; int main(int argc, char *argv[]) { char value[MPI_MAX_INFO_VAL]; char *keys[] = { "command", "argv", "maxprocs", "soft", "host", "arch", "wdir", "file", "thread_level", 0 }; int flag, i; MPI_Init(NULL, NULL); for (i = 0; keys[i]; i++) { MPI_Info_get(MPI_INFO_ENV, keys[i], MPI_MAX_INFO_VAL, value, &flag); if (flag && verbose) printf("command: %s\n", value); } printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/info/testlist0000644000175000017500000000016212620254305017110 0ustar mbanckmbanckinfodup 1 infodel 1 infovallen 1 infoorder 1 infomany 1 infomany2 1 infotest 1 infoget 1 infoenv 1 mpiversion=3.0 mpi-testsuite-3.2+dfsg/info/Makefile.in0000644000175000017500000005674112621010235017366 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = infodup$(EXEEXT) infodel$(EXEEXT) \ infovallen$(EXEEXT) infoorder$(EXEEXT) infomany$(EXEEXT) \ infomany2$(EXEEXT) infotest$(EXEEXT) infoget$(EXEEXT) \ infoenv$(EXEEXT) subdir = info ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) infodel_SOURCES = infodel.c infodel_OBJECTS = infodel.$(OBJEXT) infodel_LDADD = $(LDADD) infodel_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o infodup_SOURCES = infodup.c infodup_OBJECTS = infodup.$(OBJEXT) infodup_LDADD = $(LDADD) infodup_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o infoenv_SOURCES = infoenv.c infoenv_OBJECTS = infoenv.$(OBJEXT) infoenv_LDADD = $(LDADD) infoenv_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o infoget_SOURCES = infoget.c infoget_OBJECTS = infoget.$(OBJEXT) infoget_LDADD = $(LDADD) infoget_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o infomany_SOURCES = infomany.c infomany_OBJECTS = infomany.$(OBJEXT) infomany_LDADD = $(LDADD) infomany_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o infomany2_SOURCES = infomany2.c infomany2_OBJECTS = infomany2.$(OBJEXT) infomany2_LDADD = $(LDADD) infomany2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o infoorder_SOURCES = infoorder.c infoorder_OBJECTS = infoorder.$(OBJEXT) infoorder_LDADD = $(LDADD) infoorder_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o infotest_SOURCES = infotest.c infotest_OBJECTS = infotest.$(OBJEXT) infotest_LDADD = $(LDADD) infotest_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o infovallen_SOURCES = infovallen.c infovallen_OBJECTS = infovallen.$(OBJEXT) infovallen_LDADD = $(LDADD) infovallen_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = infodel.c infodup.c infoenv.c infoget.c infomany.c \ infomany2.c infoorder.c infotest.c infovallen.c DIST_SOURCES = infodel.c infodup.c infoenv.c infoget.c infomany.c \ infomany2.c infoorder.c infotest.c infovallen.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.mtest \ $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign info/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign info/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) infodel$(EXEEXT): $(infodel_OBJECTS) $(infodel_DEPENDENCIES) $(EXTRA_infodel_DEPENDENCIES) @rm -f infodel$(EXEEXT) $(AM_V_CCLD)$(LINK) $(infodel_OBJECTS) $(infodel_LDADD) $(LIBS) infodup$(EXEEXT): $(infodup_OBJECTS) $(infodup_DEPENDENCIES) $(EXTRA_infodup_DEPENDENCIES) @rm -f infodup$(EXEEXT) $(AM_V_CCLD)$(LINK) $(infodup_OBJECTS) $(infodup_LDADD) $(LIBS) infoenv$(EXEEXT): $(infoenv_OBJECTS) $(infoenv_DEPENDENCIES) $(EXTRA_infoenv_DEPENDENCIES) @rm -f infoenv$(EXEEXT) $(AM_V_CCLD)$(LINK) $(infoenv_OBJECTS) $(infoenv_LDADD) $(LIBS) infoget$(EXEEXT): $(infoget_OBJECTS) $(infoget_DEPENDENCIES) $(EXTRA_infoget_DEPENDENCIES) @rm -f infoget$(EXEEXT) $(AM_V_CCLD)$(LINK) $(infoget_OBJECTS) $(infoget_LDADD) $(LIBS) infomany$(EXEEXT): $(infomany_OBJECTS) $(infomany_DEPENDENCIES) $(EXTRA_infomany_DEPENDENCIES) @rm -f infomany$(EXEEXT) $(AM_V_CCLD)$(LINK) $(infomany_OBJECTS) $(infomany_LDADD) $(LIBS) infomany2$(EXEEXT): $(infomany2_OBJECTS) $(infomany2_DEPENDENCIES) $(EXTRA_infomany2_DEPENDENCIES) @rm -f infomany2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(infomany2_OBJECTS) $(infomany2_LDADD) $(LIBS) infoorder$(EXEEXT): $(infoorder_OBJECTS) $(infoorder_DEPENDENCIES) $(EXTRA_infoorder_DEPENDENCIES) @rm -f infoorder$(EXEEXT) $(AM_V_CCLD)$(LINK) $(infoorder_OBJECTS) $(infoorder_LDADD) $(LIBS) infotest$(EXEEXT): $(infotest_OBJECTS) $(infotest_DEPENDENCIES) $(EXTRA_infotest_DEPENDENCIES) @rm -f infotest$(EXEEXT) $(AM_V_CCLD)$(LINK) $(infotest_OBJECTS) $(infotest_LDADD) $(LIBS) infovallen$(EXEEXT): $(infovallen_OBJECTS) $(infovallen_DEPENDENCIES) $(EXTRA_infovallen_DEPENDENCIES) @rm -f infovallen$(EXEEXT) $(AM_V_CCLD)$(LINK) $(infovallen_OBJECTS) $(infovallen_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/infodel.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/infodup.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/infoenv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/infoget.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/infomany.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/infomany2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/infoorder.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/infotest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/infovallen.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/info/infomany2.c0000644000175000017500000000763612620254305017375 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Test of info that makes use of the extended handles, including inserts and deletes */ #include "mpi.h" #include #include #include "mpitest.h" #include "mpitestconf.h" #ifdef HAVE_STRING_H #include #endif #ifndef MAX_INFOS #define MAX_INFOS 4000 #endif #define MAX_ERRORS 10 #define info_list 16 /* #define DBG */ #ifdef DEBUG #define DBGPRINTF(a) printf a; fflush(stdout) #else #define DBGPRINTF(a) #endif int main(int argc, char *argv[]) { MPI_Info infos[MAX_INFOS]; char key[64], value[64]; int errs = 0; int i, j; MTest_Init(&argc, &argv); /* We create max_info items, then delete the middle third of them, * then recreate them, then check them, then * delete them all. This checks that the MPICH algorithm for * handling large numbers of items works correctly; other MPI * implementations should also be able to handle this */ /* Create them all */ for (i = 0; i < MAX_INFOS; i++) { MPI_Info_create(&infos[i]); DBGPRINTF(("Info handle is %x\n", infos[i])); for (j = 0; j < info_list; j++) { sprintf(key, "key%d-%d", i, j); sprintf(value, "value%d-%d", i, j); DBGPRINTF(("Creating key/value %s=%s\n", key, value)); MPI_Info_set(infos[i], key, value); } #ifdef DBG { int nkeys; MPI_Info_get_nkeys(infos[0], &nkeys); if (nkeys != info_list) { printf("infos[0] changed at %d info\n", i); } } #endif } /* Delete the middle set */ for (i = MAX_INFOS / 3; i < (2 * MAX_INFOS / 3); i++) { MPI_Info_free(&infos[i]); } /* Recreate the middle set */ for (i = MAX_INFOS / 3; i < (2 * MAX_INFOS / 3); i++) { MPI_Info_create(&infos[i]); DBGPRINTF(("Info handle is %x\n", infos[i])); for (j = 0; j < info_list; j++) { sprintf(key, "key%d-%d", i, j); sprintf(value, "value%d-%d", i, j); DBGPRINTF(("Creating key/value %s=%s\n", key, value)); MPI_Info_set(infos[i], key, value); } } /* Now, check that they are still valid */ for (i = 0; i < MAX_INFOS; i++) { int nkeys; /*printf("info = %x\n", infos[i]); * print_handle(infos[i]); printf("\n"); */ MPI_Info_get_nkeys(infos[i], &nkeys); if (nkeys != info_list) { errs++; if (errs < MAX_ERRORS) { printf("Wrong number of keys for info %d; got %d, should be %d\n", i, nkeys, info_list); } } for (j = 0; j < nkeys; j++) { char keystr[64]; char valstr[64]; int flag; MPI_Info_get_nthkey(infos[i], j, key); sprintf(keystr, "key%d-%d", i, j); if (strcmp(keystr, key) != 0) { errs++; if (errs < MAX_ERRORS) { printf("Wrong key for info %d; got %s expected %s\n", i, key, keystr); } continue; } MPI_Info_get(infos[i], key, 64, value, &flag); if (!flag) { errs++; if (errs < MAX_ERRORS) { printf("Get failed to return value for info %d\n", i); } continue; } sprintf(valstr, "value%d-%d", i, j); if (strcmp(valstr, value) != 0) { errs++; if (errs < MAX_ERRORS) { printf("Wrong value for info %d; got %s expected %s\n", i, value, valstr); } } } } for (i = 0; i < MAX_INFOS; i++) { MPI_Info_free(&infos[i]); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/info/Makefile.am0000644000175000017500000000106012620254305017344 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile.mtest EXTRA_DIST = testlist ## for all programs that are just built from the single corresponding source ## file, we don't need per-target _SOURCES rules, automake will infer them ## correctly noinst_PROGRAMS = \ infodup \ infodel \ infovallen \ infoorder \ infomany \ infomany2 \ infotest \ infoget \ infoenv mpi-testsuite-3.2+dfsg/info/infovallen.c0000644000175000017500000000323012620254305017612 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #define NKEYS 3 int main(int argc, char *argv[]) { int errs = 0; MPI_Info info; char *keys[NKEYS] = { (char *) "file", (char *) "soft", (char *) "host" }; char *values[NKEYS] = { (char *) "runfile.txt", (char *) "2:1000:4,3:1000:7", (char *) "myhost.myorg.org" }; char value[MPI_MAX_INFO_VAL]; int i, flag, vallen; MTest_Init(&argc, &argv); MPI_Info_create(&info); /* Use only named keys incase the info implementation only supports * the predefined keys (e.g., IBM) */ for (i = 0; i < NKEYS; i++) { MPI_Info_set(info, keys[i], values[i]); } /* Check that all values are present */ for (i = 0; i < NKEYS; i++) { MPI_Info_get_valuelen(info, keys[i], &vallen, &flag); if (!flag) { errs++; printf("get_valuelen failed for valid key %s\n", keys[i]); } MPI_Info_get(info, keys[i], MPI_MAX_INFO_VAL, value, &flag); if (!flag) { errs++; printf("No value for key %s\n", keys[i]); } if (strcmp(value, values[i])) { errs++; printf("Incorrect value for key %s\n", keys[i]); } if (strlen(value) != vallen) { errs++; printf("value_len returned %d but actual len is %d\n", vallen, (int) strlen(value)); } } MPI_Info_free(&info); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/info/infodup.c0000644000175000017500000000470612620254305017132 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include "mpitestconf.h" #ifdef HAVE_STRING_H #include #endif int main(int argc, char *argv[]) { int errs = 0; MPI_Info info1, infodup; int nkeys, nkeysdup, i, vallen, flag, flagdup; char key[MPI_MAX_INFO_KEY], keydup[MPI_MAX_INFO_KEY]; char value[MPI_MAX_INFO_VAL], valdup[MPI_MAX_INFO_VAL]; MTest_Init(&argc, &argv); MPI_Info_create(&info1); /* Use only named keys incase the info implementation only supports * the predefined keys (e.g., IBM) */ MPI_Info_set(info1, (char *) "host", (char *) "myhost.myorg.org"); MPI_Info_set(info1, (char *) "file", (char *) "runfile.txt"); MPI_Info_set(info1, (char *) "soft", (char *) "2:1000:4,3:1000:7"); MPI_Info_dup(info1, &infodup); MPI_Info_get_nkeys(infodup, &nkeysdup); MPI_Info_get_nkeys(info1, &nkeys); if (nkeys != nkeysdup) { errs++; printf("Dup'ed info has a different number of keys; is %d should be %d\n", nkeysdup, nkeys); } vallen = MPI_MAX_INFO_VAL; for (i = 0; i < nkeys; i++) { /* MPI requires that the keys are in the same order after the dup */ MPI_Info_get_nthkey(info1, i, key); MPI_Info_get_nthkey(infodup, i, keydup); if (strcmp(key, keydup)) { errs++; printf("keys do not match: %s should be %s\n", keydup, key); } vallen = MPI_MAX_INFO_VAL; MPI_Info_get(info1, key, vallen, value, &flag); MPI_Info_get(infodup, keydup, vallen, valdup, &flagdup); if (!flag || !flagdup) { errs++; printf("Info get failed for key %s\n", key); } else if (strcmp(value, valdup)) { errs++; printf("Info values for key %s not the same after dup\n", key); } } /* Change info and check that infodup does NOT have the new value * (ensure that lazy dups are still duped) */ MPI_Info_set(info1, (char *) "path", (char *) "/a:/b:/c/d"); MPI_Info_get(infodup, (char *) "path", vallen, value, &flag); if (flag) { errs++; printf("inserting path into info changed infodup\n"); } MPI_Info_free(&info1); MPI_Info_free(&infodup); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/info/infoorder.c0000644000175000017500000001155112620254305017451 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include "mpitestconf.h" #ifdef HAVE_STRING_H #include #endif #define NKEYS 3 int main(int argc, char *argv[]) { int errs = 0; MPI_Info info; char *keys1[NKEYS] = { (char *) "file", (char *) "soft", (char *) "host" }; char *values1[NKEYS] = { (char *) "runfile.txt", (char *) "2:1000:4,3:1000:7", (char *) "myhost.myorg.org" }; char value[MPI_MAX_INFO_VAL]; int i, flag; MTest_Init(&argc, &argv); /* 1,2,3 */ MPI_Info_create(&info); /* Use only named keys incase the info implementation only supports * the predefined keys (e.g., IBM) */ for (i = 0; i < NKEYS; i++) { MPI_Info_set(info, keys1[i], values1[i]); } /* Check that all values are present */ for (i = 0; i < NKEYS; i++) { MPI_Info_get(info, keys1[i], MPI_MAX_INFO_VAL, value, &flag); if (!flag) { errs++; printf("No value for key %s\n", keys1[i]); } if (strcmp(value, values1[i])) { errs++; printf("Incorrect value for key %s\n", keys1[i]); } } MPI_Info_free(&info); /* 3,2,1 */ MPI_Info_create(&info); /* Use only named keys incase the info implementation only supports * the predefined keys (e.g., IBM) */ for (i = NKEYS - 1; i >= 0; i--) { MPI_Info_set(info, keys1[i], values1[i]); } /* Check that all values are present */ for (i = 0; i < NKEYS; i++) { MPI_Info_get(info, keys1[i], MPI_MAX_INFO_VAL, value, &flag); if (!flag) { errs++; printf("No value for key %s\n", keys1[i]); } if (strcmp(value, values1[i])) { errs++; printf("Incorrect value for key %s\n", keys1[i]); } } MPI_Info_free(&info); /* 1,3,2 */ MPI_Info_create(&info); /* Use only named keys incase the info implementation only supports * the predefined keys (e.g., IBM) */ MPI_Info_set(info, keys1[0], values1[0]); MPI_Info_set(info, keys1[2], values1[2]); MPI_Info_set(info, keys1[1], values1[1]); /* Check that all values are present */ for (i = 0; i < NKEYS; i++) { MPI_Info_get(info, keys1[i], MPI_MAX_INFO_VAL, value, &flag); if (!flag) { errs++; printf("No value for key %s\n", keys1[i]); } if (strcmp(value, values1[i])) { errs++; printf("Incorrect value for key %s\n", keys1[i]); } } MPI_Info_free(&info); /* 2,1,3 */ MPI_Info_create(&info); /* Use only named keys incase the info implementation only supports * the predefined keys (e.g., IBM) */ MPI_Info_set(info, keys1[1], values1[1]); MPI_Info_set(info, keys1[0], values1[0]); MPI_Info_set(info, keys1[2], values1[2]); /* Check that all values are present */ for (i = 0; i < NKEYS; i++) { MPI_Info_get(info, keys1[i], MPI_MAX_INFO_VAL, value, &flag); if (!flag) { errs++; printf("No value for key %s\n", keys1[i]); } if (strcmp(value, values1[i])) { errs++; printf("Incorrect value for key %s\n", keys1[i]); } } MPI_Info_free(&info); /* 2,3,1 */ MPI_Info_create(&info); /* Use only named keys incase the info implementation only supports * the predefined keys (e.g., IBM) */ MPI_Info_set(info, keys1[1], values1[1]); MPI_Info_set(info, keys1[2], values1[2]); MPI_Info_set(info, keys1[0], values1[0]); /* Check that all values are present */ for (i = 0; i < NKEYS; i++) { MPI_Info_get(info, keys1[i], MPI_MAX_INFO_VAL, value, &flag); if (!flag) { errs++; printf("No value for key %s\n", keys1[i]); } if (strcmp(value, values1[i])) { errs++; printf("Incorrect value for key %s\n", keys1[i]); } } MPI_Info_free(&info); /* 3,1,2 */ MPI_Info_create(&info); /* Use only named keys incase the info implementation only supports * the predefined keys (e.g., IBM) */ MPI_Info_set(info, keys1[2], values1[2]); MPI_Info_set(info, keys1[0], values1[0]); MPI_Info_set(info, keys1[1], values1[1]); /* Check that all values are present */ for (i = 0; i < NKEYS; i++) { MPI_Info_get(info, keys1[i], MPI_MAX_INFO_VAL, value, &flag); if (!flag) { errs++; printf("No value for key %s\n", keys1[i]); } if (strcmp(value, values1[i])) { errs++; printf("Incorrect value for key %s\n", keys1[i]); } } MPI_Info_free(&info); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/info/infomany.c0000644000175000017500000000557112620254305017307 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Test of info that makes use of the extended handles */ #include "mpi.h" #include #include #include "mpitest.h" #include "mpitestconf.h" #ifdef HAVE_STRING_H #include #endif #ifndef MAX_INFOS #define MAX_INFOS 4000 #endif #define MAX_ERRORS 10 #define info_list 16 /* #define DBG */ int main(int argc, char *argv[]) { MPI_Info infos[MAX_INFOS]; char key[64], value[64]; int errs = 0; int i, j; MTest_Init(&argc, &argv); for (i = 0; i < MAX_INFOS; i++) { MPI_Info_create(&infos[i]); #ifdef DBG printf("Info handle is %x\n", infos[i]); #endif for (j = 0; j < info_list; j++) { sprintf(key, "key%d-%d", i, j); sprintf(value, "value%d-%d", i, j); #ifdef DBG printf("Creating key/value %s=%s\n", key, value); #endif MPI_Info_set(infos[i], key, value); } #ifdef DBG { int nkeys; MPI_Info_get_nkeys(infos[0], &nkeys); if (nkeys != info_list) { printf("infos[0] changed at %d info\n", i); } } #endif } for (i = 0; i < MAX_INFOS; i++) { int nkeys; /*printf("info = %x\n", infos[i]); * print_handle(infos[i]); printf("\n"); */ MPI_Info_get_nkeys(infos[i], &nkeys); if (nkeys != info_list) { errs++; if (errs < MAX_ERRORS) { printf("Wrong number of keys for info %d; got %d, should be %d\n", i, nkeys, info_list); } } for (j = 0; j < nkeys; j++) { char keystr[64]; char valstr[64]; int flag; MPI_Info_get_nthkey(infos[i], j, key); sprintf(keystr, "key%d-%d", i, j); if (strcmp(keystr, key) != 0) { errs++; if (errs < MAX_ERRORS) { printf("Wrong key for info %d; got %s expected %s\n", i, key, keystr); } continue; } MPI_Info_get(infos[i], key, sizeof(value), value, &flag); if (!flag) { errs++; if (errs < MAX_ERRORS) { printf("Get failed to return value for info %d\n", i); } continue; } sprintf(valstr, "value%d-%d", i, j); if (strcmp(valstr, value) != 0) { errs++; if (errs < MAX_ERRORS) { printf("Wrong value for info %d; got %s expected %s\n", i, value, valstr); } } } } for (i = 0; i < MAX_INFOS; i++) { MPI_Info_free(&infos[i]); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/info/infodel.c0000644000175000017500000000447512620254305017111 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include "mpitestconf.h" #ifdef HAVE_STRING_H #include #endif #define NKEYS 3 int main(int argc, char *argv[]) { int errs = 0; MPI_Info info; char *keys[NKEYS] = { (char *) "file", (char *) "soft", (char *) "host" }; char *values[NKEYS] = { (char *) "runfile.txt", (char *) "2:1000:4,3:1000:7", (char *) "myhost.myorg.org" }; char value[MPI_MAX_INFO_VAL]; int i, flag, nkeys; MTest_Init(&argc, &argv); MPI_Info_create(&info); /* Use only named keys incase the info implementation only supports * the predefined keys (e.g., IBM) */ for (i = 0; i < NKEYS; i++) { MPI_Info_set(info, keys[i], values[i]); } /* Check that all values are present */ for (i = 0; i < NKEYS; i++) { MPI_Info_get(info, keys[i], MPI_MAX_INFO_VAL, value, &flag); if (!flag) { errs++; printf("No value for key %s\n", keys[i]); } if (strcmp(value, values[i])) { errs++; printf("Incorrect value for key %s, got %s expected %s\n", keys[i], value, values[i]); } } /* Now, change one value and remove another, then check again */ MPI_Info_delete(info, keys[NKEYS - 1]); MPI_Info_get_nkeys(info, &nkeys); if (nkeys != NKEYS - 1) { errs++; printf("Deleting a key did not change the number of keys\n"); } values[0] = (char *) "backfile.txt"; MPI_Info_set(info, keys[0], values[0]); for (i = 0; i < NKEYS - 1; i++) { MPI_Info_get(info, keys[i], MPI_MAX_INFO_VAL, value, &flag); if (!flag) { errs++; printf("(after reset) No value for key %s\n", keys[i]); } if (strcmp(value, values[i])) { errs++; printf("(after reset) Incorrect value for key %s, got %s expected %s\n", keys[i], value, values[i]); } } MPI_Info_free(&info); if (info != MPI_INFO_NULL) { errs++; printf("MPI_Info_free should set info to MPI_INFO_NULL\n"); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/info/infoget.c0000644000175000017500000000172212620254305017114 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Test code provided by Hajime Fujita. See Trac ticket #2225. */ #include "mpi.h" #include #include "mpitest.h" #include int main(int argc, char *argv[]) { MPI_Info info; const char *key = "key", *val = "val"; char buff[3 + 1]; /* strlen("val") + 1 */ int flag, errs = 0; MTest_Init(&argc, &argv); MPI_Info_create(&info); MPI_Info_set(info, key, val); MPI_Info_get(info, key, sizeof(buff) - 1, buff, &flag); if (flag) { if (strncmp(buff, val, sizeof(buff) - 1) != 0) { errs++; printf("returned value is %s, should be %s\n", buff, val); } } else { errs++; printf("key not found\n"); } MPI_Info_free(&info); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/project.txt0000644000175000017500000000763512620254305016602 0ustar mbanckmbanck mpi-testsuite-3.2+dfsg/ToDo0000644000175000017500000002476712620254305015170 0ustar mbanckmbanckTests to create or code to modify This list is based on the results of the coverage analysis. Because of errors in the GNU coverage code (it appears to lose data if two processes simulateously update the same coverage data file), there may be some items listed here that are already sufficiently tested. (completed tests moved below) 6. Collective code: a) mark off heterogeneous code so that it is not compiled for homogeneous devices -- partially done b) make sure that all algorithms are covered: short and long messages; differing numbers of processes, including non powers of two. May only need to further divide the Intel tests to include collective tests for varying numbers of processes. opband types: logical (f77), unsigned, long, long_long, unsigned long, short, unsigned short, char, unsigned char, byte opbor types: int, unsigned, long, long long, unsigned long, short, unsigned short, char, unsigned char, byte opbxor types: int, unsigned, long, long long, unsigned long, short, unsigned short, char, unsigned char, byte opland types: logical (f77), integer (f77) oplor types: logical (f77), integer (f77) oplxor types: int, unsigned, long, long long, unsigned long, short, unsigned short, char, unsigned char, float, double, long double, logical (f77), integer (f77) opmax types: unsigned, long, long long, unsigned long, short, unsigned short, char, unsigned char, float, double, long double opmaxloc types: (none tested?) opmin types: (none tested?) opminloc types: 2int, float_int, long_int, short_int, double_int, longdouble_int, 2real (f77), 2double_precision (f77) opprod types: long long, short, unsigned short, char, unsigned char, long double, double complex opsum types: unsigned, long, long long, unsigned long, short, unsigned short, char, unsigned char, float, double, long double, complex (f77), double complex (f77) red_scat: differnt alg lengths reduce: run with non powers of two, both odd and even values run with root in various places, particularly with non power of two nodes. d) Intercommunicator collective tests are needed. These could be implemented by using the non-collective definition code; e.g., the "trivial" implementation in terms of MPI_Send and MPI_Recv. The tests should use intercomms with both the same and different sized groups. Reduce_scatter Alltoallw e) Tests for MPI_IN_PLACE are needed f) Tests for sendcounts of 0 are needed, particularly in the xxxv functions and in the allxxx functions (e.g., alltoallv for ghostpoint exchange) 7. Set and get name for comm, predefined name MPI_COMM_PARENT. Also, test *ALL* datatype names. 9. Check the use of error macros in intercomm create and merge; also consider adding tests that would exercise this code. 10. Datatype info routines: get address (use address test), get count (for partial datatype; use example from MPI book), get elements (for partial datatype, done with pack and datatype) 11. pack (see lines 184-208 in pack.c) 12. status_set_elements - combine with get_elements to ensure that the correct values are set. 13. create_hindexed, create_hvector, and create-struct. These can use the MPI-1 tests, with the data-types suitably updated. Add these to the Intel tests. - done for C. Need to do Fortran (needs Fortran address_kind type) 15. type_extent - check lines 99/100 (in coverage file) 16. type util - make sure that setup of builtins is performed. 16a. Type free, get-extent, true_extent for derived types. Make sure all allocated space is freed 17a Add tests for comm call errhandler 18. comm set,get errhandler - use MPI-1 versions. Also apply to win, file. Also user-defined errhandlers. Make sure references work correctly (e.g., if freed while still in communicator, or freed after communicator is freed). 19. errutil.c - make sure MPIR_Err_preinit protected in error macros. Test by compiling with error checking off, then check symbol table of library 20. (win set/get/call errhandler) - see 18 22. Ensure group diff error checks are error macro protected 24. group intersection error check ; group union error check 26. ensure that attributes on comm self are freed in the correct order by MPI_Finalize (see MPI-2 spec; comm_self is freed FIRST, then the order is undefined). In particular, MPI_Finalized returns false in the comm_self attribute delete functions. 27. Add tests for finalized, initthread, ismain, querythread, version -- all but finalized and ismain from another thread 29. Add tests for generalized requests, including cancelling a generalized request. 30. Add tests for Request_free for regular send or receive requests. 34. Topology tests: graph-create - n == 0 topoutil - see line 92+; add test (dup communicator with topology) 35. Ixsend to self. If thread multiple, all MPI_Issend, MPI_Ssend to self, with no posted receive when send initiated. 38. Add tests for all RMA (get, put, accumulate, win_complete, win_test, win_lock, win_unlock, win_post, win_start, win_wait) 39. Add tests for dynamic processes open_port, close_port, accept, connect, spawn, spawn multiple 40. Add tests for all of MPI-IO not already covered. (These may now be covered by the John May test) These include the routines in the files (entire file if no notes on that file): open.c (a few lines, including if(!rank)ADIO_Set_shared_fp filenames with filesystem, e.g., nfs:name Open in APPEND mode delete.c filenames with filesystem get_view.c (roughly lines 99ff, at Type_contiguous) set_view.c (for MPI_DISPLACEMENT_CURRENT) set_info.c seek_sh.c (for MPI_SEEK_CUR) read_sh/write_sh atomicity && file system NOT NFS 41. Delete/free attributes on datatypes, windows; Fortran versions (to get int instead of pointer-to-int) 42. Keyval free (F90 and C++) 43. Type create indexed block 44. Type create resized 45. User-defined error handler invoked: a. On comm from Fortran on communicator b. On win from C++ and Fortran 46. Error output strings involving: a. MPI_MODE_NOSTORE errors b. MPI_MODE_NOCHECK errors c. MPI_MODE_NOPUT errors d. MPI_MODE_NOSUCCEED errors e. MPI_MODE_NOPRECEED errors f. Unknown assert value in window mode (as above) g. Datatype = 0x0 h. MPI_Op = MPI_REPLACE i. MPI_UNDEFINED j. MPI_IN_PLACE k. MPI_FILE_NULL l. MPI_WIN_NULL m. MPI_REQUEST_NULL o. MPI_Count output (Note dangerous and improper assert! in errutil.c!) 47. Use of "CombineSpecificCodes" (static in file); MPIR_Err_combine_codes Also, Replace the calls to MPIR_Group_release in Finalize with MPIR_Process.group_release, and set the pointer to this routine when the group code is used. --- DONE --- 1. Free keyvals, while in use in a communicator and while not in use 2. User copy and delete functions on keyvals a) Also check error return on attribute copy during comm dup. This should be a recoverable error. 3. Check all 7 predefined attributes on comm world 4. Set multiple attributes, in various orders (to ensure that all branches of the insert-into-list of keyvals code are exercised). 5. Perform attribute tests with comm, type, win (same code?) 6. Collective tests: b. Misc opland types: long long, char, unsigned char, float, double, long double oplor types: long long, char, unsigned char, float, double, long double bcast: non contig input type (e.g., broadcast a vector). bcast: long messages alltoall: long messages are not covered c) Need tests for Alltoallw, Exscan. d. Intercomm collective bcast reduce allreduce allgather Gatherv Scatterv Allgatherv Alltoall Alltoallv Barrier 7. Set and get name for comm, type, win. Check predefined names. 8. dup an intercommunicator (context generation in commutil); also check the handling of attributes after the dup. - dup done, still need to check attribute handling - done 8a) Get group of an intercommunicator 14. type_dup. Apply to both predefined and user defined types. (Should be done; see fkeyvaltype) 17. Add tests for add-error-class, code, string; -- done 21. Ensure group compare unequal (line 142--145 in source) are tested; this is for groups of the same size but with different processes -- done 23. group incl with empty group as output (n == 0) 25. groupdebug.c - use debug macro marker for debug routine (and do not compile unless enable-g=something is set). 28. bsendutil.c - construct tests to ensure that all branches are tested. For example, arrange for different completion orders for entries added to the buffer (e.g., use send but then do the receives in a particular order, and make the data large enough to trigger rendezvous sending in the internal Isend). - test added (need to test against the coverage tests) 31. request_get_status; can be tested as if MPI_Test, but does not free the request (really a nondestructive MPI_Test) (also see 29.) 32. For testall, testsome, waitall, and waitsome. Add tests that trigger the MPI_ERR_IN_STATUS, by using MPI_ERR_TRUNCATE for receives. -- done for all four. 33. Add tests for lookup/publish/unpublish. use host:port values as port name. -- done 34. Topology tests: cart-map - newrank undefined - done cart-shift - displ == 0 - done cart-sub - remove all dimensions - done dims-create - see code FIXME (-done-maybe) graph_map - newrank undefined - done topotest - undefined - done 36. Add tests for info delete, dup, getvaluelen. Add enough tests to check insert at beginning, middle, end. -- all done 37. Add tests for info set that replaces an existing value. -- done 38. Add tests for all RMA (alloc mem, free mem, (get, put, accumulate)- with win_fence, win_create, win_free, win_get_group, win_get_name, win_set_name, 40. Add tests for all of MPI-IO not already covered. Most of these were be covered by the John May test. These include the routines in the files (entire file if no notes on that file): get_posn_sh.c iotest.c iread_sh.c iwrite_sh.c open.c (a few lines, including if(!rank)ADIO_Set_shared_fp rd_atallb.c rd_atalle.c read_at.c (at "convert count and offset to bytes") read_ord.c read_ordb.c read_sh.c (for ADIO_ReadStrided) seek.c (for MPI_SEEK_SET) seek_sh.c (for MPI_SEEK_END) wr_atallb.c write_at.c (at "convert bufocount and offset to bytes") write_ord.c write_ordb.c write_sh.c (ADIOI_WRITE_LOCK and UNLOCK; also ADIO_WriteStrided) mpi-testsuite-3.2+dfsg/datatype/0000755000175000017500000000000012621010232016161 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/datatype/zero-blklen-vector.c0000644000175000017500000000174012620254305022065 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include int main(int argc, char *argv[]) { int iam, np; int m = 2, n = 0, lda = 1; double A[2]; MPI_Comm comm = MPI_COMM_WORLD; MPI_Datatype type = MPI_DOUBLE, vtype; MPI_Init(&argc, &argv); MPI_Comm_size(comm, &np); MPI_Comm_rank(comm, &iam); if (np < 2) { printf("Should be at least 2 processes for the test\n"); } else { MPI_Type_vector(n, m, lda, type, &vtype); MPI_Type_commit(&vtype); A[0] = -1.0 - 0.1 * iam; A[1] = 0.5 + 0.1 * iam; printf("In process %i of %i before Bcast: A = %f,%f\n", iam, np, A[0], A[1]); MPI_Bcast(A, 1, vtype, 0, comm); printf("In process %i of %i after Bcast: A = %f,%f\n", iam, np, A[0], A[1]); MPI_Type_free(&vtype); } MPI_Finalize(); } mpi-testsuite-3.2+dfsg/datatype/hindexed-zeros.c0000644000175000017500000001376112620254305021277 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include #include "mpi.h" static int verbose = 0; int main(int argc, char *argv[]); int parse_args(int argc, char **argv); int hindexed_zerotype_test(void); int hindexed_sparsetype_test(void); struct test_struct_1 { int a, b, c, d; }; int main(int argc, char *argv[]) { int err, errs = 0; /* Initialize MPI */ MPI_Init(&argc, &argv); parse_args(argc, argv); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); err = hindexed_zerotype_test(); if (verbose && err) fprintf(stderr, "error in hindexed_zerotype_test\n"); errs += err; err = hindexed_sparsetype_test(); if (verbose && err) fprintf(stderr, "error in hindexed_sparsetype_test\n"); errs += err; /* print message and exit */ if (errs) { fprintf(stderr, "Found %d errors\n", errs); } else { printf(" No Errors\n"); } MPI_Finalize(); return 0; } /* tests with an hindexed type with all zero length blocks */ int hindexed_zerotype_test(void) { int err, errs = 0; int count, elements; MPI_Datatype mytype; MPI_Request request; MPI_Status status; int blks[] = { 0, 0, 0 }; MPI_Aint disps[] = { 0, 4, 16 }; err = MPI_Type_hindexed(3, blks, disps, MPI_INT, &mytype); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Type_hindexed returned error\n"); } } MPI_Type_commit(&mytype); err = MPI_Irecv(NULL, 2, mytype, 0, 0, MPI_COMM_SELF, &request); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Irecv returned error\n"); } } err = MPI_Send(NULL, 1, mytype, 0, 0, MPI_COMM_SELF); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Send returned error\n"); } } err = MPI_Wait(&request, &status); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Wait returned error\n"); } } /* verify count and elements */ err = MPI_Get_count(&status, mytype, &count); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Get_count returned error\n"); } } if (count != 0) { errs++; if (verbose) { fprintf(stderr, "count = %d; should be 0\n", count); } } err = MPI_Get_elements(&status, mytype, &elements); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Get_elements returned error\n"); } } if (elements != 0) { errs++; if (verbose) { fprintf(stderr, "elements = %d; should be 0\n", elements); } } MPI_Type_free(&mytype); return errs; } /* tests a short receive into a sparse hindexed type with a zero * length block in it. sort of eccentric, but we've got the basic * stuff covered with other tests. */ int hindexed_sparsetype_test(void) { int err, errs = 0; int i, count, elements; MPI_Datatype mytype; MPI_Request request; MPI_Status status; int sendbuf[6] = { 1, 2, 3, 4, 5, 6 }; int recvbuf[16]; int correct[16] = { 1, -2, 4, -4, 2, 3, 5, -8, -9, -10, 6, -12, -13, -14, -15, -16 }; int blks[] = { 1, 0, 2, 1 }; MPI_Aint disps[] = { 0, 1 * sizeof(int), 4 * sizeof(int), 2 * sizeof(int) }; err = MPI_Type_hindexed(4, blks, disps, MPI_INT, &mytype); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Type_hindexed returned error\n"); } } MPI_Type_commit(&mytype); for (i = 0; i < 16; i++) recvbuf[i] = -(i + 1); err = MPI_Irecv(recvbuf, 2, mytype, 0, 0, MPI_COMM_SELF, &request); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Irecv returned error\n"); } } err = MPI_Send(sendbuf, 6, MPI_INT, 0, 0, MPI_COMM_SELF); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Send returned error\n"); } } err = MPI_Wait(&request, &status); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Wait returned error\n"); } } /* verify data */ for (i = 0; i < 16; i++) { if (recvbuf[i] != correct[i]) { errs++; if (verbose) { fprintf(stderr, "recvbuf[%d] = %d; should be %d\n", i, recvbuf[i], correct[i]); } } } /* verify count and elements */ err = MPI_Get_count(&status, mytype, &count); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Get_count returned error\n"); } } if (count != MPI_UNDEFINED) { errs++; if (verbose) { fprintf(stderr, "count = %d; should be MPI_UNDEFINED (%d)\n", count, MPI_UNDEFINED); } } err = MPI_Get_elements(&status, mytype, &elements); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Get_elements returned error\n"); } } if (elements != 6) { errs++; if (verbose) { fprintf(stderr, "elements = %d; should be 6\n", elements); } } MPI_Type_free(&mytype); return errs; } int parse_args(int argc, char **argv) { /* * int ret; * * while ((ret = getopt(argc, argv, "v")) >= 0) * { * switch (ret) { * case 'v': * verbose = 1; * break; * } * } */ if (argc > 1 && strcmp(argv[1], "-v") == 0) verbose = 1; return 0; } mpi-testsuite-3.2+dfsg/datatype/get-elements-pairtype.c0000644000175000017500000000532512620254305022570 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include static int verbose = 0; /* tests */ int double_int_test(void); /* helper functions */ int parse_args(int argc, char **argv); int main(int argc, char **argv) { int err, errs = 0; MPI_Init(&argc, &argv); /* MPI-1.2 doesn't allow for MPI_Init(0,0) */ parse_args(argc, argv); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); /* perform some tests */ err = double_int_test(); if (err && verbose) fprintf(stderr, "%d errors in double_int test.\n", err); errs += err; /* print message and exit */ if (errs) { fprintf(stderr, "Found %d errors\n", errs); } else { printf(" No Errors\n"); } MPI_Finalize(); return 0; } /* send a { double, int, double} tuple and receive as a pair of * MPI_DOUBLE_INTs. this should (a) be valid, and (b) result in an * element count of 3. */ int double_int_test(void) { int err, errs = 0, count; struct { double a; int b; double c; } foo; struct { double a; int b; double c; int d; } bar; int blks[3] = { 1, 1, 1 }; MPI_Aint disps[3] = { 0, 0, 0 }; MPI_Datatype types[3] = { MPI_DOUBLE, MPI_INT, MPI_DOUBLE }; MPI_Datatype stype; MPI_Status recvstatus; /* fill in disps[1..2] with appropriate offset */ disps[1] = (MPI_Aint) ((char *) &foo.b - (char *) &foo.a); disps[2] = (MPI_Aint) ((char *) &foo.c - (char *) &foo.a); MPI_Type_create_struct(3, blks, disps, types, &stype); MPI_Type_commit(&stype); err = MPI_Sendrecv((const void *) &foo, 1, stype, 0, 0, (void *) &bar, 2, MPI_DOUBLE_INT, 0, 0, MPI_COMM_SELF, &recvstatus); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, "MPI_Sendrecv returned error (%d)\n", err); return errs; } err = MPI_Get_elements(&recvstatus, MPI_DOUBLE_INT, &count); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, "MPI_Get_elements returned error (%d)\n", err); } if (count != 3) { errs++; if (verbose) fprintf(stderr, "MPI_Get_elements returned count of %d, should be 3\n", count); } MPI_Type_free(&stype); return errs; } int parse_args(int argc, char **argv) { if (argc > 1 && strcmp(argv[1], "-v") == 0) verbose = 1; return 0; } mpi-testsuite-3.2+dfsg/datatype/hindexed_block.c0000644000175000017500000002151212620254305021302 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitestconf.h" #ifdef HAVE_STRING_H #include #endif #if !defined(USE_STRICT_MPI) && defined(MPICH) #define TEST_HINDEXED_BLOCK 1 #endif static int verbose = 0; /* tests */ int hindexed_block_contig_test(void); int hindexed_block_vector_test(void); /* helper functions */ int parse_args(int argc, char **argv); static int pack_and_unpack(char *typebuf, int count, MPI_Datatype datatype, int typebufsz); int main(int argc, char **argv) { int err, errs = 0; int rank; MPI_Init(&argc, &argv); /* MPI-1.2 doesn't allow for MPI_Init(0,0) */ MPI_Comm_rank(MPI_COMM_WORLD, &rank); #if defined(TEST_HINDEXED_BLOCK) parse_args(argc, argv); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); /* perform some tests */ err = hindexed_block_contig_test(); if (err && verbose) fprintf(stderr, "%d errors in hindexed_block test.\n", err); errs += err; err = hindexed_block_vector_test(); if (err && verbose) fprintf(stderr, "%d errors in hindexed_block vector test.\n", err); errs += err; #endif /*defined(TEST_HINDEXED_BLOCK) */ /* print message and exit */ if (rank == 0) { if (errs) { fprintf(stderr, "Found %d errors\n", errs); } else { printf(" No Errors\n"); } } MPI_Finalize(); return 0; } #if defined(TEST_HINDEXED_BLOCK) /* hindexed_block_contig_test() * * Tests behavior with a hindexed_block that can be converted to a * contig easily. This is specifically for coverage. * * Returns the number of errors encountered. */ int hindexed_block_contig_test(void) { int buf[4] = { 7, -1, -2, -3 }; int err, errs = 0; int i, count = 1; MPI_Aint disp = 0; MPI_Datatype newtype; int size, int_size; MPI_Aint extent; err = MPI_Type_create_hindexed_block(count, 1, &disp, MPI_INT, &newtype); if (err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "error creating struct type in hindexed_block_contig_test()\n"); } errs++; } MPI_Type_size(MPI_INT, &int_size); err = MPI_Type_size(newtype, &size); if (err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "error obtaining type size in hindexed_block_contig_test()\n"); } errs++; } if (size != int_size) { if (verbose) { fprintf(stderr, "error: size != int_size in hindexed_block_contig_test()\n"); } errs++; } err = MPI_Type_extent(newtype, &extent); if (err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "error obtaining type extent in hindexed_block_contig_test()\n"); } errs++; } if (extent != int_size) { if (verbose) { fprintf(stderr, "error: extent != int_size in hindexed_block_contig_test()\n"); } errs++; } MPI_Type_commit(&newtype); err = pack_and_unpack((char *) buf, 1, newtype, 4 * sizeof(int)); if (err != 0) { if (verbose) { fprintf(stderr, "error packing/unpacking in hindexed_block_contig_test()\n"); } errs += err; } for (i = 0; i < 4; i++) { int goodval; switch (i) { case 0: goodval = 7; break; default: goodval = 0; /* pack_and_unpack() zeros before unpack */ break; } if (buf[i] != goodval) { errs++; if (verbose) fprintf(stderr, "buf[%d] = %d; should be %d\n", i, buf[i], goodval); } } MPI_Type_free(&newtype); return errs; } /* hindexed_block_vector_test() * * Tests behavior with a hindexed_block of some vector types; * this shouldn't be easily convertable into anything else. * * Returns the number of errors encountered. */ int hindexed_block_vector_test(void) { #define NELT (18) int buf[NELT] = { -1, -1, -1, 1, -2, 2, -3, -3, -3, -4, -4, -4, 3, -5, 4, 5, -6, 6 }; int expected[NELT] = { 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 3, 0, 4, 5, 0, 6 }; int err, errs = 0; int i, count = 3; MPI_Aint disp[] = { 1, 4, 5 }; MPI_Datatype vectype, newtype; int size, int_size; MPI_Aint extent; /* create a vector type of 2 ints, skipping one in between */ err = MPI_Type_vector(2, 1, 2, MPI_INT, &vectype); if (err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "error creating vector type in hindexed_block_contig_test()\n"); } errs++; } MPI_Type_commit(&vectype); MPI_Type_extent(vectype, &extent); for (i = 0; i < count; i++) disp[i] *= extent; err = MPI_Type_create_hindexed_block(count, 1, disp, vectype, &newtype); if (err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "error creating hindexed_block type in hindexed_block_contig_test()\n"); } errs++; } MPI_Type_commit(&newtype); err = MPI_Type_size(newtype, &size); if (err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "error obtaining type size in hindexed_block_contig_test()\n"); } errs++; } MPI_Type_size(MPI_INT, &int_size); if (size != 6 * int_size) { if (verbose) { fprintf(stderr, "error: size != 6 * int_size in hindexed_block_contig_test()\n"); } errs++; } MPI_Type_extent(newtype, &extent); err = pack_and_unpack((char *) buf, 1, newtype, NELT * sizeof(int)); if (err != 0) { if (verbose) { fprintf(stderr, "error packing/unpacking in hindexed_block_vector_test()\n"); } errs += err; } for (i = 0; i < NELT; i++) { if (buf[i] != expected[i]) { errs++; if (verbose) fprintf(stderr, "buf[%d] = %d; should be %d\n", i, buf[i], expected[i]); } } MPI_Type_free(&vectype); MPI_Type_free(&newtype); return errs; } /* pack_and_unpack() * * Perform packing and unpacking of a buffer for the purposes of checking * to see if we are processing a type correctly. Zeros the buffer between * these two operations, so the data described by the type should be in * place upon return but all other regions of the buffer should be zero. * * Parameters: * typebuf - pointer to buffer described by datatype and count that * will be packed and then unpacked into * count, datatype - description of typebuf * typebufsz - size of typebuf; used specifically to zero the buffer * between the pack and unpack steps * */ static int pack_and_unpack(char *typebuf, int count, MPI_Datatype datatype, int typebufsz) { char *packbuf; int err, errs = 0, pack_size, type_size, position; err = MPI_Type_size(datatype, &type_size); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "error in MPI_Type_size call; aborting after %d errors\n", errs); } return errs; } type_size *= count; err = MPI_Pack_size(count, datatype, MPI_COMM_SELF, &pack_size); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "error in MPI_Pack_size call; aborting after %d errors\n", errs); } return errs; } packbuf = (char *) malloc(pack_size); if (packbuf == NULL) { errs++; if (verbose) { fprintf(stderr, "error in malloc call; aborting after %d errors\n", errs); } return errs; } position = 0; err = MPI_Pack(typebuf, count, datatype, packbuf, type_size, &position, MPI_COMM_SELF); if (position != type_size) { errs++; if (verbose) fprintf(stderr, "position = %d; should be %d (pack)\n", position, type_size); } memset(typebuf, 0, typebufsz); position = 0; err = MPI_Unpack(packbuf, type_size, &position, typebuf, count, datatype, MPI_COMM_SELF); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "error in MPI_Unpack call; aborting after %d errors\n", errs); } return errs; } free(packbuf); if (position != type_size) { errs++; if (verbose) fprintf(stderr, "position = %d; should be %d (unpack)\n", position, type_size); } return errs; } int parse_args(int argc, char **argv) { if (argc > 1 && strcmp(argv[1], "-v") == 0) verbose = 1; return 0; } #endif /*defined(TEST_HINDEXED_BLOCK) */ mpi-testsuite-3.2+dfsg/datatype/unusual-noncontigs.c0000644000175000017500000004415412620254305022222 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include #include #include "mpi.h" /* The default behavior of the test routines should be to briefly indicate the cause of any errors - in this test, that means that verbose needs to be set. Verbose should turn on output that is independent of error levels. */ static int verbose = 1; int main(int argc, char *argv[]); int parse_args(int argc, char **argv); int struct_negdisp_test(void); int vector_negstride_test(void); int indexed_negdisp_test(void); int struct_struct_test(void); int flatten_test(void); int build_array_section_type(MPI_Aint aext, MPI_Aint astart, MPI_Aint aend, MPI_Datatype * datatype); int main(int argc, char *argv[]) { int err, errs = 0; /* Initialize MPI */ MPI_Init(&argc, &argv); parse_args(argc, argv); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); err = struct_negdisp_test(); if (verbose && err) fprintf(stderr, "error in struct_negdisp_test\n"); errs += err; err = vector_negstride_test(); if (verbose && err) fprintf(stderr, "error in vector_negstride_test\n"); errs += err; err = indexed_negdisp_test(); if (verbose && err) fprintf(stderr, "error in indexed_negdisp_test\n"); errs += err; err = struct_struct_test(); if (verbose && err) fprintf(stderr, "error in struct_struct_test\n"); errs += err; err = flatten_test(); if (verbose && err) fprintf(stderr, "error in flatten_test\n"); errs += err; /* print message and exit */ if (errs) { fprintf(stderr, "Found %d errors\n", errs); } else { printf(" No Errors\n"); } MPI_Finalize(); return 0; } /* test uses a struct type that describes data that is contiguous, * but processed in a noncontiguous way. */ int struct_negdisp_test(void) { int err, errs = 0; int sendbuf[6] = { 1, 2, 3, 4, 5, 6 }; int recvbuf[6] = { -1, -2, -3, -4, -5, -6 }; MPI_Datatype mystruct; MPI_Request request; MPI_Status status; MPI_Aint disps[2] = { 0, -1 * ((int) sizeof(int)) }; int blks[2] = { 1, 1, }; MPI_Datatype types[2] = { MPI_INT, MPI_INT }; err = MPI_Type_struct(2, blks, disps, types, &mystruct); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Type_struct returned error\n"); } } MPI_Type_commit(&mystruct); err = MPI_Irecv(recvbuf + 1, 4, MPI_INT, 0, 0, MPI_COMM_SELF, &request); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Irecv returned error\n"); } } err = MPI_Send(sendbuf + 2, 2, mystruct, 0, 0, MPI_COMM_SELF); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Send returned error\n"); } } err = MPI_Wait(&request, &status); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Wait returned error\n"); } } /* verify data */ if (recvbuf[0] != -1) { errs++; if (verbose) { fprintf(stderr, "recvbuf[0] = %d; should be %d\n", recvbuf[0], -1); } } if (recvbuf[1] != 3) { errs++; if (verbose) { fprintf(stderr, "recvbuf[1] = %d; should be %d\n", recvbuf[1], 3); } } if (recvbuf[2] != 2) { errs++; if (verbose) { fprintf(stderr, "recvbuf[2] = %d; should be %d\n", recvbuf[2], 2); } } if (recvbuf[3] != 5) { errs++; if (verbose) { fprintf(stderr, "recvbuf[3] = %d; should be %d\n", recvbuf[3], 5); } } if (recvbuf[4] != 4) { errs++; if (verbose) { fprintf(stderr, "recvbuf[4] = %d; should be %d\n", recvbuf[4], 4); } } if (recvbuf[5] != -6) { errs++; if (verbose) { fprintf(stderr, "recvbuf[5] = %d; should be %d\n", recvbuf[5], -6); } } MPI_Type_free(&mystruct); return errs; } /* test uses a vector type that describes data that is contiguous, * but processed in a noncontiguous way. this is effectively the * same type as in the struct_negdisp_test above. */ int vector_negstride_test(void) { int err, errs = 0; int sendbuf[6] = { 1, 2, 3, 4, 5, 6 }; int recvbuf[6] = { -1, -2, -3, -4, -5, -6 }; MPI_Datatype myvector; MPI_Request request; MPI_Status status; err = MPI_Type_vector(2, 1, -1, MPI_INT, &myvector); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Type_vector returned error\n"); } } MPI_Type_commit(&myvector); err = MPI_Irecv(recvbuf + 1, 4, MPI_INT, 0, 0, MPI_COMM_SELF, &request); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Irecv returned error\n"); } } err = MPI_Send(sendbuf + 2, 2, myvector, 0, 0, MPI_COMM_SELF); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Send returned error\n"); } } err = MPI_Wait(&request, &status); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Wait returned error\n"); } } /* verify data */ if (recvbuf[0] != -1) { errs++; if (verbose) { fprintf(stderr, "recvbuf[0] = %d; should be %d\n", recvbuf[0], -1); } } if (recvbuf[1] != 3) { errs++; if (verbose) { fprintf(stderr, "recvbuf[1] = %d; should be %d\n", recvbuf[1], 3); } } if (recvbuf[2] != 2) { errs++; if (verbose) { fprintf(stderr, "recvbuf[2] = %d; should be %d\n", recvbuf[2], 2); } } if (recvbuf[3] != 5) { errs++; if (verbose) { fprintf(stderr, "recvbuf[3] = %d; should be %d\n", recvbuf[3], 5); } } if (recvbuf[4] != 4) { errs++; if (verbose) { fprintf(stderr, "recvbuf[4] = %d; should be %d\n", recvbuf[4], 4); } } if (recvbuf[5] != -6) { errs++; if (verbose) { fprintf(stderr, "recvbuf[5] = %d; should be %d\n", recvbuf[5], -6); } } MPI_Type_free(&myvector); return errs; } /* test uses a indexed type that describes data that is contiguous, * but processed in a noncontiguous way. this is effectively the same * type as in the two tests above. */ int indexed_negdisp_test(void) { int err, errs = 0; int sendbuf[6] = { 1, 2, 3, 4, 5, 6 }; int recvbuf[6] = { -1, -2, -3, -4, -5, -6 }; MPI_Datatype myindexed; MPI_Request request; MPI_Status status; int disps[2] = { 0, -1 }; int blks[2] = { 1, 1 }; err = MPI_Type_indexed(2, blks, disps, MPI_INT, &myindexed); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Type_indexed returned error\n"); } } MPI_Type_commit(&myindexed); err = MPI_Irecv(recvbuf + 1, 4, MPI_INT, 0, 0, MPI_COMM_SELF, &request); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Irecv returned error\n"); } } err = MPI_Send(sendbuf + 2, 2, myindexed, 0, 0, MPI_COMM_SELF); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Send returned error\n"); } } err = MPI_Wait(&request, &status); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Wait returned error\n"); } } /* verify data */ if (recvbuf[0] != -1) { errs++; if (verbose) { fprintf(stderr, "recvbuf[0] = %d; should be %d\n", recvbuf[0], -1); } } if (recvbuf[1] != 3) { errs++; if (verbose) { fprintf(stderr, "recvbuf[1] = %d; should be %d\n", recvbuf[1], 3); } } if (recvbuf[2] != 2) { errs++; if (verbose) { fprintf(stderr, "recvbuf[2] = %d; should be %d\n", recvbuf[2], 2); } } if (recvbuf[3] != 5) { errs++; if (verbose) { fprintf(stderr, "recvbuf[3] = %d; should be %d\n", recvbuf[3], 5); } } if (recvbuf[4] != 4) { errs++; if (verbose) { fprintf(stderr, "recvbuf[4] = %d; should be %d\n", recvbuf[4], 4); } } if (recvbuf[5] != -6) { errs++; if (verbose) { fprintf(stderr, "recvbuf[5] = %d; should be %d\n", recvbuf[5], -6); } } MPI_Type_free(&myindexed); return errs; } #define check_err(fn_name_) \ do { \ if (err != MPI_SUCCESS) { \ errs++; \ if (verbose) { \ int len_; \ char err_str_[MPI_MAX_ERROR_STRING]; \ MPI_Error_string(err, err_str_, &len_); \ fprintf(stderr, #fn_name_ " failed at line %d, err=%d: %s\n", \ __LINE__, err, err_str_); \ } \ } \ } while (0) /* test case from tt#1030 ported to C * * Thanks to Matthias Lieber for reporting the bug and providing a good test * program. */ int struct_struct_test(void) { int err, errs = 0; int i, j, dt_size = 0; MPI_Request req[2]; #define COUNT (2) MPI_Aint displ[COUNT]; int blens[COUNT]; MPI_Datatype types[COUNT]; MPI_Datatype datatype; /* A slight difference from the F90 test: F90 arrays are column-major, C * arrays are row-major. So we invert the order of dimensions. */ #define N (2) #define M (4) int array[N][M] = { {-1, -1, -1, -1}, {-1, -1, -1, -1} }; int expected[N][M] = { {-1, 1, 2, 5}, {-1, 3, 4, 6} }; int seq_array[N * M]; MPI_Aint astart, aend; MPI_Aint size_exp = 0; /* 1st section selects elements 1 and 2 out of 2nd dimension, complete 1st dim. * should receive the values 1, 2, 3, 4 */ astart = 1; aend = 2; err = build_array_section_type(M, astart, aend, &types[0]); if (err) { errs++; if (verbose) fprintf(stderr, "build_array_section_type failed\n"); return errs; } blens[0] = N; displ[0] = 0; size_exp = size_exp + N * (aend - astart + 1) * sizeof(int); /* 2nd section selects last element of 2nd dimension, complete 1st dim. * should receive the values 5, 6 */ astart = 3; aend = 3; err = build_array_section_type(M, astart, aend, &types[1]); if (err) { errs++; if (verbose) fprintf(stderr, "build_array_section_type failed\n"); return errs; } blens[1] = N; displ[1] = 0; size_exp = size_exp + N * (aend - astart + 1) * sizeof(int); /* create type */ err = MPI_Type_create_struct(COUNT, blens, displ, types, &datatype); check_err(MPI_Type_create_struct); err = MPI_Type_commit(&datatype); check_err(MPI_Type_commit); err = MPI_Type_size(datatype, &dt_size); check_err(MPI_Type_size); if (dt_size != size_exp) { errs++; if (verbose) fprintf(stderr, "unexpected type size\n"); } /* send the type to ourselves to make sure that the type describes data correctly */ for (i = 0; i < (N * M); ++i) seq_array[i] = i + 1; /* source values 1..(N*M) */ err = MPI_Isend(&seq_array[0], dt_size / sizeof(int), MPI_INT, 0, 42, MPI_COMM_SELF, &req[0]); check_err(MPI_Isend); err = MPI_Irecv(&array[0][0], 1, datatype, 0, 42, MPI_COMM_SELF, &req[1]); check_err(MPI_Irecv); err = MPI_Waitall(2, req, MPI_STATUSES_IGNORE); check_err(MPI_Waitall); /* check against expected */ for (i = 0; i < N; ++i) { for (j = 0; j < M; ++j) { if (array[i][j] != expected[i][j]) { errs++; if (verbose) fprintf(stderr, "array[%d][%d]=%d, should be %d\n", i, j, array[i][j], expected[i][j]); } } } err = MPI_Type_free(&datatype); check_err(MPI_Type_free); err = MPI_Type_free(&types[0]); check_err(MPI_Type_free); err = MPI_Type_free(&types[1]); check_err(MPI_Type_free); return errs; #undef M #undef N #undef COUNT } /* create a datatype for a 1D int array subsection - a subsection of the first dimension is defined via astart, aend - indexes are assumed to start with 0, that means: - 0 <= astart <= aend < aext - astart and aend are inclusive example: aext = 8, astart=2, aend=4 would produce: index | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 1D array ############################### datatype LB ########### UB */ int build_array_section_type(MPI_Aint aext, MPI_Aint astart, MPI_Aint aend, MPI_Datatype * datatype) { #define COUNT (3) int err, errs = 0; MPI_Aint displ[COUNT]; int blens[COUNT]; MPI_Datatype types[COUNT]; *datatype = MPI_DATATYPE_NULL; /* lower bound marker */ types[0] = MPI_LB; displ[0] = 0; blens[0] = 1; /* subsection starting at astart */ displ[1] = astart * sizeof(int); types[1] = MPI_INT; blens[1] = aend - astart + 1; /* upper bound marker */ types[2] = MPI_UB; displ[2] = aext * sizeof(int); blens[2] = 1; err = MPI_Type_create_struct(COUNT, blens, displ, types, datatype); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Type_create_struct failed, err=%d\n", err); } } return errs; #undef COUNT } /* start_idx is the "zero" point for the unpack */ static int pack_and_check_expected(MPI_Datatype type, const char *name, int start_idx, int size, int *array, int *expected) { int i; int err, errs = 0; int pack_size = -1; int *pack_buf = NULL; int pos; int type_size = -1; int sendbuf[8] = { 0, 1, 2, 3, 4, 5, 6, 7 }; err = MPI_Type_size(type, &type_size); check_err(MPI_Type_size); assert(sizeof(sendbuf) >= type_size); err = MPI_Pack_size(type_size / sizeof(int), MPI_INT, MPI_COMM_SELF, &pack_size); check_err(MPI_Pack_size); pack_buf = malloc(pack_size); assert(pack_buf); pos = 0; err = MPI_Pack(&sendbuf[0], type_size / sizeof(int), MPI_INT, pack_buf, pack_size, &pos, MPI_COMM_SELF); check_err(MPI_Pack); pos = 0; err = MPI_Unpack(pack_buf, pack_size, &pos, &array[start_idx], 1, type, MPI_COMM_SELF); check_err(MPI_Unpack); free(pack_buf); /* check against expected */ for (i = 0; i < size; ++i) { if (array[i] != expected[i]) { errs++; if (verbose) fprintf(stderr, "%s: array[%d]=%d, should be %d\n", name, i, array[i], expected[i]); } } return errs; } /* regression for tt#1030, checks for bad offset math in the * blockindexed and indexed dataloop flattening code */ int flatten_test(void) { int err, errs = 0; #define ARR_SIZE (9) /* real indices 0 1 2 3 4 5 6 7 8 * indices w/ &array[3] -3 -2 -1 0 1 2 3 4 5 */ int array[ARR_SIZE] = { -1, -1, -1, -1, -1, -1, -1, -1, -1 }; int expected[ARR_SIZE] = { -1, 0, 1, -1, 2, -1, 3, -1, 4 }; MPI_Datatype idx_type = MPI_DATATYPE_NULL; MPI_Datatype blkidx_type = MPI_DATATYPE_NULL; MPI_Datatype combo = MPI_DATATYPE_NULL; #define COUNT (2) int displ[COUNT]; MPI_Aint adispl[COUNT]; int blens[COUNT]; MPI_Datatype types[COUNT]; /* indexed type layout: * XX_X * 2101 <-- pos (left of 0 is neg) * * different blens to prevent optimization into a blockindexed */ blens[0] = 2; displ[0] = -2; /* elements, puts byte after block end at 0 */ blens[1] = 1; displ[1] = 1; /*elements */ err = MPI_Type_indexed(COUNT, blens, displ, MPI_INT, &idx_type); check_err(MPI_Type_indexed); err = MPI_Type_commit(&idx_type); check_err(MPI_Type_commit); /* indexed type layout: * _X_X * 2101 <-- pos (left of 0 is neg) */ displ[0] = -1; displ[1] = 1; err = MPI_Type_create_indexed_block(COUNT, 1, displ, MPI_INT, &blkidx_type); check_err(MPI_Type_indexed_block); err = MPI_Type_commit(&blkidx_type); check_err(MPI_Type_commit); /* struct type layout: * II_I_B_B (I=idx_type, B=blkidx_type) * 21012345 <-- pos (left of 0 is neg) */ blens[0] = 1; adispl[0] = 0; /*bytes */ types[0] = idx_type; blens[1] = 1; adispl[1] = 4 * sizeof(int); /* bytes */ types[1] = blkidx_type; /* must be a struct in order to trigger flattening code */ err = MPI_Type_create_struct(COUNT, blens, adispl, types, &combo); check_err(MPI_Type_indexed); err = MPI_Type_commit(&combo); check_err(MPI_Type_commit); /* pack/unpack with &array[3] */ errs += pack_and_check_expected(combo, "combo", 3, ARR_SIZE, array, expected); MPI_Type_free(&combo); MPI_Type_free(&idx_type); MPI_Type_free(&blkidx_type); return errs; #undef COUNT } #undef check_err int parse_args(int argc, char **argv) { /* * int ret; * * while ((ret = getopt(argc, argv, "v")) >= 0) * { * switch (ret) { * case 'v': * verbose = 1; * break; * } * } */ if (argc > 1 && strcmp(argv[1], "-v") == 0) verbose = 1; return 0; } mpi-testsuite-3.2+dfsg/datatype/darray-pack.c0000644000175000017500000002343512620254305020544 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include #include "mpitest.h" /* The default behavior of the test routines should be to briefly indicate the cause of any errors - in this test, that means that verbose needs to be set. Verbose should turn on output that is independent of error levels. */ static int verbose = 1; /* tests */ int darray_2d_c_test1(void); int darray_4d_c_test1(void); /* helper functions */ static int parse_args(int argc, char **argv); static int pack_and_unpack(char *typebuf, int count, MPI_Datatype datatype, int typebufsz); int main(int argc, char **argv) { int err, errs = 0; MTest_Init(&argc, &argv); parse_args(argc, argv); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); /* perform some tests */ err = darray_2d_c_test1(); if (err && verbose) fprintf(stderr, "%d errors in 2d darray c test 1.\n", err); errs += err; err = darray_4d_c_test1(); if (err && verbose) fprintf(stderr, "%d errors in 4d darray c test 1.\n", err); errs += err; /* print message and exit */ /* Allow the use of more than one process - some MPI implementations * (including IBM's) check that the number of processes given to * Type_create_darray is no larger than MPI_COMM_WORLD */ MTest_Finalize(errs); MPI_Finalize(); return 0; } /* darray_2d_test1() * * Performs a sequence of tests building darrays with single-element * blocks, running through all the various positions that the element might * come from. * * Returns the number of errors encountered. */ int darray_2d_c_test1(void) { MPI_Datatype darray; int array[9]; /* initialized below */ int array_size[2] = { 3, 3 }; int array_distrib[2] = { MPI_DISTRIBUTE_BLOCK, MPI_DISTRIBUTE_BLOCK }; int array_dargs[2] = { MPI_DISTRIBUTE_DFLT_DARG, MPI_DISTRIBUTE_DFLT_DARG }; int array_psizes[2] = { 3, 3 }; int i, rank, err, errs = 0, sizeoftype; /* pretend we are each rank, one at a time */ for (rank = 0; rank < 9; rank++) { /* set up buffer */ for (i = 0; i < 9; i++) { array[i] = i; } /* set up type */ err = MPI_Type_create_darray(9, /* size */ rank, 2, /* dims */ array_size, array_distrib, array_dargs, array_psizes, MPI_ORDER_C, MPI_INT, &darray); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "error in MPI_Type_create_darray call; aborting after %d errors\n", errs); } MTestPrintError(err); return errs; } MPI_Type_commit(&darray); MPI_Type_size(darray, &sizeoftype); if (sizeoftype != sizeof(int)) { errs++; if (verbose) fprintf(stderr, "size of type = %d; should be %d\n", sizeoftype, (int) sizeof(int)); return errs; } err = pack_and_unpack((char *) array, 1, darray, 9 * sizeof(int)); for (i = 0; i < 9; i++) { if ((i == rank) && (array[i] != rank)) { errs++; if (verbose) fprintf(stderr, "[2d array rank=%d]:array[%d] = %d; should be %d\n", rank, i, array[i], rank); } else if ((i != rank) && (array[i] != 0)) { errs++; if (verbose) fprintf(stderr, "[2d array rank=%d]:array[%d] = %d; should be %d\n", rank, i, array[i], 0); } } MPI_Type_free(&darray); } return errs; } /* darray_4d_c_test1() * * Returns the number of errors encountered. */ int darray_4d_c_test1(void) { MPI_Datatype darray; int array[72]; int array_size[4] = { 6, 3, 2, 2 }; int array_distrib[4] = { MPI_DISTRIBUTE_BLOCK, MPI_DISTRIBUTE_BLOCK, MPI_DISTRIBUTE_NONE, MPI_DISTRIBUTE_NONE }; int array_dargs[4] = { MPI_DISTRIBUTE_DFLT_DARG, MPI_DISTRIBUTE_DFLT_DARG, MPI_DISTRIBUTE_DFLT_DARG, MPI_DISTRIBUTE_DFLT_DARG }; int array_psizes[4] = { 6, 3, 1, 1 }; int i, rank, err, errs = 0, sizeoftype; for (rank = 0; rank < 18; rank++) { /* set up array */ for (i = 0; i < 72; i++) { array[i] = i; } /* set up type */ err = MPI_Type_create_darray(18, /* size */ rank, 4, /* dims */ array_size, array_distrib, array_dargs, array_psizes, MPI_ORDER_C, MPI_INT, &darray); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "error in MPI_Type_create_darray call; aborting after %d errors\n", errs); } MTestPrintError(err); return errs; } MPI_Type_commit(&darray); /* verify the size of the type */ MPI_Type_size(darray, &sizeoftype); if (sizeoftype != 4 * sizeof(int)) { errs++; if (verbose) fprintf(stderr, "size of type = %d; should be %d\n", sizeoftype, (int) (4 * sizeof(int))); return errs; } /* pack and unpack the type, zero'ing out all other values */ err = pack_and_unpack((char *) array, 1, darray, 72 * sizeof(int)); for (i = 0; i < 4 * rank; i++) { if (array[i] != 0) { errs++; if (verbose) fprintf(stderr, "[4d array rank=%d]:array[%d] = %d; should be %d\n", rank, i, array[i], 0); } } for (i = 4 * rank; i < 4 * rank + 4; i++) { if (array[i] != i) { errs++; if (verbose) fprintf(stderr, "[4d array rank=%d]:array[%d] = %d; should be %d\n", rank, i, array[i], i); } } for (i = 4 * rank + 4; i < 72; i++) { if (array[i] != 0) { errs++; if (verbose) fprintf(stderr, "[4d array rank=%d]:array[%d] = %d; should be %d\n", rank, i, array[i], 0); } } MPI_Type_free(&darray); } return errs; } /******************************************************************/ /* pack_and_unpack() * * Perform packing and unpacking of a buffer for the purposes of checking * to see if we are processing a type correctly. Zeros the buffer between * these two operations, so the data described by the type should be in * place upon return but all other regions of the buffer should be zero. * * Parameters: * typebuf - pointer to buffer described by datatype and count that * will be packed and then unpacked into * count, datatype - description of typebuf * typebufsz - size of typebuf; used specifically to zero the buffer * between the pack and unpack steps * */ static int pack_and_unpack(char *typebuf, int count, MPI_Datatype datatype, int typebufsz) { char *packbuf; int err, errs = 0, pack_size, type_size, position; err = MPI_Type_size(datatype, &type_size); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "error in MPI_Type_size call; aborting after %d errors\n", errs); } MTestPrintError(err); return errs; } type_size *= count; err = MPI_Pack_size(count, datatype, MPI_COMM_SELF, &pack_size); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "error in MPI_Pack_size call; aborting after %d errors\n", errs); } MTestPrintError(err); return errs; } packbuf = (char *) malloc(pack_size); if (packbuf == NULL) { errs++; if (verbose) { fprintf(stderr, "error in malloc call; aborting after %d errors\n", errs); } return errs; } /* FIXME: the pack size returned need not be the type_size - this will * only be true if the pack routine simply moves the bytes but does * no other transformations of the data */ position = 0; err = MPI_Pack(typebuf, count, datatype, packbuf, type_size, &position, MPI_COMM_SELF); if (position != type_size) { errs++; if (verbose) fprintf(stderr, "position = %d; should be %d (pack)\n", position, type_size); } memset(typebuf, 0, typebufsz); position = 0; err = MPI_Unpack(packbuf, type_size, &position, typebuf, count, datatype, MPI_COMM_SELF); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "error in MPI_Unpack call; aborting after %d errors\n", errs); } MTestPrintError(err); return errs; } free(packbuf); if (position != type_size) { errs++; if (verbose) fprintf(stderr, "position = %d; should be %d (unpack)\n", position, type_size); } return errs; } static int parse_args(int argc, char **argv) { /* * int ret; * * while ((ret = getopt(argc, argv, "v")) >= 0) * { * switch (ret) { * case 'v': * verbose = 1; * break; * } * } */ if (argc > 1 && strcmp(argv[1], "-v") == 0) verbose = 1; return 0; } mpi-testsuite-3.2+dfsg/datatype/triangular-pack.c0000644000175000017500000000504212620254305021424 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include #include "mpi.h" #include "mpitest.h" int main(int argc, char *argv[]); /* helper functions */ int parse_args(int argc, char **argv); static int verbose = 0; int main(int argc, char *argv[]) { /* Variable declarations */ int a[100][100], b[100][100]; int disp[100], block[100]; MPI_Datatype ltype; int bufsize, position = 0; void *buffer; int i, j, errs = 0; /* Initialize a to some known values and zero out b. */ for (i = 0; i < 100; i++) { for (j = 0; j < 100; j++) { a[i][j] = 1000 * i + j; b[i][j] = 0; } } /* Initialize MPI */ MTest_Init(&argc, &argv); parse_args(argc, argv); for (i = 0; i < 100; i++) { /* Fortran version has disp(i) = 100*(i-1) + i and block(i) = 100-i. */ /* This code here is wrong. It compacts everything together, * which isn't what we want. * What we want is to put the lower triangular values into b and leave * the rest of it unchanged, right? */ block[i] = i + 1; disp[i] = 100 * i; } /* Create datatype for lower triangular part. */ MPI_Type_indexed(100, block, disp, MPI_INT, <ype); MPI_Type_commit(<ype); /* Pack it. */ MPI_Pack_size(1, ltype, MPI_COMM_WORLD, &bufsize); buffer = (void *) malloc((unsigned) bufsize); MPI_Pack(a, 1, ltype, buffer, bufsize, &position, MPI_COMM_WORLD); /* Unpack the buffer into b. */ position = 0; MPI_Unpack(buffer, bufsize, &position, b, 1, ltype, MPI_COMM_WORLD); for (i = 0; i < 100; i++) { for (j = 0; j < 100; j++) { if (j > i && b[i][j] != 0) { errs++; if (verbose) fprintf(stderr, "b[%d][%d] = %d; should be %d\n", i, j, b[i][j], 0); } else if (j <= i && b[i][j] != 1000 * i + j) { errs++; if (verbose) fprintf(stderr, "b[%d][%d] = %d; should be %d\n", i, j, b[i][j], 1000 * i + j); } } } MTest_Finalize(errs); MPI_Finalize(); return 0; } int parse_args(int argc, char **argv) { int ret; while ((ret = getopt(argc, argv, "v")) >= 0) { switch (ret) { case 'v': verbose = 1; break; } } return 0; } mpi-testsuite-3.2+dfsg/datatype/vecblklen.c0000644000175000017500000000463612620254305020315 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include #include "mpitest.h" /* Inspired by the Intel MPI_Type_vector_blklen test. Added to include a test of a dataloop optimization that failed. */ int main(int argc, char *argv[]) { MPI_Datatype ot, ot2, newtype; int position, psize, insize, outsize; signed char *inbuf = 0, *outbuf = 0, *pbuf = 0, *p; int i, j, k; int errs = 0; int veccount = 16, stride = 16; MTest_Init(&argc, &argv); /* * Create a type with some padding */ MPI_Type_contiguous(59, MPI_CHAR, &ot); MPI_Type_create_resized(ot, 0, 64, &ot2); /* * Use a vector type with a block size equal to the stride - thus * tiling the target memory with copies of old type. This is not * a contiguous copy since oldtype has a gap at the end. */ MPI_Type_vector(veccount, stride, stride, ot2, &newtype); MPI_Type_commit(&newtype); insize = veccount * stride * 64; outsize = insize; inbuf = (char *) malloc(insize); outbuf = (char *) malloc(outsize); for (i = 0; i < outsize; i++) { inbuf[i] = i % 64; outbuf[i] = -1; } MPI_Pack_size(1, newtype, MPI_COMM_WORLD, &psize); pbuf = (char *) malloc(psize); position = 0; MPI_Pack(inbuf, 1, newtype, pbuf, psize, &position, MPI_COMM_WORLD); psize = position; position = 0; MPI_Unpack(pbuf, psize, &position, outbuf, 1, newtype, MPI_COMM_WORLD); /* Check the output */ p = outbuf; for (i = 0; i < veccount; i++) { for (j = 0; j < stride; j++) { for (k = 0; k < 59; k++) { if (*p != k % 64) { errs++; fprintf(stderr, "[%d,%d,%d]expected %d but saw %d\n", i, j, k, (k % 64), *p); } p++; } for (k = 59; k < 64; k++) { if (*p != -1) { errs++; fprintf(stderr, "[%d,%d,%d]expected -1 but saw %d\n", i, j, k, *p); } p++; } } } free(pbuf); free(inbuf); free(outbuf); MPI_Type_free(&ot); MPI_Type_free(&ot2); MPI_Type_free(&newtype); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/datatype/pairtype-pack.c0000644000175000017500000001143012620254305021107 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitestconf.h" #ifdef HAVE_STRING_H #include #endif static int verbose = 0; int short_int_pack_test(void); /* helper functions */ int parse_args(int argc, char **argv); static int pack_and_unpack(char *typebuf, int count, MPI_Datatype datatype, int typebufsz); int main(int argc, char *argv[]) { int err, errs = 0; MPI_Init(&argc, &argv); /* MPI-1.2 doesn't allow for MPI_Init(0,0) */ parse_args(argc, argv); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); err = short_int_pack_test(); errs += err; /* print message and exit */ if (errs) { fprintf(stderr, "Found %d errors\n", errs); } else { printf(" No Errors\n"); } MPI_Finalize(); return 0; } int short_int_pack_test(void) { int i, err, errs = 0; struct shortint { short a; int b; } sibuf[16]; for (i = 0; i < 16; i++) { sibuf[i].a = (short) (i * 2); sibuf[i].b = i * 2 + 1; } err = pack_and_unpack((char *) sibuf, 16, MPI_SHORT_INT, sizeof(sibuf)); if (err != 0) { if (verbose) { fprintf(stderr, "error packing/unpacking in short_int_pack_test()\n"); } errs += err; } for (i = 0; i < 16; i++) { if (sibuf[i].a != (short) (i * 2)) { err++; if (verbose) { fprintf(stderr, "buf[%d] has invalid short (%d); should be %d\n", i, (int) sibuf[i].a, i * 2); } } if (sibuf[i].b != i * 2 + 1) { err++; if (verbose) { fprintf(stderr, "buf[%d] has invalid int (%d); should be %d\n", i, (int) sibuf[i].b, i * 2 + 1); } } } return errs; } /* pack_and_unpack() * * Perform packing and unpacking of a buffer for the purposes of checking * to see if we are processing a type correctly. Zeros the buffer between * these two operations, so the data described by the type should be in * place upon return but all other regions of the buffer should be zero. * * Parameters: * typebuf - pointer to buffer described by datatype and count that * will be packed and then unpacked into * count, datatype - description of typebuf * typebufsz - size of typebuf; used specifically to zero the buffer * between the pack and unpack steps * */ static int pack_and_unpack(char *typebuf, int count, MPI_Datatype datatype, int typebufsz) { char *packbuf; int err, errs = 0, pack_size, type_size, position; err = MPI_Type_size(datatype, &type_size); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "error in MPI_Type_size call; aborting after %d errors\n", errs); } return errs; } type_size *= count; err = MPI_Pack_size(count, datatype, MPI_COMM_SELF, &pack_size); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "error in MPI_Pack_size call; aborting after %d errors\n", errs); } return errs; } packbuf = (char *) malloc(pack_size); if (packbuf == NULL) { errs++; if (verbose) { fprintf(stderr, "error in malloc call; aborting after %d errors\n", errs); } return errs; } position = 0; err = MPI_Pack(typebuf, count, datatype, packbuf, type_size, &position, MPI_COMM_SELF); if (position != type_size) { errs++; if (verbose) fprintf(stderr, "position = %d; should be %d (pack)\n", position, type_size); } memset(typebuf, 0, typebufsz); position = 0; err = MPI_Unpack(packbuf, type_size, &position, typebuf, count, datatype, MPI_COMM_SELF); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "error in MPI_Unpack call; aborting after %d errors\n", errs); } return errs; } free(packbuf); if (position != type_size) { errs++; if (verbose) fprintf(stderr, "position = %d; should be %d (unpack)\n", position, type_size); } return errs; } int parse_args(int argc, char **argv) { /* * int ret; * * while ((ret = getopt(argc, argv, "v")) >= 0) * { * switch (ret) { * case 'v': * verbose = 1; * break; * } * } */ if (argc > 1 && strcmp(argv[1], "-v") == 0) verbose = 1; return 0; } mpi-testsuite-3.2+dfsg/datatype/pairtype-size-extent.c0000644000175000017500000001070312620254305022452 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitestconf.h" #ifdef HAVE_STRING_H #include #endif static int verbose = 1; static struct { MPI_Datatype atype, ptype; char name[32]; } pairtypes[] = { { MPI_FLOAT, MPI_FLOAT_INT, "MPI_FLOAT_INT"}, { MPI_DOUBLE, MPI_DOUBLE_INT, "MPI_DOUBLE_INT"}, { MPI_LONG, MPI_LONG_INT, "MPI_LONG_INT"}, { MPI_SHORT, MPI_SHORT_INT, "MPI_SHORT_INT"}, { MPI_LONG_DOUBLE, MPI_LONG_DOUBLE_INT, "MPI_LONG_DOUBLE_INT"}, { (MPI_Datatype) - 1, (MPI_Datatype) - 1, "end"} }; int parse_args(int argc, char **argv); MPI_Aint pairtype_displacement(MPI_Datatype type, int *out_size_p); MPI_Aint pairtype_displacement(MPI_Datatype type, int *out_size_p) { MPI_Aint disp; /* Note that a portable test may not use a switch statement for * datatypes, as they are not required to be compile-time constants */ if (type == MPI_FLOAT_INT) { struct { float a; int b; } foo; disp = (MPI_Aint) ((char *) &foo.b - (char *) &foo.a); *out_size_p = sizeof(foo); } else if (type == MPI_DOUBLE_INT) { struct { double a; int b; } foo; disp = (MPI_Aint) ((char *) &foo.b - (char *) &foo.a); *out_size_p = sizeof(foo); } else if (type == MPI_LONG_INT) { struct { long a; int b; } foo; disp = (MPI_Aint) ((char *) &foo.b - (char *) &foo.a); *out_size_p = sizeof(foo); } else if (type == MPI_SHORT_INT) { struct { short a; int b; } foo; disp = (MPI_Aint) ((char *) &foo.b - (char *) &foo.a); *out_size_p = sizeof(foo); } else if (type == MPI_LONG_DOUBLE_INT && type != MPI_DATATYPE_NULL) { struct { long double a; int b; } foo; disp = (MPI_Aint) ((char *) &foo.b - (char *) &foo.a); *out_size_p = sizeof(foo); } else { disp = -1; } return disp; } int main(int argc, char *argv[]) { int errs = 0; int i; int blks[2] = { 1, 1 }; MPI_Aint disps[2] = { 0, 0 }; MPI_Datatype types[2] = { MPI_INT, MPI_INT }; MPI_Datatype stype; MPI_Init(&argc, &argv); parse_args(argc, argv); for (i = 0; pairtypes[i].atype != (MPI_Datatype) - 1; i++) { int atype_size, ptype_size, stype_size, handbuilt_extent; MPI_Aint ptype_extent, stype_extent, dummy_lb; types[0] = pairtypes[i].atype; /* Check for undefined optional types, such as * LONG_DOUBLE_INT (if, for example, long double or * long long are not supported) */ if (types[0] == MPI_DATATYPE_NULL) continue; MPI_Type_size(types[0], &atype_size); disps[1] = pairtype_displacement(pairtypes[i].ptype, &handbuilt_extent); MPI_Type_create_struct(2, blks, disps, types, &stype); MPI_Type_size(stype, &stype_size); MPI_Type_size(pairtypes[i].ptype, &ptype_size); if (stype_size != ptype_size) { errs++; if (verbose) fprintf(stderr, "size of %s (%d) does not match size of hand-built MPI struct (%d)\n", pairtypes[i].name, ptype_size, stype_size); } MPI_Type_get_extent(stype, &dummy_lb, &stype_extent); MPI_Type_get_extent(pairtypes[i].ptype, &dummy_lb, &ptype_extent); if (stype_extent != ptype_extent || stype_extent != handbuilt_extent) { errs++; if (verbose) fprintf(stderr, "extent of %s (%d) does not match extent of either hand-built MPI struct (%d) or equivalent C struct (%d)\n", pairtypes[i].name, (int) ptype_extent, (int) stype_extent, handbuilt_extent); } MPI_Type_free(&stype); } /* print message and exit */ if (errs) { fprintf(stderr, "Found %d errors\n", errs); } else { printf(" No Errors\n"); } MPI_Finalize(); return 0; } int parse_args(int argc, char **argv) { /* We use a simple test because getopt isn't universally available */ if (argc > 1 && strcmp(argv[1], "-v") == 0) verbose = 1; if (argc > 1 && strcmp(argv[1], "-nov") == 0) verbose = 0; return 0; } mpi-testsuite-3.2+dfsg/datatype/Makefile.in0000644000175000017500000016123212621010232020233 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = blockindexed-misc$(EXEEXT) \ blockindexed-zero-count$(EXEEXT) contents$(EXEEXT) \ contig-zero-count$(EXEEXT) contigstruct$(EXEEXT) \ cxx-types$(EXEEXT) dataalign$(EXEEXT) darray-pack$(EXEEXT) \ darray-cyclic$(EXEEXT) gaddress$(EXEEXT) get-elements$(EXEEXT) \ get-elements-pairtype$(EXEEXT) getpartelm$(EXEEXT) \ hindexed-zeros$(EXEEXT) hindexed_block$(EXEEXT) \ hindexed_block_contents$(EXEEXT) hvecblklen$(EXEEXT) \ indexed-misc$(EXEEXT) large-count$(EXEEXT) large_type$(EXEEXT) \ large_type_sendrec$(EXEEXT) large_vec$(EXEEXT) lbub$(EXEEXT) \ localpack$(EXEEXT) longdouble$(EXEEXT) lots-of-types$(EXEEXT) \ pairtype-pack$(EXEEXT) pairtype-size-extent$(EXEEXT) \ sendrecvt2$(EXEEXT) sendrecvt4$(EXEEXT) simple-commit$(EXEEXT) \ simple-pack$(EXEEXT) simple-pack-external$(EXEEXT) \ simple-resized$(EXEEXT) simple-size-extent$(EXEEXT) \ sizedtypes$(EXEEXT) slice-pack$(EXEEXT) \ slice-pack-external$(EXEEXT) struct-derived-zeros$(EXEEXT) \ struct-empty-el$(EXEEXT) struct-ezhov$(EXEEXT) \ struct-no-real-types$(EXEEXT) struct-pack$(EXEEXT) \ structpack2$(EXEEXT) struct-verydeep$(EXEEXT) \ struct-zero-count$(EXEEXT) subarray$(EXEEXT) \ subarray-pack$(EXEEXT) tfree$(EXEEXT) tmatchsize$(EXEEXT) \ transpose-pack$(EXEEXT) tresized$(EXEEXT) tresized2$(EXEEXT) \ triangular-pack$(EXEEXT) typecommit$(EXEEXT) typefree$(EXEEXT) \ typelb$(EXEEXT) typename$(EXEEXT) unpack$(EXEEXT) \ unusual-noncontigs$(EXEEXT) vecblklen$(EXEEXT) \ zeroblks$(EXEEXT) zeroparms$(EXEEXT) subdir = datatype ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = testlist CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) blockindexed_misc_SOURCES = blockindexed-misc.c blockindexed_misc_OBJECTS = blockindexed-misc.$(OBJEXT) blockindexed_misc_LDADD = $(LDADD) blockindexed_misc_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o blockindexed_zero_count_SOURCES = blockindexed-zero-count.c blockindexed_zero_count_OBJECTS = blockindexed-zero-count.$(OBJEXT) blockindexed_zero_count_LDADD = $(LDADD) blockindexed_zero_count_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o contents_SOURCES = contents.c contents_OBJECTS = contents.$(OBJEXT) contents_LDADD = $(LDADD) contents_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o contig_zero_count_SOURCES = contig-zero-count.c contig_zero_count_OBJECTS = contig-zero-count.$(OBJEXT) contig_zero_count_LDADD = $(LDADD) contig_zero_count_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o contigstruct_SOURCES = contigstruct.c contigstruct_OBJECTS = contigstruct.$(OBJEXT) contigstruct_LDADD = $(LDADD) contigstruct_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o cxx_types_SOURCES = cxx-types.c cxx_types_OBJECTS = cxx-types.$(OBJEXT) cxx_types_LDADD = $(LDADD) cxx_types_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o darray_cyclic_SOURCES = darray-cyclic.c darray_cyclic_OBJECTS = darray-cyclic.$(OBJEXT) darray_cyclic_LDADD = $(LDADD) darray_cyclic_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o darray_pack_SOURCES = darray-pack.c darray_pack_OBJECTS = darray-pack.$(OBJEXT) darray_pack_LDADD = $(LDADD) darray_pack_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o dataalign_SOURCES = dataalign.c dataalign_OBJECTS = dataalign.$(OBJEXT) dataalign_LDADD = $(LDADD) dataalign_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o gaddress_SOURCES = gaddress.c gaddress_OBJECTS = gaddress.$(OBJEXT) gaddress_LDADD = $(LDADD) gaddress_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o get_elements_SOURCES = get-elements.c get_elements_OBJECTS = get-elements.$(OBJEXT) get_elements_LDADD = $(LDADD) get_elements_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o get_elements_pairtype_SOURCES = get-elements-pairtype.c get_elements_pairtype_OBJECTS = get-elements-pairtype.$(OBJEXT) get_elements_pairtype_LDADD = $(LDADD) get_elements_pairtype_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o getpartelm_SOURCES = getpartelm.c getpartelm_OBJECTS = getpartelm.$(OBJEXT) getpartelm_LDADD = $(LDADD) getpartelm_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o hindexed_zeros_SOURCES = hindexed-zeros.c hindexed_zeros_OBJECTS = hindexed-zeros.$(OBJEXT) hindexed_zeros_LDADD = $(LDADD) hindexed_zeros_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o hindexed_block_SOURCES = hindexed_block.c hindexed_block_OBJECTS = hindexed_block.$(OBJEXT) hindexed_block_LDADD = $(LDADD) hindexed_block_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o hindexed_block_contents_SOURCES = hindexed_block_contents.c hindexed_block_contents_OBJECTS = hindexed_block_contents.$(OBJEXT) hindexed_block_contents_LDADD = $(LDADD) hindexed_block_contents_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o hvecblklen_SOURCES = hvecblklen.c hvecblklen_OBJECTS = hvecblklen.$(OBJEXT) hvecblklen_LDADD = $(LDADD) hvecblklen_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o indexed_misc_SOURCES = indexed-misc.c indexed_misc_OBJECTS = indexed-misc.$(OBJEXT) indexed_misc_LDADD = $(LDADD) indexed_misc_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o large_count_SOURCES = large-count.c large_count_OBJECTS = large-count.$(OBJEXT) large_count_LDADD = $(LDADD) large_count_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o large_type_SOURCES = large_type.c large_type_OBJECTS = large_type.$(OBJEXT) large_type_LDADD = $(LDADD) large_type_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o large_type_sendrec_SOURCES = large_type_sendrec.c large_type_sendrec_OBJECTS = large_type_sendrec.$(OBJEXT) large_type_sendrec_LDADD = $(LDADD) large_type_sendrec_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o large_vec_SOURCES = large_vec.c large_vec_OBJECTS = large_vec.$(OBJEXT) large_vec_LDADD = $(LDADD) large_vec_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o lbub_SOURCES = lbub.c lbub_OBJECTS = lbub.$(OBJEXT) lbub_LDADD = $(LDADD) lbub_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o localpack_SOURCES = localpack.c localpack_OBJECTS = localpack.$(OBJEXT) localpack_LDADD = $(LDADD) localpack_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o longdouble_SOURCES = longdouble.c longdouble_OBJECTS = longdouble.$(OBJEXT) longdouble_LDADD = $(LDADD) longdouble_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o lots_of_types_SOURCES = lots-of-types.c lots_of_types_OBJECTS = lots-of-types.$(OBJEXT) lots_of_types_LDADD = $(LDADD) lots_of_types_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o pairtype_pack_SOURCES = pairtype-pack.c pairtype_pack_OBJECTS = pairtype-pack.$(OBJEXT) pairtype_pack_LDADD = $(LDADD) pairtype_pack_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o pairtype_size_extent_SOURCES = pairtype-size-extent.c pairtype_size_extent_OBJECTS = pairtype-size-extent.$(OBJEXT) pairtype_size_extent_LDADD = $(LDADD) pairtype_size_extent_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o sendrecvt2_SOURCES = sendrecvt2.c sendrecvt2_OBJECTS = sendrecvt2.$(OBJEXT) sendrecvt2_DEPENDENCIES = $(LDADD) $(LDADDDATA) sendrecvt4_SOURCES = sendrecvt4.c sendrecvt4_OBJECTS = sendrecvt4.$(OBJEXT) sendrecvt4_DEPENDENCIES = $(LDADD) $(LDADDDATA) simple_commit_SOURCES = simple-commit.c simple_commit_OBJECTS = simple-commit.$(OBJEXT) simple_commit_LDADD = $(LDADD) simple_commit_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o simple_pack_SOURCES = simple-pack.c simple_pack_OBJECTS = simple-pack.$(OBJEXT) simple_pack_LDADD = $(LDADD) simple_pack_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o simple_pack_external_SOURCES = simple-pack-external.c simple_pack_external_OBJECTS = simple-pack-external.$(OBJEXT) simple_pack_external_LDADD = $(LDADD) simple_pack_external_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o simple_resized_SOURCES = simple-resized.c simple_resized_OBJECTS = simple-resized.$(OBJEXT) simple_resized_LDADD = $(LDADD) simple_resized_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o simple_size_extent_SOURCES = simple-size-extent.c simple_size_extent_OBJECTS = simple-size-extent.$(OBJEXT) simple_size_extent_LDADD = $(LDADD) simple_size_extent_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o sizedtypes_SOURCES = sizedtypes.c sizedtypes_OBJECTS = sizedtypes.$(OBJEXT) sizedtypes_LDADD = $(LDADD) sizedtypes_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o slice_pack_SOURCES = slice-pack.c slice_pack_OBJECTS = slice-pack.$(OBJEXT) slice_pack_LDADD = $(LDADD) slice_pack_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o slice_pack_external_SOURCES = slice-pack-external.c slice_pack_external_OBJECTS = slice-pack-external.$(OBJEXT) slice_pack_external_LDADD = $(LDADD) slice_pack_external_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o struct_derived_zeros_SOURCES = struct-derived-zeros.c struct_derived_zeros_OBJECTS = struct-derived-zeros.$(OBJEXT) struct_derived_zeros_LDADD = $(LDADD) struct_derived_zeros_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o struct_empty_el_SOURCES = struct-empty-el.c struct_empty_el_OBJECTS = struct-empty-el.$(OBJEXT) struct_empty_el_LDADD = $(LDADD) struct_empty_el_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o struct_ezhov_SOURCES = struct-ezhov.c struct_ezhov_OBJECTS = struct-ezhov.$(OBJEXT) struct_ezhov_LDADD = $(LDADD) struct_ezhov_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o struct_no_real_types_SOURCES = struct-no-real-types.c struct_no_real_types_OBJECTS = struct-no-real-types.$(OBJEXT) struct_no_real_types_LDADD = $(LDADD) struct_no_real_types_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o struct_pack_SOURCES = struct-pack.c struct_pack_OBJECTS = struct-pack.$(OBJEXT) struct_pack_LDADD = $(LDADD) struct_pack_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o struct_verydeep_SOURCES = struct-verydeep.c struct_verydeep_OBJECTS = struct-verydeep.$(OBJEXT) struct_verydeep_LDADD = $(LDADD) struct_verydeep_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o struct_zero_count_SOURCES = struct-zero-count.c struct_zero_count_OBJECTS = struct-zero-count.$(OBJEXT) struct_zero_count_LDADD = $(LDADD) struct_zero_count_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o structpack2_SOURCES = structpack2.c structpack2_OBJECTS = structpack2.$(OBJEXT) structpack2_LDADD = $(LDADD) structpack2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o subarray_SOURCES = subarray.c subarray_OBJECTS = subarray.$(OBJEXT) subarray_LDADD = $(LDADD) subarray_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o subarray_pack_SOURCES = subarray-pack.c subarray_pack_OBJECTS = subarray-pack.$(OBJEXT) subarray_pack_LDADD = $(LDADD) subarray_pack_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o tfree_SOURCES = tfree.c tfree_OBJECTS = tfree.$(OBJEXT) tfree_LDADD = $(LDADD) tfree_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o tmatchsize_SOURCES = tmatchsize.c tmatchsize_OBJECTS = tmatchsize.$(OBJEXT) tmatchsize_LDADD = $(LDADD) tmatchsize_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o transpose_pack_SOURCES = transpose-pack.c transpose_pack_OBJECTS = transpose-pack.$(OBJEXT) transpose_pack_LDADD = $(LDADD) transpose_pack_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o tresized_SOURCES = tresized.c tresized_OBJECTS = tresized.$(OBJEXT) tresized_LDADD = $(LDADD) tresized_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o tresized2_SOURCES = tresized2.c tresized2_OBJECTS = tresized2.$(OBJEXT) tresized2_LDADD = $(LDADD) tresized2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o triangular_pack_SOURCES = triangular-pack.c triangular_pack_OBJECTS = triangular-pack.$(OBJEXT) triangular_pack_LDADD = $(LDADD) triangular_pack_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o typecommit_SOURCES = typecommit.c typecommit_OBJECTS = typecommit.$(OBJEXT) typecommit_LDADD = $(LDADD) typecommit_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o typefree_SOURCES = typefree.c typefree_OBJECTS = typefree.$(OBJEXT) typefree_LDADD = $(LDADD) typefree_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o typelb_SOURCES = typelb.c typelb_OBJECTS = typelb.$(OBJEXT) typelb_LDADD = $(LDADD) typelb_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o typename_SOURCES = typename.c typename_OBJECTS = typename.$(OBJEXT) typename_LDADD = $(LDADD) typename_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o unpack_SOURCES = unpack.c unpack_OBJECTS = unpack.$(OBJEXT) unpack_LDADD = $(LDADD) unpack_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o unusual_noncontigs_SOURCES = unusual-noncontigs.c unusual_noncontigs_OBJECTS = unusual-noncontigs.$(OBJEXT) unusual_noncontigs_LDADD = $(LDADD) unusual_noncontigs_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o vecblklen_SOURCES = vecblklen.c vecblklen_OBJECTS = vecblklen.$(OBJEXT) vecblklen_LDADD = $(LDADD) vecblklen_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o zeroblks_SOURCES = zeroblks.c zeroblks_OBJECTS = zeroblks.$(OBJEXT) zeroblks_LDADD = $(LDADD) zeroblks_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o zeroparms_SOURCES = zeroparms.c zeroparms_OBJECTS = zeroparms.$(OBJEXT) zeroparms_LDADD = $(LDADD) zeroparms_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = blockindexed-misc.c blockindexed-zero-count.c contents.c \ contig-zero-count.c contigstruct.c cxx-types.c darray-cyclic.c \ darray-pack.c dataalign.c gaddress.c get-elements.c \ get-elements-pairtype.c getpartelm.c hindexed-zeros.c \ hindexed_block.c hindexed_block_contents.c hvecblklen.c \ indexed-misc.c large-count.c large_type.c large_type_sendrec.c \ large_vec.c lbub.c localpack.c longdouble.c lots-of-types.c \ pairtype-pack.c pairtype-size-extent.c sendrecvt2.c \ sendrecvt4.c simple-commit.c simple-pack.c \ simple-pack-external.c simple-resized.c simple-size-extent.c \ sizedtypes.c slice-pack.c slice-pack-external.c \ struct-derived-zeros.c struct-empty-el.c struct-ezhov.c \ struct-no-real-types.c struct-pack.c struct-verydeep.c \ struct-zero-count.c structpack2.c subarray.c subarray-pack.c \ tfree.c tmatchsize.c transpose-pack.c tresized.c tresized2.c \ triangular-pack.c typecommit.c typefree.c typelb.c typename.c \ unpack.c unusual-noncontigs.c vecblklen.c zeroblks.c \ zeroparms.c DIST_SOURCES = blockindexed-misc.c blockindexed-zero-count.c \ contents.c contig-zero-count.c contigstruct.c cxx-types.c \ darray-cyclic.c darray-pack.c dataalign.c gaddress.c \ get-elements.c get-elements-pairtype.c getpartelm.c \ hindexed-zeros.c hindexed_block.c hindexed_block_contents.c \ hvecblklen.c indexed-misc.c large-count.c large_type.c \ large_type_sendrec.c large_vec.c lbub.c localpack.c \ longdouble.c lots-of-types.c pairtype-pack.c \ pairtype-size-extent.c sendrecvt2.c sendrecvt4.c \ simple-commit.c simple-pack.c simple-pack-external.c \ simple-resized.c simple-size-extent.c sizedtypes.c \ slice-pack.c slice-pack-external.c struct-derived-zeros.c \ struct-empty-el.c struct-ezhov.c struct-no-real-types.c \ struct-pack.c struct-verydeep.c struct-zero-count.c \ structpack2.c subarray.c subarray-pack.c tfree.c tmatchsize.c \ transpose-pack.c tresized.c tresized2.c triangular-pack.c \ typecommit.c typefree.c typelb.c typename.c unpack.c \ unusual-noncontigs.c vecblklen.c zeroblks.c zeroparms.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/testlist.in \ $(top_srcdir)/Makefile.mtest $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist.in # Some of the tests use a more comprehensive set of datatype tests. # These must specify a different LDADD that includes the object file # with these additional routines LDADDDATA = $(top_builddir)/util/dtypes.$(OBJEXT) sendrecvt2_LDADD = $(LDADD) $(LDADDDATA) sendrecvt4_LDADD = $(LDADD) $(LDADDDATA) all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign datatype/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign datatype/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): testlist: $(top_builddir)/config.status $(srcdir)/testlist.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) blockindexed-misc$(EXEEXT): $(blockindexed_misc_OBJECTS) $(blockindexed_misc_DEPENDENCIES) $(EXTRA_blockindexed_misc_DEPENDENCIES) @rm -f blockindexed-misc$(EXEEXT) $(AM_V_CCLD)$(LINK) $(blockindexed_misc_OBJECTS) $(blockindexed_misc_LDADD) $(LIBS) blockindexed-zero-count$(EXEEXT): $(blockindexed_zero_count_OBJECTS) $(blockindexed_zero_count_DEPENDENCIES) $(EXTRA_blockindexed_zero_count_DEPENDENCIES) @rm -f blockindexed-zero-count$(EXEEXT) $(AM_V_CCLD)$(LINK) $(blockindexed_zero_count_OBJECTS) $(blockindexed_zero_count_LDADD) $(LIBS) contents$(EXEEXT): $(contents_OBJECTS) $(contents_DEPENDENCIES) $(EXTRA_contents_DEPENDENCIES) @rm -f contents$(EXEEXT) $(AM_V_CCLD)$(LINK) $(contents_OBJECTS) $(contents_LDADD) $(LIBS) contig-zero-count$(EXEEXT): $(contig_zero_count_OBJECTS) $(contig_zero_count_DEPENDENCIES) $(EXTRA_contig_zero_count_DEPENDENCIES) @rm -f contig-zero-count$(EXEEXT) $(AM_V_CCLD)$(LINK) $(contig_zero_count_OBJECTS) $(contig_zero_count_LDADD) $(LIBS) contigstruct$(EXEEXT): $(contigstruct_OBJECTS) $(contigstruct_DEPENDENCIES) $(EXTRA_contigstruct_DEPENDENCIES) @rm -f contigstruct$(EXEEXT) $(AM_V_CCLD)$(LINK) $(contigstruct_OBJECTS) $(contigstruct_LDADD) $(LIBS) cxx-types$(EXEEXT): $(cxx_types_OBJECTS) $(cxx_types_DEPENDENCIES) $(EXTRA_cxx_types_DEPENDENCIES) @rm -f cxx-types$(EXEEXT) $(AM_V_CCLD)$(LINK) $(cxx_types_OBJECTS) $(cxx_types_LDADD) $(LIBS) darray-cyclic$(EXEEXT): $(darray_cyclic_OBJECTS) $(darray_cyclic_DEPENDENCIES) $(EXTRA_darray_cyclic_DEPENDENCIES) @rm -f darray-cyclic$(EXEEXT) $(AM_V_CCLD)$(LINK) $(darray_cyclic_OBJECTS) $(darray_cyclic_LDADD) $(LIBS) darray-pack$(EXEEXT): $(darray_pack_OBJECTS) $(darray_pack_DEPENDENCIES) $(EXTRA_darray_pack_DEPENDENCIES) @rm -f darray-pack$(EXEEXT) $(AM_V_CCLD)$(LINK) $(darray_pack_OBJECTS) $(darray_pack_LDADD) $(LIBS) dataalign$(EXEEXT): $(dataalign_OBJECTS) $(dataalign_DEPENDENCIES) $(EXTRA_dataalign_DEPENDENCIES) @rm -f dataalign$(EXEEXT) $(AM_V_CCLD)$(LINK) $(dataalign_OBJECTS) $(dataalign_LDADD) $(LIBS) gaddress$(EXEEXT): $(gaddress_OBJECTS) $(gaddress_DEPENDENCIES) $(EXTRA_gaddress_DEPENDENCIES) @rm -f gaddress$(EXEEXT) $(AM_V_CCLD)$(LINK) $(gaddress_OBJECTS) $(gaddress_LDADD) $(LIBS) get-elements$(EXEEXT): $(get_elements_OBJECTS) $(get_elements_DEPENDENCIES) $(EXTRA_get_elements_DEPENDENCIES) @rm -f get-elements$(EXEEXT) $(AM_V_CCLD)$(LINK) $(get_elements_OBJECTS) $(get_elements_LDADD) $(LIBS) get-elements-pairtype$(EXEEXT): $(get_elements_pairtype_OBJECTS) $(get_elements_pairtype_DEPENDENCIES) $(EXTRA_get_elements_pairtype_DEPENDENCIES) @rm -f get-elements-pairtype$(EXEEXT) $(AM_V_CCLD)$(LINK) $(get_elements_pairtype_OBJECTS) $(get_elements_pairtype_LDADD) $(LIBS) getpartelm$(EXEEXT): $(getpartelm_OBJECTS) $(getpartelm_DEPENDENCIES) $(EXTRA_getpartelm_DEPENDENCIES) @rm -f getpartelm$(EXEEXT) $(AM_V_CCLD)$(LINK) $(getpartelm_OBJECTS) $(getpartelm_LDADD) $(LIBS) hindexed-zeros$(EXEEXT): $(hindexed_zeros_OBJECTS) $(hindexed_zeros_DEPENDENCIES) $(EXTRA_hindexed_zeros_DEPENDENCIES) @rm -f hindexed-zeros$(EXEEXT) $(AM_V_CCLD)$(LINK) $(hindexed_zeros_OBJECTS) $(hindexed_zeros_LDADD) $(LIBS) hindexed_block$(EXEEXT): $(hindexed_block_OBJECTS) $(hindexed_block_DEPENDENCIES) $(EXTRA_hindexed_block_DEPENDENCIES) @rm -f hindexed_block$(EXEEXT) $(AM_V_CCLD)$(LINK) $(hindexed_block_OBJECTS) $(hindexed_block_LDADD) $(LIBS) hindexed_block_contents$(EXEEXT): $(hindexed_block_contents_OBJECTS) $(hindexed_block_contents_DEPENDENCIES) $(EXTRA_hindexed_block_contents_DEPENDENCIES) @rm -f hindexed_block_contents$(EXEEXT) $(AM_V_CCLD)$(LINK) $(hindexed_block_contents_OBJECTS) $(hindexed_block_contents_LDADD) $(LIBS) hvecblklen$(EXEEXT): $(hvecblklen_OBJECTS) $(hvecblklen_DEPENDENCIES) $(EXTRA_hvecblklen_DEPENDENCIES) @rm -f hvecblklen$(EXEEXT) $(AM_V_CCLD)$(LINK) $(hvecblklen_OBJECTS) $(hvecblklen_LDADD) $(LIBS) indexed-misc$(EXEEXT): $(indexed_misc_OBJECTS) $(indexed_misc_DEPENDENCIES) $(EXTRA_indexed_misc_DEPENDENCIES) @rm -f indexed-misc$(EXEEXT) $(AM_V_CCLD)$(LINK) $(indexed_misc_OBJECTS) $(indexed_misc_LDADD) $(LIBS) large-count$(EXEEXT): $(large_count_OBJECTS) $(large_count_DEPENDENCIES) $(EXTRA_large_count_DEPENDENCIES) @rm -f large-count$(EXEEXT) $(AM_V_CCLD)$(LINK) $(large_count_OBJECTS) $(large_count_LDADD) $(LIBS) large_type$(EXEEXT): $(large_type_OBJECTS) $(large_type_DEPENDENCIES) $(EXTRA_large_type_DEPENDENCIES) @rm -f large_type$(EXEEXT) $(AM_V_CCLD)$(LINK) $(large_type_OBJECTS) $(large_type_LDADD) $(LIBS) large_type_sendrec$(EXEEXT): $(large_type_sendrec_OBJECTS) $(large_type_sendrec_DEPENDENCIES) $(EXTRA_large_type_sendrec_DEPENDENCIES) @rm -f large_type_sendrec$(EXEEXT) $(AM_V_CCLD)$(LINK) $(large_type_sendrec_OBJECTS) $(large_type_sendrec_LDADD) $(LIBS) large_vec$(EXEEXT): $(large_vec_OBJECTS) $(large_vec_DEPENDENCIES) $(EXTRA_large_vec_DEPENDENCIES) @rm -f large_vec$(EXEEXT) $(AM_V_CCLD)$(LINK) $(large_vec_OBJECTS) $(large_vec_LDADD) $(LIBS) lbub$(EXEEXT): $(lbub_OBJECTS) $(lbub_DEPENDENCIES) $(EXTRA_lbub_DEPENDENCIES) @rm -f lbub$(EXEEXT) $(AM_V_CCLD)$(LINK) $(lbub_OBJECTS) $(lbub_LDADD) $(LIBS) localpack$(EXEEXT): $(localpack_OBJECTS) $(localpack_DEPENDENCIES) $(EXTRA_localpack_DEPENDENCIES) @rm -f localpack$(EXEEXT) $(AM_V_CCLD)$(LINK) $(localpack_OBJECTS) $(localpack_LDADD) $(LIBS) longdouble$(EXEEXT): $(longdouble_OBJECTS) $(longdouble_DEPENDENCIES) $(EXTRA_longdouble_DEPENDENCIES) @rm -f longdouble$(EXEEXT) $(AM_V_CCLD)$(LINK) $(longdouble_OBJECTS) $(longdouble_LDADD) $(LIBS) lots-of-types$(EXEEXT): $(lots_of_types_OBJECTS) $(lots_of_types_DEPENDENCIES) $(EXTRA_lots_of_types_DEPENDENCIES) @rm -f lots-of-types$(EXEEXT) $(AM_V_CCLD)$(LINK) $(lots_of_types_OBJECTS) $(lots_of_types_LDADD) $(LIBS) pairtype-pack$(EXEEXT): $(pairtype_pack_OBJECTS) $(pairtype_pack_DEPENDENCIES) $(EXTRA_pairtype_pack_DEPENDENCIES) @rm -f pairtype-pack$(EXEEXT) $(AM_V_CCLD)$(LINK) $(pairtype_pack_OBJECTS) $(pairtype_pack_LDADD) $(LIBS) pairtype-size-extent$(EXEEXT): $(pairtype_size_extent_OBJECTS) $(pairtype_size_extent_DEPENDENCIES) $(EXTRA_pairtype_size_extent_DEPENDENCIES) @rm -f pairtype-size-extent$(EXEEXT) $(AM_V_CCLD)$(LINK) $(pairtype_size_extent_OBJECTS) $(pairtype_size_extent_LDADD) $(LIBS) sendrecvt2$(EXEEXT): $(sendrecvt2_OBJECTS) $(sendrecvt2_DEPENDENCIES) $(EXTRA_sendrecvt2_DEPENDENCIES) @rm -f sendrecvt2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(sendrecvt2_OBJECTS) $(sendrecvt2_LDADD) $(LIBS) sendrecvt4$(EXEEXT): $(sendrecvt4_OBJECTS) $(sendrecvt4_DEPENDENCIES) $(EXTRA_sendrecvt4_DEPENDENCIES) @rm -f sendrecvt4$(EXEEXT) $(AM_V_CCLD)$(LINK) $(sendrecvt4_OBJECTS) $(sendrecvt4_LDADD) $(LIBS) simple-commit$(EXEEXT): $(simple_commit_OBJECTS) $(simple_commit_DEPENDENCIES) $(EXTRA_simple_commit_DEPENDENCIES) @rm -f simple-commit$(EXEEXT) $(AM_V_CCLD)$(LINK) $(simple_commit_OBJECTS) $(simple_commit_LDADD) $(LIBS) simple-pack$(EXEEXT): $(simple_pack_OBJECTS) $(simple_pack_DEPENDENCIES) $(EXTRA_simple_pack_DEPENDENCIES) @rm -f simple-pack$(EXEEXT) $(AM_V_CCLD)$(LINK) $(simple_pack_OBJECTS) $(simple_pack_LDADD) $(LIBS) simple-pack-external$(EXEEXT): $(simple_pack_external_OBJECTS) $(simple_pack_external_DEPENDENCIES) $(EXTRA_simple_pack_external_DEPENDENCIES) @rm -f simple-pack-external$(EXEEXT) $(AM_V_CCLD)$(LINK) $(simple_pack_external_OBJECTS) $(simple_pack_external_LDADD) $(LIBS) simple-resized$(EXEEXT): $(simple_resized_OBJECTS) $(simple_resized_DEPENDENCIES) $(EXTRA_simple_resized_DEPENDENCIES) @rm -f simple-resized$(EXEEXT) $(AM_V_CCLD)$(LINK) $(simple_resized_OBJECTS) $(simple_resized_LDADD) $(LIBS) simple-size-extent$(EXEEXT): $(simple_size_extent_OBJECTS) $(simple_size_extent_DEPENDENCIES) $(EXTRA_simple_size_extent_DEPENDENCIES) @rm -f simple-size-extent$(EXEEXT) $(AM_V_CCLD)$(LINK) $(simple_size_extent_OBJECTS) $(simple_size_extent_LDADD) $(LIBS) sizedtypes$(EXEEXT): $(sizedtypes_OBJECTS) $(sizedtypes_DEPENDENCIES) $(EXTRA_sizedtypes_DEPENDENCIES) @rm -f sizedtypes$(EXEEXT) $(AM_V_CCLD)$(LINK) $(sizedtypes_OBJECTS) $(sizedtypes_LDADD) $(LIBS) slice-pack$(EXEEXT): $(slice_pack_OBJECTS) $(slice_pack_DEPENDENCIES) $(EXTRA_slice_pack_DEPENDENCIES) @rm -f slice-pack$(EXEEXT) $(AM_V_CCLD)$(LINK) $(slice_pack_OBJECTS) $(slice_pack_LDADD) $(LIBS) slice-pack-external$(EXEEXT): $(slice_pack_external_OBJECTS) $(slice_pack_external_DEPENDENCIES) $(EXTRA_slice_pack_external_DEPENDENCIES) @rm -f slice-pack-external$(EXEEXT) $(AM_V_CCLD)$(LINK) $(slice_pack_external_OBJECTS) $(slice_pack_external_LDADD) $(LIBS) struct-derived-zeros$(EXEEXT): $(struct_derived_zeros_OBJECTS) $(struct_derived_zeros_DEPENDENCIES) $(EXTRA_struct_derived_zeros_DEPENDENCIES) @rm -f struct-derived-zeros$(EXEEXT) $(AM_V_CCLD)$(LINK) $(struct_derived_zeros_OBJECTS) $(struct_derived_zeros_LDADD) $(LIBS) struct-empty-el$(EXEEXT): $(struct_empty_el_OBJECTS) $(struct_empty_el_DEPENDENCIES) $(EXTRA_struct_empty_el_DEPENDENCIES) @rm -f struct-empty-el$(EXEEXT) $(AM_V_CCLD)$(LINK) $(struct_empty_el_OBJECTS) $(struct_empty_el_LDADD) $(LIBS) struct-ezhov$(EXEEXT): $(struct_ezhov_OBJECTS) $(struct_ezhov_DEPENDENCIES) $(EXTRA_struct_ezhov_DEPENDENCIES) @rm -f struct-ezhov$(EXEEXT) $(AM_V_CCLD)$(LINK) $(struct_ezhov_OBJECTS) $(struct_ezhov_LDADD) $(LIBS) struct-no-real-types$(EXEEXT): $(struct_no_real_types_OBJECTS) $(struct_no_real_types_DEPENDENCIES) $(EXTRA_struct_no_real_types_DEPENDENCIES) @rm -f struct-no-real-types$(EXEEXT) $(AM_V_CCLD)$(LINK) $(struct_no_real_types_OBJECTS) $(struct_no_real_types_LDADD) $(LIBS) struct-pack$(EXEEXT): $(struct_pack_OBJECTS) $(struct_pack_DEPENDENCIES) $(EXTRA_struct_pack_DEPENDENCIES) @rm -f struct-pack$(EXEEXT) $(AM_V_CCLD)$(LINK) $(struct_pack_OBJECTS) $(struct_pack_LDADD) $(LIBS) struct-verydeep$(EXEEXT): $(struct_verydeep_OBJECTS) $(struct_verydeep_DEPENDENCIES) $(EXTRA_struct_verydeep_DEPENDENCIES) @rm -f struct-verydeep$(EXEEXT) $(AM_V_CCLD)$(LINK) $(struct_verydeep_OBJECTS) $(struct_verydeep_LDADD) $(LIBS) struct-zero-count$(EXEEXT): $(struct_zero_count_OBJECTS) $(struct_zero_count_DEPENDENCIES) $(EXTRA_struct_zero_count_DEPENDENCIES) @rm -f struct-zero-count$(EXEEXT) $(AM_V_CCLD)$(LINK) $(struct_zero_count_OBJECTS) $(struct_zero_count_LDADD) $(LIBS) structpack2$(EXEEXT): $(structpack2_OBJECTS) $(structpack2_DEPENDENCIES) $(EXTRA_structpack2_DEPENDENCIES) @rm -f structpack2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(structpack2_OBJECTS) $(structpack2_LDADD) $(LIBS) subarray$(EXEEXT): $(subarray_OBJECTS) $(subarray_DEPENDENCIES) $(EXTRA_subarray_DEPENDENCIES) @rm -f subarray$(EXEEXT) $(AM_V_CCLD)$(LINK) $(subarray_OBJECTS) $(subarray_LDADD) $(LIBS) subarray-pack$(EXEEXT): $(subarray_pack_OBJECTS) $(subarray_pack_DEPENDENCIES) $(EXTRA_subarray_pack_DEPENDENCIES) @rm -f subarray-pack$(EXEEXT) $(AM_V_CCLD)$(LINK) $(subarray_pack_OBJECTS) $(subarray_pack_LDADD) $(LIBS) tfree$(EXEEXT): $(tfree_OBJECTS) $(tfree_DEPENDENCIES) $(EXTRA_tfree_DEPENDENCIES) @rm -f tfree$(EXEEXT) $(AM_V_CCLD)$(LINK) $(tfree_OBJECTS) $(tfree_LDADD) $(LIBS) tmatchsize$(EXEEXT): $(tmatchsize_OBJECTS) $(tmatchsize_DEPENDENCIES) $(EXTRA_tmatchsize_DEPENDENCIES) @rm -f tmatchsize$(EXEEXT) $(AM_V_CCLD)$(LINK) $(tmatchsize_OBJECTS) $(tmatchsize_LDADD) $(LIBS) transpose-pack$(EXEEXT): $(transpose_pack_OBJECTS) $(transpose_pack_DEPENDENCIES) $(EXTRA_transpose_pack_DEPENDENCIES) @rm -f transpose-pack$(EXEEXT) $(AM_V_CCLD)$(LINK) $(transpose_pack_OBJECTS) $(transpose_pack_LDADD) $(LIBS) tresized$(EXEEXT): $(tresized_OBJECTS) $(tresized_DEPENDENCIES) $(EXTRA_tresized_DEPENDENCIES) @rm -f tresized$(EXEEXT) $(AM_V_CCLD)$(LINK) $(tresized_OBJECTS) $(tresized_LDADD) $(LIBS) tresized2$(EXEEXT): $(tresized2_OBJECTS) $(tresized2_DEPENDENCIES) $(EXTRA_tresized2_DEPENDENCIES) @rm -f tresized2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(tresized2_OBJECTS) $(tresized2_LDADD) $(LIBS) triangular-pack$(EXEEXT): $(triangular_pack_OBJECTS) $(triangular_pack_DEPENDENCIES) $(EXTRA_triangular_pack_DEPENDENCIES) @rm -f triangular-pack$(EXEEXT) $(AM_V_CCLD)$(LINK) $(triangular_pack_OBJECTS) $(triangular_pack_LDADD) $(LIBS) typecommit$(EXEEXT): $(typecommit_OBJECTS) $(typecommit_DEPENDENCIES) $(EXTRA_typecommit_DEPENDENCIES) @rm -f typecommit$(EXEEXT) $(AM_V_CCLD)$(LINK) $(typecommit_OBJECTS) $(typecommit_LDADD) $(LIBS) typefree$(EXEEXT): $(typefree_OBJECTS) $(typefree_DEPENDENCIES) $(EXTRA_typefree_DEPENDENCIES) @rm -f typefree$(EXEEXT) $(AM_V_CCLD)$(LINK) $(typefree_OBJECTS) $(typefree_LDADD) $(LIBS) typelb$(EXEEXT): $(typelb_OBJECTS) $(typelb_DEPENDENCIES) $(EXTRA_typelb_DEPENDENCIES) @rm -f typelb$(EXEEXT) $(AM_V_CCLD)$(LINK) $(typelb_OBJECTS) $(typelb_LDADD) $(LIBS) typename$(EXEEXT): $(typename_OBJECTS) $(typename_DEPENDENCIES) $(EXTRA_typename_DEPENDENCIES) @rm -f typename$(EXEEXT) $(AM_V_CCLD)$(LINK) $(typename_OBJECTS) $(typename_LDADD) $(LIBS) unpack$(EXEEXT): $(unpack_OBJECTS) $(unpack_DEPENDENCIES) $(EXTRA_unpack_DEPENDENCIES) @rm -f unpack$(EXEEXT) $(AM_V_CCLD)$(LINK) $(unpack_OBJECTS) $(unpack_LDADD) $(LIBS) unusual-noncontigs$(EXEEXT): $(unusual_noncontigs_OBJECTS) $(unusual_noncontigs_DEPENDENCIES) $(EXTRA_unusual_noncontigs_DEPENDENCIES) @rm -f unusual-noncontigs$(EXEEXT) $(AM_V_CCLD)$(LINK) $(unusual_noncontigs_OBJECTS) $(unusual_noncontigs_LDADD) $(LIBS) vecblklen$(EXEEXT): $(vecblklen_OBJECTS) $(vecblklen_DEPENDENCIES) $(EXTRA_vecblklen_DEPENDENCIES) @rm -f vecblklen$(EXEEXT) $(AM_V_CCLD)$(LINK) $(vecblklen_OBJECTS) $(vecblklen_LDADD) $(LIBS) zeroblks$(EXEEXT): $(zeroblks_OBJECTS) $(zeroblks_DEPENDENCIES) $(EXTRA_zeroblks_DEPENDENCIES) @rm -f zeroblks$(EXEEXT) $(AM_V_CCLD)$(LINK) $(zeroblks_OBJECTS) $(zeroblks_LDADD) $(LIBS) zeroparms$(EXEEXT): $(zeroparms_OBJECTS) $(zeroparms_DEPENDENCIES) $(EXTRA_zeroparms_DEPENDENCIES) @rm -f zeroparms$(EXEEXT) $(AM_V_CCLD)$(LINK) $(zeroparms_OBJECTS) $(zeroparms_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/blockindexed-misc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/blockindexed-zero-count.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/contents.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/contig-zero-count.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/contigstruct.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cxx-types.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/darray-cyclic.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/darray-pack.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dataalign.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gaddress.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get-elements-pairtype.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get-elements.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpartelm.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hindexed-zeros.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hindexed_block.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hindexed_block_contents.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hvecblklen.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/indexed-misc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/large-count.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/large_type.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/large_type_sendrec.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/large_vec.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lbub.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/localpack.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/longdouble.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lots-of-types.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pairtype-pack.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pairtype-size-extent.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendrecvt2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendrecvt4.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simple-commit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simple-pack-external.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simple-pack.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simple-resized.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simple-size-extent.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sizedtypes.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/slice-pack-external.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/slice-pack.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/struct-derived-zeros.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/struct-empty-el.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/struct-ezhov.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/struct-no-real-types.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/struct-pack.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/struct-verydeep.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/struct-zero-count.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/structpack2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/subarray-pack.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/subarray.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tfree.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tmatchsize.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/transpose-pack.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tresized.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tresized2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/triangular-pack.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/typecommit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/typefree.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/typelb.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/typename.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unpack.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unusual-noncontigs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vecblklen.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zeroblks.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zeroparms.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/datatype/contigstruct.c0000644000175000017500000000234112620254305021067 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include /* * This test checks to see if we can create a simple datatype * made from many contiguous copies of a single struct. The * struct is built with monotone decreasing displacements to * avoid any struct->contig optimizations. */ int main(int argc, char **argv) { int blocklens[8], psize, i, rank; MPI_Aint displs[8]; MPI_Datatype oldtypes[8]; MPI_Datatype ntype1, ntype2; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); for (i = 0; i < 8; i++) { blocklens[i] = 1; displs[i] = (7 - i) * sizeof(long); oldtypes[i] = MPI_LONG; } MPI_Type_struct(8, blocklens, displs, oldtypes, &ntype1); MPI_Type_contiguous(65536, ntype1, &ntype2); MPI_Type_commit(&ntype2); MPI_Pack_size(2, ntype2, MPI_COMM_WORLD, &psize); MPI_Type_free(&ntype2); MPI_Type_free(&ntype1); /* The only failure mode has been SEGV or aborts within the datatype * routines */ if (rank == 0) { printf(" No Errors\n"); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/datatype/zeroblks.c0000644000175000017500000000323412620254305020174 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include "mpi.h" #include "mpitest.h" int main(int argc, char *argv[]) { int errs = 0; int position, pack_size, i; int dis[2], blklens[2]; MPI_Datatype type; int send_buffer[60]; int recv_buffer[60]; int pack_buffer[1000]; MTest_Init(&argc, &argv); /* Initialize data in the buffers */ for (i = 0; i < 60; i++) { send_buffer[i] = i; recv_buffer[i] = -1; pack_buffer[i] = -2; } /* Create an indexed type with an empty first block */ dis[0] = 0; dis[1] = 20; blklens[0] = 0; blklens[1] = 40; MPI_Type_indexed(2, blklens, dis, MPI_INT, &type); MPI_Type_commit(&type); position = 0; MPI_Pack(send_buffer, 1, type, pack_buffer, sizeof(pack_buffer), &position, MPI_COMM_WORLD); pack_size = position; position = 0; MPI_Unpack(pack_buffer, pack_size, &position, recv_buffer, 1, type, MPI_COMM_WORLD); /* Check that the last 40 entries of the recv_buffer have the corresponding * elements from the send buffer */ for (i = 0; i < 20; i++) { if (recv_buffer[i] != -1) { errs++; fprintf(stderr, "recv_buffer[%d] = %d, should = -1\n", i, recv_buffer[i]); } } for (i = 20; i < 60; i++) { if (recv_buffer[i] != i) { errs++; fprintf(stderr, "recv_buffer[%d] = %d, should = %d\n", i, recv_buffer[i], i); } } MPI_Type_free(&type); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/datatype/longdouble.c0000644000175000017500000000376112620254305020500 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include "mpi.h" #include "mpitest.h" /* Some MPI implementations should not support MPI_LONG_DOUBLE because it has * different representations/sizes among several concurrently supported * compilers. For example, a 16-byte GCC implementation and an 8-byte Cray * compiler implementation. * * This test ensures that simplistic build logic/configuration did not result in * a defined, yet incorrectly sized, MPI predefined datatype for long double and * long double _Complex. See tt#1671 for more info. * * Based on a test suggested by Jim Hoekstra @ Iowa State University. */ int main(int argc, char *argv[]) { int rank, size, i, type_size; int errs = 0; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); if (rank == 0) { #ifdef HAVE_LONG_DOUBLE if (MPI_LONG_DOUBLE != MPI_DATATYPE_NULL) { MPI_Type_size(MPI_LONG_DOUBLE, &type_size); if (type_size != sizeof(long double)) { printf("type_size != sizeof(long double) : (%d != %zd)\n", type_size, sizeof(long double)); ++errs; } } #endif #if defined(HAVE_LONG_DOUBLE__COMPLEX) && defined(USE_LONG_DOUBLE_COMPLEX) if (MPI_C_LONG_DOUBLE_COMPLEX != MPI_DATATYPE_NULL) { MPI_Type_size(MPI_C_LONG_DOUBLE_COMPLEX, &type_size); if (type_size != sizeof(long double _Complex)) { printf("type_size != sizeof(long double _Complex) : (%d != %zd)\n", type_size, sizeof(long double _Complex)); ++errs; } } #endif if (errs) { printf("found %d errors\n", errs); } else { printf(" No errors\n"); } } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/datatype/struct-zero-count.c0000644000175000017500000000534012620254305021770 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitestconf.h" #ifdef HAVE_STRING_H #include #endif static int verbose = 0; /* tests */ int builtin_struct_test(void); /* helper functions */ int parse_args(int argc, char **argv); int main(int argc, char **argv) { int err, errs = 0; MPI_Init(&argc, &argv); /* MPI-1.2 doesn't allow for MPI_Init(0,0) */ parse_args(argc, argv); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); /* perform some tests */ err = builtin_struct_test(); if (err && verbose) fprintf(stderr, "%d errors in builtin struct test.\n", err); errs += err; /* print message and exit */ if (errs) { fprintf(stderr, "Found %d errors\n", errs); } else { printf(" No Errors\n"); } MPI_Finalize(); return 0; } /* builtin_struct_test() * * Tests behavior with a zero-count struct of builtins. * * Returns the number of errors encountered. */ int builtin_struct_test(void) { int err, errs = 0; int count = 0; MPI_Datatype newtype; int size; MPI_Aint extent; err = MPI_Type_create_struct(count, (int *) 0, (MPI_Aint *) 0, (MPI_Datatype *) 0, &newtype); if (err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "error creating struct type in builtin_struct_test()\n"); } errs++; } err = MPI_Type_size(newtype, &size); if (err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "error obtaining type size in builtin_struct_test()\n"); } errs++; } if (size != 0) { if (verbose) { fprintf(stderr, "error: size != 0 in builtin_struct_test()\n"); } errs++; } err = MPI_Type_extent(newtype, &extent); if (err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "error obtaining type extent in builtin_struct_test()\n"); } errs++; } if (extent != 0) { if (verbose) { fprintf(stderr, "error: extent != 0 in builtin_struct_test()\n"); } errs++; } MPI_Type_free(&newtype); return errs; } int parse_args(int argc, char **argv) { /* * int ret; * * while ((ret = getopt(argc, argv, "v")) >= 0) * { * switch (ret) { * case 'v': * verbose = 1; * break; * } * } */ if (argc > 1 && strcmp(argv[1], "-v") == 0) verbose = 1; return 0; } mpi-testsuite-3.2+dfsg/datatype/typelb.c0000644000175000017500000000272712620254305017646 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include int main(int argc, char **argv) { int blockcnt[2], rank; MPI_Aint offsets[2], lb, ub, extent; MPI_Datatype tmp_type, newtype; MPI_Init(&argc, &argv); /* Set some values in locations that should not be accessed */ blockcnt[1] = -1; offsets[1] = -1; MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (rank == 0) { blockcnt[0] = 1; offsets[0] = 3; MPI_Type_hindexed(1, blockcnt, offsets, MPI_BYTE, &tmp_type); blockcnt[0] = 1; offsets[0] = 1; MPI_Type_hindexed(1, blockcnt, offsets, tmp_type, &newtype); MPI_Type_commit(&newtype); MPI_Type_lb(newtype, &lb); MPI_Type_extent(newtype, &extent); MPI_Type_ub(newtype, &ub); /* Check that the results are correct */ #ifdef DEBUG printf("lb=%ld, ub=%ld, extent=%ld\n", lb, ub, extent); printf("Should be lb=4, ub=5, extent=1\n"); #endif if (lb != 4 || ub != 5 || extent != 1) { printf("lb = %d (should be 4), ub = %d (should be 5) extent = %d should be 1\n", (int) lb, (int) ub, (int) extent); } else { printf(" No Errors\n"); } MPI_Type_free(&tmp_type); MPI_Type_free(&newtype); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/datatype/struct-no-real-types.c0000644000175000017500000000610612620254305022363 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include "mpitestconf.h" #ifdef HAVE_STRING_H #include #endif /* The default behavior of the test routines should be to briefly indicate the cause of any errors - in this test, that means that verbose needs to be set. Verbose should turn on output that is independent of error levels. */ static int verbose = 1; /* tests */ int no_real_types_test(void); /* helper functions */ int parse_args(int argc, char **argv); int main(int argc, char **argv) { int err, errs = 0; MTest_Init(&argc, &argv); parse_args(argc, argv); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); /* perform some tests */ err = no_real_types_test(); if (err && verbose) fprintf(stderr, "%d errors in blockindexed test.\n", err); errs += err; MTest_Finalize(errs); MPI_Finalize(); return 0; } /* no_real_types_test() * * Tests behavior with an empty struct type * * Returns the number of errors encountered. */ int no_real_types_test(void) { int err, errs = 0; int count = 1; int len = 1; MPI_Aint disp = 10; MPI_Datatype type = MPI_LB; MPI_Datatype newtype; int size; MPI_Aint extent; err = MPI_Type_create_struct(count, &len, &disp, &type, &newtype); if (err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "error creating struct type no_real_types_test()\n"); } MTestPrintError(err); errs++; } err = MPI_Type_size(newtype, &size); if (err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "error obtaining type size in no_real_types_test()\n"); } MTestPrintError(err); errs++; } if (size != 0) { if (verbose) { fprintf(stderr, "error: size != 0 in no_real_types_test()\n"); } errs++; } err = MPI_Type_extent(newtype, &extent); if (err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "error obtaining type extent in no_real_types_test()\n"); } MTestPrintError(err); errs++; } if (extent != -10) { if (verbose) { fprintf(stderr, "error: extent is %ld but should be -10 in no_real_types_test()\n", (long) extent); fprintf(stderr, "type map is { (LB,10) }, so UB is 0 and extent is ub-lb\n"); } errs++; } MPI_Type_free(&newtype); return errs; } int parse_args(int argc, char **argv) { /* * int ret; * * while ((ret = getopt(argc, argv, "v")) >= 0) * { * switch (ret) { * case 'v': * verbose = 1; * break; * } * } */ if (argc > 1 && strcmp(argv[1], "-v") == 0) verbose = 1; return 0; } mpi-testsuite-3.2+dfsg/datatype/sendrecvt4.c0000644000175000017500000001345512620254305020430 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitest.h" #include #include "dtypes.h" /* This program is derived from one in the MPICH-1 test suite This version sends and receives EVERYTHING from MPI_BOTTOM, by putting the data into a structure. */ int main(int argc, char **argv) { MPI_Datatype *types; void **inbufs, **outbufs; int *counts, *bytesize, ntype; MPI_Comm comm; int ncomm = 20, rank, np, partner, tag, count; int j, k, err, toterr, world_rank, errloc; MPI_Status status; char *obuf; MPI_Datatype offsettype; int blen; MPI_Aint displ, extent, natural_extent; char myname[MPI_MAX_OBJECT_NAME]; int mynamelen; MTest_Init(&argc, &argv); MTestDatatype2Allocate(&types, &inbufs, &outbufs, &counts, &bytesize, &ntype); MTestDatatype2Generate(types, inbufs, outbufs, counts, bytesize, &ntype); MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); /* Test over a wide range of datatypes and communicators */ err = 0; tag = 0; while (MTestGetIntracomm(&comm, 2)) { if (comm == MPI_COMM_NULL) continue; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &np); if (np < 2) continue; tag++; for (j = 0; j < ntype; j++) { MPI_Type_get_name(types[j], myname, &mynamelen); if (world_rank == 0) MTestPrintfMsg(10, "Testing type %s\n", myname); if (rank == 0) { MPI_Get_address(inbufs[j], &displ); blen = 1; MPI_Type_create_struct(1, &blen, &displ, types + j, &offsettype); MPI_Type_commit(&offsettype); /* Warning: if the type has an explicit MPI_UB, then using a * simple shift of the offset won't work. For now, we skip * types whose extents are negative; the correct solution is * to add, where required, an explicit MPI_UB */ MPI_Type_extent(offsettype, &extent); if (extent < 0) { if (world_rank == 0) MTestPrintfMsg(10, "... skipping (appears to have explicit MPI_UB\n"); MPI_Type_free(&offsettype); continue; } MPI_Type_extent(types[j], &natural_extent); if (natural_extent != extent) { MPI_Type_free(&offsettype); continue; } partner = np - 1; MPI_Send(MPI_BOTTOM, counts[j], offsettype, partner, tag, comm); MPI_Type_free(&offsettype); } else if (rank == np - 1) { partner = 0; obuf = outbufs[j]; for (k = 0; k < bytesize[j]; k++) obuf[k] = 0; MPI_Get_address(outbufs[j], &displ); blen = 1; MPI_Type_create_struct(1, &blen, &displ, types + j, &offsettype); MPI_Type_commit(&offsettype); /* Warning: if the type has an explicit MPI_UB, then using a * simple shift of the offset won't work. For now, we skip * types whose extents are negative; the correct solution is * to add, where required, an explicit MPI_UB */ MPI_Type_extent(offsettype, &extent); if (extent < 0) { MPI_Type_free(&offsettype); continue; } MPI_Type_extent(types[j], &natural_extent); if (natural_extent != extent) { MPI_Type_free(&offsettype); continue; } MPI_Recv(MPI_BOTTOM, counts[j], offsettype, partner, tag, comm, &status); /* Test for correctness */ MPI_Get_count(&status, types[j], &count); if (count != counts[j]) { fprintf(stderr, "Error in counts (got %d expected %d) with type %s\n", count, counts[j], myname); err++; } if (status.MPI_SOURCE != partner) { fprintf(stderr, "Error in source (got %d expected %d) with type %s\n", status.MPI_SOURCE, partner, myname); err++; } if ((errloc = MTestDatatype2Check(inbufs[j], outbufs[j], bytesize[j]))) { fprintf(stderr, "Error in data with type %s (type %d on %d) at byte %d\n", myname, j, world_rank, errloc - 1); if (err < 10) { /* Give details on only the first 10 errors */ unsigned char *in_p = (unsigned char *) inbufs[j], *out_p = (unsigned char *) outbufs[j]; int jj; jj = errloc - 1; jj &= 0xfffffffc; /* lop off a few bits */ in_p += jj; out_p += jj; fprintf(stderr, "%02x%02x%02x%02x should be %02x%02x%02x%02x\n", out_p[0], out_p[1], out_p[2], out_p[3], in_p[0], in_p[1], in_p[2], in_p[3]); } err++; } MPI_Type_free(&offsettype); } } MTestFreeComm(&comm); } MTestDatatype2Free(types, inbufs, outbufs, counts, bytesize, ntype); MTest_Finalize(err); MPI_Finalize(); return MTestReturnValue(err); } mpi-testsuite-3.2+dfsg/datatype/indexed-misc.c0000644000175000017500000004705512620254305020723 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitestconf.h" #ifdef HAVE_STRING_H #include #endif #include #include static int verbose = 1; #define check(cond_) \ do { \ if (!(cond_)) { \ if (verbose) { \ fprintf(stderr, "condition '%s' does not hold, at line %d\n", #cond_, __LINE__); \ } \ errs += 1; \ } \ } while (0) #define check_err(err_, what_failed_) \ do { \ if (err_) { \ if (verbose) { \ fprintf(stderr, "error: %s, at line %d\n", (what_failed_), __LINE__); \ } \ errs += (err_); \ } \ } while (0) /* tests */ int indexed_contig_test(void); int indexed_zeroblock_first_test(void); int indexed_zeroblock_middle_test(void); int indexed_zeroblock_last_test(void); int indexed_contig_leading_zero_test(void); int indexed_same_lengths(void); /* helper functions */ int parse_args(int argc, char **argv); static int pack_and_unpack(char *typebuf, int count, MPI_Datatype datatype, int typebufsz); int main(int argc, char **argv) { int err, errs = 0; MPI_Init(&argc, &argv); /* MPI-1.2 doesn't allow for MPI_Init(0,0) */ parse_args(argc, argv); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); /* perform some tests */ err = indexed_contig_test(); if (err && verbose) fprintf(stderr, "%d errors in indexed_contig_test.\n", err); errs += err; err = indexed_zeroblock_first_test(); if (err && verbose) fprintf(stderr, "%d errors in indexed_zeroblock_first_test.\n", err); errs += err; err = indexed_zeroblock_middle_test(); if (err && verbose) fprintf(stderr, "%d errors in indexed_zeroblock_middle_test.\n", err); errs += err; err = indexed_zeroblock_last_test(); if (err && verbose) fprintf(stderr, "%d errors in indexed_zeroblock_last_test.\n", err); errs += err; err = indexed_contig_leading_zero_test(); if (err && verbose) fprintf(stderr, "%d errors in indexed_contig_leading_zero_test.\n", err); errs += err; err = indexed_same_lengths(); if (err && verbose) fprintf(stderr, "%d errors in indexed_contig_leading_zero_test.\n", err); errs += err; /* print message and exit */ if (errs) { fprintf(stderr, "Found %d errors\n", errs); } else { printf(" No Errors\n"); } MPI_Finalize(); return 0; } int indexed_zeroblock_first_test(void) { int err, errs = 0; MPI_Datatype type; int len[3] = { 0, 1, 1 }; int disp[3] = { 0, 1, 4 }; MPI_Aint lb, ub; err = MPI_Type_indexed(3, len, disp, MPI_INT, &type); if (err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "error creating indexed type in indexed_zeroblock_first_test()\n"); } errs += 1; } MPI_Type_lb(type, &lb); if (lb != sizeof(int)) { if (verbose) { fprintf(stderr, "lb mismatch; is %d, should be %d\n", (int) lb, (int) sizeof(int)); } errs++; } MPI_Type_ub(type, &ub); if (ub != 5 * sizeof(int)) { if (verbose) { fprintf(stderr, "ub mismatch; is %d, should be %d\n", (int) ub, (int) (5 * sizeof(int))); } errs++; } MPI_Type_free(&type); return errs; } int indexed_zeroblock_middle_test(void) { int err, errs = 0; MPI_Datatype type; int len[3] = { 1, 0, 1 }; int disp[3] = { 1, 2, 4 }; MPI_Aint lb, ub; err = MPI_Type_indexed(3, len, disp, MPI_INT, &type); if (err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "error creating indexed type in indexed_zeroblock_middle_test()\n"); } errs += 1; } MPI_Type_lb(type, &lb); if (lb != sizeof(int)) { if (verbose) { fprintf(stderr, "lb mismatch; is %d, should be %d\n", (int) lb, (int) sizeof(int)); } errs++; } MPI_Type_ub(type, &ub); if (ub != 5 * sizeof(int)) { if (verbose) { fprintf(stderr, "ub mismatch; is %d, should be %d\n", (int) ub, (int) (5 * sizeof(int))); } errs++; } MPI_Type_free(&type); return errs; } int indexed_zeroblock_last_test(void) { int err, errs = 0; MPI_Datatype type; int len[3] = { 1, 1, 0 }; int disp[3] = { 1, 4, 8 }; MPI_Aint lb, ub; err = MPI_Type_indexed(3, len, disp, MPI_INT, &type); if (err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "error creating indexed type in indexed_zeroblock_last_test()\n"); } errs += 1; } MPI_Type_lb(type, &lb); if (lb != sizeof(int)) { if (verbose) { fprintf(stderr, "lb mismatch; is %d, should be %d\n", (int) lb, (int) sizeof(int)); } errs++; } MPI_Type_ub(type, &ub); if (ub != 5 * sizeof(int)) { if (verbose) { fprintf(stderr, "ub mismatch; is %d, should be %d\n", (int) ub, (int) (5 * sizeof(int))); } errs++; } MPI_Type_free(&type); return errs; } /* indexed_contig_test() * * Tests behavior with an indexed array that can be compacted but should * continue to be stored as an indexed type. Specifically for coverage. * * Returns the number of errors encountered. */ int indexed_contig_test(void) { int buf[9] = { -1, 1, 2, 3, -2, 4, 5, -3, 6 }; int err, errs = 0; int i, count = 5; int blklen[] = { 1, 2, 1, 1, 1 }; int disp[] = { 1, 2, 5, 6, 8 }; MPI_Datatype newtype; int size, int_size; err = MPI_Type_indexed(count, blklen, disp, MPI_INT, &newtype); if (err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "error creating indexed type in indexed_contig_test()\n"); } errs++; } MPI_Type_size(MPI_INT, &int_size); err = MPI_Type_size(newtype, &size); if (err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "error obtaining type size in indexed_contig_test()\n"); } errs++; } if (size != 6 * int_size) { if (verbose) { fprintf(stderr, "error: size != 6 * int_size in indexed_contig_test()\n"); } errs++; } MPI_Type_commit(&newtype); err = pack_and_unpack((char *) buf, 1, newtype, 9 * sizeof(int)); if (err != 0) { if (verbose) { fprintf(stderr, "error packing/unpacking in indexed_contig_test()\n"); } errs += err; } for (i = 0; i < 9; i++) { int goodval; switch (i) { case 1: goodval = 1; break; case 2: goodval = 2; break; case 3: goodval = 3; break; case 5: goodval = 4; break; case 6: goodval = 5; break; case 8: goodval = 6; break; default: goodval = 0; /* pack_and_unpack() zeros before unpack */ break; } if (buf[i] != goodval) { errs++; if (verbose) fprintf(stderr, "buf[%d] = %d; should be %d\n", i, buf[i], goodval); } } MPI_Type_free(&newtype); return errs; } /* very similar to indexed_zeroblock_first_test, but only has a single contig in * order to catch a particular optimization path in MPICH's * Dataloop_create_indexed routine */ int indexed_contig_leading_zero_test(void) { int err, errs = 0; int i; MPI_Datatype type = MPI_DATATYPE_NULL; MPI_Datatype struct_type = MPI_DATATYPE_NULL; MPI_Datatype types[2]; int len[3] = { 0, 4, 0 }; int disp[3] = { INT_MAX, 2, INT_MAX }; MPI_Aint adisp[3]; MPI_Aint lb, ub; int *buf = NULL; err = MPI_Type_indexed(3, len, disp, MPI_INT, &type); check_err(err, "creating indexed type in indexed_contig_leading_zero_test()"); err = MPI_Type_commit(&type); check_err(err, "committing indexed type in indexed_contig_leading_zero_test()"); MPI_Type_lb(type, &lb); check(lb == 2 * sizeof(int)); MPI_Type_ub(type, &ub); check(ub == 6 * sizeof(int)); /* make sure packing/unpacking works (hits a simple "is_contig" case in * MPICH's pack/unpack routines) */ buf = malloc(10 * sizeof(int)); assert(buf != NULL); for (i = 0; i < 10; ++i) { buf[i] = i + 1; } err = pack_and_unpack((char *) buf, 1, type, 10 * sizeof(int)); check_err(err, "packing/unpacking in indexed_contig_leading_zero_test()"); for (i = 0; i < 10; ++i) { int expected; if (i >= 2 && i < 6) expected = i + 1; else expected = 0; check(buf[i] == expected); } free(buf); /* -------------------------------------------------------------------- */ /* A more rigorous test of the indexed type. Use a hard-to-optimize struct * type to force a more complicated datatype processing path * (MPID_Segment_manipulate in MPICH) */ len[0] = 1; len[1] = 1; adisp[0] = 0; adisp[1] = 8 * sizeof(int); types[0] = type; types[1] = MPI_INT; /* struct layout: xx0123xx4x ('x' indicates a hole), one char is an * MPI_INT */ MPI_Type_create_struct(2, len, adisp, types, &struct_type); check_err(err, "creating struct type in indexed_contig_leading_zero_test()"); err = MPI_Type_commit(&struct_type); check_err(err, "committing struct type in indexed_contig_leading_zero_test()"); buf = malloc(10 * sizeof(int)); assert(buf != NULL); for (i = 0; i < 10; ++i) { buf[i] = i + 1; } err = pack_and_unpack((char *) buf, 1, struct_type, 10 * sizeof(int)); check_err(err, "packing/unpacking in indexed_contig_test()"); for (i = 0; i < 10; ++i) { int expected; if ((i >= 2 && i < 6) || i == 8) expected = i + 1; else expected = 0; check(buf[i] == expected); } free(buf); MPI_Type_free(&struct_type); MPI_Type_free(&type); /* -------------------------------------------------------------------- */ /* now do the same as above, but with hindexed */ len[0] = 0; len[1] = 4; len[2] = 0; /* use *_MAX vars to improve our chances of hitting any pointer-casting * bugs in a big way (segfaults, etc.) */ /* FIXME: This should also look at long, or use a different approach */ #if defined(HAVE_LONG_LONG) && defined(LLONG_MAX) if (sizeof(MPI_Aint) == sizeof(long long)) { adisp[0] = (MPI_Aint) LLONG_MAX; adisp[1] = 2 * sizeof(int); adisp[2] = (MPI_Aint) LLONG_MAX; } else #endif { adisp[0] = (MPI_Aint) INT_MAX; adisp[1] = 2 * sizeof(int); adisp[2] = (MPI_Aint) INT_MAX; } err = MPI_Type_hindexed(3, len, adisp, MPI_INT, &type); check_err(err, "creating hindexed type in indexed_contig_leading_zero_test()"); err = MPI_Type_commit(&type); check_err(err, "committing hindexed type in indexed_contig_leading_zero_test()"); MPI_Type_lb(type, &lb); check(lb == 2 * sizeof(int)); MPI_Type_ub(type, &ub); check(ub == 6 * sizeof(int)); buf = malloc(10 * sizeof(int)); assert(buf != NULL); for (i = 0; i < 10; ++i) { buf[i] = i + 1; } err = pack_and_unpack((char *) buf, 1, type, 10 * sizeof(int)); check_err(err, "packing/unpacking in indexed_contig_test()"); for (i = 0; i < 10; ++i) { int expected; if (i >= 2 && i < 6) expected = i + 1; else expected = 0; check(buf[i] == expected); } free(buf); /* -------------------------------------------------------------------- */ /* A more rigorous test of the hindexed type. Use a hard-to-optimize struct * type to force a more complicated datatype processing path * (MPID_Segment_manipulate in MPICH) */ len[0] = 1; len[1] = 1; adisp[0] = 0; adisp[1] = 8 * sizeof(int); /* struct layout: xx0123xx4x ('x' indicates a hole), one char is an * MPI_INT */ err = MPI_Type_create_struct(2, len, adisp, types, &struct_type); check_err(err, "committing struct type in indexed_contig_leading_zero_test()"); err = MPI_Type_commit(&struct_type); check_err(err, "committing struct type in indexed_contig_leading_zero_test()"); buf = malloc(10 * sizeof(int)); assert(buf != NULL); for (i = 0; i < 10; ++i) { buf[i] = i + 1; } /* fails in old MPICH (3.0rc1 and earlier), despite correct ub/lb * determination */ err = pack_and_unpack((char *) buf, 1, struct_type, 10 * sizeof(int)); check_err(err, "packing/unpacking in indexed_contig_test()"); for (i = 0; i < 10; ++i) { int expected; if ((i >= 2 && i < 6) || i == 8) expected = i + 1; else expected = 0; check(buf[i] == expected); } free(buf); MPI_Type_free(&struct_type); MPI_Type_free(&type); return errs; } /* Test an indexed (and hindexed) type where the block length is the same for * all blocks, but with differing displacements so that it cannot directly be * converted to a vector type. It is also important to add a dummy element at * the beginning in order to cause int/MPI_Aint misalignment for the * displacement of the first non-zero-width component. */ int indexed_same_lengths(void) { int err, errs = 0; int i; MPI_Datatype type = MPI_DATATYPE_NULL; int len[4]; int disp[4]; MPI_Aint adisp[4]; MPI_Aint lb, ub; int *buf = NULL; len[0] = 0; len[1] = 1; len[2] = 1; len[3] = 1; disp[0] = 0; disp[1] = 1; disp[2] = 3; disp[3] = 8; err = MPI_Type_indexed(4, len, disp, MPI_INT, &type); check_err(err, "creating indexed type in indexed_same_lengths()"); err = MPI_Type_commit(&type); check_err(err, "committing indexed type in indexed_same_lengths()"); MPI_Type_lb(type, &lb); check(lb == 1 * sizeof(int)); MPI_Type_ub(type, &ub); check(ub == 9 * sizeof(int)); buf = malloc(10 * sizeof(int)); assert(buf != NULL); for (i = 0; i < 10; ++i) { buf[i] = i + 1; } err = pack_and_unpack((char *) buf, 1, type, 10 * sizeof(int)); check_err(err, "packing/unpacking in indexed_same_lengths()"); for (i = 0; i < 10; ++i) { int expected; if (i == 1 || i == 3 || i == 8) expected = i + 1; else expected = 0; check(buf[i] == expected); } free(buf); MPI_Type_free(&type); /* -------------------------------------------------------------------- */ /* now do the same as above, but with hindexed */ len[0] = 0; len[1] = 1; len[2] = 1; len[3] = 1; adisp[0] = 0 * sizeof(int); adisp[1] = 1 * sizeof(int); adisp[2] = 3 * sizeof(int); adisp[3] = 8 * sizeof(int); err = MPI_Type_hindexed(4, len, adisp, MPI_INT, &type); check_err(err, "creating hindexed type in indexed_same_lengths()"); err = MPI_Type_commit(&type); check_err(err, "committing hindexed type in indexed_same_lengths()"); MPI_Type_lb(type, &lb); check(lb == 1 * sizeof(int)); MPI_Type_ub(type, &ub); check(ub == 9 * sizeof(int)); buf = malloc(10 * sizeof(int)); assert(buf != NULL); for (i = 0; i < 10; ++i) { buf[i] = i + 1; } err = pack_and_unpack((char *) buf, 1, type, 10 * sizeof(int)); check_err(err, "packing/unpacking in indexed_same_lengths()"); for (i = 0; i < 10; ++i) { int expected; if (i == 1 || i == 3 || i == 8) expected = i + 1; else expected = 0; check(buf[i] == expected); } free(buf); MPI_Type_free(&type); return errs; } /* pack_and_unpack() * * Perform packing and unpacking of a buffer for the purposes of checking * to see if we are processing a type correctly. Zeros the buffer between * these two operations, so the data described by the type should be in * place upon return but all other regions of the buffer should be zero. * * Parameters: * typebuf - pointer to buffer described by datatype and count that * will be packed and then unpacked into * count, datatype - description of typebuf * typebufsz - size of typebuf; used specifically to zero the buffer * between the pack and unpack steps * */ static int pack_and_unpack(char *typebuf, int count, MPI_Datatype datatype, int typebufsz) { char *packbuf; int err, errs = 0, pack_size, type_size, position; err = MPI_Type_size(datatype, &type_size); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "error in MPI_Type_size call; aborting after %d errors\n", errs); } return errs; } type_size *= count; err = MPI_Pack_size(count, datatype, MPI_COMM_SELF, &pack_size); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "error in MPI_Pack_size call; aborting after %d errors\n", errs); } return errs; } packbuf = (char *) malloc(pack_size); if (packbuf == NULL) { errs++; if (verbose) { fprintf(stderr, "error in malloc call; aborting after %d errors\n", errs); } return errs; } position = 0; err = MPI_Pack(typebuf, count, datatype, packbuf, type_size, &position, MPI_COMM_SELF); if (position != type_size) { errs++; if (verbose) fprintf(stderr, "position = %d; should be %d (pack)\n", position, type_size); } memset(typebuf, 0, typebufsz); position = 0; err = MPI_Unpack(packbuf, type_size, &position, typebuf, count, datatype, MPI_COMM_SELF); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "error in MPI_Unpack call; aborting after %d errors\n", errs); } return errs; } free(packbuf); if (position != type_size) { errs++; if (verbose) fprintf(stderr, "position = %d; should be %d (unpack)\n", position, type_size); } return errs; } int parse_args(int argc, char **argv) { /* * int ret; * * while ((ret = getopt(argc, argv, "v")) >= 0) * { * switch (ret) { * case 'v': * verbose = 1; * break; * } * } */ if (argc > 1 && strcmp(argv[1], "-v") == 0) verbose = 1; return 0; } mpi-testsuite-3.2+dfsg/datatype/slice-pack-external.c0000644000175000017500000000633212620254305022176 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include #include "mpi.h" static int verbose = 0; int a[100][100][100], e[9][9][9]; int main(int argc, char *argv[]); /* helper functions */ static int parse_args(int argc, char **argv); int main(int argc, char *argv[]) { /* Variable declarations */ MPI_Datatype oneslice, twoslice, threeslice; int errs = 0; MPI_Aint sizeofint, bufsize, position; void *buffer; int i, j, k; /* Initialize a to some known values. */ for (i = 0; i < 100; i++) { for (j = 0; j < 100; j++) { for (k = 0; k < 100; k++) { a[i][j][k] = i * 1000000 + j * 1000 + k; } } } /* Initialize MPI */ MPI_Init(&argc, &argv); MPI_Type_extent(MPI_INT, &sizeofint); parse_args(argc, argv); /* Create data types. */ /* NOTE: This differs from the way that it's done on the sheet. */ /* On the sheet, the slice is a[0, 2, 4, ..., 16][2-10][1-9]. */ /* Below, the slice is a[0-8][2-10][1, 3, 5, ..., 17]. */ MPI_Type_vector(9, 1, 2, MPI_INT, &oneslice); MPI_Type_hvector(9, 1, 100 * sizeofint, oneslice, &twoslice); MPI_Type_hvector(9, 1, 100 * 100 * sizeofint, twoslice, &threeslice); MPI_Type_commit(&threeslice); /* Pack it into a buffer. */ position = 0; /* MPI_Pack_size(1, threeslice, MPI_COMM_WORLD, &bufsize); */ MPI_Pack_external_size((char *) "external32", 1, threeslice, &bufsize); if (bufsize != 2916) { fprintf(stderr, " Error on pack size! Got %d; expecting %d\n", (int) bufsize, 2916); } buffer = (void *) malloc((unsigned) bufsize); /* -1 to indices on sheet to compensate for Fortran --> C */ MPI_Pack_external((char *) "external32", &(a[0][2][1]), 1, threeslice, buffer, bufsize, &position); /* Unpack the buffer into e. */ position = 0; MPI_Unpack_external((char *) "external32", buffer, bufsize, &position, e, 9 * 9 * 9, MPI_INT); /* Display errors, if any. */ for (i = 0; i < 9; i++) { for (j = 0; j < 9; j++) { for (k = 0; k < 9; k++) { /* The truncation in integer division makes this safe. */ if (e[i][j][k] != a[i][j + 2][k * 2 + 1]) { errs++; if (verbose) { printf("Error in location %d x %d x %d: %d, should be %d.\n", i, j, k, e[i][j][k], a[i][j + 2][k * 2 + 1]); } } } } } /* Release memory. */ free(buffer); if (errs) { fprintf(stderr, "Found %d errors\n", errs); } else { printf(" No Errors\n"); } MPI_Type_free(&oneslice); MPI_Type_free(&twoslice); MPI_Type_free(&threeslice); MPI_Finalize(); return 0; } /* parse_args() */ static int parse_args(int argc, char **argv) { int ret; while ((ret = getopt(argc, argv, "v")) >= 0) { switch (ret) { case 'v': verbose = 1; break; } } return 0; } mpi-testsuite-3.2+dfsg/datatype/transpose-pack.c0000644000175000017500000000473412620254305021301 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include #include "mpitest.h" #include "mpitestconf.h" #ifdef HAVE_STRING_H #include #endif static int verbose = 0; int main(int argc, char *argv[]); int parse_args(int argc, char **argv); int main(int argc, char *argv[]) { /* Variable declarations */ int a[100][100], b[100][100]; MPI_Datatype row, xpose; MPI_Aint sizeofint; int err, errs = 0; int bufsize, position = 0; void *buffer; int i, j; /* Initialize a to some known values. */ for (i = 0; i < 100; i++) { for (j = 0; j < 100; j++) { a[i][j] = i * 1000 + j; b[i][j] = -1; } } /* Initialize MPI */ MPI_Init(&argc, &argv); parse_args(argc, argv); MPI_Type_extent(MPI_INT, &sizeofint); /* Create datatypes. */ MPI_Type_vector(100, 1, 100, MPI_INT, &row); MPI_Type_hvector(100, 1, sizeofint, row, &xpose); MPI_Type_commit(&xpose); /* Pack it. */ MPI_Pack_size(1, xpose, MPI_COMM_WORLD, &bufsize); buffer = (char *) malloc((unsigned) bufsize); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); err = MPI_Pack(a, 1, xpose, buffer, bufsize, &position, MPI_COMM_WORLD); /* Unpack the buffer into b. */ position = 0; err = MPI_Unpack(buffer, bufsize, &position, b, 100 * 100, MPI_INT, MPI_COMM_WORLD); for (i = 0; i < 100; i++) { for (j = 0; j < 100; j++) { if (b[i][j] != a[j][i]) { errs++; if (verbose) fprintf(stderr, "b[%d][%d] = %d, should be %d\n", i, j, b[i][j], a[j][i]); } } } MPI_Type_free(&xpose); MPI_Type_free(&row); /* print message and exit */ if (errs) { fprintf(stderr, "Found %d errors\n", errs); } else { printf(" No Errors\n"); } MPI_Finalize(); return 0; } int parse_args(int argc, char **argv) { /* * int ret; * * while ((ret = getopt(argc, argv, "v")) >= 0) * { * switch (ret) { * case 'v': * verbose = 1; * break; * } * } */ if (argc > 1 && strcmp(argv[1], "-v") == 0) verbose = 1; return 0; } mpi-testsuite-3.2+dfsg/datatype/cxx-types.c0000644000175000017500000000442012620254305020303 0ustar mbanckmbanck/* -*- Mode: c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* This test checks for the existence of four new C++ named predefined datatypes * that should be accessible from C (and Fortran, not tested here). */ #include #include #include #include /* assert-like macro that bumps the err count and emits a message */ #define check(x_) \ do { \ if (!(x_)) { \ ++errs; \ if (errs < 10) { \ fprintf(stderr, "check failed: (%s), line %d\n", #x_, __LINE__); \ } \ } \ } while (0) int main(int argc, char *argv[]) { int errs = 0; int wrank, wsize; int size; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &wrank); MPI_Comm_size(MPI_COMM_WORLD, &wsize); /* perhaps the MPI library has no CXX support, in which case let's assume * that these constants exist and were set to MPI_DATATYPE_NULL (standard * MPICH behavior). */ #define check_type(type_) \ do { \ size = -1; \ if (type_ != MPI_DATATYPE_NULL) { \ MPI_Type_size(type_, &size); \ check(size > 0); \ } \ } while (0) check_type(MPI_CXX_BOOL); check_type(MPI_CXX_FLOAT_COMPLEX); check_type(MPI_CXX_DOUBLE_COMPLEX); check_type(MPI_CXX_LONG_DOUBLE_COMPLEX); MPI_Reduce((wrank == 0 ? MPI_IN_PLACE : &errs), &errs, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (wrank == 0) { if (errs) { printf("found %d errors\n", errs); } else { printf(" No errors\n"); } } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/datatype/lots-of-types.c0000644000175000017500000001176212620254305021073 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include #include "mpi.h" #include "mpitest.h" /* The default behavior of the test routines should be to briefly indicate the cause of any errors - in this test, that means that verbose needs to be set. Verbose should turn on output that is independent of error levels. */ static int verbose = 1; int main(int argc, char *argv[]); int parse_args(int argc, char **argv); int lots_of_types_test(void); struct test_struct_1 { int a, b, c, d; }; int main(int argc, char *argv[]) { int err, errs = 0; /* Initialize MPI */ MTest_Init(&argc, &argv); parse_args(argc, argv); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); err = lots_of_types_test(); if (verbose && err) fprintf(stderr, "error in lots_of_types_test\n"); errs += err; /* print message and exit */ MTest_Finalize(errs); MPI_Finalize(); return 0; } /* this test allocates 1024 indexed datatypes with 1024 distinct blocks * each. it's possible that a low memory machine will run out of memory * running this test; it appears to take ~25MB of memory at this time. * -- Rob Ross, 11/2/2005 */ #define NUM_DTYPES 1024 #define NUM_BLOCKS 1024 int lots_of_types_test(void) { int err, errs = 0; int i; MPI_Datatype mytypes[NUM_DTYPES]; int sendbuf[4] = { 1, 2, 3, 4 }; int count, elements; MPI_Request request; MPI_Status status; /* note: first element of struct has zero blklen and should be dropped */ int disps[NUM_BLOCKS]; int blks[NUM_BLOCKS]; for (i = 0; i < NUM_DTYPES; i++) mytypes[i] = MPI_DATATYPE_NULL; for (i = 0; i < NUM_DTYPES; i++) { int j; disps[0] = 0; blks[0] = 4; for (j = 1; j < NUM_BLOCKS; j++) { disps[j] = 4 * j; blks[j] = (j % 3) + 1; } err = MPI_Type_indexed(NUM_BLOCKS, blks, disps, MPI_INT, &mytypes[i]); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Type_indexed returned error on type %d\n", i); } mytypes[i] = MPI_DATATYPE_NULL; goto fn_exit; } MPI_Type_commit(&mytypes[i]); } for (i = 0; i < NUM_DTYPES; i++) { int j; int recvbuf[4] = { -1, -1, -1, -1 }; /* we will only receive 4 ints, so short buffer is ok */ err = MPI_Irecv(recvbuf, 1, mytypes[i], 0, 0, MPI_COMM_SELF, &request); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Irecv returned error\n"); } } err = MPI_Send(sendbuf, 4, MPI_INT, 0, 0, MPI_COMM_SELF); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Send returned error\n"); } } err = MPI_Wait(&request, &status); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Wait returned error\n"); } } /* verify data */ for (j = 0; j < 4; j++) { if (recvbuf[j] != sendbuf[j]) { errs++; if (verbose) { fprintf(stderr, "recvbuf[%d] = %d; should be %d\n", j, recvbuf[j], sendbuf[j]); } } } /* verify count and elements */ err = MPI_Get_count(&status, mytypes[i], &count); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Get_count returned error\n"); } } if (count != MPI_UNDEFINED) { errs++; if (verbose) { fprintf(stderr, "count = %d; should be MPI_UNDEFINED (%d)\n", count, MPI_UNDEFINED); } } err = MPI_Get_elements(&status, mytypes[i], &elements); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Get_elements returned error\n"); } } if (elements != 4) { errs++; if (verbose) { fprintf(stderr, "elements = %d; should be 4\n", elements); } } } fn_exit: for (i = 0; i < NUM_DTYPES; i++) { if (mytypes[i] != MPI_DATATYPE_NULL) MPI_Type_free(&mytypes[i]); } return errs; } int parse_args(int argc, char **argv) { /* * int ret; * * while ((ret = getopt(argc, argv, "v")) >= 0) * { * switch (ret) { * case 'v': * verbose = 1; * break; * } * } */ if (argc > 1 && strcmp(argv[1], "-v") == 0) verbose = 1; return 0; } mpi-testsuite-3.2+dfsg/datatype/contents.c0000644000175000017500000006125012620254305020200 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #ifdef HAVE_UNISTD_H #include #endif #include #include static int verbose = 0; /* tests */ int builtin_float_test(void); int vector_of_vectors_test(void); int optimizable_vector_of_basics_test(void); int indexed_of_basics_test(void); int indexed_of_vectors_test(void); int struct_of_basics_test(void); /* helper functions */ char *combiner_to_string(int combiner); int parse_args(int argc, char **argv); int main(int argc, char **argv) { int err, errs = 0; MPI_Init(&argc, &argv); /* MPI-1.2 doesn't allow for MPI_Init(0,0) */ parse_args(argc, argv); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); /* perform some tests */ err = builtin_float_test(); errs += err; if (err) { fprintf(stderr, "Found %d errors in builtin float test.\n", err); } err = vector_of_vectors_test(); errs += err; if (err) { fprintf(stderr, "Found %d errors in vector of vectors test.\n", err); } err = optimizable_vector_of_basics_test(); errs += err; if (err) { fprintf(stderr, "Found %d errors in vector of basics test.\n", err); } err = indexed_of_basics_test(); errs += err; if (err) { fprintf(stderr, "Found %d errors in indexed of basics test.\n", err); } err = indexed_of_vectors_test(); errs += err; if (err) { fprintf(stderr, "Found %d errors in indexed of vectors test.\n", err); } #ifdef HAVE_MPI_TYPE_CREATE_STRUCT err = struct_of_basics_test(); errs += err; #endif /* print message and exit */ if (errs) { fprintf(stderr, "Found %d errors\n", errs); } else { printf(" No Errors\n"); } MPI_Finalize(); return 0; } /* builtin_float_test() * * Tests functionality of get_envelope() and get_contents() on a MPI_FLOAT. * * Returns the number of errors encountered. */ int builtin_float_test(void) { int nints, nadds, ntypes, combiner; int err, errs = 0; err = MPI_Type_get_envelope(MPI_FLOAT, &nints, &nadds, &ntypes, &combiner); if (combiner != MPI_COMBINER_NAMED) errs++; if (verbose && combiner != MPI_COMBINER_NAMED) fprintf(stderr, "combiner = %s; should be named\n", combiner_to_string(combiner)); /* Note: it is erroneous to call MPI_Type_get_contents() on a basic. */ return errs; } /* vector_of_vectors_test() * * Builds a vector of a vector of ints. Assuming an int array of size 9 * integers, and treating the array as a 3x3 2D array, this will grab the * corners. * * Returns the number of errors encountered. */ int vector_of_vectors_test(void) { MPI_Datatype inner_vector, inner_vector_copy; MPI_Datatype outer_vector; int nints, nadds, ntypes, combiner, *ints; MPI_Aint *adds = NULL; MPI_Datatype *types; int err, errs = 0; /* set up type */ err = MPI_Type_vector(2, 1, 2, MPI_INT, &inner_vector); if (err != MPI_SUCCESS) { if (verbose) fprintf(stderr, "error in MPI call; aborting after %d errors\n", errs + 1); return errs + 1; } err = MPI_Type_vector(2, 1, 2, inner_vector, &outer_vector); if (err != MPI_SUCCESS) { if (verbose) fprintf(stderr, "error in MPI call; aborting after %d errors\n", errs + 1); return errs + 1; } /* decode outer vector (get envelope, then contents) */ err = MPI_Type_get_envelope(outer_vector, &nints, &nadds, &ntypes, &combiner); if (err != MPI_SUCCESS) { if (verbose) fprintf(stderr, "error in MPI call; aborting after %d errors\n", errs + 1); return errs + 1; } if (nints != 3) errs++; if (nadds != 0) errs++; if (ntypes != 1) errs++; if (combiner != MPI_COMBINER_VECTOR) errs++; if (verbose) { if (nints != 3) fprintf(stderr, "outer vector nints = %d; should be 3\n", nints); if (nadds != 0) fprintf(stderr, "outer vector nadds = %d; should be 0\n", nadds); if (ntypes != 1) fprintf(stderr, "outer vector ntypes = %d; should be 1\n", ntypes); if (combiner != MPI_COMBINER_VECTOR) fprintf(stderr, "outer vector combiner = %s; should be vector\n", combiner_to_string(combiner)); } if (errs) { if (verbose) fprintf(stderr, "aborting after %d errors\n", errs); return errs; } ints = malloc(nints * sizeof(*ints)); if (nadds) adds = malloc(nadds * sizeof(*adds)); types = malloc(ntypes * sizeof(*types)); /* get contents of outer vector */ err = MPI_Type_get_contents(outer_vector, nints, nadds, ntypes, ints, adds, types); if (ints[0] != 2) errs++; if (ints[1] != 1) errs++; if (ints[2] != 2) errs++; if (verbose) { if (ints[0] != 2) fprintf(stderr, "outer vector count = %d; should be 2\n", ints[0]); if (ints[1] != 1) fprintf(stderr, "outer vector blocklength = %d; should be 1\n", ints[1]); if (ints[2] != 2) fprintf(stderr, "outer vector stride = %d; should be 2\n", ints[2]); } if (errs) { if (verbose) fprintf(stderr, "aborting after %d errors\n", errs); return errs; } inner_vector_copy = types[0]; free(ints); if (nadds) free(adds); free(types); /* decode inner vector */ err = MPI_Type_get_envelope(inner_vector_copy, &nints, &nadds, &ntypes, &combiner); if (err != MPI_SUCCESS) { if (verbose) fprintf(stderr, "error in MPI call; aborting after %d errors\n", errs + 1); return errs + 1; } if (nints != 3) errs++; if (nadds != 0) errs++; if (ntypes != 1) errs++; if (combiner != MPI_COMBINER_VECTOR) errs++; if (verbose) { if (nints != 3) fprintf(stderr, "inner vector nints = %d; should be 3\n", nints); if (nadds != 0) fprintf(stderr, "inner vector nadds = %d; should be 0\n", nadds); if (ntypes != 1) fprintf(stderr, "inner vector ntypes = %d; should be 1\n", ntypes); if (combiner != MPI_COMBINER_VECTOR) fprintf(stderr, "inner vector combiner = %s; should be vector\n", combiner_to_string(combiner)); } if (errs) { if (verbose) fprintf(stderr, "aborting after %d errors\n", errs); return errs; } ints = malloc(nints * sizeof(*ints)); if (nadds) adds = malloc(nadds * sizeof(*adds)); types = malloc(ntypes * sizeof(*types)); err = MPI_Type_get_contents(inner_vector_copy, nints, nadds, ntypes, ints, adds, types); if (ints[0] != 2) errs++; if (ints[1] != 1) errs++; if (ints[2] != 2) errs++; if (verbose) { if (ints[0] != 2) fprintf(stderr, "inner vector count = %d; should be 2\n", ints[0]); if (ints[1] != 1) fprintf(stderr, "inner vector blocklength = %d; should be 1\n", ints[1]); if (ints[2] != 2) fprintf(stderr, "inner vector stride = %d; should be 2\n", ints[2]); } if (errs) { if (verbose) fprintf(stderr, "aborting after %d errors\n", errs); return errs; } free(ints); if (nadds) free(adds); free(types); MPI_Type_free(&inner_vector_copy); MPI_Type_free(&inner_vector); MPI_Type_free(&outer_vector); return 0; } /* optimizable_vector_of_basics_test() * * Builds a vector of ints. Count is 10, blocksize is 2, stride is 2, so this * is equivalent to a contig of 20. But remember...we should get back our * suboptimal values under MPI-2. * * Returns the number of errors encountered. */ int optimizable_vector_of_basics_test(void) { MPI_Datatype parent_type; int nints, nadds, ntypes, combiner, *ints; MPI_Aint *adds = NULL; MPI_Datatype *types; int err, errs = 0; /* set up type */ err = MPI_Type_vector(10, 2, 2, MPI_INT, &parent_type); /* decode */ err = MPI_Type_get_envelope(parent_type, &nints, &nadds, &ntypes, &combiner); if (nints != 3) errs++; if (nadds != 0) errs++; if (ntypes != 1) errs++; if (combiner != MPI_COMBINER_VECTOR) errs++; if (verbose) { if (nints != 3) fprintf(stderr, "nints = %d; should be 3\n", nints); if (nadds != 0) fprintf(stderr, "nadds = %d; should be 0\n", nadds); if (ntypes != 1) fprintf(stderr, "ntypes = %d; should be 1\n", ntypes); if (combiner != MPI_COMBINER_VECTOR) fprintf(stderr, "combiner = %s; should be vector\n", combiner_to_string(combiner)); } ints = malloc(nints * sizeof(*ints)); if (nadds) adds = malloc(nadds * sizeof(*adds)); types = malloc(ntypes * sizeof(*types)); err = MPI_Type_get_contents(parent_type, nints, nadds, ntypes, ints, adds, types); if (ints[0] != 10) errs++; if (ints[1] != 2) errs++; if (ints[2] != 2) errs++; if (types[0] != MPI_INT) errs++; if (verbose) { if (ints[0] != 10) fprintf(stderr, "count = %d; should be 10\n", ints[0]); if (ints[1] != 2) fprintf(stderr, "blocklength = %d; should be 2\n", ints[1]); if (ints[2] != 2) fprintf(stderr, "stride = %d; should be 2\n", ints[2]); if (types[0] != MPI_INT) fprintf(stderr, "type is not MPI_INT\n"); } free(ints); if (nadds) free(adds); free(types); MPI_Type_free(&parent_type); return errs; } /* indexed_of_basics_test(void) * * Simple indexed type. * * Returns number of errors encountered. */ int indexed_of_basics_test(void) { MPI_Datatype parent_type; int s_count = 3, s_blocklengths[3] = { 3, 2, 1 }; int s_displacements[3] = { 10, 20, 30 }; int nints, nadds, ntypes, combiner, *ints; MPI_Aint *adds = NULL; MPI_Datatype *types; int err, errs = 0; /* set up type */ err = MPI_Type_indexed(s_count, s_blocklengths, s_displacements, MPI_INT, &parent_type); /* decode */ err = MPI_Type_get_envelope(parent_type, &nints, &nadds, &ntypes, &combiner); if (nints != 7) errs++; if (nadds != 0) errs++; if (ntypes != 1) errs++; if (combiner != MPI_COMBINER_INDEXED) errs++; if (verbose) { if (nints != 7) fprintf(stderr, "nints = %d; should be 7\n", nints); if (nadds != 0) fprintf(stderr, "nadds = %d; should be 0\n", nadds); if (ntypes != 1) fprintf(stderr, "ntypes = %d; should be 1\n", ntypes); if (combiner != MPI_COMBINER_INDEXED) fprintf(stderr, "combiner = %s; should be indexed\n", combiner_to_string(combiner)); } ints = malloc(nints * sizeof(*ints)); if (nadds) adds = malloc(nadds * sizeof(*adds)); types = malloc(ntypes * sizeof(*types)); err = MPI_Type_get_contents(parent_type, nints, nadds, ntypes, ints, adds, types); if (ints[0] != s_count) errs++; if (ints[1] != s_blocklengths[0]) errs++; if (ints[2] != s_blocklengths[1]) errs++; if (ints[3] != s_blocklengths[2]) errs++; if (ints[4] != s_displacements[0]) errs++; if (ints[5] != s_displacements[1]) errs++; if (ints[6] != s_displacements[2]) errs++; if (types[0] != MPI_INT) errs++; if (verbose) { if (ints[0] != s_count) fprintf(stderr, "count = %d; should be %d\n", ints[0], s_count); if (ints[1] != s_blocklengths[0]) fprintf(stderr, "blocklength[0] = %d; should be %d\n", ints[1], s_blocklengths[0]); if (ints[2] != s_blocklengths[1]) fprintf(stderr, "blocklength[1] = %d; should be %d\n", ints[2], s_blocklengths[1]); if (ints[3] != s_blocklengths[2]) fprintf(stderr, "blocklength[2] = %d; should be %d\n", ints[3], s_blocklengths[2]); if (ints[4] != s_displacements[0]) fprintf(stderr, "displacement[0] = %d; should be %d\n", ints[4], s_displacements[0]); if (ints[5] != s_displacements[1]) fprintf(stderr, "displacement[1] = %d; should be %d\n", ints[5], s_displacements[1]); if (ints[6] != s_displacements[2]) fprintf(stderr, "displacement[2] = %d; should be %d\n", ints[6], s_displacements[2]); if (types[0] != MPI_INT) fprintf(stderr, "type[0] does not match\n"); } free(ints); if (nadds) free(adds); free(types); MPI_Type_free(&parent_type); return errs; } /* indexed_of_vectors_test() * * Builds an indexed type of vectors of ints. * * Returns the number of errors encountered. */ int indexed_of_vectors_test(void) { MPI_Datatype inner_vector, inner_vector_copy; MPI_Datatype outer_indexed; int i_count = 3, i_blocklengths[3] = { 3, 2, 1 }; int i_displacements[3] = { 10, 20, 30 }; int nints, nadds, ntypes, combiner, *ints; MPI_Aint *adds = NULL; MPI_Datatype *types; int err, errs = 0; /* set up type */ err = MPI_Type_vector(2, 1, 2, MPI_INT, &inner_vector); if (err != MPI_SUCCESS) { if (verbose) fprintf(stderr, "error in MPI call; aborting after %d errors\n", errs + 1); return errs + 1; } err = MPI_Type_indexed(i_count, i_blocklengths, i_displacements, inner_vector, &outer_indexed); if (err != MPI_SUCCESS) { if (verbose) fprintf(stderr, "error in MPI call; aborting after %d errors\n", errs + 1); return errs + 1; } /* decode outer vector (get envelope, then contents) */ err = MPI_Type_get_envelope(outer_indexed, &nints, &nadds, &ntypes, &combiner); if (err != MPI_SUCCESS) { if (verbose) fprintf(stderr, "error in MPI call; aborting after %d errors\n", errs + 1); return errs + 1; } if (nints != 7) errs++; if (nadds != 0) errs++; if (ntypes != 1) errs++; if (combiner != MPI_COMBINER_INDEXED) errs++; if (verbose) { if (nints != 7) fprintf(stderr, "nints = %d; should be 7\n", nints); if (nadds != 0) fprintf(stderr, "nadds = %d; should be 0\n", nadds); if (ntypes != 1) fprintf(stderr, "ntypes = %d; should be 1\n", ntypes); if (combiner != MPI_COMBINER_INDEXED) fprintf(stderr, "combiner = %s; should be indexed\n", combiner_to_string(combiner)); } if (errs) { if (verbose) fprintf(stderr, "aborting after %d errors\n", errs); return errs; } ints = malloc(nints * sizeof(*ints)); if (nadds) adds = malloc(nadds * sizeof(*adds)); types = malloc(ntypes * sizeof(*types)); /* get contents of outer vector */ err = MPI_Type_get_contents(outer_indexed, nints, nadds, ntypes, ints, adds, types); if (ints[0] != i_count) errs++; if (ints[1] != i_blocklengths[0]) errs++; if (ints[2] != i_blocklengths[1]) errs++; if (ints[3] != i_blocklengths[2]) errs++; if (ints[4] != i_displacements[0]) errs++; if (ints[5] != i_displacements[1]) errs++; if (ints[6] != i_displacements[2]) errs++; if (verbose) { if (ints[0] != i_count) fprintf(stderr, "count = %d; should be %d\n", ints[0], i_count); if (ints[1] != i_blocklengths[0]) fprintf(stderr, "blocklength[0] = %d; should be %d\n", ints[1], i_blocklengths[0]); if (ints[2] != i_blocklengths[1]) fprintf(stderr, "blocklength[1] = %d; should be %d\n", ints[2], i_blocklengths[1]); if (ints[3] != i_blocklengths[2]) fprintf(stderr, "blocklength[2] = %d; should be %d\n", ints[3], i_blocklengths[2]); if (ints[4] != i_displacements[0]) fprintf(stderr, "displacement[0] = %d; should be %d\n", ints[4], i_displacements[0]); if (ints[5] != i_displacements[1]) fprintf(stderr, "displacement[1] = %d; should be %d\n", ints[5], i_displacements[1]); if (ints[6] != i_displacements[2]) fprintf(stderr, "displacement[2] = %d; should be %d\n", ints[6], i_displacements[2]); } if (errs) { if (verbose) fprintf(stderr, "aborting after %d errors\n", errs); return errs; } inner_vector_copy = types[0]; free(ints); if (nadds) free(adds); free(types); /* decode inner vector */ err = MPI_Type_get_envelope(inner_vector_copy, &nints, &nadds, &ntypes, &combiner); if (err != MPI_SUCCESS) { if (verbose) fprintf(stderr, "error in MPI call; aborting after %d errors\n", errs + 1); return errs + 1; } if (nints != 3) errs++; if (nadds != 0) errs++; if (ntypes != 1) errs++; if (combiner != MPI_COMBINER_VECTOR) errs++; if (verbose) { if (nints != 3) fprintf(stderr, "inner vector nints = %d; should be 3\n", nints); if (nadds != 0) fprintf(stderr, "inner vector nadds = %d; should be 0\n", nadds); if (ntypes != 1) fprintf(stderr, "inner vector ntypes = %d; should be 1\n", ntypes); if (combiner != MPI_COMBINER_VECTOR) fprintf(stderr, "inner vector combiner = %s; should be vector\n", combiner_to_string(combiner)); } if (errs) { if (verbose) fprintf(stderr, "aborting after %d errors\n", errs); return errs; } ints = malloc(nints * sizeof(*ints)); if (nadds) adds = malloc(nadds * sizeof(*adds)); types = malloc(ntypes * sizeof(*types)); err = MPI_Type_get_contents(inner_vector_copy, nints, nadds, ntypes, ints, adds, types); if (ints[0] != 2) errs++; if (ints[1] != 1) errs++; if (ints[2] != 2) errs++; if (verbose) { if (ints[0] != 2) fprintf(stderr, "inner vector count = %d; should be 2\n", ints[0]); if (ints[1] != 1) fprintf(stderr, "inner vector blocklength = %d; should be 1\n", ints[1]); if (ints[2] != 2) fprintf(stderr, "inner vector stride = %d; should be 2\n", ints[2]); } if (errs) { if (verbose) fprintf(stderr, "aborting after %d errors\n", errs); return errs; } free(ints); if (nadds) free(adds); free(types); MPI_Type_free(&inner_vector_copy); MPI_Type_free(&inner_vector); MPI_Type_free(&outer_indexed); return 0; } #ifdef HAVE_MPI_TYPE_CREATE_STRUCT /* struct_of_basics_test(void) * * There's nothing simple about structs :). Although this is an easy one. * * Returns number of errors encountered. * * NOT TESTED. */ int struct_of_basics_test(void) { MPI_Datatype parent_type; int s_count = 3, s_blocklengths[3] = { 3, 2, 1 }; MPI_Aint s_displacements[3] = { 10, 20, 30 }; MPI_Datatype s_types[3] = { MPI_CHAR, MPI_INT, MPI_FLOAT }; int nints, nadds, ntypes, combiner, *ints; MPI_Aint *adds = NULL; MPI_Datatype *types; int err, errs = 0; /* set up type */ err = MPI_Type_create_struct(s_count, s_blocklengths, s_displacements, s_types, &parent_type); /* decode */ err = MPI_Type_get_envelope(parent_type, &nints, &nadds, &ntypes, &combiner); if (nints != 4) errs++; if (nadds != 3) errs++; if (ntypes != 3) errs++; if (combiner != MPI_COMBINER_STRUCT) errs++; if (verbose) { if (nints != 4) fprintf(stderr, "nints = %d; should be 3\n", nints); if (nadds != 3) fprintf(stderr, "nadds = %d; should be 0\n", nadds); if (ntypes != 3) fprintf(stderr, "ntypes = %d; should be 3\n", ntypes); if (combiner != MPI_COMBINER_STRUCT) fprintf(stderr, "combiner = %s; should be struct\n", combiner_to_string(combiner)); } ints = malloc(nints * sizeof(*ints)); adds = malloc(nadds * sizeof(*adds)); types = malloc(ntypes * sizeof(*types)); err = MPI_Type_get_contents(parent_type, nints, nadds, ntypes, ints, adds, types); if (ints[0] != s_count) errs++; if (ints[1] != s_blocklengths[0]) errs++; if (ints[2] != s_blocklengths[1]) errs++; if (ints[3] != s_blocklengths[2]) errs++; if (adds[0] != s_displacements[0]) errs++; if (adds[1] != s_displacements[1]) errs++; if (adds[2] != s_displacements[2]) errs++; if (types[0] != s_types[0]) errs++; if (types[1] != s_types[1]) errs++; if (types[2] != s_types[2]) errs++; if (verbose) { if (ints[0] != s_count) fprintf(stderr, "count = %d; should be %d\n", ints[0], s_count); if (ints[1] != s_blocklengths[0]) fprintf(stderr, "blocklength[0] = %d; should be %d\n", ints[1], s_blocklengths[0]); if (ints[2] != s_blocklengths[1]) fprintf(stderr, "blocklength[1] = %d; should be %d\n", ints[2], s_blocklengths[1]); if (ints[3] != s_blocklengths[2]) fprintf(stderr, "blocklength[2] = %d; should be %d\n", ints[3], s_blocklengths[2]); if (adds[0] != s_displacements[0]) fprintf(stderr, "displacement[0] = %d; should be %d\n", adds[0], s_displacements[0]); if (adds[1] != s_displacements[1]) fprintf(stderr, "displacement[1] = %d; should be %d\n", adds[1], s_displacements[1]); if (adds[2] != s_displacements[2]) fprintf(stderr, "displacement[2] = %d; should be %d\n", adds[2], s_displacements[2]); if (types[0] != s_types[0]) fprintf(stderr, "type[0] does not match\n"); if (types[1] != s_types[1]) fprintf(stderr, "type[1] does not match\n"); if (types[2] != s_types[2]) fprintf(stderr, "type[2] does not match\n"); } free(ints); free(adds); free(types); MPI_Type_free(&parent_type); return errs; } #endif /* combiner_to_string(combiner) * * Converts a numeric combiner into a pointer to a string used for printing. */ char *combiner_to_string(int combiner) { static char c_named[] = "named"; static char c_contig[] = "contig"; static char c_vector[] = "vector"; static char c_hvector[] = "hvector"; static char c_indexed[] = "indexed"; static char c_hindexed[] = "hindexed"; static char c_struct[] = "struct"; #ifdef HAVE_MPI2_COMBINERS static char c_dup[] = "dup"; static char c_hvector_integer[] = "hvector_integer"; static char c_hindexed_integer[] = "hindexed_integer"; static char c_indexed_block[] = "indexed_block"; static char c_struct_integer[] = "struct_integer"; static char c_subarray[] = "subarray"; static char c_darray[] = "darray"; static char c_f90_real[] = "f90_real"; static char c_f90_complex[] = "f90_complex"; static char c_f90_integer[] = "f90_integer"; static char c_resized[] = "resized"; #endif if (combiner == MPI_COMBINER_NAMED) return c_named; if (combiner == MPI_COMBINER_CONTIGUOUS) return c_contig; if (combiner == MPI_COMBINER_VECTOR) return c_vector; if (combiner == MPI_COMBINER_HVECTOR) return c_hvector; if (combiner == MPI_COMBINER_INDEXED) return c_indexed; if (combiner == MPI_COMBINER_HINDEXED) return c_hindexed; if (combiner == MPI_COMBINER_STRUCT) return c_struct; #ifdef HAVE_MPI2_COMBINERS if (combiner == MPI_COMBINER_DUP) return c_dup; if (combiner == MPI_COMBINER_HVECTOR_INTEGER) return c_hvector_integer; if (combiner == MPI_COMBINER_HINDEXED_INTEGER) return c_hindexed_integer; if (combiner == MPI_COMBINER_INDEXED_BLOCK) return c_indexed_block; if (combiner == MPI_COMBINER_STRUCT_INTEGER) return c_struct_integer; if (combiner == MPI_COMBINER_SUBARRAY) return c_subarray; if (combiner == MPI_COMBINER_DARRAY) return c_darray; if (combiner == MPI_COMBINER_F90_REAL) return c_f90_real; if (combiner == MPI_COMBINER_F90_COMPLEX) return c_f90_complex; if (combiner == MPI_COMBINER_F90_INTEGER) return c_f90_integer; if (combiner == MPI_COMBINER_RESIZED) return c_resized; #endif return NULL; } int parse_args(int argc, char **argv) { #ifdef HAVE_GET_OPT int ret; while ((ret = getopt(argc, argv, "v")) >= 0) { switch (ret) { case 'v': verbose = 1; break; } } #else #endif return 0; } mpi-testsuite-3.2+dfsg/datatype/hvecblklen.c0000644000175000017500000000464512620254305020465 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include #include "mpitest.h" /* Inspired by the Intel MPI_Type_hvector_blklen test. Added to include a test of a dataloop optimization that failed. */ int main(int argc, char *argv[]) { MPI_Datatype ot, ot2, newtype; int position, psize, insize, outsize; signed char *inbuf = 0, *outbuf = 0, *pbuf = 0, *p; int i, j, k; int errs = 0; int veccount = 16, stride = 16; MTest_Init(&argc, &argv); /* * Create a type with some padding */ MPI_Type_contiguous(59, MPI_CHAR, &ot); MPI_Type_create_resized(ot, 0, 64, &ot2); /* * Use a vector type with a block size equal to the stride - thus * tiling the target memory with copies of old type. This is not * a contiguous copy since oldtype has a gap at the end. */ MPI_Type_hvector(veccount, stride, stride * 64, ot2, &newtype); MPI_Type_commit(&newtype); insize = veccount * stride * 64; outsize = insize; inbuf = (char *) malloc(insize); outbuf = (char *) malloc(outsize); for (i = 0; i < outsize; i++) { inbuf[i] = i % 64; outbuf[i] = -1; } MPI_Pack_size(1, newtype, MPI_COMM_WORLD, &psize); pbuf = (char *) malloc(psize); position = 0; MPI_Pack(inbuf, 1, newtype, pbuf, psize, &position, MPI_COMM_WORLD); psize = position; position = 0; MPI_Unpack(pbuf, psize, &position, outbuf, 1, newtype, MPI_COMM_WORLD); /* Check the output */ p = outbuf; for (i = 0; i < veccount; i++) { for (j = 0; j < stride; j++) { for (k = 0; k < 59; k++) { if (*p != k % 64) { errs++; fprintf(stderr, "[%d,%d,%d]expected %d but saw %d\n", i, j, k, (k % 64), *p); } p++; } for (k = 59; k < 64; k++) { if (*p != -1) { errs++; fprintf(stderr, "[%d,%d,%d]expected -1 but saw %d\n", i, j, k, *p); } p++; } } } free(pbuf); free(inbuf); free(outbuf); MPI_Type_free(&ot); MPI_Type_free(&ot2); MPI_Type_free(&newtype); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/datatype/simple-commit.c0000644000175000017500000000321312620254305021115 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Tests that commit of a couple of basic types succeeds. */ #include "mpi.h" #include #include "mpitestconf.h" #ifdef HAVE_STRING_H #include #endif static int verbose = 0; int parse_args(int argc, char **argv); int main(int argc, char **argv) { int mpi_err, errs = 0; MPI_Datatype type; MPI_Init(&argc, &argv); parse_args(argc, argv); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); type = MPI_INT; mpi_err = MPI_Type_commit(&type); if (mpi_err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "MPI_Type_commit of MPI_INT failed.\n"); } errs++; } type = MPI_FLOAT_INT; mpi_err = MPI_Type_commit(&type); if (mpi_err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "MPI_Type_commit of MPI_FLOAT_INT failed.\n"); } errs++; } /* print message and exit */ if (errs) { fprintf(stderr, "Found %d errors\n", errs); } else { printf(" No Errors\n"); } MPI_Finalize(); return 0; } int parse_args(int argc, char **argv) { /* * int ret; * * while ((ret = getopt(argc, argv, "v")) >= 0) * { * switch (ret) { * case 'v': * verbose = 1; * break; * } * } */ if (argc > 1 && strcmp(argv[1], "-v") == 0) verbose = 1; return 0; } mpi-testsuite-3.2+dfsg/datatype/Makefile.am0000644000175000017500000000526112620254305020233 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile.mtest EXTRA_DIST = testlist.in ## For some reason, these tests were missing from both the simplemakefile and ## the testlist. Leaving them disabled for now. ##segtest ##zero-blklen-vector ## for all programs that are just built from the single corresponding source ## file, we don't need per-target _SOURCES rules, automake will infer them ## correctly noinst_PROGRAMS = \ blockindexed-misc \ blockindexed-zero-count \ contents \ contig-zero-count \ contigstruct \ cxx-types \ dataalign \ darray-pack \ darray-cyclic \ gaddress \ get-elements \ get-elements-pairtype \ getpartelm \ hindexed-zeros \ hindexed_block \ hindexed_block_contents \ hvecblklen \ indexed-misc \ large-count \ large_type \ large_type_sendrec \ large_vec \ lbub \ localpack \ longdouble \ lots-of-types \ pairtype-pack \ pairtype-size-extent \ sendrecvt2 \ sendrecvt4 \ simple-commit \ simple-pack \ simple-pack-external \ simple-resized \ simple-size-extent \ sizedtypes \ slice-pack \ slice-pack-external \ struct-derived-zeros \ struct-empty-el \ struct-ezhov \ struct-no-real-types \ struct-pack \ structpack2 \ struct-verydeep \ struct-zero-count \ subarray \ subarray-pack \ tfree \ tmatchsize \ transpose-pack \ tresized \ tresized2 \ triangular-pack \ typecommit \ typefree \ typelb \ typename \ unpack \ unusual-noncontigs \ vecblklen \ zeroblks \ zeroparms # Some of the tests use a more comprehensive set of datatype tests. # These must specify a different LDADD that includes the object file # with these additional routines LDADDDATA = $(top_builddir)/util/dtypes.$(OBJEXT) sendrecvt2_LDADD = $(LDADD) $(LDADDDATA) sendrecvt4_LDADD = $(LDADD) $(LDADDDATA) mpi-testsuite-3.2+dfsg/datatype/typefree.c0000644000175000017500000000162312620254305020164 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2007 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitest.h" #include #include #include /* * This test may be used to confirm that memory is properly recovered from * freed datatypes. To test this, build the MPI implementation with memory * leak checking. As this program may be run with a single process, it should * also be easy to run it under valgrind or a similar program. With MPICH, * you can configure with the option * * --enable-g=mem * * to turn on MPICH's internal memory checking. */ int main(int argc, char *argv[]) { int errs = 0; MPI_Datatype type; MTest_Init(&argc, &argv); MPI_Type_dup(MPI_INT, &type); MPI_Type_free(&type); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/datatype/tfree.c0000644000175000017500000000553712620254305017456 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test that freed datatypes have reference count semantics"; */ #define VEC_NELM 128 #define VEC_STRIDE 8 int main(int argc, char *argv[]) { int errs = 0; int rank, size, source, dest, i; MPI_Comm comm; MPI_Status status; MPI_Request req; MPI_Datatype strideType; MPI_Datatype tmpType[1024]; int *buf = 0; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); if (size < 2) { fprintf(stderr, "This test requires at least two processes."); MPI_Abort(MPI_COMM_WORLD, 1); } source = 0; dest = size - 1; /* * The idea here is to create a simple but non-contig datatype, * perform an irecv with it, free it, and then create * many new datatypes. While not a complete test, if the datatype * was freed and the space was reused, this test may detect * that error * A similar test for sends might work by sending a large enough message * to force the use of rendezvous send. */ MPI_Type_vector(VEC_NELM, 1, VEC_STRIDE, MPI_INT, &strideType); MPI_Type_commit(&strideType); if (rank == dest) { buf = (int *) malloc(VEC_NELM * VEC_STRIDE * sizeof(int)); for (i = 0; i < VEC_NELM * VEC_STRIDE; i++) buf[i] = -i; MPI_Irecv(buf, 1, strideType, source, 0, comm, &req); MPI_Type_free(&strideType); for (i = 0; i < 1024; i++) { MPI_Type_vector(VEC_NELM, 1, 1, MPI_INT, &tmpType[i]); MPI_Type_commit(&tmpType[i]); } MPI_Sendrecv(NULL, 0, MPI_INT, source, 1, NULL, 0, MPI_INT, source, 1, comm, &status); MPI_Wait(&req, &status); for (i = 0; i < VEC_NELM; i++) { if (buf[VEC_STRIDE * i] != i) { errs++; if (errs < 10) { printf("buf[%d] = %d, expected %d\n", VEC_STRIDE * i, buf[VEC_STRIDE * i], i); } } } for (i = 0; i < 1024; i++) { MPI_Type_free(&tmpType[i]); } free(buf); } else if (rank == source) { buf = (int *) malloc(VEC_NELM * sizeof(int)); for (i = 0; i < VEC_NELM; i++) buf[i] = i; /* Synchronize with the receiver */ MPI_Sendrecv(NULL, 0, MPI_INT, dest, 1, NULL, 0, MPI_INT, dest, 1, comm, &status); MPI_Send(buf, VEC_NELM, MPI_INT, dest, 0, comm); free(buf); } /* Clean up the strideType */ if (rank != dest) { MPI_Type_free(&strideType); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/datatype/dataalign.c0000644000175000017500000000613012620254305020263 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include /* The next is for isprint */ #include #include "mpitest.h" int main(int argc, char *argv[]) { struct a { int i; char c; } s[10], s1[10]; int j; int errs = 0; int rank, size, tsize; MPI_Aint text; int blens[2]; MPI_Aint disps[2]; MPI_Datatype bases[2]; MPI_Datatype str, con; MPI_Status status; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); for (j = 0; j < 10; j++) { s[j].i = j + rank; s[j].c = j + rank + 'a'; } blens[0] = blens[1] = 1; disps[0] = 0; disps[1] = sizeof(int); bases[0] = MPI_INT; bases[1] = MPI_CHAR; MPI_Type_struct(2, blens, disps, bases, &str); MPI_Type_commit(&str); MPI_Type_contiguous(10, str, &con); MPI_Type_commit(&con); MPI_Type_size(con, &tsize); MPI_Type_extent(con, &text); MTestPrintfMsg(0, "Size of MPI array is %d, extent is %d\n", tsize, text); /* The following block of code is only for verbose-level output */ { void *p1, *p2; p1 = s; p2 = &(s[10].i); /* This statement may fail on some systems */ MTestPrintfMsg(0, "C array starts at %p and ends at %p for a length of %d\n", s, &(s[9].c), (char *) p2 - (char *) p1); } MPI_Type_extent(str, &text); MPI_Type_size(str, &tsize); MTestPrintfMsg(0, "Size of MPI struct is %d, extent is %d\n", tsize, (int) text); MTestPrintfMsg(0, "Size of C struct is %d\n", sizeof(struct a)); if (text != sizeof(struct a)) { fprintf(stderr, "Extent of struct a (%d) does not match sizeof (%d)\n", (int) text, (int) sizeof(struct a)); errs++; } MPI_Send(s, 1, con, rank ^ 1, 0, MPI_COMM_WORLD); MPI_Recv(s1, 1, con, rank ^ 1, 0, MPI_COMM_WORLD, &status); for (j = 0; j < 10; j++) { MTestPrintfMsg(0, "%d Sent: %d %c, Got: %d %c\n", rank, s[j].i, s[j].c, s1[j].i, s1[j].c); if (s1[j].i != j + status.MPI_SOURCE) { errs++; fprintf(stderr, "Got s[%d].i = %d; expected %d\n", j, s1[j].i, j + status.MPI_SOURCE); } if (s1[j].c != 'a' + j + status.MPI_SOURCE) { errs++; /* If the character is not a printing character, * this can generate a file that diff, for example, * believes is a binary file */ if (isprint((int) (s1[j].c))) { fprintf(stderr, "Got s[%d].c = %c; expected %c\n", j, s1[j].c, j + status.MPI_SOURCE + 'a'); } else { fprintf(stderr, "Got s[%d].c = %x; expected %c\n", j, (int) s1[j].c, j + status.MPI_SOURCE + 'a'); } } } MPI_Type_free(&str); MPI_Type_free(&con); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/datatype/lbub.c0000644000175000017500000011736712620254305017302 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include "mpitestconf.h" #ifdef HAVE_STRING_H #include #endif /* The default behavior of the test routines should be to briefly indicate the cause of any errors - in this test, that means that verbose needs to be set. Verbose should turn on output that is independent of error levels. */ static int verbose = 1; /* tests */ int int_with_lb_ub_test(void); int contig_of_int_with_lb_ub_test(void); int contig_negextent_of_int_with_lb_ub_test(void); int vector_of_int_with_lb_ub_test(void); int vector_blklen_of_int_with_lb_ub_test(void); int vector_blklen_stride_of_int_with_lb_ub_test(void); int vector_blklen_stride_negextent_of_int_with_lb_ub_test(void); int vector_blklen_negstride_negextent_of_int_with_lb_ub_test(void); int int_with_negextent_test(void); int vector_blklen_negstride_of_int_with_lb_ub_test(void); /* helper functions */ int parse_args(int argc, char **argv); int main(int argc, char **argv) { int err, errs = 0; MTest_Init(&argc, &argv); parse_args(argc, argv); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); /* perform some tests */ err = int_with_lb_ub_test(); if (err && verbose) fprintf(stderr, "found %d errors in simple lb/ub test\n", err); errs += err; err = contig_of_int_with_lb_ub_test(); if (err && verbose) fprintf(stderr, "found %d errors in contig test\n", err); errs += err; err = contig_negextent_of_int_with_lb_ub_test(); if (err && verbose) fprintf(stderr, "found %d errors in negextent contig test\n", err); errs += err; err = vector_of_int_with_lb_ub_test(); if (err && verbose) fprintf(stderr, "found %d errors in simple vector test\n", err); errs += err; err = vector_blklen_of_int_with_lb_ub_test(); if (err && verbose) fprintf(stderr, "found %d errors in vector blklen test\n", err); errs += err; err = vector_blklen_stride_of_int_with_lb_ub_test(); if (err && verbose) fprintf(stderr, "found %d errors in strided vector test\n", err); errs += err; err = vector_blklen_negstride_of_int_with_lb_ub_test(); if (err && verbose) fprintf(stderr, "found %d errors in negstrided vector test\n", err); errs += err; err = int_with_negextent_test(); if (err && verbose) fprintf(stderr, "found %d errors in negextent lb/ub test\n", err); errs += err; err = vector_blklen_stride_negextent_of_int_with_lb_ub_test(); if (err && verbose) fprintf(stderr, "found %d errors in strided negextent vector test\n", err); errs += err; err = vector_blklen_negstride_negextent_of_int_with_lb_ub_test(); if (err && verbose) fprintf(stderr, "found %d errors in negstrided negextent vector test\n", err); errs += err; MTest_Finalize(errs); MPI_Finalize(); return 0; } int parse_args(int argc, char **argv) { /* * int ret; * * while ((ret = getopt(argc, argv, "v")) >= 0) * { * switch (ret) { * case 'v': * verbose = 1; * break; * } * } */ if (argc > 1 && strcmp(argv[1], "-v") == 0) verbose = 1; return 0; } int int_with_lb_ub_test(void) { int err, errs = 0, val; MPI_Aint lb, extent, aval, true_lb; int blocks[3] = { 1, 4, 1 }; MPI_Aint disps[3] = { -3, 0, 6 }; MPI_Datatype types[3] = { MPI_LB, MPI_BYTE, MPI_UB }; MPI_Datatype eviltype; err = MPI_Type_struct(3, blocks, disps, types, &eviltype); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_struct failed.\n"); if (verbose) MTestPrintError(err); } err = MPI_Type_size(eviltype, &val); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_size failed.\n"); if (verbose) MTestPrintError(err); } if (val != 4) { errs++; if (verbose) fprintf(stderr, " size of type = %d; should be %d\n", val, 4); } err = MPI_Type_extent(eviltype, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_extent failed.\n"); if (verbose) MTestPrintError(err); } if (aval != 9) { errs++; if (verbose) fprintf(stderr, " extent of type = %ld; should be %d\n", (long) aval, 9); } err = MPI_Type_lb(eviltype, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_lb failed.\n"); if (verbose) MTestPrintError(err); } if (aval != -3) { errs++; if (verbose) fprintf(stderr, " lb of type = %d; should be %d\n", (int) aval, -3); } err = MPI_Type_get_extent(eviltype, &lb, &extent); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_get_extent failed.\n"); if (verbose) MTestPrintError(err); } if (lb != -3) { errs++; if (verbose) fprintf(stderr, " lb of type = %d; should be %d\n", (int) aval, -3); } if (extent != 9) { errs++; if (verbose) fprintf(stderr, " extent of type = %d; should be %d\n", (int) extent, 9); } err = MPI_Type_ub(eviltype, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_ub failed.\n"); if (verbose) MTestPrintError(err); } if (aval != 6) { errs++; if (verbose) fprintf(stderr, " ub of type = %d; should be %d\n", (int) aval, 6); } err = MPI_Type_get_true_extent(eviltype, &true_lb, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_get_true_extent failed.\n"); if (verbose) MTestPrintError(err); } if (true_lb != 0) { errs++; if (verbose) fprintf(stderr, " true_lb of type = %d; should be %d\n", (int) true_lb, 0); } if (aval != 4) { errs++; if (verbose) fprintf(stderr, " true extent of type = %d; should be %d\n", (int) aval, 4); } MPI_Type_free(&eviltype); return errs; } int contig_of_int_with_lb_ub_test(void) { int err, errs = 0, val; MPI_Aint lb, extent, aval, true_lb; int blocks[3] = { 1, 4, 1 }; MPI_Aint disps[3] = { -3, 0, 6 }; MPI_Datatype types[3] = { MPI_LB, MPI_BYTE, MPI_UB }; char *typemapstring = 0; MPI_Datatype inttype, eviltype; /* build same type as in int_with_lb_ub_test() */ typemapstring = (char *) "{ (LB,-3),4*(BYTE,0),(UB,6) }"; err = MPI_Type_struct(3, blocks, disps, types, &inttype); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_struct of %s failed.\n", typemapstring); if (verbose) MTestPrintError(err); /* no point in continuing */ return errs; } typemapstring = (char *) "{ (LB,-3),4*(BYTE,0),(UB,6),(LB,6),4*(BYTE,9),(UB,15),(LB,15),4*(BYTE,18),(UB,24)}"; err = MPI_Type_contiguous(3, inttype, &eviltype); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_contiguous of %s failed.\n", typemapstring); if (verbose) MTestPrintError(err); /* no point in continuing */ return errs; } err = MPI_Type_size(eviltype, &val); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_size of %s failed.\n", typemapstring); if (verbose) MTestPrintError(err); } if (val != 12) { errs++; if (verbose) fprintf(stderr, " size of type = %d; should be %d\n", val, 12); } err = MPI_Type_extent(eviltype, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_extent failed.\n"); if (verbose) MTestPrintError(err); } if (aval != 27) { errs++; if (verbose) fprintf(stderr, " extent of type = %d; should be %d\n", (int) aval, 27); if (verbose) fprintf(stderr, " for type %s\n", typemapstring); } err = MPI_Type_lb(eviltype, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_lb failed.\n"); if (verbose) MTestPrintError(err); } if (aval != -3) { errs++; if (verbose) fprintf(stderr, " lb of type = %d from Type_lb; should be %d in %s\n", (int) aval, -3, typemapstring); } err = MPI_Type_get_extent(eviltype, &lb, &extent); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_get_extent failed.\n"); if (verbose) MTestPrintError(err); } if (lb != -3) { errs++; if (verbose) fprintf(stderr, " lb of type = %d from Type_get_extent; should be %d in %s\n", (int) aval, -3, typemapstring); } if (extent != 27) { errs++; if (verbose) fprintf(stderr, " extent of type = %d from Type_get_extent; should be %d in %s\n", (int) extent, 27, typemapstring); } err = MPI_Type_ub(eviltype, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_ub failed.\n"); if (verbose) MTestPrintError(err); } if (aval != 24) { errs++; if (verbose) fprintf(stderr, " ub of type = %d in Type_ub; should be %din %s\n", (int) aval, 24, typemapstring); } err = MPI_Type_get_true_extent(eviltype, &true_lb, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_get_true_extent failed.\n"); if (verbose) MTestPrintError(err); } if (true_lb != 0) { errs++; if (verbose) fprintf(stderr, " true_lb of type = %d; should be %d in %s\n", (int) true_lb, 0, typemapstring); } if (aval != 22) { errs++; if (verbose) fprintf(stderr, " true extent of type = %d; should be %d in %s\n", (int) aval, 22, typemapstring); } MPI_Type_free(&inttype); MPI_Type_free(&eviltype); return errs; } int contig_negextent_of_int_with_lb_ub_test(void) { int err, errs = 0, val; MPI_Aint lb, extent, aval, true_lb; int blocks[3] = { 1, 4, 1 }; MPI_Aint disps[3] = { 6, 0, -3 }; MPI_Datatype types[3] = { MPI_LB, MPI_BYTE, MPI_UB }; char *typemapstring = 0; MPI_Datatype inttype, eviltype; /* build same type as in int_with_lb_ub_test() */ typemapstring = (char *) "{ (LB,6),4*(BYTE,0),(UB,-3) }"; err = MPI_Type_struct(3, blocks, disps, types, &inttype); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_struct of %s failed.\n", typemapstring); if (verbose) MTestPrintError(err); /* No point in continuing */ return errs; } typemapstring = (char *) "{ (LB,6),4*(BYTE,0),(UB,-3),(LB,-3),4*(BYTE,-9),(UB,-12),(LB,-12),4*(BYTE,-18),(UB,-21) }"; err = MPI_Type_contiguous(3, inttype, &eviltype); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_contiguous of %s failed.\n", typemapstring); if (verbose) MTestPrintError(err); /* No point in continuing */ return errs; } err = MPI_Type_size(eviltype, &val); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_size of %s failed.\n", typemapstring); if (verbose) MTestPrintError(err); } if (val != 12) { errs++; if (verbose) fprintf(stderr, " size of type = %d; should be %d\n", val, 12); } err = MPI_Type_extent(eviltype, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_extent failed.\n"); if (verbose) MTestPrintError(err); } if (aval != 9) { errs++; if (verbose) fprintf(stderr, " extent of type = %d; should be %d\n", (int) aval, 9); } err = MPI_Type_lb(eviltype, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_lb failed.\n"); if (verbose) MTestPrintError(err); } if (aval != -12) { errs++; if (verbose) fprintf(stderr, " lb of type = %d; should be %d\n", (int) aval, -12); } err = MPI_Type_get_extent(eviltype, &lb, &extent); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_get_extent failed.\n"); if (verbose) MTestPrintError(err); } if (lb != -12) { errs++; if (verbose) fprintf(stderr, " lb of type = %d; should be %d\n", (int) aval, -12); } if (extent != 9) { errs++; if (verbose) fprintf(stderr, " extent of type = %d; should be %d\n", (int) extent, 9); } err = MPI_Type_ub(eviltype, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_ub failed.\n"); if (verbose) MTestPrintError(err); } if (aval != -3) { errs++; if (verbose) fprintf(stderr, " ub of type = %d; should be %d\n", (int) aval, -3); } err = MPI_Type_get_true_extent(eviltype, &true_lb, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_get_true_extent failed.\n"); if (verbose) MTestPrintError(err); } if (true_lb != -18) { errs++; if (verbose) fprintf(stderr, " true_lb of type = %d; should be %d\n", (int) true_lb, -18); } if (aval != 22) { errs++; if (verbose) fprintf(stderr, " true extent of type = %d; should be %d\n", (int) aval, 22); } MPI_Type_free(&inttype); MPI_Type_free(&eviltype); return errs; } int vector_of_int_with_lb_ub_test(void) { int err, errs = 0, val; MPI_Aint lb, extent, aval, true_lb; int blocks[3] = { 1, 4, 1 }; MPI_Aint disps[3] = { -3, 0, 6 }; MPI_Datatype types[3] = { MPI_LB, MPI_BYTE, MPI_UB }; MPI_Datatype inttype, eviltype; /* build same type as in int_with_lb_ub_test() */ err = MPI_Type_struct(3, blocks, disps, types, &inttype); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_struct failed.\n"); if (verbose) MTestPrintError(err); /* no point in continuing */ return errs; } err = MPI_Type_vector(3, 1, 1, inttype, &eviltype); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_vector failed.\n"); if (verbose) MTestPrintError(err); /* no point in continuing */ return errs; } err = MPI_Type_size(eviltype, &val); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_size failed.\n"); if (verbose) MTestPrintError(err); } if (val != 12) { errs++; if (verbose) fprintf(stderr, " size of type = %d; should be %d\n", val, 12); } err = MPI_Type_extent(eviltype, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_extent failed.\n"); if (verbose) MTestPrintError(err); } if (aval != 27) { errs++; if (verbose) fprintf(stderr, " extent of type = %d; should be %d\n", (int) aval, 27); } err = MPI_Type_lb(eviltype, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_lb failed.\n"); if (verbose) MTestPrintError(err); } if (aval != -3) { errs++; if (verbose) fprintf(stderr, " lb of type = %d; should be %d\n", (int) aval, -3); } err = MPI_Type_get_extent(eviltype, &lb, &extent); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_get_extent failed.\n"); if (verbose) MTestPrintError(err); } if (lb != -3) { errs++; if (verbose) fprintf(stderr, " lb of type = %d; should be %d\n", (int) aval, -3); } if (extent != 27) { errs++; if (verbose) fprintf(stderr, " extent of type = %d; should be %d\n", (int) extent, 27); } err = MPI_Type_ub(eviltype, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_ub failed.\n"); if (verbose) MTestPrintError(err); } if (aval != 24) { errs++; if (verbose) fprintf(stderr, " ub of type = %d; should be %d\n", (int) aval, 24); } err = MPI_Type_get_true_extent(eviltype, &true_lb, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_get_true_extent failed.\n"); if (verbose) MTestPrintError(err); } if (true_lb != 0) { errs++; if (verbose) fprintf(stderr, " true_lb of type = %d; should be %d\n", (int) true_lb, 0); } if (aval != 22) { errs++; if (verbose) fprintf(stderr, " true extent of type = %d; should be %d\n", (int) aval, 22); } MPI_Type_free(&inttype); MPI_Type_free(&eviltype); return errs; } /* * blklen = 4 */ int vector_blklen_of_int_with_lb_ub_test(void) { int err, errs = 0, val; MPI_Aint lb, extent, aval, true_lb; int blocks[3] = { 1, 4, 1 }; MPI_Aint disps[3] = { -3, 0, 6 }; MPI_Datatype types[3] = { MPI_LB, MPI_BYTE, MPI_UB }; MPI_Datatype inttype, eviltype; /* build same type as in int_with_lb_ub_test() */ err = MPI_Type_struct(3, blocks, disps, types, &inttype); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_struct failed.\n"); if (verbose) MTestPrintError(err); /* no point in continuing */ return errs; } err = MPI_Type_vector(3, 4, 1, inttype, &eviltype); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_vector failed.\n"); if (verbose) MTestPrintError(err); /* no point in continuing */ return errs; } err = MPI_Type_size(eviltype, &val); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_size failed.\n"); if (verbose) MTestPrintError(err); } if (val != 48) { errs++; if (verbose) fprintf(stderr, " size of type = %d; should be %d\n", val, 48); } err = MPI_Type_extent(eviltype, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_extent failed.\n"); if (verbose) MTestPrintError(err); } if (aval != 54) { errs++; if (verbose) fprintf(stderr, " extent of type = %d; should be %d\n", (int) aval, 54); } err = MPI_Type_lb(eviltype, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_lb failed.\n"); if (verbose) MTestPrintError(err); } if (aval != -3) { errs++; if (verbose) fprintf(stderr, " lb of type = %d; should be %d\n", (int) aval, -3); if (verbose) MTestPrintError(err); } err = MPI_Type_get_extent(eviltype, &lb, &extent); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_get_extent failed.\n"); if (verbose) MTestPrintError(err); } if (lb != -3) { errs++; if (verbose) fprintf(stderr, " lb of type = %d; should be %d\n", (int) aval, -3); } if (extent != 54) { errs++; if (verbose) fprintf(stderr, " extent of type = %d; should be %d\n", (int) extent, 54); } err = MPI_Type_ub(eviltype, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_ub failed.\n"); if (verbose) MTestPrintError(err); } if (aval != 51) { errs++; if (verbose) fprintf(stderr, " ub of type = %d; should be %d\n", (int) aval, 51); } err = MPI_Type_get_true_extent(eviltype, &true_lb, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_get_true_extent failed.\n"); if (verbose) MTestPrintError(err); } if (true_lb != 0) { errs++; if (verbose) fprintf(stderr, " true_lb of type = %d; should be %d\n", (int) true_lb, 0); } if (aval != 49) { errs++; if (verbose) fprintf(stderr, " true extent of type = %d; should be %d\n", (int) aval, 49); } MPI_Type_free(&inttype); MPI_Type_free(&eviltype); return errs; } int vector_blklen_stride_of_int_with_lb_ub_test(void) { int err, errs = 0, val; MPI_Aint lb, extent, aval, true_lb; int blocks[3] = { 1, 4, 1 }; MPI_Aint disps[3] = { -3, 0, 6 }; MPI_Datatype types[3] = { MPI_LB, MPI_BYTE, MPI_UB }; char *typemapstring = 0; MPI_Datatype inttype, eviltype; /* build same type as in int_with_lb_ub_test() */ typemapstring = (char *) "{ (LB,-3),4*(BYTE,0),(UB,6) }"; err = MPI_Type_struct(3, blocks, disps, types, &inttype); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_struct of %s failed.\n", typemapstring); if (verbose) MTestPrintError(err); /* No point in continuing */ return errs; } err = MPI_Type_vector(3, 4, 5, inttype, &eviltype); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_vector failed.\n"); if (verbose) MTestPrintError(err); /* no point in continuing */ return errs; } err = MPI_Type_size(eviltype, &val); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_size failed.\n"); if (verbose) MTestPrintError(err); } if (val != 48) { errs++; if (verbose) fprintf(stderr, " size of type = %d; should be %d\n", val, 48); } err = MPI_Type_extent(eviltype, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_extent failed.\n"); if (verbose) MTestPrintError(err); } if (aval != 126) { errs++; if (verbose) fprintf(stderr, " extent of type = %d; should be %d\n", (int) aval, 126); } err = MPI_Type_lb(eviltype, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_lb failed.\n"); if (verbose) MTestPrintError(err); } if (aval != -3) { errs++; if (verbose) fprintf(stderr, " lb of type = %d; should be %d\n", (int) aval, -3); } err = MPI_Type_get_extent(eviltype, &lb, &extent); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_get_extent failed.\n"); if (verbose) MTestPrintError(err); } if (lb != -3) { errs++; if (verbose) fprintf(stderr, " lb of type = %d; should be %d\n", (int) aval, -3); } if (extent != 126) { errs++; if (verbose) fprintf(stderr, " extent of type = %d; should be %d\n", (int) extent, 126); } err = MPI_Type_ub(eviltype, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_ub failed.\n"); if (verbose) MTestPrintError(err); } if (aval != 123) { errs++; if (verbose) fprintf(stderr, " ub of type = %d; should be %d\n", (int) aval, 123); } err = MPI_Type_get_true_extent(eviltype, &true_lb, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_get_true_extent failed.\n"); if (verbose) MTestPrintError(err); } if (true_lb != 0) { errs++; if (verbose) fprintf(stderr, " true_lb of type = %d; should be %d\n", (int) true_lb, 0); } if (aval != 121) { errs++; if (verbose) fprintf(stderr, " true extent of type = %d; should be %d\n", (int) aval, 121); } MPI_Type_free(&inttype); MPI_Type_free(&eviltype); return errs; } int vector_blklen_negstride_of_int_with_lb_ub_test(void) { int err, errs = 0, val; MPI_Aint lb, extent, aval, true_lb; int blocks[3] = { 1, 4, 1 }; MPI_Aint disps[3] = { -3, 0, 6 }; MPI_Datatype types[3] = { MPI_LB, MPI_BYTE, MPI_UB }; MPI_Datatype inttype, eviltype; /* build same type as in int_with_lb_ub_test() */ err = MPI_Type_struct(3, blocks, disps, types, &inttype); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_struct failed.\n"); if (verbose) MTestPrintError(err); /* no point in continuing */ return errs; } err = MPI_Type_vector(3, 4, -5, inttype, &eviltype); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_vector failed.\n"); if (verbose) MTestPrintError(err); /* no point in continuing */ return errs; } err = MPI_Type_size(eviltype, &val); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_size failed.\n"); if (verbose) MTestPrintError(err); } if (val != 48) { errs++; if (verbose) fprintf(stderr, " size of type = %d; should be %d\n", val, 48); } err = MPI_Type_extent(eviltype, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_extent failed.\n"); if (verbose) MTestPrintError(err); } if (aval != 126) { errs++; if (verbose) fprintf(stderr, " extent of type = %d; should be %d\n", (int) aval, 126); } err = MPI_Type_lb(eviltype, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_lb failed.\n"); if (verbose) MTestPrintError(err); } if (aval != -93) { errs++; if (verbose) fprintf(stderr, " lb of type = %d; should be %d\n", (int) aval, -93); } err = MPI_Type_get_extent(eviltype, &lb, &extent); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_get_extent failed.\n"); if (verbose) MTestPrintError(err); } if (lb != -93) { errs++; if (verbose) fprintf(stderr, " lb of type = %d; should be %d\n", (int) aval, -93); } if (extent != 126) { errs++; if (verbose) fprintf(stderr, " extent of type = %d; should be %d\n", (int) extent, 126); } err = MPI_Type_ub(eviltype, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_ub failed.\n"); if (verbose) MTestPrintError(err); } if (aval != 33) { errs++; if (verbose) fprintf(stderr, " ub of type = %d; should be %d\n", (int) aval, 33); } err = MPI_Type_get_true_extent(eviltype, &true_lb, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_get_true_extent failed.\n"); if (verbose) MTestPrintError(err); } if (true_lb != -90) { errs++; if (verbose) fprintf(stderr, " true_lb of type = %d; should be %d\n", (int) true_lb, -90); } if (aval != 121) { errs++; if (verbose) fprintf(stderr, " true extent of type = %d; should be %d\n", (int) aval, 121); } MPI_Type_free(&inttype); MPI_Type_free(&eviltype); return errs; } int int_with_negextent_test(void) { int err, errs = 0, val; MPI_Aint lb, extent, aval, true_lb; int blocks[3] = { 1, 4, 1 }; MPI_Aint disps[3] = { 6, 0, -3 }; MPI_Datatype types[3] = { MPI_LB, MPI_BYTE, MPI_UB }; char *typemapstring = 0; MPI_Datatype eviltype; typemapstring = (char *) "{ (LB,6),4*(BYTE,0),(UB,-3) }"; err = MPI_Type_struct(3, blocks, disps, types, &eviltype); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_struct of %s failed.\n", typemapstring); if (verbose) MTestPrintError(err); /* No point in contiuing */ return errs; } err = MPI_Type_size(eviltype, &val); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_size failed.\n"); if (verbose) MTestPrintError(err); } if (val != 4) { errs++; if (verbose) fprintf(stderr, " size of type = %d; should be %d\n", val, 4); } err = MPI_Type_extent(eviltype, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_extent failed.\n"); if (verbose) MTestPrintError(err); } if (aval != -9) { errs++; if (verbose) fprintf(stderr, " extent of type = %d; should be %d\n", (int) aval, -9); } err = MPI_Type_lb(eviltype, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_lb failed.\n"); if (verbose) MTestPrintError(err); } if (aval != 6) { errs++; if (verbose) fprintf(stderr, " lb of type = %d; should be %d\n", (int) aval, 6); } err = MPI_Type_get_extent(eviltype, &lb, &extent); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_get_extent failed.\n"); if (verbose) MTestPrintError(err); } if (lb != 6) { errs++; if (verbose) fprintf(stderr, " lb of type = %d; should be %d\n", (int) aval, 6); } if (extent != -9) { errs++; if (verbose) fprintf(stderr, " extent of type = %d; should be %d\n", (int) extent, -9); } err = MPI_Type_ub(eviltype, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_ub failed.\n"); if (verbose) MTestPrintError(err); } if (aval != -3) { errs++; if (verbose) fprintf(stderr, " ub of type = %d; should be %d\n", (int) aval, -3); } err = MPI_Type_get_true_extent(eviltype, &true_lb, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_get_true_extent failed.\n"); if (verbose) MTestPrintError(err); } if (true_lb != 0) { errs++; if (verbose) fprintf(stderr, " true_lb of type = %d; should be %d\n", (int) true_lb, 0); } if (aval != 4) { errs++; if (verbose) fprintf(stderr, " true extent of type = %d; should be %d\n", (int) aval, 4); } MPI_Type_free(&eviltype); return errs; } int vector_blklen_stride_negextent_of_int_with_lb_ub_test(void) { int err, errs = 0, val; MPI_Aint lb, extent, true_lb, aval; int blocks[3] = { 1, 4, 1 }; MPI_Aint disps[3] = { 6, 0, -3 }; MPI_Datatype types[3] = { MPI_LB, MPI_BYTE, MPI_UB }; MPI_Datatype inttype, eviltype; char *typemapstring = 0; /* build same type as in int_with_lb_ub_test() */ typemapstring = (char *) "{ (LB,6),4*(BYTE,0),(UB,-3) }"; err = MPI_Type_struct(3, blocks, disps, types, &inttype); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_struct of %s failed.\n", typemapstring); if (verbose) MTestPrintError(err); /* No point in continuing */ return errs; } err = MPI_Type_vector(3, 4, 5, inttype, &eviltype); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_vector failed.\n"); if (verbose) MTestPrintError(err); /* no point in continuing */ return errs; } err = MPI_Type_size(eviltype, &val); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_size failed.\n"); if (verbose) MTestPrintError(err); } if (val != 48) { errs++; if (verbose) fprintf(stderr, " size of type = %d; should be %d\n", val, 48); } err = MPI_Type_extent(eviltype, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_extent failed.\n"); if (verbose) MTestPrintError(err); } if (aval != 108) { errs++; if (verbose) fprintf(stderr, " extent of type = %d; should be %d\n", (int) aval, 108); } err = MPI_Type_lb(eviltype, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_lb failed.\n"); if (verbose) MTestPrintError(err); } if (aval != -111) { errs++; if (verbose) fprintf(stderr, " lb of type = %d; should be %d\n", (int) aval, -111); } err = MPI_Type_get_extent(eviltype, &lb, &extent); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_get_extent failed.\n"); if (verbose) MTestPrintError(err); } if (lb != -111) { errs++; if (verbose) fprintf(stderr, " lb of type = %d; should be %d\n", (int) aval, -111); } if (extent != 108) { errs++; if (verbose) fprintf(stderr, " extent of type = %d; should be %d\n", (int) extent, 108); } err = MPI_Type_ub(eviltype, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_ub failed.\n"); if (verbose) MTestPrintError(err); } if (aval != -3) { errs++; if (verbose) fprintf(stderr, " ub of type = %d; should be %d\n", (int) aval, -3); } err = MPI_Type_get_true_extent(eviltype, &true_lb, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_get_true_extent failed.\n"); if (verbose) MTestPrintError(err); } if (true_lb != -117) { errs++; if (verbose) fprintf(stderr, " true_lb of type = %d; should be %d\n", (int) true_lb, -117); } if (aval != 121) { errs++; if (verbose) fprintf(stderr, " true extent of type = %d; should be %d\n", (int) aval, 121); } MPI_Type_free(&inttype); MPI_Type_free(&eviltype); return errs; } int vector_blklen_negstride_negextent_of_int_with_lb_ub_test(void) { int err, errs = 0, val; MPI_Aint extent, lb, aval, true_lb; int blocks[3] = { 1, 4, 1 }; MPI_Aint disps[3] = { 6, 0, -3 }; MPI_Datatype types[3] = { MPI_LB, MPI_BYTE, MPI_UB }; MPI_Datatype inttype, eviltype; /* build same type as in int_with_lb_ub_test() */ err = MPI_Type_struct(3, blocks, disps, types, &inttype); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_struct failed.\n"); if (verbose) MTestPrintError(err); /* no point in continuing */ return errs; } err = MPI_Type_vector(3, 4, -5, inttype, &eviltype); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_vector failed.\n"); if (verbose) MTestPrintError(err); /* no point in continuing */ return errs; } err = MPI_Type_size(eviltype, &val); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_size failed.\n"); if (verbose) MTestPrintError(err); } if (val != 48) { errs++; if (verbose) fprintf(stderr, " size of type = %d; should be %d\n", val, 48); } err = MPI_Type_extent(eviltype, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_extent failed.\n"); if (verbose) MTestPrintError(err); } if (aval != 108) { errs++; if (verbose) fprintf(stderr, " extent of type = %ld; should be %d\n", (long) aval, 108); } err = MPI_Type_lb(eviltype, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_lb failed.\n"); if (verbose) MTestPrintError(err); } if (aval != -21) { errs++; if (verbose) fprintf(stderr, " lb of type = %ld; should be %d\n", (long) aval, -21); } err = MPI_Type_get_extent(eviltype, &lb, &extent); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_get_extent failed.\n"); if (verbose) MTestPrintError(err); } if (lb != -21) { errs++; if (verbose) fprintf(stderr, " lb of type = %ld; should be %d\n", (long) aval, -21); } if (extent != 108) { errs++; if (verbose) fprintf(stderr, " extent of type = %ld; should be %d\n", (long) extent, 108); } err = MPI_Type_ub(eviltype, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_ub failed.\n"); if (verbose) MTestPrintError(err); } if (aval != 87) { errs++; if (verbose) fprintf(stderr, " ub of type = %ld; should be %d\n", (long) aval, 87); } err = MPI_Type_get_true_extent(eviltype, &true_lb, &aval); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, " MPI_Type_get_true_extent failed.\n"); if (verbose) MTestPrintError(err); } if (true_lb != -27) { errs++; if (verbose) fprintf(stderr, " true_lb of type = %ld; should be %d\n", (long) true_lb, -27); } if (aval != 121) { errs++; if (verbose) fprintf(stderr, " true extent of type = %ld; should be %d\n", (long) aval, 121); } MPI_Type_free(&inttype); MPI_Type_free(&eviltype); return errs; } mpi-testsuite-3.2+dfsg/datatype/tresized.c0000644000175000017500000000413012620254305020166 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test of type resized"; */ int main(int argc, char *argv[]) { int errs = 0, i; int rank, size, source, dest; int count; int *buf; MPI_Comm comm; MPI_Status status; MPI_Datatype newtype; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; /* Determine the sender and receiver */ MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); source = 0; dest = size - 1; MPI_Type_create_resized(MPI_INT, 0, 3 * sizeof(int), &newtype); MPI_Type_commit(&newtype); for (count = 1; count < 65000; count = count * 2) { buf = (int *) malloc(count * 3 * sizeof(int)); if (!buf) { MPI_Abort(comm, 1); } for (i = 0; i < 3 * count; i++) buf[i] = -1; if (rank == source) { for (i = 0; i < count; i++) buf[3 * i] = i; MPI_Send(buf, count, newtype, dest, 0, comm); MPI_Send(buf, count, newtype, dest, 1, comm); } else if (rank == dest) { MPI_Recv(buf, count, MPI_INT, source, 0, comm, &status); for (i = 0; i < count; i++) { if (buf[i] != i) { errs++; if (errs < 10) { printf("buf[%d] = %d\n", i, buf[i]); } } } for (i = 0; i < count * 3; i++) buf[i] = -1; MPI_Recv(buf, count, newtype, source, 1, comm, &status); for (i = 0; i < count; i++) { if (buf[3 * i] != i) { errs++; if (errs < 10) { printf("buf[3*%d] = %d\n", i, buf[i]); } } } } } MPI_Type_free(&newtype); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/datatype/testlist.in0000644000175000017500000000220212620254305020372 0ustar mbanckmbanckcontents 1 gaddress 1 lbub 1 localpack 1 simple-pack 1 simple-pack-external 1 transpose-pack 1 slice-pack 1 struct-pack 1 structpack2 1 typecommit 1 typename 1 typefree 1 zeroparms 1 getpartelm 2 tresized 2 tresized2 2 sendrecvt2 2 sendrecvt4 2 tmatchsize 1 tfree 2 typelb 1 contigstruct 1 struct-zero-count 1 blockindexed-zero-count 1 blockindexed-misc 1 indexed-misc 1 subarray-pack 1 subarray 2 darray-pack 1 darray-pack 9 darray-pack 72 darray-cyclic 12 pairtype-size-extent 1 simple-commit 1 simple-size-extent 1 struct-no-real-types 1 struct-empty-el 1 contig-zero-count 1 simple-resized 1 unusual-noncontigs 1 hindexed-zeros 1 lots-of-types 1 get-elements-pairtype 1 unpack 1 struct-ezhov 1 zeroblks 1 struct-derived-zeros 1 struct-verydeep 1 get-elements 1 hindexed_block 1 mpiversion=3.0 hindexed_block_contents 1 mpiversion=3.0 vecblklen 1 hvecblklen 1 longdouble 1 dataalign 2 @largetest@large-count 1 mpiversion=3.0 cxx-types 1 mpiversion=3.0 @largetest@large_type 1 mpiversion=3.0 @largetest@large_type_sendrec 2 arg=31 mpiversion=3.0 @largetest@large_type_sendrec 2 arg=32 mpiversion=3.0 timeLimit=360 @largetest@large_vec 3 mpiversion=3.0 mpi-testsuite-3.2+dfsg/datatype/simple-size-extent.c0000644000175000017500000001104112620254305022102 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Tests that Type_get_extent of a couple of basic types succeeds. */ #include "mpi.h" #include #include "mpitestconf.h" #ifdef HAVE_STRING_H #include #endif static int verbose = 0; int parse_args(int argc, char **argv); int main(int argc, char **argv) { int mpi_err, errs = 0, size; MPI_Aint lb, ub, extent; MPI_Datatype type; struct { float a; int b; } foo; MPI_Init(&argc, &argv); parse_args(argc, argv); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); type = MPI_INT; mpi_err = MPI_Type_size(type, &size); if (mpi_err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "MPI_Type_size of MPI_INT failed.\n"); } errs++; } if (size != sizeof(int)) { if (verbose) { fprintf(stderr, "MPI_Type_size of MPI_INT incorrect size (%d); should be %d.\n", size, (int) sizeof(int)); } errs++; } mpi_err = MPI_Type_get_extent(type, &lb, &extent); if (mpi_err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "MPI_Type_get_extent of MPI_INT failed.\n"); } errs++; } if (extent != sizeof(int)) { if (verbose) { fprintf(stderr, "MPI_Type_get_extent of MPI_INT returned incorrect extent (%d); should be %d.\n", (int) extent, (int) sizeof(int)); } errs++; } if (lb != 0) { if (verbose) { fprintf(stderr, "MPI_Type_get_extent of MPI_INT returned incorrect lb (%d); should be 0.\n", (int) lb); } errs++; } mpi_err = MPI_Type_ub(type, &ub); if (mpi_err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "MPI_Type_ub of MPI_INT failed.\n"); } errs++; } if (ub != extent - lb) { if (verbose) { fprintf(stderr, "MPI_Type_ub of MPI_INT returned incorrect ub (%d); should be %d.\n", (int) ub, (int) (extent - lb)); } errs++; } type = MPI_FLOAT_INT; mpi_err = MPI_Type_size(type, &size); if (mpi_err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "MPI_Type_size of MPI_FLOAT_INT failed.\n"); } errs++; } if (size != sizeof(float) + sizeof(int)) { if (verbose) { fprintf(stderr, "MPI_Type_size of MPI_FLOAT_INT returned incorrect size (%d); should be %d.\n", size, (int) (sizeof(float) + sizeof(int))); } errs++; } mpi_err = MPI_Type_get_extent(type, &lb, &extent); if (mpi_err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "MPI_Type_get_extent of MPI_FLOAT_INT failed.\n"); } errs++; } if (extent != sizeof(foo)) { if (verbose) { fprintf(stderr, "MPI_Type_get_extent of MPI_FLOAT_INT returned incorrect extent (%d); should be %d.\n", (int) extent, (int) sizeof(foo)); } errs++; } if (lb != 0) { if (verbose) { fprintf(stderr, "MPI_Type_get_extent of MPI_FLOAT_INT returned incorrect lb (%d); should be 0.\n", (int) lb); } errs++; } mpi_err = MPI_Type_ub(type, &ub); if (mpi_err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "MPI_Type_ub of MPI_FLOAT_INT failed.\n"); } errs++; } if (ub != extent - lb) { if (verbose) { fprintf(stderr, "MPI_Type_ub of MPI_FLOAT_INT returned incorrect ub (%d); should be %d.\n", (int) ub, (int) (extent - lb)); } errs++; } /* print message and exit */ if (errs) { fprintf(stderr, "Found %d errors\n", errs); } else { printf(" No Errors\n"); } MPI_Finalize(); return 0; } int parse_args(int argc, char **argv) { /* * int ret; * * while ((ret = getopt(argc, argv, "v")) >= 0) * { * switch (ret) { * case 'v': * verbose = 1; * break; * } * } */ if (argc > 1 && strcmp(argv[1], "-v") == 0) verbose = 1; return 0; } mpi-testsuite-3.2+dfsg/datatype/unpack.c0000644000175000017500000000565412620254305017632 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" #include #include /* Test sent in by Avery Ching to report a bug in MPICH. Adding it as a regression test. */ /* static void print_char_buf(char *buf_name, char *buf, int buf_len) { int i; printf("print_char_buf: %s\n", buf_name); for (i = 0; i < buf_len; i++) { printf("%c ", buf[i]); if (((i + 1) % 10) == 0) printf("\n"); else if (((i + 1) % 5) == 0) printf(" "); } printf("\n"); } */ char correct_buf[] = { 'a', '_', 'b', 'c', '_', '_', '_', '_', 'd', '_', 'e', 'f', 'g', '_', 'h', 'i', 'j', '_', 'k', 'l', '_', '_', '_', '_', 'm', '_', 'n', 'o', 'p', '_', 'q', 'r' }; #define COUNT 2 int main(int argc, char **argv) { int myid, numprocs, i; char *mem_buf = NULL, *unpack_buf = NULL; MPI_Datatype tmp_dtype, mem_dtype; MPI_Aint mem_dtype_ext = -1; int mem_dtype_sz = -1; int mem_buf_sz = -1, unpack_buf_sz = -1, buf_pos = 0; int blk_arr[COUNT] = { 1, 2 }; int dsp_arr[COUNT] = { 0, 2 }; int errs = 0; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &myid); MPI_Comm_size(MPI_COMM_WORLD, &numprocs); /* Creating the datatype to use for unpacking */ MPI_Type_indexed(COUNT, blk_arr, dsp_arr, MPI_CHAR, &tmp_dtype); MPI_Type_commit(&tmp_dtype); MPI_Type_indexed(COUNT, blk_arr, dsp_arr, tmp_dtype, &mem_dtype); MPI_Type_free(&tmp_dtype); MPI_Type_commit(&mem_dtype); MPI_Type_size(mem_dtype, &mem_dtype_sz); MPI_Type_extent(mem_dtype, &mem_dtype_ext); mem_buf_sz = 2 * mem_dtype_ext; unpack_buf_sz = 2 * mem_dtype_sz; if ((mem_buf = (char *) malloc(mem_buf_sz)) == NULL) { fprintf(stderr, "malloc mem_buf of size %d failed\n", mem_buf_sz); return -1; } memset(mem_buf, '_', mem_buf_sz); if ((unpack_buf = (char *) malloc(unpack_buf_sz)) == NULL) { fprintf(stderr, "malloc unpack_buf of size %d failed\n", unpack_buf_sz); return -1; } for (i = 0; i < unpack_buf_sz; i++) unpack_buf[i] = 'a' + i; /* print_char_buf("mem_buf before unpack", mem_buf, 2 * mem_dtype_ext); */ MPI_Unpack(unpack_buf, unpack_buf_sz, &buf_pos, mem_buf, 2, mem_dtype, MPI_COMM_SELF); /* Note: Unpack without a Pack is not technically correct, but should work * with MPICH. */ /* print_char_buf("mem_buf after unpack", mem_buf, 2 * mem_dtype_ext); * print_char_buf("correct buffer should be", * correct_buf, 2 * mem_dtype_ext); */ if (memcmp(mem_buf, correct_buf, 2 * mem_dtype_ext)) { printf("Unpacked buffer does not match expected buffer\n"); errs++; } MPI_Type_free(&mem_dtype); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/datatype/typecommit.c0000644000175000017500000000266412620254305020541 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2006 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include "mpitest.h" void foo(void *sendbuf, MPI_Datatype sendtype, void *recvbuf, MPI_Datatype recvtype); void foo(void *sendbuf, MPI_Datatype sendtype, void *recvbuf, MPI_Datatype recvtype) { int blocks[2]; MPI_Aint struct_displs[2]; MPI_Datatype types[2], tmp_type; blocks[0] = 256; MPI_Get_address(sendbuf, &struct_displs[0]); types[0] = sendtype; blocks[1] = 256; MPI_Get_address(recvbuf, &struct_displs[1]); types[1] = MPI_BYTE; MPI_Type_create_struct(2, blocks, struct_displs, types, &tmp_type); MPI_Type_commit(&tmp_type); MPI_Type_free(&tmp_type); } int main(int argc, char **argv) { int errs = 0; MTest_Init(&argc, &argv); foo((void *) 0x1, MPI_FLOAT_INT, (void *) 0x2, MPI_BYTE); foo((void *) 0x1, MPI_DOUBLE_INT, (void *) 0x2, MPI_BYTE); foo((void *) 0x1, MPI_LONG_INT, (void *) 0x2, MPI_BYTE); foo((void *) 0x1, MPI_SHORT_INT, (void *) 0x2, MPI_BYTE); foo((void *) 0x1, MPI_2INT, (void *) 0x2, MPI_BYTE); #ifdef HAVE_LONG_DOUBLE /* Optional type may be NULL */ if (MPI_LONG_DOUBLE_INT != MPI_DATATYPE_NULL) { foo((void *) 0x1, MPI_LONG_DOUBLE_INT, (void *) 0x2, MPI_BYTE); } #endif MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/datatype/localpack.c0000644000175000017500000000425412620254305020275 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* based on the pack.c test in the mpich suite. */ #include "mpi.h" #include #include #include #include "mpitest.h" #include "mpitestconf.h" #ifdef HAVE_STRING_H #include #endif static int verbose = 0; #define BUF_SIZE 16384 int main(int argc, char *argv[]); int parse_args(int argc, char **argv); int main(int argc, char *argv[]) { int errs = 0; char buffer[BUF_SIZE]; int n, size; double a, b; int pos; /* Initialize MPI */ MPI_Init(&argc, &argv); parse_args(argc, argv); pos = 0; n = 10; a = 1.1; b = 2.2; MPI_Pack(&n, 1, MPI_INT, buffer, BUF_SIZE, &pos, MPI_COMM_WORLD); MPI_Pack(&a, 1, MPI_DOUBLE, buffer, BUF_SIZE, &pos, MPI_COMM_WORLD); MPI_Pack(&b, 1, MPI_DOUBLE, buffer, BUF_SIZE, &pos, MPI_COMM_WORLD); size = pos; pos = 0; n = 0; a = 0; b = 0; MPI_Unpack(buffer, size, &pos, &n, 1, MPI_INT, MPI_COMM_WORLD); MPI_Unpack(buffer, size, &pos, &a, 1, MPI_DOUBLE, MPI_COMM_WORLD); MPI_Unpack(buffer, size, &pos, &b, 1, MPI_DOUBLE, MPI_COMM_WORLD); /* Check results */ if (n != 10) { errs++; if (verbose) fprintf(stderr, "Wrong value for n; got %d expected %d\n", n, 10); } if (a != 1.1) { errs++; if (verbose) fprintf(stderr, "Wrong value for a; got %f expected %f\n", a, 1.1); } if (b != 2.2) { errs++; if (verbose) fprintf(stderr, "Wrong value for b; got %f expected %f\n", b, 2.2); } /* print message and exit */ if (errs) { fprintf(stderr, "Found %d errors\n", errs); } else { printf(" No Errors\n"); } MPI_Finalize(); return 0; } int parse_args(int argc, char **argv) { /* * int ret; * * while ((ret = getopt(argc, argv, "v")) >= 0) * { * switch (ret) { * case 'v': * verbose = 1; * break; * } * } */ if (argc > 1 && strcmp(argv[1], "-v") == 0) verbose = 1; return 0; } mpi-testsuite-3.2+dfsg/datatype/darray-cyclic.c0000644000175000017500000001652512620254305021076 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; -*- */ /* * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" int AllocateGrid(int nx, int ny, int **srcArray, int **destArray); int PackUnpack(MPI_Datatype, const int[], int[], int); int main(int argc, char *argv[]) { int errs = 0; int wrank, wsize; int gsizes[3], distribs[3], dargs[3], psizes[3]; int px, py, nx, ny, rx, ry, bx, by; int *srcArray, *destArray; int i, j, ii, jj, loc; MPI_Datatype darraytype; MTest_Init(0, 0); MPI_Comm_rank(MPI_COMM_WORLD, &wrank); MPI_Comm_size(MPI_COMM_WORLD, &wsize); /* Test 1: Simple, 1-D cyclic decomposition */ if (AllocateGrid(1, 3 * wsize, &srcArray, &destArray)) { MPI_Abort(MPI_COMM_WORLD, 1); } /* Simple cyclic with 1-dim global array */ gsizes[0] = 3 * wsize; distribs[0] = MPI_DISTRIBUTE_CYCLIC; dargs[0] = 1; psizes[0] = wsize; MPI_Type_create_darray(wsize, wrank, 1, gsizes, distribs, dargs, psizes, MPI_ORDER_C, MPI_INT, &darraytype); /* Check the created datatype. Because cyclic, should represent * a strided type */ if (PackUnpack(darraytype, srcArray, destArray, 3)) { fprintf(stderr, "Error in pack/unpack check\n"); MPI_Abort(MPI_COMM_WORLD, 1); } /* Now, check for correct data */ for (i = 0; i < 3; i++) { if (destArray[i] != wrank + i * wsize) { fprintf(stderr, "1D: %d: Expected %d but saw %d\n", i, wrank + i * wsize, destArray[i]); errs++; } } free(destArray); free(srcArray); MPI_Type_free(&darraytype); /* Test 2: Simple, 1-D cyclic decomposition, with block size=2 */ if (AllocateGrid(1, 4 * wsize, &srcArray, &destArray)) { MPI_Abort(MPI_COMM_WORLD, 1); } /* Simple cyclic with 1-dim global array */ gsizes[0] = 4 * wsize; distribs[0] = MPI_DISTRIBUTE_CYCLIC; dargs[0] = 2; psizes[0] = wsize; MPI_Type_create_darray(wsize, wrank, 1, gsizes, distribs, dargs, psizes, MPI_ORDER_C, MPI_INT, &darraytype); /* Check the created datatype. Because cyclic, should represent * a strided type */ if (PackUnpack(darraytype, srcArray, destArray, 4)) { fprintf(stderr, "Error in pack/unpack check\n"); MPI_Abort(MPI_COMM_WORLD, 1); } loc = 0; /* for each cyclic element */ for (i = 0; i < 2; i++) { /* For each element in block */ for (j = 0; j < 2; j++) { if (destArray[loc] != 2 * wrank + i * 2 * wsize + j) { fprintf(stderr, "1D(2): %d: Expected %d but saw %d\n", i, 2 * wrank + i * 2 * wsize + j, destArray[loc]); errs++; } loc++; } } free(destArray); free(srcArray); MPI_Type_free(&darraytype); /* 2D: Create some 2-D decompositions */ px = wsize / 2; py = 2; rx = wrank % px; ry = wrank / px; if (px * py != wsize) { fprintf(stderr, "An even number of processes is required\n"); MPI_Abort(MPI_COMM_WORLD, 1); } /* Cyclic/Cyclic */ if (AllocateGrid(5 * px, 7 * py, &srcArray, &destArray)) { MPI_Abort(MPI_COMM_WORLD, 1); } /* Simple cyclic/cyclic. Note in C order, the [1] index varies most * rapidly */ gsizes[0] = ny = 7 * py; gsizes[1] = nx = 5 * px; distribs[0] = MPI_DISTRIBUTE_CYCLIC; distribs[1] = MPI_DISTRIBUTE_CYCLIC; dargs[0] = 1; dargs[1] = 1; psizes[0] = py; psizes[1] = px; MPI_Type_create_darray(wsize, wrank, 2, gsizes, distribs, dargs, psizes, MPI_ORDER_C, MPI_INT, &darraytype); /* Check the created datatype. Because cyclic, should represent * a strided type */ if (PackUnpack(darraytype, srcArray, destArray, 5 * 7)) { fprintf(stderr, "Error in pack/unpack check\n"); MPI_Abort(MPI_COMM_WORLD, 1); } loc = 0; for (j = 0; j < 7; j++) { for (i = 0; i < 5; i++) { int expected = rx + ry * nx + i * px + j * nx * py; if (destArray[loc] != expected) { errs++; fprintf(stderr, "2D(cc): [%d,%d] = %d, expected %d\n", i, j, destArray[loc], expected); } loc++; } } free(srcArray); free(destArray); MPI_Type_free(&darraytype); /* Cyclic(2)/Cyclic(3) */ if (AllocateGrid(6 * px, 4 * py, &srcArray, &destArray)) { MPI_Abort(MPI_COMM_WORLD, 1); } /* Block cyclic/cyclic. Note in C order, the [1] index varies most * rapidly */ gsizes[0] = ny = 4 * py; gsizes[1] = nx = 6 * px; distribs[0] = MPI_DISTRIBUTE_CYCLIC; distribs[1] = MPI_DISTRIBUTE_CYCLIC; dargs[0] = by = 2; dargs[1] = bx = 3; psizes[0] = py; psizes[1] = px; MPI_Type_create_darray(wsize, wrank, 2, gsizes, distribs, dargs, psizes, MPI_ORDER_C, MPI_INT, &darraytype); /* Check the created datatype. Because cyclic, should represent * a strided type */ if (PackUnpack(darraytype, srcArray, destArray, 4 * 6)) { fprintf(stderr, "Error in pack/unpack check\n"); MPI_Abort(MPI_COMM_WORLD, 1); } loc = 0; for (j = 0; j < 4 / by; j++) { for (jj = 0; jj < by; jj++) { for (i = 0; i < 6 / bx; i++) { for (ii = 0; ii < bx; ii++) { int expected = rx * bx + ry * by * nx + i * bx * px + ii + (j * by * py + jj) * nx; if (destArray[loc] != expected) { errs++; fprintf(stderr, "2D(c(2)c(3)): [%d,%d] = %d, expected %d\n", i * bx + ii, j * by + jj, destArray[loc], expected); } loc++; } } } } free(srcArray); free(destArray); MPI_Type_free(&darraytype); MTest_Finalize(errs); MPI_Finalize(); return 0; } int AllocateGrid(int nx, int ny, int **srcArray, int **destArray) { int *src, *dest; int i, j; src = (int *) malloc(nx * ny * sizeof(int)); dest = (int *) malloc(nx * ny * sizeof(int)); if (!src || !dest) { fprintf(stderr, "Unable to allocate test arrays of size (%d x %d)\n", nx, ny); return 1; } for (i = 0; i < nx * ny; i++) { src[i] = i; dest[i] = -i - 1; } *srcArray = src; *destArray = dest; return 0; } /* Extract the source array into the dest array using the DARRAY datatype. "count" integers are returned in destArray */ int PackUnpack(MPI_Datatype darraytype, const int srcArray[], int destArray[], int count) { int packsize, position; int *packArray; MPI_Type_commit(&darraytype); MPI_Pack_size(1, darraytype, MPI_COMM_SELF, &packsize); packArray = (int *) malloc(packsize); if (!packArray) { fprintf(stderr, "Unable to allocate pack array of size %d\n", packsize); MPI_Abort(MPI_COMM_WORLD, 1); } position = 0; MPI_Pack((int *) srcArray, 1, darraytype, packArray, packsize, &position, MPI_COMM_SELF); packsize = position; position = 0; MPI_Unpack(packArray, packsize, &position, destArray, count, MPI_INT, MPI_COMM_SELF); free(packArray); return 0; } mpi-testsuite-3.2+dfsg/datatype/subarray-pack.c0000644000175000017500000004473312620254305021116 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include static int verbose = 0; /* tests */ int subarray_1d_c_test1(void); int subarray_1d_fortran_test1(void); int subarray_2d_c_test1(void); int subarray_4d_c_test1(void); int subarray_2d_c_test2(void); int subarray_2d_fortran_test1(void); int subarray_4d_fortran_test1(void); /* helper functions */ static int parse_args(int argc, char **argv); static int pack_and_unpack(char *typebuf, int count, MPI_Datatype datatype, int typebufsz); int main(int argc, char **argv) { int err, errs = 0; MPI_Init(&argc, &argv); /* MPI-1.2 doesn't allow for MPI_Init(0,0) */ parse_args(argc, argv); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); /* perform some tests */ err = subarray_1d_c_test1(); if (err && verbose) fprintf(stderr, "%d errors in 1d subarray c test 1.\n", err); errs += err; err = subarray_1d_fortran_test1(); if (err && verbose) fprintf(stderr, "%d errors in 1d subarray fortran test 1.\n", err); errs += err; err = subarray_2d_c_test1(); if (err && verbose) fprintf(stderr, "%d errors in 2d subarray c test 1.\n", err); errs += err; err = subarray_2d_fortran_test1(); if (err && verbose) fprintf(stderr, "%d errors in 2d subarray fortran test 1.\n", err); errs += err; err = subarray_2d_c_test2(); if (err && verbose) fprintf(stderr, "%d errors in 2d subarray c test 2.\n", err); errs += err; err = subarray_4d_c_test1(); if (err && verbose) fprintf(stderr, "%d errors in 4d subarray c test 1.\n", err); errs += err; err = subarray_4d_fortran_test1(); if (err && verbose) fprintf(stderr, "%d errors in 4d subarray fortran test 1.\n", err); errs += err; /* print message and exit */ if (errs) { fprintf(stderr, "Found %d errors\n", errs); } else { printf(" No Errors\n"); } MPI_Finalize(); return 0; } /* subarray_1d_c_test1() * * Returns the number of errors encountered. */ int subarray_1d_c_test1(void) { MPI_Datatype subarray; int array[9] = { -1, 1, 2, 3, -2, -3, -4, -5, -6 }; int array_size[] = { 9 }; int array_subsize[] = { 3 }; int array_start[] = { 1 }; int i, err, errs = 0, sizeoftype; /* set up type */ err = MPI_Type_create_subarray(1, /* dims */ array_size, array_subsize, array_start, MPI_ORDER_C, MPI_INT, &subarray); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "error in MPI_Type_create_subarray call; aborting after %d errors\n", errs); } return errs; } MPI_Type_commit(&subarray); MPI_Type_size(subarray, &sizeoftype); if (sizeoftype != 3 * sizeof(int)) { errs++; if (verbose) fprintf(stderr, "size of type = %d; should be %d\n", sizeoftype, (int) (3 * sizeof(int))); return errs; } err = pack_and_unpack((char *) array, 1, subarray, 9 * sizeof(int)); for (i = 0; i < 9; i++) { int goodval; switch (i) { case 1: goodval = 1; break; case 2: goodval = 2; break; case 3: goodval = 3; break; default: goodval = 0; /* pack_and_unpack() zeros before unpacking */ break; } if (array[i] != goodval) { errs++; if (verbose) fprintf(stderr, "array[%d] = %d; should be %d\n", i, array[i], goodval); } } MPI_Type_free(&subarray); return errs; } /* subarray_1d_fortran_test1() * * Returns the number of errors encountered. */ int subarray_1d_fortran_test1(void) { MPI_Datatype subarray; int array[9] = { -1, 1, 2, 3, -2, -3, -4, -5, -6 }; int array_size[] = { 9 }; int array_subsize[] = { 3 }; int array_start[] = { 1 }; int i, err, errs = 0, sizeoftype; /* set up type */ err = MPI_Type_create_subarray(1, /* dims */ array_size, array_subsize, array_start, MPI_ORDER_FORTRAN, MPI_INT, &subarray); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "error in MPI_Type_create_subarray call; aborting after %d errors\n", errs); } return errs; } MPI_Type_commit(&subarray); MPI_Type_size(subarray, &sizeoftype); if (sizeoftype != 3 * sizeof(int)) { errs++; if (verbose) fprintf(stderr, "size of type = %d; should be %d\n", sizeoftype, (int) (3 * sizeof(int))); return errs; } err = pack_and_unpack((char *) array, 1, subarray, 9 * sizeof(int)); for (i = 0; i < 9; i++) { int goodval; switch (i) { case 1: goodval = 1; break; case 2: goodval = 2; break; case 3: goodval = 3; break; default: goodval = 0; /* pack_and_unpack() zeros before unpacking */ break; } if (array[i] != goodval) { errs++; if (verbose) fprintf(stderr, "array[%d] = %d; should be %d\n", i, array[i], goodval); } } MPI_Type_free(&subarray); return errs; } /* subarray_2d_test() * * Returns the number of errors encountered. */ int subarray_2d_c_test1(void) { MPI_Datatype subarray; int array[9] = { -1, -2, -3, -4, 1, 2, -5, 3, 4 }; int array_size[2] = { 3, 3 }; int array_subsize[2] = { 2, 2 }; int array_start[2] = { 1, 1 }; int i, err, errs = 0, sizeoftype; /* set up type */ err = MPI_Type_create_subarray(2, /* dims */ array_size, array_subsize, array_start, MPI_ORDER_C, MPI_INT, &subarray); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "error in MPI_Type_create_subarray call; aborting after %d errors\n", errs); } return errs; } MPI_Type_commit(&subarray); MPI_Type_size(subarray, &sizeoftype); if (sizeoftype != 4 * sizeof(int)) { errs++; if (verbose) fprintf(stderr, "size of type = %d; should be %d\n", sizeoftype, (int) (4 * sizeof(int))); return errs; } err = pack_and_unpack((char *) array, 1, subarray, 9 * sizeof(int)); for (i = 0; i < 9; i++) { int goodval; switch (i) { case 4: goodval = 1; break; case 5: goodval = 2; break; case 7: goodval = 3; break; case 8: goodval = 4; break; default: goodval = 0; break; } if (array[i] != goodval) { errs++; if (verbose) fprintf(stderr, "array[%d] = %d; should be %d\n", i, array[i], goodval); } } MPI_Type_free(&subarray); return errs; } /* subarray_2d_c_test2() * * Returns the number of errors encountered. */ int subarray_2d_c_test2(void) { MPI_Datatype subarray; int array[12] = { -1, -2, -3, -4, 1, 2, -5, -6, -7, -8, -9, -10 }; int array_size[2] = { 2, 6 }; int array_subsize[2] = { 1, 2 }; int array_start[2] = { 0, 4 }; int i, err, errs = 0, sizeoftype; /* set up type */ err = MPI_Type_create_subarray(2, /* dims */ array_size, array_subsize, array_start, MPI_ORDER_C, MPI_INT, &subarray); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "error in MPI_Type_create_subarray call; aborting after %d errors\n", errs); } return errs; } MPI_Type_commit(&subarray); MPI_Type_size(subarray, &sizeoftype); if (sizeoftype != 2 * sizeof(int)) { errs++; if (verbose) fprintf(stderr, "size of type = %d; should be %d\n", sizeoftype, (int) (2 * sizeof(int))); return errs; } err = pack_and_unpack((char *) array, 1, subarray, 12 * sizeof(int)); for (i = 0; i < 12; i++) { int goodval; switch (i) { case 4: goodval = 1; break; case 5: goodval = 2; break; default: goodval = 0; break; } if (array[i] != goodval) { errs++; if (verbose) fprintf(stderr, "array[%d] = %d; should be %d\n", i, array[i], goodval); } } MPI_Type_free(&subarray); return errs; } /* subarray_4d_c_test1() * * Returns the number of errors encountered. */ int subarray_4d_c_test1(void) { MPI_Datatype subarray; int array[] = { -1111, -1112, -1113, -1114, -1115, -1116, -1121, -1122, -1123, -1124, -1125, -1126, -1131, -1132, -1133, -1134, -1135, -1136, -1211, -1212, -1213, -1214, -1215, -1216, -1221, -1222, -1223, -1224, -1225, -1226, -1231, -1232, -1233, -1234, -1235, -1236, -2111, -2112, -2113, -2114, 1, -2116, -2121, -2122, -2123, -2124, 2, -2126, -2131, -2132, -2133, -2134, 3, -2136, -2211, -2212, -2213, -2214, 4, -2216, -2221, -2222, -2223, -2224, 5, -2226, -2231, -2232, -2233, -2234, 6, -2236 }; int array_size[4] = { 2, 2, 3, 6 }; int array_subsize[4] = { 1, 2, 3, 1 }; int array_start[4] = { 1, 0, 0, 4 }; int i, err, errs = 0, sizeoftype; /* set up type */ err = MPI_Type_create_subarray(4, /* dims */ array_size, array_subsize, array_start, MPI_ORDER_C, MPI_INT, &subarray); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "error in MPI_Type_create_subarray call; aborting after %d errors\n", errs); } return errs; } MPI_Type_commit(&subarray); MPI_Type_size(subarray, &sizeoftype); if (sizeoftype != 6 * sizeof(int)) { errs++; if (verbose) fprintf(stderr, "size of type = %d; should be %d\n", sizeoftype, (int) (6 * sizeof(int))); return errs; } err = pack_and_unpack((char *) array, 1, subarray, 72 * sizeof(int)); for (i = 0; i < 72; i++) { int goodval; switch (i) { case 40: goodval = 1; break; case 46: goodval = 2; break; case 52: goodval = 3; break; case 58: goodval = 4; break; case 64: goodval = 5; break; case 70: goodval = 6; break; default: goodval = 0; break; } if (array[i] != goodval) { errs++; if (verbose) fprintf(stderr, "array[%d] = %d; should be %d\n", i, array[i], goodval); } } MPI_Type_free(&subarray); return errs; } /* subarray_4d_fortran_test1() * * Returns the number of errors encountered. */ int subarray_4d_fortran_test1(void) { MPI_Datatype subarray; int array[] = { -1111, -1112, -1113, -1114, -1115, -1116, -1121, -1122, -1123, -1124, -1125, -1126, -1131, -1132, -1133, -1134, -1135, -1136, -1211, -1212, -1213, -1214, -1215, -1216, -1221, -1222, -1223, -1224, -1225, -1226, -1231, -1232, -1233, -1234, -1235, -1236, -2111, -2112, -2113, -2114, 1, -2116, -2121, -2122, -2123, -2124, 2, -2126, -2131, -2132, -2133, -2134, 3, -2136, -2211, -2212, -2213, -2214, 4, -2216, -2221, -2222, -2223, -2224, 5, -2226, -2231, -2232, -2233, -2234, 6, -2236 }; int array_size[4] = { 6, 3, 2, 2 }; int array_subsize[4] = { 1, 3, 2, 1 }; int array_start[4] = { 4, 0, 0, 1 }; int i, err, errs = 0, sizeoftype; /* set up type */ err = MPI_Type_create_subarray(4, /* dims */ array_size, array_subsize, array_start, MPI_ORDER_FORTRAN, MPI_INT, &subarray); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "error in MPI_Type_create_subarray call; aborting after %d errors\n", errs); } return errs; } MPI_Type_commit(&subarray); MPI_Type_size(subarray, &sizeoftype); if (sizeoftype != 6 * sizeof(int)) { errs++; if (verbose) fprintf(stderr, "size of type = %d; should be %d\n", sizeoftype, (int) (6 * sizeof(int))); return errs; } err = pack_and_unpack((char *) array, 1, subarray, 72 * sizeof(int)); for (i = 0; i < 72; i++) { int goodval; switch (i) { case 40: goodval = 1; break; case 46: goodval = 2; break; case 52: goodval = 3; break; case 58: goodval = 4; break; case 64: goodval = 5; break; case 70: goodval = 6; break; default: goodval = 0; break; } if (array[i] != goodval) { errs++; if (verbose) fprintf(stderr, "array[%d] = %d; should be %d\n", i, array[i], goodval); } } MPI_Type_free(&subarray); return errs; } /* subarray_2d_fortran_test1() * * Returns the number of errors encountered. */ int subarray_2d_fortran_test1(void) { MPI_Datatype subarray; int array[12] = { -1, -2, -3, -4, 1, 2, -5, -6, -7, -8, -9, -10 }; int array_size[2] = { 6, 2 }; int array_subsize[2] = { 2, 1 }; int array_start[2] = { 4, 0 }; int i, err, errs = 0, sizeoftype; /* set up type */ err = MPI_Type_create_subarray(2, /* dims */ array_size, array_subsize, array_start, MPI_ORDER_FORTRAN, MPI_INT, &subarray); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "error in MPI_Type_create_subarray call; aborting after %d errors\n", errs); } return errs; } MPI_Type_commit(&subarray); MPI_Type_size(subarray, &sizeoftype); if (sizeoftype != 2 * sizeof(int)) { errs++; if (verbose) fprintf(stderr, "size of type = %d; should be %d\n", sizeoftype, (int) (2 * sizeof(int))); return errs; } err = pack_and_unpack((char *) array, 1, subarray, 12 * sizeof(int)); for (i = 0; i < 12; i++) { int goodval; switch (i) { case 4: goodval = 1; break; case 5: goodval = 2; break; default: goodval = 0; break; } if (array[i] != goodval) { errs++; if (verbose) fprintf(stderr, "array[%d] = %d; should be %d\n", i, array[i], goodval); } } MPI_Type_free(&subarray); return errs; } /******************************************************************/ /* pack_and_unpack() * * Perform packing and unpacking of a buffer for the purposes of checking * to see if we are processing a type correctly. Zeros the buffer between * these two operations, so the data described by the type should be in * place upon return but all other regions of the buffer should be zero. * * Parameters: * typebuf - pointer to buffer described by datatype and count that * will be packed and then unpacked into * count, datatype - description of typebuf * typebufsz - size of typebuf; used specifically to zero the buffer * between the pack and unpack steps * */ static int pack_and_unpack(char *typebuf, int count, MPI_Datatype datatype, int typebufsz) { char *packbuf; int err, errs = 0, pack_size, type_size, position; err = MPI_Type_size(datatype, &type_size); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "error in MPI_Type_size call; aborting after %d errors\n", errs); } return errs; } type_size *= count; err = MPI_Pack_size(count, datatype, MPI_COMM_SELF, &pack_size); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "error in MPI_Pack_size call; aborting after %d errors\n", errs); } return errs; } packbuf = (char *) malloc(pack_size); if (packbuf == NULL) { errs++; if (verbose) { fprintf(stderr, "error in malloc call; aborting after %d errors\n", errs); } return errs; } position = 0; err = MPI_Pack(typebuf, count, datatype, packbuf, type_size, &position, MPI_COMM_SELF); if (position != type_size) { errs++; if (verbose) fprintf(stderr, "position = %d; should be %d (pack)\n", position, type_size); } memset(typebuf, 0, typebufsz); position = 0; err = MPI_Unpack(packbuf, type_size, &position, typebuf, count, datatype, MPI_COMM_SELF); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "error in MPI_Unpack call; aborting after %d errors\n", errs); } return errs; } free(packbuf); if (position != type_size) { errs++; if (verbose) fprintf(stderr, "position = %d; should be %d (unpack)\n", position, type_size); } return errs; } static int parse_args(int argc, char **argv) { /* * int ret; * * while ((ret = getopt(argc, argv, "v")) >= 0) * { * switch (ret) { * case 'v': * verbose = 1; * break; * } * } */ if (argc > 1 && strcmp(argv[1], "-v") == 0) verbose = 1; return 0; } mpi-testsuite-3.2+dfsg/datatype/subarray.c0000644000175000017500000000343412620254305020173 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include "mpi.h" #define X 64 #define Y 8 #define Z 512 double array[X][Y][Z]; int main(int argc, char *argv[]) { int myrank; MPI_Datatype subarray; int array_size[] = { X, Y, Z }; int array_subsize[] = { X / 2, Y / 2, Z }; int array_start[] = { 0, 0, 0 }; int i, j, k; int errs = 0; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &myrank); for (i = 0; i < X; ++i) { for (j = 0; j < Y; ++j) { for (k = 0; k < Z; ++k) { if (myrank == 0) array[i][j][k] = 2.0; else array[i][j][k] = -2.0; } } } MPI_Type_create_subarray(3, array_size, array_subsize, array_start, MPI_ORDER_C, MPI_DOUBLE, &subarray); MPI_Type_commit(&subarray); if (myrank == 0) MPI_Send(array, 1, subarray, 1, 0, MPI_COMM_WORLD); else { MPI_Recv(array, 1, subarray, 0, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); for (i = array_start[0]; i < array_subsize[0]; ++i) { for (j = array_start[1]; j < array_subsize[1]; ++j) { for (k = array_start[2]; k < array_subsize[2]; ++k) { if (array[i][j][k] != 2.0) ++errs; } } } } MPI_Type_free(&subarray); MPI_Allreduce(MPI_IN_PLACE, &errs, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD); if (myrank == 0) { if (errs) printf("Found %d errors\n", errs); else printf(" No Errors\n"); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/datatype/hindexed_block_contents.c0000644000175000017500000000446312620254305023225 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* test based on a bug report from Lisandro Dalcin: * http://lists.mcs.anl.gov/pipermail/mpich-dev/2012-October/000978.html */ #include #include #include /* USE_STRICT_MPI may be defined in mpitestconf.h */ #include "mpitestconf.h" /* assert-like macro that bumps the err count and emits a message */ #define check(x_) \ do { \ if (!(x_)) { \ ++errs; \ if (errs < 10) { \ fprintf(stderr, "check failed: (%s), line %d\n", #x_, __LINE__); \ } \ } \ } while (0) int main(int argc, char **argv) { int errs = 0; int rank; MPI_Datatype t; int count = 4; int blocklength = 2; MPI_Aint displacements[] = { 0, 8, 16, 24 }; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (!rank) { MPI_Type_create_hindexed_block(count, blocklength, displacements, MPI_INT, &t); MPI_Type_commit(&t); { int ni, na, nd, combiner; int i[1024]; MPI_Aint a[1024]; MPI_Datatype d[1024]; int k; MPI_Type_get_envelope(t, &ni, &na, &nd, &combiner); MPI_Type_get_contents(t, ni, na, nd, i, a, d); check(ni == 2); check(i[0] == 4); check(i[1] == 2); check(na == 4); for (k = 0; k < na; k++) check(a[k] == (k * 8)); check(nd == 1); check(d[0] == MPI_INT); } MPI_Type_free(&t); } if (rank == 0) { if (errs) { printf("found %d errors\n", errs); } else { printf(" No errors\n"); } } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/datatype/simple-pack-external.c0000644000175000017500000002273412620254305022374 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include #include #include "mpitest.h" static int verbose = 0; /* tests */ int builtin_float_test(void); int vector_of_vectors_test(void); int optimizable_vector_of_basics_test(void); int struct_of_basics_test(void); /* helper functions */ int parse_args(int argc, char **argv); int main(int argc, char **argv) { int err, errs = 0; MTest_Init(&argc, &argv); parse_args(argc, argv); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); /* perform some tests */ err = builtin_float_test(); if (err && verbose) fprintf(stderr, "%d errors in builtin float test.\n", err); errs += err; err = vector_of_vectors_test(); if (err && verbose) fprintf(stderr, "%d errors in vector of vectors test.\n", err); errs += err; err = optimizable_vector_of_basics_test(); if (err && verbose) fprintf(stderr, "%d errors in vector of basics test.\n", err); errs += err; err = struct_of_basics_test(); if (err && verbose) fprintf(stderr, "%d errors in struct of basics test.\n", err); errs += err; MTest_Finalize(errs); MPI_Finalize(); return 0; } /* builtin_float_test() * * Tests functionality of get_envelope() and get_contents() on a MPI_FLOAT. * * Returns the number of errors encountered. */ int builtin_float_test(void) { int nints, nadds, ntypes, combiner; int err, errs = 0; err = MPI_Type_get_envelope(MPI_FLOAT, &nints, &nadds, &ntypes, &combiner); if (combiner != MPI_COMBINER_NAMED) errs++; /* Note: it is erroneous to call MPI_Type_get_contents() on a basic. */ return errs; } /* vector_of_vectors_test() * * Builds a vector of a vector of ints. Assuming an int array of size 9 * integers, and treating the array as a 3x3 2D array, this will grab the * corners. * * Returns the number of errors encountered. */ int vector_of_vectors_test(void) { MPI_Datatype inner_vector; MPI_Datatype outer_vector; int array[9] = { 1, -1, 2, -2, -3, -4, 3, -5, 4 }; char *buf; int i, err, errs = 0; MPI_Aint sizeoftype, position; /* set up type */ err = MPI_Type_vector(2, 1, 2, MPI_INT, &inner_vector); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, "error in MPI call; aborting after %d errors\n", errs + 1); return errs; } err = MPI_Type_vector(2, 1, 2, inner_vector, &outer_vector); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, "error in MPI call; aborting after %d errors\n", errs + 1); return errs; } MPI_Type_commit(&outer_vector); MPI_Pack_external_size((char *) "external32", 1, outer_vector, &sizeoftype); if (sizeoftype != 4 * 4) { errs++; if (verbose) fprintf(stderr, "size of type = %d; should be %d\n", (int) sizeoftype, 4 * 4); return errs; } buf = (char *) malloc(sizeoftype); position = 0; err = MPI_Pack_external((char *) "external32", array, 1, outer_vector, buf, sizeoftype, &position); if (position != sizeoftype) { errs++; if (verbose) fprintf(stderr, "position = %d; should be %d (pack)\n", (int) position, (int) sizeoftype); } memset(array, 0, 9 * sizeof(int)); position = 0; err = MPI_Unpack_external((char *) "external32", buf, sizeoftype, &position, array, 1, outer_vector); if (position != sizeoftype) { errs++; if (verbose) fprintf(stderr, "position = %d; should be %d (unpack)\n", (int) position, (int) sizeoftype); } for (i = 0; i < 9; i++) { int goodval; switch (i) { case 0: goodval = 1; break; case 2: goodval = 2; break; case 6: goodval = 3; break; case 8: goodval = 4; break; default: goodval = 0; break; } if (array[i] != goodval) { errs++; if (verbose) fprintf(stderr, "array[%d] = %d; should be %d\n", i, array[i], goodval); } } MPI_Type_free(&inner_vector); MPI_Type_free(&outer_vector); return errs; } /* optimizable_vector_of_basics_test() * * Builds a vector of ints. Count is 10, blocksize is 2, stride is 2, so this * is equivalent to a contig of 20. * * Returns the number of errors encountered. */ int optimizable_vector_of_basics_test(void) { MPI_Datatype parent_type; int array[20] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 }; char *buf; int i; MPI_Aint sizeofint, sizeoftype, position; int err, errs = 0; MPI_Pack_external_size((char *) "external32", 1, MPI_INT, &sizeofint); if (sizeofint != 4) { errs++; if (verbose) fprintf(stderr, "size of external32 MPI_INT = %d; should be %d\n", (int) sizeofint, 4); } /* set up type */ err = MPI_Type_vector(10, 2, 2, MPI_INT, &parent_type); MPI_Type_commit(&parent_type); MPI_Pack_external_size((char *) "external32", 1, parent_type, &sizeoftype); if (sizeoftype != 20 * sizeofint) { errs++; if (verbose) fprintf(stderr, "size of vector = %d; should be %d\n", (int) sizeoftype, (int) (20 * sizeofint)); } buf = (char *) malloc(sizeoftype); position = 0; err = MPI_Pack_external((char *) "external32", array, 1, parent_type, buf, sizeoftype, &position); if (position != sizeoftype) { errs++; if (verbose) fprintf(stderr, "position = %d; should be %d (pack)\n", (int) position, (int) sizeoftype); } memset(array, 0, 20 * sizeof(int)); position = 0; err = MPI_Unpack_external((char *) "external32", buf, sizeoftype, &position, array, 1, parent_type); if (position != sizeoftype) { errs++; if (verbose) fprintf(stderr, "position = %ld; should be %ld (unpack)\n", (long) position, (long) sizeoftype); } for (i = 0; i < 20; i++) { if (array[i] != i) { errs++; if (verbose) fprintf(stderr, "array[%d] = %d; should be %d\n", i, array[i], i); } } MPI_Type_free(&parent_type); return errs; } /* struct_of_basics_test() * * Builds a struct of ints. Count is 10, all blocksizes are 2, all * strides are 2*sizeofint, so this is equivalent to a contig of 20. * * Returns the number of errors encountered. */ int struct_of_basics_test(void) { MPI_Datatype parent_type; int array[20] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 }; char *buf; int i; MPI_Aint sizeofint, sizeoftype, position; int blocks[10]; MPI_Aint indices[10]; MPI_Datatype types[10]; int err, errs = 0; MPI_Pack_external_size((char *) "external32", 1, MPI_INT, &sizeofint); if (sizeofint != 4) { errs++; if (verbose) fprintf(stderr, "size of external32 MPI_INT = %d; should be %d\n", (int) sizeofint, 4); } for (i = 0; i < 10; i++) { blocks[i] = 2; indices[i] = 2 * i * sizeofint; /* This will cause MPICH to consider this as a blockindex. We * need different types here. */ types[i] = MPI_INT; } /* set up type */ err = MPI_Type_struct(10, blocks, indices, types, &parent_type); MPI_Type_commit(&parent_type); MPI_Pack_external_size((char *) "external32", 1, parent_type, &sizeoftype); if (sizeoftype != 20 * sizeofint) { errs++; if (verbose) fprintf(stderr, "size of vector = %d; should be %d\n", (int) sizeoftype, (int) (20 * sizeofint)); } buf = (char *) malloc(sizeoftype); position = 0; err = MPI_Pack_external((char *) "external32", array, 1, parent_type, buf, sizeoftype, &position); if (position != sizeoftype) { errs++; if (verbose) fprintf(stderr, "position = %d; should be %d (pack)\n", (int) position, (int) sizeoftype); } memset(array, 0, 20 * sizeof(int)); position = 0; err = MPI_Unpack_external((char *) "external32", buf, sizeoftype, &position, array, 1, parent_type); if (position != sizeoftype) { errs++; if (verbose) fprintf(stderr, "position = %ld; should be %ld (unpack)\n", (long) position, (long) sizeoftype); } for (i = 0; i < 20; i++) { if (array[i] != i) { errs++; if (verbose) fprintf(stderr, "array[%d] = %d; should be %d\n", i, array[i], i); } } MPI_Type_free(&parent_type); return errs; } int parse_args(int argc, char **argv) { int ret; while ((ret = getopt(argc, argv, "v")) >= 0) { switch (ret) { case 'v': verbose = 1; break; } } return 0; } mpi-testsuite-3.2+dfsg/datatype/getpartelm.c0000644000175000017500000000667312620254305020517 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* static char MTest_descrip[] = "Receive partial datatypes and check that\ MPI_Getelements gives the correct version"; */ int main(int argc, char *argv[]) { int errs = 0; MPI_Datatype outtype, oldtypes[2]; MPI_Aint offsets[2]; int blklens[2]; MPI_Comm comm; int size, rank, src, dest, tag; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); if (size < 2) { errs++; printf("This test requires at least 2 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } src = 0; dest = 1; if (rank == src) { int buf[128], position, cnt; /* sender */ /* Create a datatype and send it (multiple of sizeof(int)) */ /* Create a send struct type */ oldtypes[0] = MPI_INT; oldtypes[1] = MPI_CHAR; blklens[0] = 1; blklens[1] = 4 * sizeof(int); offsets[0] = 0; offsets[1] = sizeof(int); MPI_Type_struct(2, blklens, offsets, oldtypes, &outtype); MPI_Type_commit(&outtype); buf[0] = 4 * sizeof(int); /* printf("About to send to %d\n", dest); */ MPI_Send(buf, 1, outtype, dest, 0, comm); MPI_Type_free(&outtype); /* Create a datatype and send it (not a multiple of sizeof(int)) */ /* Create a send struct type */ oldtypes[0] = MPI_INT; oldtypes[1] = MPI_CHAR; blklens[0] = 1; blklens[1] = 4 * sizeof(int) + 1; offsets[0] = 0; offsets[1] = sizeof(int); MPI_Type_struct(2, blklens, offsets, oldtypes, &outtype); MPI_Type_commit(&outtype); buf[0] = 4 * sizeof(int) + 1; MPI_Send(buf, 1, outtype, dest, 1, comm); MPI_Type_free(&outtype); /* Pack data and send as packed */ position = 0; cnt = 7; MPI_Pack(&cnt, 1, MPI_INT, buf, 128 * sizeof(int), &position, comm); MPI_Pack((void *) "message", 7, MPI_CHAR, buf, 128 * sizeof(int), &position, comm); MPI_Send(buf, position, MPI_PACKED, dest, 2, comm); } else if (rank == dest) { MPI_Status status; int buf[128], i, elms, count; /* Receiver */ /* Create a receive struct type */ oldtypes[0] = MPI_INT; oldtypes[1] = MPI_CHAR; blklens[0] = 1; blklens[1] = 256; offsets[0] = 0; offsets[1] = sizeof(int); MPI_Type_struct(2, blklens, offsets, oldtypes, &outtype); MPI_Type_commit(&outtype); for (i = 0; i < 3; i++) { tag = i; /* printf("about to receive tag %d from %d\n", i, src); */ MPI_Recv(buf, 1, outtype, src, tag, comm, &status); MPI_Get_elements(&status, outtype, &elms); if (elms != buf[0] + 1) { errs++; printf("For test %d, Get elements gave %d but should be %d\n", i, elms, buf[0] + 1); } MPI_Get_count(&status, outtype, &count); if (count != MPI_UNDEFINED) { errs++; printf("For partial send, Get_count did not return MPI_UNDEFINED\n"); } } MPI_Type_free(&outtype); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/datatype/large_type.c0000644000175000017500000001056712620254305020503 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2013 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include static MPI_Datatype make_largexfer_type_struct(MPI_Offset nbytes) { int typechunk_size = 1024 * 1024; /* in bytes: TODO: figure out how big a * chunk is really needed */ int chunk_count; int remainder = 0; MPI_Datatype memtype, chunktype; /* need to cook up a new datatype to accomodate large datatypes */ /* first pass: chunks of 1 MiB plus an additional remainder. Does require * 8 byte MPI_Aint, which should have been checked for earlier */ chunk_count = nbytes / typechunk_size; remainder = nbytes % typechunk_size; MPI_Type_contiguous(typechunk_size, MPI_BYTE, &chunktype); MPI_Type_commit(&chunktype); /* a zero remainder means we can just count contigs */ if (remainder == 0) { MPI_Type_contiguous(chunk_count, chunktype, &memtype); MPI_Type_free(&chunktype); } else { if (sizeof(MPI_Aint) <= sizeof(int)) { return MPI_DATATYPE_NULL; } /* struct type: some number of chunks plus remaining bytes tacked * on at end */ int lens[] = { chunk_count, remainder }; MPI_Aint disp[] = { 0, (MPI_Aint) typechunk_size * (MPI_Aint) chunk_count }; MPI_Datatype types[] = { chunktype, MPI_BYTE }; MPI_Type_struct(2, lens, disp, types, &memtype); MPI_Type_free(&chunktype); } MPI_Type_commit(&memtype); return memtype; } static MPI_Datatype make_largexfer_type_hindexed(MPI_Offset nbytes) { int i, count; int chunk_size = 1024 * 1024; int *blocklens; MPI_Aint *disp; MPI_Datatype memtype; /* need to cook up a new datatype to accomodate large datatypes */ /* Does require 8 byte MPI_Aint, which should have been checked for earlier */ if (sizeof(MPI_Aint) <= sizeof(int)) { return MPI_DATATYPE_NULL; } /* ceiling division */ count = 1 + ((nbytes - 1) / chunk_size); blocklens = calloc(count, sizeof(int)); disp = calloc(count, sizeof(MPI_Aint)); for (i = 0; i < (count - 1); i++) { blocklens[i] = chunk_size; disp[i] = (MPI_Aint) chunk_size *i; } blocklens[count - 1] = nbytes - ((MPI_Aint) chunk_size * i); disp[count - 1] = (MPI_Aint) chunk_size *(count - 1); MPI_Type_create_hindexed(count, blocklens, disp, MPI_BYTE, &memtype); MPI_Type_commit(&memtype); return memtype; } int testtype(MPI_Datatype type, MPI_Offset expected) { MPI_Count size, lb, extent; int nerrors = 0; MPI_Type_size_x(type, &size); if (size < 0) { printf("ERROR: type size apparently overflowed integer\n"); nerrors++; } if (size != expected) { printf("reported type size %lld does not match expected %lld\n", size, expected); nerrors++; } MPI_Type_get_true_extent_x(type, &lb, &extent); if (lb != 0) { printf("ERROR: type should have lb of 0, reported %lld\n", lb); nerrors++; } if (extent != size) { printf("ERROR: extent should match size, not %lld\n", extent); nerrors++; } return nerrors; } int main(int argc, char **argv) { int nerrors = 0, i; int rank, size; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); #define NR_TYPES 3 MPI_Offset expected_sizes[NR_TYPES] = { 1024UL * 1024UL * 2400UL, 2346319872, 2346319872 }; MPI_Datatype types[NR_TYPES]; /* a contig type, itself large, but does not need 8 byte aints */ types[0] = make_largexfer_type_struct(expected_sizes[0]); /* struct with addresses out past 2 GiB */ types[1] = make_largexfer_type_struct(expected_sizes[1]); /* similar, but with hindexed type */ types[2] = make_largexfer_type_hindexed(expected_sizes[2]); for (i = 0; i < NR_TYPES; i++) { if (types[i] != MPI_DATATYPE_NULL) { nerrors += testtype(types[i], expected_sizes[i]); MPI_Type_free(&(types[i])); } } MPI_Finalize(); if (rank == 0) { if (nerrors) { printf("found %d errors\n", nerrors); } else { printf(" No errors\n"); } } return 0; } mpi-testsuite-3.2+dfsg/datatype/blockindexed-zero-count.c0000644000175000017500000000526512620254305023105 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitestconf.h" #ifdef HAVE_STRING_H #include #endif static int verbose = 0; /* tests */ int blockindexed_test(void); /* helper functions */ int parse_args(int argc, char **argv); int main(int argc, char **argv) { int err, errs = 0; MPI_Init(&argc, &argv); /* MPI-1.2 doesn't allow for MPI_Init(0,0) */ parse_args(argc, argv); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); /* perform some tests */ err = blockindexed_test(); if (err && verbose) fprintf(stderr, "%d errors in blockindexed test.\n", err); errs += err; /* print message and exit */ if (errs) { fprintf(stderr, "Found %d errors\n", errs); } else { printf(" No Errors\n"); } MPI_Finalize(); return 0; } /* blockindexed_test() * * Tests behavior with a zero-count blockindexed. * * Returns the number of errors encountered. */ int blockindexed_test(void) { int err, errs = 0; int count = 0; MPI_Datatype newtype; int size; MPI_Aint extent; err = MPI_Type_create_indexed_block(count, 0, (int *) 0, MPI_INT, &newtype); if (err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "error creating struct type in blockindexed_test()\n"); } errs++; } err = MPI_Type_size(newtype, &size); if (err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "error obtaining type size in blockindexed_test()\n"); } errs++; } if (size != 0) { if (verbose) { fprintf(stderr, "error: size != 0 in blockindexed_test()\n"); } errs++; } err = MPI_Type_extent(newtype, &extent); if (err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "error obtaining type extent in blockindexed_test()\n"); } errs++; } if (extent != 0) { if (verbose) { fprintf(stderr, "error: extent != 0 in blockindexed_test()\n"); } errs++; } MPI_Type_free(&newtype); return errs; } int parse_args(int argc, char **argv) { /* * int ret; * * while ((ret = getopt(argc, argv, "v")) >= 0) * { * switch (ret) { * case 'v': * verbose = 1; * break; * } * } */ if (argc > 1 && strcmp(argv[1], "-v") == 0) verbose = 1; return 0; } mpi-testsuite-3.2+dfsg/datatype/contig-zero-count.c0000644000175000017500000000512412620254305021727 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitestconf.h" #ifdef HAVE_STRING_H #include #endif static int verbose = 0; /* tests */ int contig_test(void); /* helper functions */ int parse_args(int argc, char **argv); int main(int argc, char **argv) { int err, errs = 0; MPI_Init(&argc, &argv); /* MPI-1.2 doesn't allow for MPI_Init(0,0) */ parse_args(argc, argv); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); /* perform some tests */ err = contig_test(); if (err && verbose) fprintf(stderr, "%d errors in contig test.\n", err); errs += err; /* print message and exit */ if (errs) { fprintf(stderr, "Found %d errors\n", errs); } else { printf(" No Errors\n"); } MPI_Finalize(); return 0; } /* contig_test() * * Tests behavior with a zero-count contig. * * Returns the number of errors encountered. */ int contig_test(void) { int err, errs = 0; int count = 0; MPI_Datatype newtype; int size; MPI_Aint extent; err = MPI_Type_contiguous(count, MPI_INT, &newtype); if (err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "error creating type in contig_test()\n"); } errs++; } err = MPI_Type_size(newtype, &size); if (err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "error obtaining type size in contig_test()\n"); } errs++; } if (size != 0) { if (verbose) { fprintf(stderr, "error: size != 0 in contig_test()\n"); } errs++; } err = MPI_Type_extent(newtype, &extent); if (err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "error obtaining type extent in contig_test()\n"); } errs++; } if (extent != 0) { if (verbose) { fprintf(stderr, "error: extent != 0 in contig_test()\n"); } errs++; } MPI_Type_free(&newtype); return errs; } int parse_args(int argc, char **argv) { /* * int ret; * * while ((ret = getopt(argc, argv, "v")) >= 0) * { * switch (ret) { * case 'v': * verbose = 1; * break; * } * } */ if (argc > 1 && strcmp(argv[1], "-v") == 0) verbose = 1; return 0; } mpi-testsuite-3.2+dfsg/datatype/struct-ezhov.c0000644000175000017500000000262112620254305021015 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2008 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include "mpi.h" #include #define COUNT 14 #define SIZE 340 #define EL_COUNT 1131 char s_buf[EL_COUNT * SIZE]; char r_buf[EL_COUNT * SIZE]; int main(int argc, char **argv) { int rank, size, ret; MPI_Status Status; MPI_Request request; MPI_Datatype struct_type, type1[COUNT]; MPI_Aint disp1[COUNT] = { 0, 0, 332, 340 }; int block1[COUNT] = { 1, 56, 2, 1 }; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); type1[0] = MPI_LB; type1[1] = MPI_FLOAT; type1[2] = MPI_FLOAT; type1[3] = MPI_UB; MPI_Type_struct(4, block1, disp1, type1, &struct_type); ret = MPI_Type_commit(&struct_type); if (ret != MPI_SUCCESS) { fprintf(stderr, "Could not make struct type."), fflush(stderr); MPI_Abort(MPI_COMM_WORLD, 1); } memset(s_buf, 0, EL_COUNT * SIZE); memset(r_buf, 0, EL_COUNT * SIZE); MPI_Isend(s_buf, EL_COUNT, struct_type, 0, 4, MPI_COMM_WORLD, &request); MPI_Recv(r_buf, EL_COUNT, struct_type, 0, 4, MPI_COMM_WORLD, &Status); MPI_Wait(&request, &Status); MPI_Type_free(&struct_type); MPI_Finalize(); printf(" No Errors\n"); return 0; } mpi-testsuite-3.2+dfsg/datatype/typename.c0000644000175000017500000001475312620254305020173 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitest.h" #include #include /* Create an array with all of the MPI names in it */ typedef struct mpi_names_t { MPI_Datatype dtype; const char *name; } mpi_names_t; /* The MPI standard specifies that the names must be the MPI names, not the related language names (e.g., MPI_CHAR, not char) */ static mpi_names_t mpi_names[] = { {MPI_CHAR, "MPI_CHAR"}, {MPI_SIGNED_CHAR, "MPI_SIGNED_CHAR"}, {MPI_UNSIGNED_CHAR, "MPI_UNSIGNED_CHAR"}, {MPI_BYTE, "MPI_BYTE"}, {MPI_WCHAR, "MPI_WCHAR"}, {MPI_SHORT, "MPI_SHORT"}, {MPI_UNSIGNED_SHORT, "MPI_UNSIGNED_SHORT"}, {MPI_INT, "MPI_INT"}, {MPI_UNSIGNED, "MPI_UNSIGNED"}, {MPI_LONG, "MPI_LONG"}, {MPI_UNSIGNED_LONG, "MPI_UNSIGNED_LONG"}, {MPI_FLOAT, "MPI_FLOAT"}, {MPI_DOUBLE, "MPI_DOUBLE"}, #if MTEST_HAVE_MIN_MPI_VERSION(2,2) /* these two types were added in MPI-2.2 */ {MPI_AINT, "MPI_AINT"}, {MPI_OFFSET, "MPI_OFFSET"}, #endif {MPI_PACKED, "MPI_PACKED"}, {MPI_LB, "MPI_LB"}, {MPI_UB, "MPI_UB"}, {MPI_FLOAT_INT, "MPI_FLOAT_INT"}, {MPI_DOUBLE_INT, "MPI_DOUBLE_INT"}, {MPI_LONG_INT, "MPI_LONG_INT"}, {MPI_SHORT_INT, "MPI_SHORT_INT"}, {MPI_2INT, "MPI_2INT"}, /* Fortran */ #ifdef HAVE_FORTRAN_BINDING {MPI_COMPLEX, "MPI_COMPLEX"}, {MPI_DOUBLE_COMPLEX, "MPI_DOUBLE_COMPLEX"}, {MPI_LOGICAL, "MPI_LOGICAL"}, {MPI_REAL, "MPI_REAL"}, {MPI_DOUBLE_PRECISION, "MPI_DOUBLE_PRECISION"}, {MPI_INTEGER, "MPI_INTEGER"}, {MPI_2INTEGER, "MPI_2INTEGER"}, /* 2COMPLEX (and the 2DOUBLE_COMPLEX) were in MPI 1.0 but not later */ #ifdef HAVE_MPI_2COMPLEX {MPI_2COMPLEX, "MPI_2COMPLEX"}, #endif #ifdef HAVE_MPI_2DOUBLE_COMPLEX /* MPI_2DOUBLE_COMPLEX is an extension - it is not part of MPI 2.1 */ {MPI_2DOUBLE_COMPLEX, "MPI_2DOUBLE_COMPLEX"}, #endif {MPI_2REAL, "MPI_2REAL"}, {MPI_2DOUBLE_PRECISION, "MPI_2DOUBLE_PRECISION"}, {MPI_CHARACTER, "MPI_CHARACTER"}, #endif #if MTEST_HAVE_MIN_MPI_VERSION(2,2) /* these C99 types were added in MPI-2.2 */ {MPI_INT8_T, "MPI_INT8_T"}, {MPI_INT16_T, "MPI_INT16_T"}, {MPI_INT32_T, "MPI_INT32_T"}, {MPI_INT64_T, "MPI_INT64_T"}, {MPI_UINT8_T, "MPI_UINT8_T"}, {MPI_UINT16_T, "MPI_UINT16_T"}, {MPI_UINT32_T, "MPI_UINT32_T"}, {MPI_UINT64_T, "MPI_UINT64_T"}, {MPI_C_BOOL, "MPI_C_BOOL"}, {MPI_C_FLOAT_COMPLEX, "MPI_C_FLOAT_COMPLEX"}, {MPI_C_DOUBLE_COMPLEX, "MPI_C_DOUBLE_COMPLEX"}, {MPI_AINT, "MPI_AINT"}, {MPI_OFFSET, "MPI_OFFSET"}, #endif /* Size-specific types */ /* Do not move MPI_REAL4 - this is used to indicate the very first * optional type. In addition, you must not add any required types * after this type */ /* See MPI 2.1, Section 16.2. These are required, predefined types. * If the type is not available (e.g., *only* because the Fortran * compiler does not support it), the value may be MPI_DATATYPE_NULL */ {MPI_REAL4, "MPI_REAL4"}, {MPI_REAL8, "MPI_REAL8"}, {MPI_REAL16, "MPI_REAL16"}, {MPI_COMPLEX8, "MPI_COMPLEX8"}, {MPI_COMPLEX16, "MPI_COMPLEX16"}, {MPI_COMPLEX32, "MPI_COMPLEX32"}, {MPI_INTEGER1, "MPI_INTEGER1"}, {MPI_INTEGER2, "MPI_INTEGER2"}, {MPI_INTEGER4, "MPI_INTEGER4"}, {MPI_INTEGER8, "MPI_INTEGER8"}, #ifdef HAVE_MPI_INTEGER16 /* MPI_INTEGER16 is not included in most of the tables in MPI 2.1, * and some implementations omit it. An error will be reported, but * this ifdef allows the test to be built and run. */ {MPI_INTEGER16, "MPI_INTEGER16"}, #endif /* Semi-optional types - if the compiler doesn't support long double * or long long, these might be MPI_DATATYPE_NULL */ {MPI_LONG_DOUBLE, "MPI_LONG_DOUBLE"}, {MPI_LONG_LONG_INT, "MPI_LONG_LONG_INT"}, {MPI_LONG_LONG, "MPI_LONG_LONG"}, {MPI_UNSIGNED_LONG_LONG, "MPI_UNSIGNED_LONG_LONG"}, {MPI_LONG_DOUBLE_INT, "MPI_LONG_DOUBLE_INT"}, #if MTEST_HAVE_MIN_MPI_VERSION(2,2) /* added in MPI-2.2 */ {MPI_C_LONG_DOUBLE_COMPLEX, "MPI_C_LONG_DOUBLE_COMPLEX"}, {MPI_AINT, "MPI_AINT"}, {MPI_OFFSET, "MPI_OFFSET"}, #endif #if MTEST_HAVE_MIN_MPI_VERSION(3,0) /* added in MPI 3 */ {MPI_COUNT, "MPI_COUNT"}, #endif {0, (char *) 0}, /* Sentinal used to indicate the last element */ }; int main(int argc, char **argv) { char name[MPI_MAX_OBJECT_NAME]; int namelen, i, inOptional; int errs = 0; MTest_Init(&argc, &argv); /* Sample some datatypes */ /* See 8.4, "Naming Objects" in MPI-2. The default name is the same * as the datatype name */ MPI_Type_get_name(MPI_DOUBLE, name, &namelen); if (strncmp(name, "MPI_DOUBLE", MPI_MAX_OBJECT_NAME)) { errs++; fprintf(stderr, "Expected MPI_DOUBLE but got :%s:\n", name); } MPI_Type_get_name(MPI_INT, name, &namelen); if (strncmp(name, "MPI_INT", MPI_MAX_OBJECT_NAME)) { errs++; fprintf(stderr, "Expected MPI_INT but got :%s:\n", name); } /* Now we try them ALL */ inOptional = 0; for (i = 0; mpi_names[i].name != 0; i++) { /* Are we in the optional types? */ if (strcmp(mpi_names[i].name, "MPI_REAL4") == 0) inOptional = 1; /* If this optional type is not supported, skip it */ if (inOptional && mpi_names[i].dtype == MPI_DATATYPE_NULL) continue; if (mpi_names[i].dtype == MPI_DATATYPE_NULL) { /* Report an error because all of the standard types * must be supported */ errs++; fprintf(stderr, "MPI Datatype %s is MPI_DATATYPE_NULL\n", mpi_names[i].name); continue; } MTestPrintfMsg(10, "Checking type %s\n", mpi_names[i].name); name[0] = 0; MPI_Type_get_name(mpi_names[i].dtype, name, &namelen); if (strncmp(name, mpi_names[i].name, namelen)) { errs++; fprintf(stderr, "Expected %s but got %s\n", mpi_names[i].name, name); } } /* Try resetting the name */ MPI_Type_set_name(MPI_INT, (char *) "int"); name[0] = 0; MPI_Type_get_name(MPI_INT, name, &namelen); if (strncmp(name, "int", MPI_MAX_OBJECT_NAME)) { errs++; fprintf(stderr, "Expected int but got :%s:\n", name); } #ifndef HAVE_MPI_INTEGER16 errs++; fprintf(stderr, "MPI_INTEGER16 is not available\n"); #endif MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/datatype/blockindexed-misc.c0000644000175000017500000002065712620254305021735 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitestconf.h" #ifdef HAVE_STRING_H #include #endif static int verbose = 0; /* tests */ int blockindexed_contig_test(void); int blockindexed_vector_test(void); /* helper functions */ int parse_args(int argc, char **argv); static int pack_and_unpack(char *typebuf, int count, MPI_Datatype datatype, int typebufsz); int main(int argc, char **argv) { int err, errs = 0; MPI_Init(&argc, &argv); /* MPI-1.2 doesn't allow for MPI_Init(0,0) */ parse_args(argc, argv); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); /* perform some tests */ err = blockindexed_contig_test(); if (err && verbose) fprintf(stderr, "%d errors in blockindexed test.\n", err); errs += err; err = blockindexed_vector_test(); if (err && verbose) fprintf(stderr, "%d errors in blockindexed vector test.\n", err); errs += err; /* print message and exit */ if (errs) { fprintf(stderr, "Found %d errors\n", errs); } else { printf(" No Errors\n"); } MPI_Finalize(); return 0; } /* blockindexed_contig_test() * * Tests behavior with a blockindexed that can be converted to a * contig easily. This is specifically for coverage. * * Returns the number of errors encountered. */ int blockindexed_contig_test(void) { int buf[4] = { 7, -1, -2, -3 }; int err, errs = 0; int i, count = 1; int disp = 0; MPI_Datatype newtype; int size, int_size; MPI_Aint extent; err = MPI_Type_create_indexed_block(count, 1, &disp, MPI_INT, &newtype); if (err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "error creating struct type in blockindexed_contig_test()\n"); } errs++; } MPI_Type_size(MPI_INT, &int_size); err = MPI_Type_size(newtype, &size); if (err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "error obtaining type size in blockindexed_contig_test()\n"); } errs++; } if (size != int_size) { if (verbose) { fprintf(stderr, "error: size != int_size in blockindexed_contig_test()\n"); } errs++; } err = MPI_Type_extent(newtype, &extent); if (err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "error obtaining type extent in blockindexed_contig_test()\n"); } errs++; } if (extent != int_size) { if (verbose) { fprintf(stderr, "error: extent != int_size in blockindexed_contig_test()\n"); } errs++; } MPI_Type_commit(&newtype); err = pack_and_unpack((char *) buf, 1, newtype, 4 * sizeof(int)); if (err != 0) { if (verbose) { fprintf(stderr, "error packing/unpacking in blockindexed_contig_test()\n"); } errs += err; } for (i = 0; i < 4; i++) { int goodval; switch (i) { case 0: goodval = 7; break; default: goodval = 0; /* pack_and_unpack() zeros before unpack */ break; } if (buf[i] != goodval) { errs++; if (verbose) fprintf(stderr, "buf[%d] = %d; should be %d\n", i, buf[i], goodval); } } MPI_Type_free(&newtype); return errs; } /* blockindexed_vector_test() * * Tests behavior with a blockindexed of some vector types; * this shouldn't be easily convertable into anything else. * * Returns the number of errors encountered. */ int blockindexed_vector_test(void) { #define NELT (18) int buf[NELT] = { -1, -1, -1, 1, -2, 2, -3, -3, -3, -4, -4, -4, 3, -5, 4, 5, -6, 6 }; int expected[NELT] = { 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 3, 0, 4, 5, 0, 6 }; int err, errs = 0; int i, count = 3; int disp[] = { 1, 4, 5 }; MPI_Datatype vectype, newtype; int size, int_size; /* create a vector type of 2 ints, skipping one in between */ err = MPI_Type_vector(2, 1, 2, MPI_INT, &vectype); if (err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "error creating vector type in blockindexed_contig_test()\n"); } errs++; } err = MPI_Type_create_indexed_block(count, 1, disp, vectype, &newtype); if (err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "error creating blockindexed type in blockindexed_contig_test()\n"); } errs++; } MPI_Type_size(MPI_INT, &int_size); err = MPI_Type_size(newtype, &size); if (err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "error obtaining type size in blockindexed_contig_test()\n"); } errs++; } if (size != 6 * int_size) { if (verbose) { fprintf(stderr, "error: size != 6 * int_size in blockindexed_contig_test()\n"); } errs++; } MPI_Type_commit(&newtype); err = pack_and_unpack((char *) buf, 1, newtype, NELT * sizeof(int)); if (err != 0) { if (verbose) { fprintf(stderr, "error packing/unpacking in blockindexed_vector_test()\n"); } errs += err; } for (i = 0; i < NELT; i++) { if (buf[i] != expected[i]) { errs++; if (verbose) fprintf(stderr, "buf[%d] = %d; should be %d\n", i, buf[i], expected[i]); } } MPI_Type_free(&vectype); MPI_Type_free(&newtype); return errs; } /* pack_and_unpack() * * Perform packing and unpacking of a buffer for the purposes of checking * to see if we are processing a type correctly. Zeros the buffer between * these two operations, so the data described by the type should be in * place upon return but all other regions of the buffer should be zero. * * Parameters: * typebuf - pointer to buffer described by datatype and count that * will be packed and then unpacked into * count, datatype - description of typebuf * typebufsz - size of typebuf; used specifically to zero the buffer * between the pack and unpack steps * */ static int pack_and_unpack(char *typebuf, int count, MPI_Datatype datatype, int typebufsz) { char *packbuf; int err, errs = 0, pack_size, type_size, position; err = MPI_Type_size(datatype, &type_size); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "error in MPI_Type_size call; aborting after %d errors\n", errs); } return errs; } type_size *= count; err = MPI_Pack_size(count, datatype, MPI_COMM_SELF, &pack_size); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "error in MPI_Pack_size call; aborting after %d errors\n", errs); } return errs; } packbuf = (char *) malloc(pack_size); if (packbuf == NULL) { errs++; if (verbose) { fprintf(stderr, "error in malloc call; aborting after %d errors\n", errs); } return errs; } position = 0; err = MPI_Pack(typebuf, count, datatype, packbuf, type_size, &position, MPI_COMM_SELF); if (position != type_size) { errs++; if (verbose) fprintf(stderr, "position = %d; should be %d (pack)\n", position, type_size); } memset(typebuf, 0, typebufsz); position = 0; err = MPI_Unpack(packbuf, type_size, &position, typebuf, count, datatype, MPI_COMM_SELF); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "error in MPI_Unpack call; aborting after %d errors\n", errs); } return errs; } free(packbuf); if (position != type_size) { errs++; if (verbose) fprintf(stderr, "position = %d; should be %d (unpack)\n", position, type_size); } return errs; } int parse_args(int argc, char **argv) { /* * int ret; * * while ((ret = getopt(argc, argv, "v")) >= 0) * { * switch (ret) { * case 'v': * verbose = 1; * break; * } * } */ if (argc > 1 && strcmp(argv[1], "-v") == 0) verbose = 1; return 0; } mpi-testsuite-3.2+dfsg/datatype/tresized2.c0000644000175000017500000000455612620254305020264 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test of type resized with non-zero LB"; */ int main(int argc, char *argv[]) { int errs = 0, i; int rank, size, source, dest; int count; int *buf; MPI_Comm comm; MPI_Status status; MPI_Datatype newtype; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; /* Determine the sender and receiver */ MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); source = 0; dest = size - 1; /* Create an type that is "* INT * " * that is, there is a int-sized pad at the beginning of the type, * and the extent is still 3 ints. Note, however, that the INT * is still at displacement 0, so the effective pattern i */ MPI_Type_create_resized(MPI_INT, -(int) sizeof(int), 3 * sizeof(int), &newtype); MPI_Type_commit(&newtype); for (count = 1; count < 65000; count = count * 2) { buf = (int *) malloc(count * 3 * sizeof(int)); if (!buf) { MPI_Abort(comm, 1); } for (i = 0; i < 3 * count; i++) buf[i] = -1; if (rank == source) { for (i = 0; i < count; i++) buf[3 * i] = i; MPI_Send(buf, count, newtype, dest, 0, comm); MPI_Send(buf, count, newtype, dest, 1, comm); } else if (rank == dest) { MPI_Recv(buf, count, MPI_INT, source, 0, comm, &status); for (i = 0; i < count; i++) { if (buf[i] != i) { errs++; if (errs < 10) { printf("buf[%d] = %d\n", i, buf[i]); } } } for (i = 0; i < count * 3; i++) buf[i] = -1; MPI_Recv(buf, count, newtype, source, 1, comm, &status); for (i = 0; i < count; i++) { if (buf[3 * i] != i) { errs++; if (errs < 10) { printf("buf[3*%d] = %d\n", i, buf[i]); } } } } } MPI_Type_free(&newtype); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/datatype/large_vec.c0000644000175000017500000000426312620254305020273 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include "mpitest.h" /* tests non-contig send/recv of a message > 2GB. count=270M, type=long long run with 3 processes to exercise both shared memory and TCP in Nemesis tests*/ int main(int argc, char *argv[]) { int ierr, i, size, rank; int elems = 270000000; MPI_Status status; MPI_Datatype dtype; long long *cols; int errs = 0; MTest_Init(&argc, &argv); /* need large memory */ if (sizeof(void *) < 8) { MTest_Finalize(errs); MPI_Finalize(); return 0; } ierr = MPI_Comm_size(MPI_COMM_WORLD, &size); ierr = MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (size != 3) { fprintf(stderr, "[%d] usage: mpiexec -n 3 %s\n", rank, argv[0]); MPI_Abort(MPI_COMM_WORLD, 1); } cols = malloc(elems * sizeof(long long)); if (cols == NULL) { printf("malloc of >2GB array failed\n"); errs++; MTest_Finalize(errs); MPI_Finalize(); return 0; } MPI_Type_vector(elems / 2, 1, 2, MPI_LONG_LONG_INT, &dtype); MPI_Type_commit(&dtype); if (rank == 0) { for (i = 0; i < elems; i++) cols[i] = i; /* printf("[%d] sending...\n",rank); */ ierr = MPI_Send(cols, 1, dtype, 1, 0, MPI_COMM_WORLD); ierr = MPI_Send(cols, 1, dtype, 2, 0, MPI_COMM_WORLD); } else { /* printf("[%d] receiving...\n",rank); */ for (i = 0; i < elems; i++) cols[i] = -1; ierr = MPI_Recv(cols, 1, dtype, 0, 0, MPI_COMM_WORLD, &status); /* ierr = MPI_Get_count(&status,MPI_LONG_LONG_INT,&cnt); * Get_count still fails because count is not 64 bit */ for (i = 0; i < elems; i++) { if (i % 2) continue; if (cols[i] != i) { printf("Rank %d, cols[i]=%lld, should be %d\n", rank, cols[i], i); errs++; } } } MPI_Type_free(&dtype); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/datatype/gaddress.c0000644000175000017500000000125312620254305020134 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = ""; */ int main(int argc, char *argv[]) { int errs = 0; int buf[10]; MPI_Aint a1, a2; MTest_Init(&argc, &argv); MPI_Get_address(&buf[0], &a1); MPI_Get_address(&buf[1], &a2); if ((int) (a2 - a1) != sizeof(int)) { errs++; printf("Get address of two address did not return values the correct distance apart\n"); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/datatype/struct-derived-zeros.c0000644000175000017500000000263712620254305022453 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Based on code from Jeff Parker at IBM. */ #include #include #include "mpitest.h" int main(int argc, char *argv[]) { MPI_Datatype mystruct, vecs[3]; MPI_Aint stride = 5, displs[3]; int i = 0, blockcount[3]; int errs = 0; MTest_Init(&argc, &argv); for (i = 0; i < 3; i++) { MPI_Type_hvector(i, 1, stride, MPI_INT, &vecs[i]); MPI_Type_commit(&vecs[i]); blockcount[i] = 1; } displs[0] = 0; displs[1] = -100; displs[2] = -200; /* irrelevant */ MPI_Type_struct(3, blockcount, displs, vecs, &mystruct); MPI_Type_commit(&mystruct); MPI_Type_free(&mystruct); for (i = 0; i < 3; i++) { MPI_Type_free(&vecs[i]); } /* this time with the first argument always 0 */ for (i = 0; i < 3; i++) { MPI_Type_hvector(0, 1, stride, MPI_INT, &vecs[i]); MPI_Type_commit(&vecs[i]); blockcount[i] = 1; } displs[0] = 0; displs[1] = -100; displs[2] = -200; /* irrelevant */ MPI_Type_struct(3, blockcount, displs, vecs, &mystruct); MPI_Type_commit(&mystruct); MPI_Type_free(&mystruct); for (i = 0; i < 3; i++) { MPI_Type_free(&vecs[i]); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/datatype/sizedtypes.c0000644000175000017500000000436012620254305020545 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test of the sized types, supported in MPI-2"; */ int main(int argc, char *argv[]) { int errs = 0; int size; MTest_Init(&argc, &argv); MPI_Type_size(MPI_REAL4, &size); if (size != 4) { errs++; printf("MPI_REAL4 has size %d\n", size); } MPI_Type_size(MPI_REAL8, &size); if (size != 8) { errs++; printf("MPI_REAL8 has size %d\n", size); } if (MPI_REAL16 != MPI_DATATYPE_NULL) { MPI_Type_size(MPI_REAL16, &size); if (size != 16) { errs++; printf("MPI_REAL16 has size %d\n", size); } } MPI_Type_size(MPI_COMPLEX8, &size); if (size != 8) { errs++; printf("MPI_COMPLEX8 has size %d\n", size); } MPI_Type_size(MPI_COMPLEX16, &size); if (size != 16) { errs++; printf("MPI_COMPLEX16 has size %d\n", size); } if (MPI_COMPLEX32 != MPI_DATATYPE_NULL) { MPI_Type_size(MPI_COMPLEX32, &size); if (size != 32) { errs++; printf("MPI_COMPLEX32 has size %d\n", size); } } MPI_Type_size(MPI_INTEGER1, &size); if (size != 1) { errs++; printf("MPI_INTEGER1 has size %d\n", size); } MPI_Type_size(MPI_INTEGER2, &size); if (size != 2) { errs++; printf("MPI_INTEGER2 has size %d\n", size); } MPI_Type_size(MPI_INTEGER4, &size); if (size != 4) { errs++; printf("MPI_INTEGER4 has size %d\n", size); } if (MPI_INTEGER8 != MPI_DATATYPE_NULL) { MPI_Type_size(MPI_INTEGER8, &size); if (size != 8) { errs++; printf("MPI_INTEGER8 has size %d\n", size); } } #ifdef HAVE_MPI_INTEGER16 if (MPI_INTEGER16 != MPI_DATATYPE_NULL) { MPI_Type_size(MPI_INTEGER16, &size); if (size != 16) { errs++; printf("MPI_INTEGER16 has size %d\n", size); } } #endif MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/datatype/large-count.c0000644000175000017500000002343012620254305020561 0ustar mbanckmbanck/* -*- Mode: c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* This test checks for large count functionality ("MPI_Count") mandated by * MPI-3, as well as behavior of corresponding pre-MPI-3 interfaces that now * have better defined behavior when an "int" quantity would overflow. */ #include #include #include #include /* assert-like macro that bumps the err count and emits a message */ #define check(x_) \ do { \ if (!(x_)) { \ ++errs; \ if (errs < 10) { \ fprintf(stderr, "check failed: (%s), line %d\n", #x_, __LINE__); \ } \ } \ } while (0) int main(int argc, char *argv[]) { int errs = 0; int wrank, wsize; int size, elements, count; MPI_Aint lb, extent; MPI_Count size_x, lb_x, extent_x, elements_x; MPI_Count imx4i_true_extent; MPI_Datatype imax_contig = MPI_DATATYPE_NULL; MPI_Datatype four_ints = MPI_DATATYPE_NULL; MPI_Datatype imx4i = MPI_DATATYPE_NULL; MPI_Datatype imx4i_rsz = MPI_DATATYPE_NULL; MPI_Status status; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &wrank); MPI_Comm_size(MPI_COMM_WORLD, &wsize); check(sizeof(MPI_Count) >= sizeof(int)); check(sizeof(MPI_Count) >= sizeof(MPI_Aint)); check(sizeof(MPI_Count) >= sizeof(MPI_Offset)); /* the following two checks aren't explicitly required by the standard, but * it's hard to imagine a world without them holding true and so most of the * subsequent code probably depends on them to some degree */ check(sizeof(MPI_Aint) >= sizeof(int)); check(sizeof(MPI_Offset) >= sizeof(int)); /* not much point in checking for integer overflow cases if MPI_Count is * only as large as an int */ if (sizeof(MPI_Count) == sizeof(int)) goto epilogue; /* a very large type */ MPI_Type_contiguous(INT_MAX, MPI_CHAR, &imax_contig); MPI_Type_commit(&imax_contig); /* a small-ish contig */ MPI_Type_contiguous(4, MPI_INT, &four_ints); MPI_Type_commit(&four_ints); /* a type with size>INT_MAX */ MPI_Type_vector(INT_MAX / 2, 1, 3, four_ints, &imx4i); MPI_Type_commit(&imx4i); /* don't forget, ub for dtype w/ stride doesn't include any holes at the end * of the type, hence the more complicated calculation below */ imx4i_true_extent = 3LL * 4LL * sizeof(int) * ((INT_MAX / 2) - 1) + 4LL * sizeof(int); /* sanity check that the MPI_COUNT predefined named datatype exists */ MPI_Send(&imx4i_true_extent, 1, MPI_COUNT, MPI_PROC_NULL, 0, MPI_COMM_SELF); /* the same oversized type but with goofy extents */ MPI_Type_create_resized(imx4i, /*lb= */ INT_MAX, /*extent= */ -1024, &imx4i_rsz); MPI_Type_commit(&imx4i_rsz); /* MPI_Type_size */ MPI_Type_size(imax_contig, &size); check(size == INT_MAX); MPI_Type_size(four_ints, &size); check(size == 4 * sizeof(int)); MPI_Type_size(imx4i, &size); check(size == MPI_UNDEFINED); /* should overflow an int */ MPI_Type_size(imx4i_rsz, &size); check(size == MPI_UNDEFINED); /* should overflow an int */ /* MPI_Type_size_x */ MPI_Type_size_x(imax_contig, &size_x); check(size_x == INT_MAX); MPI_Type_size_x(four_ints, &size_x); check(size_x == 4 * sizeof(int)); MPI_Type_size_x(imx4i, &size_x); check(size_x == 4LL * sizeof(int) * (INT_MAX / 2)); /* should overflow an int */ MPI_Type_size_x(imx4i_rsz, &size_x); check(size_x == 4LL * sizeof(int) * (INT_MAX / 2)); /* should overflow an int */ /* MPI_Type_get_extent */ MPI_Type_get_extent(imax_contig, &lb, &extent); check(lb == 0); check(extent == INT_MAX); MPI_Type_get_extent(four_ints, &lb, &extent); check(lb == 0); check(extent == 4 * sizeof(int)); MPI_Type_get_extent(imx4i, &lb, &extent); check(lb == 0); if (sizeof(MPI_Aint) == sizeof(int)) check(extent == MPI_UNDEFINED); else check(extent == imx4i_true_extent); MPI_Type_get_extent(imx4i_rsz, &lb, &extent); check(lb == INT_MAX); check(extent == -1024); /* MPI_Type_get_extent_x */ MPI_Type_get_extent_x(imax_contig, &lb_x, &extent_x); check(lb_x == 0); check(extent_x == INT_MAX); MPI_Type_get_extent_x(four_ints, &lb_x, &extent_x); check(lb_x == 0); check(extent_x == 4 * sizeof(int)); MPI_Type_get_extent_x(imx4i, &lb_x, &extent_x); check(lb_x == 0); check(extent_x == imx4i_true_extent); MPI_Type_get_extent_x(imx4i_rsz, &lb_x, &extent_x); check(lb_x == INT_MAX); check(extent_x == -1024); /* MPI_Type_get_true_extent */ MPI_Type_get_true_extent(imax_contig, &lb, &extent); check(lb == 0); check(extent == INT_MAX); MPI_Type_get_true_extent(four_ints, &lb, &extent); check(lb == 0); check(extent == 4 * sizeof(int)); MPI_Type_get_true_extent(imx4i, &lb, &extent); check(lb == 0); if (sizeof(MPI_Aint) == sizeof(int)) check(extent == MPI_UNDEFINED); else check(extent == imx4i_true_extent); MPI_Type_get_true_extent(imx4i_rsz, &lb, &extent); check(lb == 0); if (sizeof(MPI_Aint) == sizeof(int)) check(extent == MPI_UNDEFINED); else check(extent == imx4i_true_extent); /* MPI_Type_get_true_extent_x */ MPI_Type_get_true_extent_x(imax_contig, &lb_x, &extent_x); check(lb_x == 0); check(extent_x == INT_MAX); MPI_Type_get_true_extent_x(four_ints, &lb_x, &extent_x); check(lb_x == 0); check(extent_x == 4 * sizeof(int)); MPI_Type_get_true_extent_x(imx4i, &lb_x, &extent_x); check(lb_x == 0); check(extent_x == imx4i_true_extent); MPI_Type_get_true_extent_x(imx4i_rsz, &lb_x, &extent_x); check(lb_x == 0); check(extent_x == imx4i_true_extent); /* MPI_{Status_set_elements,Get_elements}{,_x} */ /* set simple */ MPI_Status_set_elements(&status, MPI_INT, 10); MPI_Get_elements(&status, MPI_INT, &elements); MPI_Get_elements_x(&status, MPI_INT, &elements_x); MPI_Get_count(&status, MPI_INT, &count); check(elements == 10); check(elements_x == 10); check(count == 10); /* set_x simple */ MPI_Status_set_elements_x(&status, MPI_INT, 10); MPI_Get_elements(&status, MPI_INT, &elements); MPI_Get_elements_x(&status, MPI_INT, &elements_x); MPI_Get_count(&status, MPI_INT, &count); check(elements == 10); check(elements_x == 10); check(count == 10); /* Sets elements corresponding to count=1 of the given MPI datatype, using * set_elements and set_elements_x. Checks expected values are returned by * get_elements, get_elements_x, and get_count (including MPI_UNDEFINED * clipping) */ #define check_set_elements(type_, elts_) \ do { \ elements = elements_x = count = 0xfeedface; \ /* can't use legacy "set" for large element counts */ \ if ((elts_) <= INT_MAX) { \ MPI_Status_set_elements(&status, (type_), 1); \ MPI_Get_elements(&status, (type_), &elements); \ MPI_Get_elements_x(&status, (type_), &elements_x); \ MPI_Get_count(&status, (type_), &count); \ check(elements == (elts_)); \ check(elements_x == (elts_)); \ check(count == 1); \ } \ \ elements = elements_x = count = 0xfeedface; \ MPI_Status_set_elements_x(&status, (type_), 1); \ MPI_Get_elements(&status, (type_), &elements); \ MPI_Get_elements_x(&status, (type_), &elements_x); \ MPI_Get_count(&status, (type_), &count); \ if ((elts_) > INT_MAX) { \ check(elements == MPI_UNDEFINED); \ } \ else { \ check(elements == (elts_)); \ } \ check(elements_x == (elts_)); \ check(count == 1); \ } while (0) \ check_set_elements(imax_contig, INT_MAX); check_set_elements(four_ints, 4); check_set_elements(imx4i, 4LL * (INT_MAX / 2)); check_set_elements(imx4i_rsz, 4LL * (INT_MAX / 2)); epilogue: if (imax_contig != MPI_DATATYPE_NULL) MPI_Type_free(&imax_contig); if (four_ints != MPI_DATATYPE_NULL) MPI_Type_free(&four_ints); if (imx4i != MPI_DATATYPE_NULL) MPI_Type_free(&imx4i); if (imx4i_rsz != MPI_DATATYPE_NULL) MPI_Type_free(&imx4i_rsz); MPI_Reduce((wrank == 0 ? MPI_IN_PLACE : &errs), &errs, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (wrank == 0) { if (errs) { printf("found %d errors\n", errs); } else { printf(" No errors\n"); } } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/datatype/struct-pack.c0000644000175000017500000002312412620254305020601 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include #include "mpi.h" static int verbose = 0; int main(int argc, char *argv[]); int parse_args(int argc, char **argv); int single_struct_test(void); int array_of_structs_test(void); int struct_of_structs_test(void); struct test_struct_1 { int a, b; char c, d; int e; }; int main(int argc, char *argv[]) { int err, errs = 0; /* Initialize MPI */ MPI_Init(&argc, &argv); parse_args(argc, argv); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); err = single_struct_test(); if (verbose && err) fprintf(stderr, "error in single_struct_test\n"); errs += err; err = array_of_structs_test(); if (verbose && err) fprintf(stderr, "error in array_of_structs_test\n"); errs += err; err = struct_of_structs_test(); if (verbose && err) fprintf(stderr, "error in struct_of_structs_test\n"); errs += err; /* print message and exit */ if (errs) { fprintf(stderr, "Found %d errors\n", errs); } else { printf(" No Errors\n"); } MPI_Finalize(); return 0; } int single_struct_test(void) { int err, errs = 0; int bufsize, position = 0; struct test_struct_1 ts1, ts2; MPI_Datatype mystruct; char *buffer; MPI_Aint disps[3] = { 0, 2 * sizeof(int), 3 * sizeof(int) }; /* guessing... */ int blks[3] = { 2, 2, 1 }; MPI_Datatype types[3] = { MPI_INT, MPI_CHAR, MPI_INT }; ts1.a = 1; ts1.b = 2; ts1.c = 3; ts1.d = 4; ts1.e = 5; err = MPI_Type_struct(3, blks, disps, types, &mystruct); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Type_struct returned error\n"); } } MPI_Type_commit(&mystruct); MPI_Pack_size(1, mystruct, MPI_COMM_WORLD, &bufsize); buffer = (char *) malloc(bufsize); err = MPI_Pack(&ts1, 1, mystruct, buffer, bufsize, &position, MPI_COMM_WORLD); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Pack returned error\n"); } } position = 0; err = MPI_Unpack(buffer, bufsize, &position, &ts2, 1, mystruct, MPI_COMM_WORLD); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Unpack returned error\n"); } } MPI_Type_free(&mystruct); free(buffer); if (ts1.a != ts2.a) { errs++; if (verbose) { fprintf(stderr, "ts2.a = %d; should be %d\n", ts2.a, ts1.a); } } if (ts1.b != ts2.b) { errs++; if (verbose) { fprintf(stderr, "ts2.b = %d; should be %d\n", ts2.b, ts1.b); } } if (ts1.c != ts2.c) { errs++; if (verbose) { fprintf(stderr, "ts2.c = %d; should be %d\n", (int) ts2.c, (int) ts1.c); } } if (ts1.d != ts2.d) { errs++; if (verbose) { fprintf(stderr, "ts2.d = %d; should be %d\n", (int) ts2.d, (int) ts1.d); } } if (ts1.e != ts2.e) { errs++; if (verbose) { fprintf(stderr, "ts2.e = %d; should be %d\n", ts2.e, ts1.e); } } return errs; } int array_of_structs_test(void) { int i, err, errs = 0; int bufsize, position = 0; struct test_struct_1 ts1[10], ts2[10]; MPI_Datatype mystruct; char *buffer; MPI_Aint disps[3] = { 0, 2 * sizeof(int), 3 * sizeof(int) }; /* guessing... */ int blks[3] = { 2, 2, 1 }; MPI_Datatype types[3] = { MPI_INT, MPI_CHAR, MPI_INT }; for (i = 0; i < 10; i++) { ts1[i].a = 10 * i + 1; ts1[i].b = 10 * i + 2; ts1[i].c = 10 * i + 3; ts1[i].d = 10 * i + 4; ts1[i].e = 10 * i + 5; ts2[i].a = -13; ts2[i].b = -13; ts2[i].c = -13; ts2[i].d = -13; ts2[i].e = -13; } err = MPI_Type_struct(3, blks, disps, types, &mystruct); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Type_struct returned error\n"); } } MPI_Type_commit(&mystruct); MPI_Pack_size(10, mystruct, MPI_COMM_WORLD, &bufsize); buffer = (char *) malloc(bufsize); err = MPI_Pack(ts1, 10, mystruct, buffer, bufsize, &position, MPI_COMM_WORLD); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Pack returned error\n"); } } position = 0; err = MPI_Unpack(buffer, bufsize, &position, ts2, 10, mystruct, MPI_COMM_WORLD); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Unpack returned error\n"); } } MPI_Type_free(&mystruct); free(buffer); for (i = 0; i < 10; i++) { if (ts1[i].a != ts2[i].a) { errs++; if (verbose) { fprintf(stderr, "ts2[%d].a = %d; should be %d\n", i, ts2[i].a, ts1[i].a); } } if (ts1[i].b != ts2[i].b) { errs++; if (verbose) { fprintf(stderr, "ts2[%d].b = %d; should be %d\n", i, ts2[i].b, ts1[i].b); } } if (ts1[i].c != ts2[i].c) { errs++; if (verbose) { fprintf(stderr, "ts2[%d].c = %d; should be %d\n", i, (int) ts2[i].c, (int) ts1[i].c); } } if (ts1[i].d != ts2[i].d) { errs++; if (verbose) { fprintf(stderr, "ts2[%d].d = %d; should be %d\n", i, (int) ts2[i].d, (int) ts1[i].d); } } if (ts1[i].e != ts2[i].e) { errs++; if (verbose) { fprintf(stderr, "ts2[%d].e = %d; should be %d\n", i, ts2[i].e, ts1[i].e); } } } return errs; } int struct_of_structs_test(void) { int i, j, err, errs = 0, bufsize, position; char buf[50], buf2[50], *packbuf; MPI_Aint disps[3] = { 0, 3, 0 }; int blks[3] = { 2, 1, 0 }; MPI_Datatype types[3], chartype, tiletype1, tiletype2, finaltype; /* build a contig of one char to try to keep optimizations * from being applied. */ err = MPI_Type_contiguous(1, MPI_CHAR, &chartype); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "chartype create failed\n"); } return errs; } /* build a type that we can tile a few times */ types[0] = MPI_CHAR; types[1] = chartype; err = MPI_Type_struct(2, blks, disps, types, &tiletype1); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "tiletype1 create failed\n"); } return errs; } /* build the same type again, again to avoid optimizations */ err = MPI_Type_struct(2, blks, disps, types, &tiletype2); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "tiletype2 create failed\n"); } return errs; } /* build a combination of those two tiletypes */ disps[0] = 0; disps[1] = 5; disps[2] = 10; blks[0] = 1; blks[1] = 1; blks[2] = 1; types[0] = tiletype1; types[1] = tiletype2; types[2] = MPI_UB; err = MPI_Type_struct(3, blks, disps, types, &finaltype); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "finaltype create failed\n"); } return errs; } MPI_Type_commit(&finaltype); MPI_Type_free(&chartype); MPI_Type_free(&tiletype1); MPI_Type_free(&tiletype2); MPI_Pack_size(5, finaltype, MPI_COMM_WORLD, &bufsize); packbuf = malloc(bufsize); if (packbuf == NULL) { errs++; if (verbose) { fprintf(stderr, "pack buffer allocation (%d bytes) failed\n", bufsize); } return errs; } for (j = 0; j < 10; j++) { for (i = 0; i < 5; i++) { if (i == 2 || i == 4) buf[5 * j + i] = 0; else buf[5 * j + i] = i; } } position = 0; err = MPI_Pack(buf, 5, finaltype, packbuf, bufsize, &position, MPI_COMM_WORLD); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "pack failed\n"); } return errs; } memset(buf2, 0, 50); position = 0; err = MPI_Unpack(packbuf, bufsize, &position, buf2, 5, finaltype, MPI_COMM_WORLD); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "unpack failed\n"); } return errs; } for (j = 0; j < 10; j++) { for (i = 0; i < 5; i++) { if (buf[5 * j + i] != buf2[5 * j + i]) { errs++; if (verbose) { fprintf(stderr, "buf2[%d] = %d; should be %d\n", 5 * j + i, (int) buf2[5 * j + i], (int) buf[5 * j + i]); } } } } free(packbuf); MPI_Type_free(&finaltype); return errs; } int parse_args(int argc, char **argv) { /* * int ret; * * while ((ret = getopt(argc, argv, "v")) >= 0) * { * switch (ret) { * case 'v': * verbose = 1; * break; * } * } */ if (argc > 1 && strcmp(argv[1], "-v") == 0) verbose = 1; return 0; } mpi-testsuite-3.2+dfsg/datatype/slice-pack.c0000644000175000017500000000620412620254305020354 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include #include "mpitest.h" #include "mpitestconf.h" #ifdef HAVE_STRING_H #include #endif static int verbose = 0; int a[100][100][100], e[9][9][9]; int main(int argc, char *argv[]); /* helper functions */ static int parse_args(int argc, char **argv); int main(int argc, char *argv[]) { /* Variable declarations */ MPI_Datatype oneslice, twoslice, threeslice; int errs = 0; MPI_Aint sizeofint; int bufsize, position; void *buffer; int i, j, k; /* Initialize a to some known values. */ for (i = 0; i < 100; i++) { for (j = 0; j < 100; j++) { for (k = 0; k < 100; k++) { a[i][j][k] = i * 1000000 + j * 1000 + k; } } } /* Initialize MPI */ MPI_Init(&argc, &argv); MPI_Type_extent(MPI_INT, &sizeofint); parse_args(argc, argv); /* Create data types. */ /* NOTE: This differs from the way that it's done on the sheet. */ /* On the sheet, the slice is a[0, 2, 4, ..., 16][2-10][1-9]. */ /* Below, the slice is a[0-8][2-10][1, 3, 5, ..., 17]. */ MPI_Type_vector(9, 1, 2, MPI_INT, &oneslice); MPI_Type_hvector(9, 1, 100 * sizeofint, oneslice, &twoslice); MPI_Type_hvector(9, 1, 100 * 100 * sizeofint, twoslice, &threeslice); MPI_Type_commit(&threeslice); /* Pack it into a buffer. */ position = 0; MPI_Pack_size(1, threeslice, MPI_COMM_WORLD, &bufsize); buffer = (void *) malloc((unsigned) bufsize); /* -1 to indices on sheet to compensate for Fortran --> C */ MPI_Pack(&(a[0][2][1]), 1, threeslice, buffer, bufsize, &position, MPI_COMM_WORLD); /* Unpack the buffer into e. */ position = 0; MPI_Unpack(buffer, bufsize, &position, e, 9 * 9 * 9, MPI_INT, MPI_COMM_WORLD); /* Display errors, if any. */ for (i = 0; i < 9; i++) { for (j = 0; j < 9; j++) { for (k = 0; k < 9; k++) { /* The truncation in integer division makes this safe. */ if (e[i][j][k] != a[i][j + 2][k * 2 + 1]) { errs++; if (verbose) { printf("Error in location %d x %d x %d: %d, should be %d.\n", i, j, k, e[i][j][k], a[i][j + 2][k * 2 + 1]); } } } } } /* Release memory. */ free(buffer); if (errs) { fprintf(stderr, "Found %d errors\n", errs); } else { printf(" No Errors\n"); } MPI_Type_free(&oneslice); MPI_Type_free(&twoslice); MPI_Type_free(&threeslice); MPI_Finalize(); return 0; } /* parse_args() */ static int parse_args(int argc, char **argv) { /* * int ret; * * while ((ret = getopt(argc, argv, "v")) >= 0) * { * switch (ret) { * case 'v': * verbose = 1; * break; * } * } */ if (argc > 1 && strcmp(argv[1], "-v") == 0) verbose = 1; return 0; } mpi-testsuite-3.2+dfsg/datatype/simple-resized.c0000644000175000017500000000607112620254305021277 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitestconf.h" #ifdef HAVE_STRING_H #include #endif static int verbose = 0; /* tests */ int derived_resized_test(void); /* helper functions */ int parse_args(int argc, char **argv); int main(int argc, char **argv) { int err, errs = 0; MPI_Init(&argc, &argv); /* MPI-1.2 doesn't allow for MPI_Init(0,0) */ parse_args(argc, argv); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); /* perform some tests */ err = derived_resized_test(); if (err && verbose) fprintf(stderr, "%d errors in derived_resized test.\n", err); errs += err; /* print message and exit */ if (errs) { fprintf(stderr, "Found %d errors\n", errs); } else { printf(" No Errors\n"); } MPI_Finalize(); return 0; } /* derived_resized_test() * * Tests behavior with resizing of a simple derived type. * * Returns the number of errors encountered. */ int derived_resized_test(void) { int err, errs = 0; int count = 2; MPI_Datatype newtype, resizedtype; int size; MPI_Aint extent; err = MPI_Type_contiguous(count, MPI_INT, &newtype); if (err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "error creating type in derived_resized_test()\n"); } errs++; } err = MPI_Type_create_resized(newtype, (MPI_Aint) 0, (MPI_Aint) (2 * sizeof(int) + 10), &resizedtype); err = MPI_Type_size(resizedtype, &size); if (err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "error obtaining type size in derived_resized_test()\n"); } errs++; } if (size != 2 * sizeof(int)) { if (verbose) { fprintf(stderr, "error: size != %d in derived_resized_test()\n", (int) (2 * sizeof(int))); } errs++; } err = MPI_Type_extent(resizedtype, &extent); if (err != MPI_SUCCESS) { if (verbose) { fprintf(stderr, "error obtaining type extent in derived_resized_test()\n"); } errs++; } if (extent != 2 * sizeof(int) + 10) { if (verbose) { fprintf(stderr, "error: invalid extent (%d) in derived_resized_test(); should be %d\n", (int) extent, (int) (2 * sizeof(int) + 10)); } errs++; } MPI_Type_free(&newtype); MPI_Type_free(&resizedtype); return errs; } int parse_args(int argc, char **argv) { /* * int ret; * * while ((ret = getopt(argc, argv, "v")) >= 0) * { * switch (ret) { * case 'v': * verbose = 1; * break; * } * } */ if (argc > 1 && strcmp(argv[1], "-v") == 0) verbose = 1; return 0; } mpi-testsuite-3.2+dfsg/datatype/segtest.c0000644000175000017500000001336012620254305020020 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpiimpl.h" #include /* * Simple segment test, including timing code */ /* * Build datatype structures * * Contiguous * n = 1, 4, 16, 64, 128, 512, 2048, 8196 ints * Vector * blocksize = 1, 4, 64 ints * stride = 1, 64, 127 * Block Indexed * blocksize = 1, 4 ints * offsets = i*24 for i = 0 to n, n = 0, 64, 512 * Indexed * blocksizes = 1, 2, 4, 3, 7, 5, 6 * offsets = i*24 for i = 0 to n, n = 0, 4, 7, 64, 512 * (Wrap blocksizes to match offsets) * * Also need a few nested datatypes, such as vector of vectors * Do the versions in Using MPI * */ /* * Routines to create dataloops for basic dataloops */ /* * Contig */ MPID_Dataloop *MPID_Dataloop_init_contig(int count) { MPID_Dataloop *ct; ct = (MPID_Dataloop *) MPIU_Malloc(sizeof(MPID_Dataloop)); ct->kind = MPID_DTYPE_CONTIG | DATALOOP_FINAL_MASK; ct->loop_params.c_t.count = count; ct->loop_params.c_t.dataloop = 0; ct->extent = count; ct->handle = 0; return ct; } /* * Vector */ MPID_Dataloop *MPID_Dataloop_init_vector(int count, int blocksize, int stride) { MPID_Dataloop *v; v = (MPID_Dataloop *) MPIU_Malloc(sizeof(MPID_Dataloop)); v->kind = MPID_DTYPE_VECTOR | DATALOOP_FINAL_MASK; v->loop_params.v_t.count = count; v->loop_params.v_t.blocksize = blocksize; v->loop_params.v_t.stride = stride; v->loop_params.v_t.dataloop = 0; v->extent = (count - 1) * stride + blocksize; v->handle = 0; return v; } /* * Block indexed */ MPID_Dataloop *MPID_Dataloop_init_blockindexed(int count, int blocksize, MPI_Aint * offset) { MPID_Dataloop *bi; MPI_Aint extent; int i; bi = (MPID_Dataloop *) MPIU_Malloc(sizeof(MPID_Dataloop)); bi->kind = MPID_DTYPE_BLOCKINDEXED | DATALOOP_FINAL_MASK; bi->loop_params.bi_t.count = count; bi->loop_params.bi_t.blocksize = blocksize; bi->loop_params.bi_t.offset = (MPI_Aint *) MPIU_Malloc(sizeof(MPI_Aint) * count); for (i = 0; i < count; i++) { bi->loop_params.bi_t.offset[i] = offset[i]; if (offset[i] + blocksize > extent) extent = offset[i] + blocksize; } bi->loop_params.bi_t.dataloop = 0; bi->extent = extent; bi->handle = 0; return bi; } /* * Indexed */ MPID_Dataloop *MPID_Dataloop_init_indexed(int count, int *blocksize, MPI_Aint * offset) { MPID_Dataloop *it; MPI_Aint extent = 0; int i; it = (MPID_Dataloop *) MPIU_Malloc(sizeof(MPID_Dataloop)); it->kind = MPID_DTYPE_INDEXED | DATALOOP_FINAL_MASK; it->loop_params.i_t.count = count; it->loop_params.i_t.blocksize = (int *) MPIU_Malloc(sizeof(int) * count); it->loop_params.i_t.offset = (MPI_Aint *) MPIU_Malloc(sizeof(MPI_Aint) * count); for (i = 0; i < count; i++) { it->loop_params.i_t.offset[i] = offset[i]; it->loop_params.i_t.blocksize[i] = blocksize[i]; if (offset[i] + blocksize[i] > extent) extent = offset[i] + blocksize[i]; } it->loop_params.i_t.dataloop = 0; it->extent = extent; it->handle = 0; return it; } int main(int argc, char **argv) { /* MPID_Dataloop *vecloop; */ MPI_Datatype vectype; int count = 200, blocksize = 4, stride = 7 * 4; char *src_buf, *dest_buf; int i, j, k; double r1, r2; MPI_Init(&argc, &argv); /* vecloop = MPID_Dataloop_init_vector(count, blocksize, stride); */ MPI_Type_vector(count, 1, 7, MPI_INT, &vectype); /* Initialize the data */ src_buf = (char *) MPIU_Malloc((count - 1) * stride + blocksize); for (i = 0; i < (count - 1) * stride + blocksize; i++) src_buf[i] = -i; for (i = 0; i < count; i++) { for (j = 0; j < blocksize; j++) src_buf[i * stride + j] = i * blocksize + j; } dest_buf = (char *) MPIU_Malloc(count * blocksize); for (i = 0; i < count * blocksize; i++) { dest_buf[i] = -i; } r1 = MPI_Wtime(); for (i = 0; i < 100; i++) { int position = 0; /*MPID_Segment_pack(vecloop, src_buf, dest_buf); */ MPI_Pack(src_buf, count, vectype, dest_buf, count * blocksize, &position, MPI_COMM_WORLD); } r2 = MPI_Wtime(); printf("Timer for vector pack is %e\n", (r2 - r1) / 100); for (i = 0; i < count * blocksize; i++) { if (dest_buf[i] != (char) i) { printf("Error at location %d\n", i); } } r1 = MPI_Wtime(); for (k = 0; k < 100; k++) { char *dest = dest_buf, *src = src_buf; for (i = 0; i < count; i++) { for (j = 0; j < blocksize; j++) *dest++ = src[j]; src += stride; } } r2 = MPI_Wtime(); printf("Timer for hand vector pack is %e\n", (r2 - r1) / 100); r1 = MPI_Wtime(); for (k = 0; k < 100; k++) { int *dest = (int *) dest_buf, *src = (int *) src_buf; int bsize = blocksize >> 2; int istride = stride >> 2; if (bsize == 1) { for (i = 0; i < count; i++) { *dest++ = *src; src += istride; } } else { for (i = 0; i < count; i++) { for (j = 0; j < bsize; j++) *dest++ = src[j]; src += istride; } } } r2 = MPI_Wtime(); printf("Timer for hand vector pack (int) is %e\n", (r2 - r1) / 100); MPI_Finalize(); return 0; } /* * Nested vector. * The y-z subface is * Type_vector(ey-sy+1, 1, nx, MPI_DOUBLE, &newx1); * Type_hvector(ez-sz+1, 1, nx*ny_sizeof(double), newx1, &newx); * This gives the a(i,sy:ey,sz:ez) of a(nx,ny,nz) (in Fortran notation) */ mpi-testsuite-3.2+dfsg/datatype/struct-verydeep.c0000644000175000017500000001135712620254305021513 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2009 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Regression test for MPICH trac ticket #972, originally written by * Rob Latham as a simplification of a type * encountered by the HDF5 library. * * Should be run with 1 process. */ #include #include "mpi.h" /* uncomment to use debugging routine in MPICH extern int MPIDU_Datatype_debug(MPI_Datatype type, int depth); */ int makeHDF5type0(MPI_Datatype * type); int makeHDF5type0(MPI_Datatype * type) { MPI_Datatype ctg, vect, structype, vec2, structype2, vec3, structype3, vec4, structype4, vec5; int b[3]; MPI_Aint d[3]; MPI_Datatype t[3]; MPI_Type_contiguous(4, MPI_BYTE, &ctg); MPI_Type_vector(1, 5, 1, ctg, &vect); b[0] = b[1] = b[2] = 1; d[0] = 0; d[1] = 0; d[2] = 40; t[0] = MPI_LB; t[1] = vect; t[2] = MPI_UB; MPI_Type_create_struct(3, b, d, t, &structype); MPI_Type_vector(1, 5, 1, structype, &vec2); b[0] = b[1] = b[2] = 1; d[0] = 0; d[1] = 2000; d[2] = 400; t[0] = MPI_LB; t[1] = vec2; t[2] = MPI_UB; MPI_Type_create_struct(3, b, d, t, &structype2); MPI_Type_vector(1, 5, 1, structype2, &vec3); b[0] = b[1] = b[2] = 1; d[0] = 0; d[1] = 0; d[2] = 4000; t[0] = MPI_LB; t[1] = vec3; t[2] = MPI_UB; MPI_Type_create_struct(3, b, d, t, &structype3); MPI_Type_vector(1, 5, 1, structype3, &vec4); b[0] = b[1] = b[2] = 1; d[0] = 0; d[1] = 0; d[2] = 40000; t[0] = MPI_LB; t[1] = vec4; t[2] = MPI_UB; MPI_Type_create_struct(3, b, d, t, &structype4); MPI_Type_vector(1, 1, 1, structype4, &vec5); b[0] = b[1] = b[2] = 1; d[0] = 0; d[1] = 160000; d[2] = 200000; t[0] = MPI_LB; t[1] = vec5; t[2] = MPI_UB; MPI_Type_create_struct(3, b, d, t, type); MPI_Type_free(&ctg); MPI_Type_free(&vect); MPI_Type_free(&structype); MPI_Type_free(&vec2); MPI_Type_free(&structype2); MPI_Type_free(&vec3); MPI_Type_free(&structype3); MPI_Type_free(&vec4); MPI_Type_free(&structype4); MPI_Type_free(&vec5); MPI_Type_commit(type); return 0; } int makeHDF5type1(MPI_Datatype * type); int makeHDF5type1(MPI_Datatype * type) { MPI_Datatype ctg, vect, structype, vec2, structype2, vec3, structype3, vec4, structype4, vec5; int b[3]; MPI_Aint d[3]; MPI_Datatype t[3]; MPI_Type_contiguous(4, MPI_BYTE, &ctg); MPI_Type_vector(1, 5, 1, ctg, &vect); b[0] = b[1] = b[2] = 1; d[0] = 0; d[1] = 20; d[2] = 40; t[0] = MPI_LB; t[1] = vect; t[2] = MPI_UB; MPI_Type_create_struct(3, b, d, t, &structype); MPI_Type_vector(1, 5, 1, structype, &vec2); b[0] = b[1] = b[2] = 1; d[0] = 0; d[1] = 0; d[2] = 400; t[0] = MPI_LB; t[1] = vec2; t[2] = MPI_UB; MPI_Type_create_struct(3, b, d, t, &structype2); MPI_Type_vector(1, 5, 1, structype2, &vec3); b[0] = b[1] = b[2] = 1; d[0] = 0; d[1] = 0; d[2] = 4000; t[0] = MPI_LB; t[1] = vec3; t[2] = MPI_UB; MPI_Type_create_struct(3, b, d, t, &structype3); MPI_Type_vector(1, 5, 1, structype3, &vec4); b[0] = b[1] = b[2] = 1; d[0] = 0; d[1] = 0; d[2] = 40000; t[0] = MPI_LB; t[1] = vec4; t[2] = MPI_UB; MPI_Type_create_struct(3, b, d, t, &structype4); MPI_Type_vector(1, 1, 1, structype4, &vec5); b[0] = b[1] = b[2] = 1; d[0] = 0; d[1] = 160000; d[2] = 200000; t[0] = MPI_LB; t[1] = vec5; t[2] = MPI_UB; MPI_Type_create_struct(3, b, d, t, type); MPI_Type_free(&ctg); MPI_Type_free(&vect); MPI_Type_free(&structype); MPI_Type_free(&vec2); MPI_Type_free(&structype2); MPI_Type_free(&vec3); MPI_Type_free(&structype3); MPI_Type_free(&vec4); MPI_Type_free(&structype4); MPI_Type_free(&vec5); MPI_Type_commit(type); return 0; } int makeHDF5type(MPI_Datatype * type); int makeHDF5type(MPI_Datatype * type) { int i; #define NTYPES 2 int blocklens[NTYPES]; MPI_Aint disps[NTYPES]; MPI_Datatype types[NTYPES]; makeHDF5type0(&(types[0])); makeHDF5type1(&(types[1])); for (i = 0; i < NTYPES; i++) { blocklens[i] = 1; disps[i] = 0; } MPI_Type_create_struct(NTYPES, blocklens, disps, types, type); MPI_Type_commit(type); for (i = 0; i < NTYPES; i++) { MPI_Type_free(&(types[i])); } return 0; } int main(int argc, char **argv) { MPI_Datatype hdf5type; MPI_Init(&argc, &argv); makeHDF5type(&hdf5type); /*MPIDU_Datatype_debug(hdf5type, 32); */ MPI_Type_free(&hdf5type); MPI_Finalize(); printf(" No Errors\n"); return 0; } mpi-testsuite-3.2+dfsg/datatype/tmatchsize.c0000644000175000017500000001124512620254305020515 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test of type_match_size"; */ /* * type match size is part of the extended Fortran support, and may not * be present in */ int main(int argc, char *argv[]) { int errs = 0, err; int dsize; MPI_Datatype newtype; MTest_Init(&argc, &argv); /* Check the most likely cases. Note that it is an error to * free the type returned by MPI_Type_match_size. Also note * that it is an error to request a size not supported by the compiler, * so Type_match_size should generate an error in that case */ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); err = MPI_Type_match_size(MPI_TYPECLASS_REAL, sizeof(float), &newtype); if (err) { errs++; MTestPrintErrorMsg("Float: ", err); } else { err = MPI_Type_size(newtype, &dsize); if (err) { errs++; MTestPrintErrorMsg("Float type: ", err); } else { if (dsize != sizeof(float)) { errs++; printf("Unexpected size for float (%d != %d)\n", dsize, (int) sizeof(float)); } } } err = MPI_Type_match_size(MPI_TYPECLASS_REAL, sizeof(double), &newtype); if (err) { errs++; MTestPrintErrorMsg("Double: ", err); } else { MPI_Type_size(newtype, &dsize); if (dsize != sizeof(double)) { errs++; printf("Unexpected size for double\n"); } } #ifdef HAVE_LONG_DOUBLE err = MPI_Type_match_size(MPI_TYPECLASS_REAL, sizeof(long double), &newtype); if (err) { errs++; MTestPrintErrorMsg("Long double: ", err); } else { MPI_Type_size(newtype, &dsize); if (dsize != sizeof(long double)) { errs++; printf("Unexpected size for long double\n"); } } #endif err = MPI_Type_match_size(MPI_TYPECLASS_INTEGER, sizeof(short), &newtype); if (err) { errs++; MTestPrintErrorMsg("Short: ", err); } else { MPI_Type_size(newtype, &dsize); if (dsize != sizeof(short)) { errs++; printf("Unexpected size for short\n"); } } err = MPI_Type_match_size(MPI_TYPECLASS_INTEGER, sizeof(int), &newtype); if (err) { errs++; MTestPrintErrorMsg("Int: ", err); } else { MPI_Type_size(newtype, &dsize); if (dsize != sizeof(int)) { errs++; printf("Unexpected size for int\n"); } } err = MPI_Type_match_size(MPI_TYPECLASS_INTEGER, sizeof(long), &newtype); if (err) { errs++; MTestPrintErrorMsg("Long: ", err); } else { MPI_Type_size(newtype, &dsize); if (dsize != sizeof(long)) { errs++; printf("Unexpected size for long\n"); } } #ifdef HAVE_LONG_LONG err = MPI_Type_match_size(MPI_TYPECLASS_INTEGER, sizeof(long long), &newtype); if (err) { errs++; MTestPrintErrorMsg("Long long: ", err); } else { MPI_Type_size(newtype, &dsize); if (dsize != sizeof(long long)) { errs++; printf("Unexpected size for long long\n"); } } #endif /* COMPLEX is a FORTRAN type. The MPICH Type_match_size attempts * to give a valid datatype, but if Fortran is not available, * MPI_COMPLEX and MPI_DOUBLE_COMPLEX are not supported. * Allow this case by testing for MPI_DATATYPE_NULL */ if (MPI_COMPLEX != MPI_DATATYPE_NULL) { err = MPI_Type_match_size(MPI_TYPECLASS_COMPLEX, 2 * sizeof(float), &newtype); if (err) { errs++; MTestPrintErrorMsg("Complex: ", err); } else { MPI_Type_size(newtype, &dsize); if (dsize != 2 * sizeof(float)) { errs++; printf("Unexpected size for complex\n"); } } } if (MPI_COMPLEX != MPI_DATATYPE_NULL && MPI_DOUBLE_COMPLEX != MPI_DATATYPE_NULL) { err = MPI_Type_match_size(MPI_TYPECLASS_COMPLEX, 2 * sizeof(double), &newtype); if (err) { errs++; MTestPrintErrorMsg("Double complex: ", err); } else { MPI_Type_size(newtype, &dsize); if (dsize != 2 * sizeof(double)) { errs++; printf("Unexpected size for double complex\n"); } } } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/datatype/structpack2.c0000644000175000017500000000613312620254305020607 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitest.h" #include #include /* The next is for isprint */ #include int main(int argc, char *argv[]) { struct a { int i; char c; } s[10], s1[10]; int j; int errs = 0, toterrs; int rank, size, tsize; MPI_Aint text; int blens[2]; MPI_Aint disps[2]; MPI_Datatype bases[2]; MPI_Datatype str, con; char *buffer; int bufsize, position, insize; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); for (j = 0; j < 10; j++) { s[j].i = j + rank; s[j].c = j + rank + 'a'; } blens[0] = blens[1] = 1; disps[0] = 0; disps[1] = sizeof(int); bases[0] = MPI_INT; bases[1] = MPI_CHAR; MPI_Type_struct(2, blens, disps, bases, &str); MPI_Type_commit(&str); MPI_Type_contiguous(10, str, &con); MPI_Type_commit(&con); MPI_Type_size(con, &tsize); MPI_Type_extent(con, &text); #ifdef DEBUG printf("Size of MPI array is %d, extent is %d\n", tsize, text); #endif #ifdef DEBUG { void *p1, *p2; p1 = s; p2 = &(s[10].i); /* This statement may fail on some systems */ printf("C array starts at %p and ends at %p for a length of %d\n", s, &(s[9].c), (char *) p2 - (char *) p1); } #endif MPI_Type_extent(str, &text); #ifdef DEBUG MPI_Type_size(str, &tsize); printf("Size of MPI struct is %d, extent is %d\n", tsize, (int) text); printf("Size of C struct is %d\n", sizeof(struct a)); #endif if (text != sizeof(struct a)) { printf("Extent of struct a (%d) does not match sizeof (%d)\n", (int) text, (int) sizeof(struct a)); errs++; } MPI_Pack_size(1, con, MPI_COMM_WORLD, &bufsize); buffer = (char *) malloc(bufsize); position = 0; MPI_Pack(s, 1, con, buffer, bufsize, &position, MPI_COMM_WORLD); insize = position; position = 0; MPI_Unpack(buffer, insize, &position, s1, 1, con, MPI_COMM_WORLD); for (j = 0; j < 10; j++) { #ifdef DEBUG printf("%d Sent: %d %c, Got: %d %c\n", rank, s[j].i, s[j].c, s1[j].i, s1[j].c); #endif if (s1[j].i != j + rank) { errs++; printf("Got s[%d].i = %d (%x); expected %d\n", j, s1[j].i, s1[j].i, j + rank); } if (s1[j].c != 'a' + j + rank) { errs++; /* If the character is not a printing character, * this can generate an file that diff, for example, * believes is a binary file */ if (isprint((int) (s1[j].c))) { printf("Got s[%d].c = %c; expected %c\n", j, s1[j].c, j + rank + 'a'); } else { printf("Got s[%d].c = %x; expected %c\n", j, (int) s1[j].c, j + rank + 'a'); } } } MPI_Type_free(&str); MPI_Type_free(&con); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/datatype/struct-empty-el.c0000644000175000017500000001147412620254305021424 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include #include "mpi.h" static int verbose = 0; int main(int argc, char *argv[]); int parse_args(int argc, char **argv); int single_struct_test(void); struct test_struct_1 { int a, b, c, d; }; int main(int argc, char *argv[]) { int err, errs = 0; /* Initialize MPI */ MPI_Init(&argc, &argv); parse_args(argc, argv); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); err = single_struct_test(); if (verbose && err) fprintf(stderr, "error in single_struct_test\n"); errs += err; /* print message and exit */ if (errs) { fprintf(stderr, "Found %d errors\n", errs); } else { printf(" No Errors\n"); } MPI_Finalize(); return 0; } int single_struct_test(void) { int err, errs = 0; int count, elements; int sendbuf[6] = { 1, 2, 3, 4, 5, 6 }; struct test_struct_1 ts1[2]; MPI_Datatype mystruct; MPI_Request request; MPI_Status status; /* note: first element of struct has zero blklen and should be dropped */ MPI_Aint disps[3] = { 2 * sizeof(float), 0, 2 * sizeof(int) }; int blks[3] = { 0, 1, 2 }; MPI_Datatype types[3] = { MPI_FLOAT, MPI_INT, MPI_INT }; ts1[0].a = -1; ts1[0].b = -1; ts1[0].c = -1; ts1[0].d = -1; ts1[1].a = -1; ts1[1].b = -1; ts1[1].c = -1; ts1[1].d = -1; err = MPI_Type_struct(3, blks, disps, types, &mystruct); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Type_struct returned error\n"); } } MPI_Type_commit(&mystruct); err = MPI_Irecv(ts1, 2, mystruct, 0, 0, MPI_COMM_SELF, &request); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Irecv returned error\n"); } } err = MPI_Send(sendbuf, 6, MPI_INT, 0, 0, MPI_COMM_SELF); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Send returned error\n"); } } err = MPI_Wait(&request, &status); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Wait returned error\n"); } } /* verify data */ if (ts1[0].a != 1) { errs++; if (verbose) { fprintf(stderr, "ts1[0].a = %d; should be %d\n", ts1[0].a, 1); } } if (ts1[0].b != -1) { errs++; if (verbose) { fprintf(stderr, "ts1[0].b = %d; should be %d\n", ts1[0].b, -1); } } if (ts1[0].c != 2) { errs++; if (verbose) { fprintf(stderr, "ts1[0].c = %d; should be %d\n", ts1[0].c, 2); } } if (ts1[0].d != 3) { errs++; if (verbose) { fprintf(stderr, "ts1[0].d = %d; should be %d\n", ts1[0].d, 3); } } if (ts1[1].a != 4) { errs++; if (verbose) { fprintf(stderr, "ts1[1].a = %d; should be %d\n", ts1[1].a, 4); } } if (ts1[1].b != -1) { errs++; if (verbose) { fprintf(stderr, "ts1[1].b = %d; should be %d\n", ts1[1].b, -1); } } if (ts1[1].c != 5) { errs++; if (verbose) { fprintf(stderr, "ts1[1].c = %d; should be %d\n", ts1[1].c, 5); } } if (ts1[1].d != 6) { errs++; if (verbose) { fprintf(stderr, "ts1[1].d = %d; should be %d\n", ts1[1].d, 6); } } /* verify count and elements */ err = MPI_Get_count(&status, mystruct, &count); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Get_count returned error\n"); } } if (count != 2) { errs++; if (verbose) { fprintf(stderr, "count = %d; should be 2\n", count); } } err = MPI_Get_elements(&status, mystruct, &elements); if (err != MPI_SUCCESS) { errs++; if (verbose) { fprintf(stderr, "MPI_Get_elements returned error\n"); } } if (elements != 6) { errs++; if (verbose) { fprintf(stderr, "elements = %d; should be 6\n", elements); } } MPI_Type_free(&mystruct); return errs; } int parse_args(int argc, char **argv) { /* * int ret; * * while ((ret = getopt(argc, argv, "v")) >= 0) * { * switch (ret) { * case 'v': * verbose = 1; * break; * } * } */ if (argc > 1 && strcmp(argv[1], "-v") == 0) verbose = 1; return 0; } mpi-testsuite-3.2+dfsg/datatype/simple-pack.c0000644000175000017500000001535412620254305020554 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitestconf.h" #ifdef HAVE_STRING_H #include #endif static int verbose = 0; /* tests */ int builtin_float_test(void); int vector_of_vectors_test(void); int optimizable_vector_of_basics_test(void); /* helper functions */ int parse_args(int argc, char **argv); int main(int argc, char **argv) { int err, errs = 0; MPI_Init(&argc, &argv); /* MPI-1.2 doesn't allow for MPI_Init(0,0) */ parse_args(argc, argv); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); /* perform some tests */ err = builtin_float_test(); if (err && verbose) fprintf(stderr, "%d errors in builtin float test.\n", err); errs += err; err = vector_of_vectors_test(); if (err && verbose) fprintf(stderr, "%d errors in vector of vectors test.\n", err); errs += err; err = optimizable_vector_of_basics_test(); if (err && verbose) fprintf(stderr, "%d errors in vector of basics test.\n", err); errs += err; /* print message and exit */ if (errs) { fprintf(stderr, "Found %d errors\n", errs); } else { printf(" No Errors\n"); } MPI_Finalize(); return 0; } /* builtin_float_test() * * Tests functionality of get_envelope() and get_contents() on a MPI_FLOAT. * * Returns the number of errors encountered. */ int builtin_float_test(void) { int nints, nadds, ntypes, combiner; int err, errs = 0; err = MPI_Type_get_envelope(MPI_FLOAT, &nints, &nadds, &ntypes, &combiner); if (combiner != MPI_COMBINER_NAMED) errs++; /* Note: it is erroneous to call MPI_Type_get_contents() on a basic. */ return errs; } /* vector_of_vectors_test() * * Builds a vector of a vector of ints. Assuming an int array of size 9 * integers, and treating the array as a 3x3 2D array, this will grab the * corners. * * Returns the number of errors encountered. */ int vector_of_vectors_test(void) { MPI_Datatype inner_vector; MPI_Datatype outer_vector; int array[9] = { 1, -1, 2, -2, -3, -4, 3, -5, 4 }; char *buf; int i, err, errs = 0, sizeoftype, position; /* set up type */ err = MPI_Type_vector(2, 1, 2, MPI_INT, &inner_vector); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, "error in MPI call; aborting after %d errors\n", errs + 1); return errs; } err = MPI_Type_vector(2, 1, 2, inner_vector, &outer_vector); if (err != MPI_SUCCESS) { errs++; if (verbose) fprintf(stderr, "error in MPI call; aborting after %d errors\n", errs + 1); return errs; } MPI_Type_commit(&outer_vector); MPI_Type_size(outer_vector, &sizeoftype); if (sizeoftype != 4 * sizeof(int)) { errs++; if (verbose) fprintf(stderr, "size of type = %d; should be %d\n", (int) sizeoftype, (int) (4 * sizeof(int))); return errs; } buf = (char *) malloc(sizeoftype); position = 0; err = MPI_Pack(array, 1, outer_vector, buf, sizeoftype, &position, MPI_COMM_WORLD); if (position != sizeoftype) { errs++; if (verbose) fprintf(stderr, "position = %d; should be %d (pack)\n", position, sizeoftype); } memset(array, 0, 9 * sizeof(int)); position = 0; err = MPI_Unpack(buf, sizeoftype, &position, array, 1, outer_vector, MPI_COMM_WORLD); if (position != sizeoftype) { errs++; if (verbose) fprintf(stderr, "position = %d; should be %d (unpack)\n", position, sizeoftype); } for (i = 0; i < 9; i++) { int goodval; switch (i) { case 0: goodval = 1; break; case 2: goodval = 2; break; case 6: goodval = 3; break; case 8: goodval = 4; break; default: goodval = 0; break; } if (array[i] != goodval) { errs++; if (verbose) fprintf(stderr, "array[%d] = %d; should be %d\n", i, array[i], goodval); } } MPI_Type_free(&inner_vector); MPI_Type_free(&outer_vector); return errs; } /* optimizable_vector_of_basics_test() * * Builds a vector of ints. Count is 10, blocksize is 2, stride is 2, so this * is equivalent to a contig of 20. * * Returns the number of errors encountered. */ int optimizable_vector_of_basics_test(void) { MPI_Datatype parent_type; int array[20] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 }; char *buf; int i, sizeofint, sizeoftype, position; int err, errs = 0; MPI_Type_size(MPI_INT, &sizeofint); if (sizeofint != sizeof(int)) { errs++; if (verbose) fprintf(stderr, "size of MPI_Int = %d; should be %d\n", sizeofint, (int) sizeof(int)); } /* set up type */ err = MPI_Type_vector(10, 2, 2, MPI_INT, &parent_type); MPI_Type_commit(&parent_type); MPI_Type_size(parent_type, &sizeoftype); if (sizeoftype != 20 * sizeof(int)) { errs++; if (verbose) fprintf(stderr, "size of vector = %d; should be %d\n", (int) sizeoftype, (int) (20 * sizeof(int))); } buf = (char *) malloc(sizeoftype); position = 0; err = MPI_Pack(array, 1, parent_type, buf, sizeoftype, &position, MPI_COMM_WORLD); if (position != sizeoftype) { errs++; if (verbose) fprintf(stderr, "position = %d; should be %d (pack)\n", position, sizeoftype); } memset(array, 0, 20 * sizeof(int)); position = 0; err = MPI_Unpack(buf, sizeoftype, &position, array, 1, parent_type, MPI_COMM_WORLD); if (position != sizeoftype) { errs++; if (verbose) fprintf(stderr, "position = %d; should be %d (unpack)\n", position, sizeoftype); } for (i = 0; i < 20; i++) { if (array[i] != i) { errs++; if (verbose) fprintf(stderr, "array[%d] = %d; should be %d\n", i, array[i], i); } } MPI_Type_free(&parent_type); return errs; } int parse_args(int argc, char **argv) { /* * int ret; * * while ((ret = getopt(argc, argv, "v")) >= 0) * { * switch (ret) { * case 'v': * verbose = 1; * break; * } * } */ if (argc > 1 && strcmp(argv[1], "-v") == 0) verbose = 1; return 0; } mpi-testsuite-3.2+dfsg/datatype/get-elements.c0000644000175000017500000000450512620254305020734 0ustar mbanckmbanck/* -*- Mode: c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2011 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include /* Tests MPI_Get_elements with a contiguous datatype that triggered a bug in * past versions of MPICH. See ticket #1467 for more info. */ struct test_struct { char a; short b; int c; }; int main(int argc, char **argv) { int rank, count; struct test_struct sendbuf, recvbuf; int blens[3]; MPI_Aint displs[3]; MPI_Datatype types[3]; MPI_Datatype struct_type, contig; MPI_Status status; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); /* We use a contig of a struct in order to satisfy two properties: * (A) a type that contains more than one element type (the struct portion) * (B) a type that has an odd number of ints in its "type contents" (1 in * this case) * This triggers a specific bug in some versions of MPICH. */ blens[0] = 1; displs[0] = offsetof(struct test_struct, a); types[0] = MPI_CHAR; blens[1] = 1; displs[1] = offsetof(struct test_struct, b); types[1] = MPI_SHORT; blens[2] = 1; displs[2] = offsetof(struct test_struct, c); types[2] = MPI_INT; MPI_Type_create_struct(3, blens, displs, types, &struct_type); MPI_Type_contiguous(1, struct_type, &contig); MPI_Type_commit(&struct_type); MPI_Type_commit(&contig); sendbuf.a = 20; sendbuf.b = 30; sendbuf.c = 40; recvbuf.a = -1; recvbuf.b = -1; recvbuf.c = -1; /* send to ourself */ MPI_Sendrecv(&sendbuf, 1, contig, 0, 0, &recvbuf, 1, contig, 0, 0, MPI_COMM_SELF, &status); /* sanity */ assert(sendbuf.a == recvbuf.a); assert(sendbuf.b == recvbuf.b); assert(sendbuf.c == recvbuf.c); /* now check that MPI_Get_elements returns the correct answer and that the * library doesn't explode in the process */ count = 0xdeadbeef; MPI_Get_elements(&status, contig, &count); MPI_Type_free(&struct_type); MPI_Type_free(&contig); if (count != 3) { printf("unexpected value for count, expected 3, got %d\n", count); } else { if (rank == 0) { printf(" No Errors\n"); } } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/datatype/sendrecvt2.c0000644000175000017500000000715112620254305020422 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitest.h" #include #include #include "dtypes.h" /* This program is derived from one in the MPICH-1 test suite. It tests a wide variety of basic and derived datatypes. */ int main(int argc, char **argv) { MPI_Datatype *types; void **inbufs, **outbufs; int *counts, *bytesize, ntype; MPI_Comm comm; int ncomm = 20, rank, np, partner, tag, count; int i, j, k, err, toterr, world_rank, errloc; MPI_Status status; char *obuf; char myname[MPI_MAX_OBJECT_NAME]; int mynamelen; MTest_Init(&argc, &argv); /* * Check for -basiconly to select only the simple datatypes */ for (i = 1; i < argc; i++) { if (!argv[i]) break; if (strcmp(argv[i], "-basiconly") == 0) { MTestDatatype2BasicOnly(); } } MTestDatatype2Allocate(&types, &inbufs, &outbufs, &counts, &bytesize, &ntype); MTestDatatype2Generate(types, inbufs, outbufs, counts, bytesize, &ntype); MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); /* Test over a wide range of datatypes and communicators */ err = 0; tag = 0; while (MTestGetIntracomm(&comm, 2)) { if (comm == MPI_COMM_NULL) continue; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &np); if (np < 2) continue; if (world_rank == 0) MTestPrintfMsg(10, "Testing communicator number %s\n", MTestGetIntracommName()); tag++; for (j = 0; j < ntype; j++) { MPI_Type_get_name(types[j], myname, &mynamelen); if (world_rank == 0) MTestPrintfMsg(10, "Testing type %s\n", myname); if (rank == 0) { partner = np - 1; MPI_Send(inbufs[j], counts[j], types[j], partner, tag, comm); } else if (rank == np - 1) { partner = 0; obuf = outbufs[j]; for (k = 0; k < bytesize[j]; k++) obuf[k] = 0; MPI_Recv(outbufs[j], counts[j], types[j], partner, tag, comm, &status); /* Test correct */ MPI_Get_count(&status, types[j], &count); if (count != counts[j]) { fprintf(stderr, "Error in counts (got %d expected %d) with type %s\n", count, counts[j], myname); err++; } if (status.MPI_SOURCE != partner) { fprintf(stderr, "Error in source (got %d expected %d) with type %s\n", status.MPI_SOURCE, partner, myname); err++; } if ((errloc = MTestDatatype2Check(inbufs[j], outbufs[j], bytesize[j]))) { char *p1, *p2; fprintf(stderr, "Error in data with type %s (type %d on %d) at byte %d\n", myname, j, world_rank, errloc - 1); p1 = (char *) inbufs[j]; p2 = (char *) outbufs[j]; fprintf(stderr, "Got %x expected %x\n", p1[errloc - 1], p2[errloc - 1]); err++; } } } MTestFreeComm(&comm); } MTestDatatype2Free(types, inbufs, outbufs, counts, bytesize, ntype); MTest_Finalize(err); MPI_Finalize(); return MTestReturnValue(err); } mpi-testsuite-3.2+dfsg/datatype/large_type_sendrec.c0000644000175000017500000001174712620254305022207 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2013 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include /* Defines INT32_MAX, which is not appropriate for int types. */ #include /* Defines INT_MAX */ #include #include #include static void verbose_abort(int errorcode) { int rank; char errorstring[MPI_MAX_ERROR_STRING]; int errorclass; int resultlen; /* We do not check error codes here * because if MPI is in a really sorry state, * all of them might fail. */ MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Error_class(errorcode, &errorclass); MPI_Error_string(errorcode, errorstring, &resultlen); memset(errorstring, 0, MPI_MAX_ERROR_STRING); /* optional */ fprintf(stderr, "%d: MPI failed (%d: %s) \n", rank, errorclass, errorstring); fflush(stderr); /* almost certainly redundant with the following... */ MPI_Abort(MPI_COMM_WORLD, errorclass); return; } #define MPI_ASSERT(rc) \ do { if ((rc)!=MPI_SUCCESS) verbose_abort(rc); } while (0) int Type_contiguous_x(MPI_Count count, MPI_Datatype oldtype, MPI_Datatype * newtype); #define BIGMPI_MAX INT_MAX /* * Synopsis * * int Type_contiguous_x(MPI_Count count, * MPI_Datatype oldtype, * MPI_Datatype * newtype) * * Input Parameters * * count replication count (nonnegative integer) * oldtype old datatype (handle) * * Output Parameter * * newtype new datatype (handle) * */ int Type_contiguous_x(MPI_Count count, MPI_Datatype oldtype, MPI_Datatype * newtype) { MPI_Count c = count / BIGMPI_MAX; MPI_Count r = count % BIGMPI_MAX; MPI_Datatype chunk; MPI_Datatype chunks; MPI_Datatype remainder; int typesize; MPI_ASSERT(MPI_Type_contiguous(BIGMPI_MAX, oldtype, &chunk)); MPI_ASSERT(MPI_Type_contiguous(c, chunk, &chunks)); MPI_ASSERT(MPI_Type_contiguous(r, oldtype, &remainder)); MPI_ASSERT(MPI_Type_size(oldtype, &typesize)); { MPI_Aint remdisp = (MPI_Aint) c * BIGMPI_MAX * typesize; /* must explicit-cast to avoid overflow */ int array_of_blocklengths[2] = { 1, 1 }; MPI_Aint array_of_displacements[2] = { 0, remdisp }; MPI_Datatype array_of_types[2] = { chunks, remainder }; MPI_ASSERT(MPI_Type_create_struct (2, array_of_blocklengths, array_of_displacements, array_of_types, newtype)); MPI_ASSERT(MPI_Type_commit(newtype)); } MPI_ASSERT(MPI_Type_free(&chunk)); MPI_ASSERT(MPI_Type_free(&chunks)); MPI_ASSERT(MPI_Type_free(&remainder)); return MPI_SUCCESS; } int main(int argc, char *argv[]) { int provided; size_t i; int rank, size; int logn = (argc > 1) ? atoi(argv[1]) : 32; size_t count = (size_t) 1 << logn; /* explicit cast required */ MPI_Datatype bigtype; MPI_Request requests[2]; MPI_Status statuses[2]; MPI_Count ocount; char *rbuf = NULL; char *sbuf = NULL; MPI_ASSERT(MPI_Init_thread(&argc, &argv, MPI_THREAD_SINGLE, &provided)); MPI_ASSERT(MPI_Comm_rank(MPI_COMM_WORLD, &rank)); MPI_ASSERT(MPI_Comm_size(MPI_COMM_WORLD, &size)); MPI_ASSERT(Type_contiguous_x((MPI_Count) count, MPI_CHAR, &bigtype)); MPI_ASSERT(MPI_Type_commit(&bigtype)); if (rank == (size - 1)) { rbuf = malloc(count * sizeof(char)); assert(rbuf != NULL); for (i = 0; i < count; i++) rbuf[i] = 'a'; MPI_ASSERT(MPI_Irecv(rbuf, 1, bigtype, 0, 0, MPI_COMM_WORLD, &(requests[1]))); } if (rank == 0) { sbuf = malloc(count * sizeof(char)); assert(sbuf != NULL); for (i = 0; i < count; i++) sbuf[i] = 'z'; MPI_ASSERT(MPI_Isend(sbuf, 1, bigtype, size - 1, 0, MPI_COMM_WORLD, &(requests[0]))); } if (size == 1) { MPI_ASSERT(MPI_Waitall(2, requests, statuses)); MPI_ASSERT(MPI_Get_elements_x(&(statuses[1]), MPI_CHAR, &ocount)); } else { if (rank == (size - 1)) { MPI_ASSERT(MPI_Wait(&(requests[1]), &(statuses[1]))); MPI_ASSERT(MPI_Get_elements_x(&(statuses[1]), MPI_CHAR, &ocount)); } else if (rank == 0) { MPI_ASSERT(MPI_Wait(&(requests[0]), &(statuses[0]))); /* No valid fields in status from a send request (MPI-3 p53, * line 1-5) */ } } /* correctness check */ if (rank == (size - 1)) { MPI_Count j, errors = 0; for (j = 0; j < count; j++) errors += (rbuf[j] != 'z'); if (count != ocount) ++errors; if (errors == 0) { printf(" No Errors\n"); } else { printf("errors = %lld \n", errors); } } if (rbuf) free(rbuf); if (sbuf) free(sbuf); MPI_ASSERT(MPI_Type_free(&bigtype)); MPI_ASSERT(MPI_Finalize()); return 0; } mpi-testsuite-3.2+dfsg/datatype/zeroparms.c0000644000175000017500000000142212620254305020360 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include int main(int argc, char *argv[]) { MPI_Datatype newtype; int b[1], d[1]; MPI_Init(0, 0); /* create a legitimate type to see that we don't * emit spurious errors. */ MPI_Type_hvector(0, 1, 10, MPI_DOUBLE, &newtype); MPI_Type_commit(&newtype); MPI_Type_free(&newtype); MPI_Type_indexed(0, b, d, MPI_DOUBLE, &newtype); MPI_Type_commit(&newtype); MPI_Sendrecv(b, 1, newtype, 0, 0, d, 0, newtype, 0, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); printf(" No Errors\n"); MPI_Type_free(&newtype); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/Makefile.in0000644000175000017500000007530612621010232016426 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(noinst_HEADERS) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = maint/testmerge runtests checktests testlist CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(nodist_noinst_HEADERS) $(noinst_HEADERS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags CSCOPE = cscope am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/checktests.in \ $(srcdir)/runtests.in $(srcdir)/testlist.in \ $(top_srcdir)/Makefile.mtest $(top_srcdir)/confdb/ar-lib \ $(top_srcdir)/confdb/compile $(top_srcdir)/confdb/config.guess \ $(top_srcdir)/confdb/config.sub \ $(top_srcdir)/confdb/install-sh $(top_srcdir)/confdb/missing \ $(top_srcdir)/include/mpitestconf.h.in \ $(top_srcdir)/maint/testmerge.in README confdb/ar-lib \ confdb/compile confdb/config.guess confdb/config.rpath \ confdb/config.sub confdb/install-sh confdb/missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best DIST_TARGETS = dist-gzip distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml # mix in the "make testing" rule and other boilerplate ACLOCAL_AMFLAGS = -I confdb static_subdirs = util attr basic datatype coll comm errhan group info init \ pt2pt rma topo errors manual perf mpi_t impls ckpoint ft all_lang_subdirs = f77 cxx f90 f08 # DIST_SUBDIRS must be a superset of SUBDIRS, and automake must be able to # *statically* compute its contents. The good news is that we can mostly avoid # duplication because automake is able to "see" into simple variable # assignments that are not driven by a configure @-substitution variable. DIST_SUBDIRS = $(static_subdirs) io $(all_lang_subdirs) threads spawn . SUBDIRS = $(static_subdirs) $(iodir) $(otherlangs) $(threadsdir) $(spawndir) $(ckpointdir) $(ftdir) . EXTRA_DIST = maint/common.defn maint/f77tof90.in maint/testmerge.in maint/updatefiles testlist.in DISTCLEANFILES = config.system noinst_HEADERS = include/mpitest.h include/mpitestcxx.h include/mpithreadtest.h include/dtypes.h rma/squelch.h errors/rma/win_sync.h nodist_noinst_HEADERS = include/mpitestconf.h all: all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): include/mpitestconf.h: include/stamp-h1 @test -f $@ || rm -f include/stamp-h1 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) include/stamp-h1 include/stamp-h1: $(top_srcdir)/include/mpitestconf.h.in $(top_builddir)/config.status @rm -f include/stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status include/mpitestconf.h $(top_srcdir)/include/mpitestconf.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f include/stamp-h1 touch $@ distclean-hdr: -rm -f include/mpitestconf.h include/stamp-h1 maint/testmerge: $(top_builddir)/config.status $(top_srcdir)/maint/testmerge.in cd $(top_builddir) && $(SHELL) ./config.status $@ runtests: $(top_builddir)/config.status $(srcdir)/runtests.in cd $(top_builddir) && $(SHELL) ./config.status $@ checktests: $(top_builddir)/config.status $(srcdir)/checktests.in cd $(top_builddir) && $(SHELL) ./config.status $@ testlist: $(top_builddir)/config.status $(srcdir)/testlist.in cd $(top_builddir) && $(SHELL) ./config.status $@ # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build/sub \ && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(HEADERS) installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am clean clean-cscope clean-generic \ cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ dist-gzip dist-hook dist-lzip dist-shar dist-tarZ dist-xz \ dist-zip distcheck distclean distclean-generic distclean-hdr \ distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Need to patch some things up: # Make sure to disable rebuilding the autotools related files - the # receiver of this distribution may not have the necessary tools and # should not need them. Finally, the distributed configure must disable # maintainer targets by default - otherwise, the unsuspecting user will # see automake et al attempt to rebuild the autotools, which is likely to # fail unless the user has the correct versions of all of the tools dist-hook: cd $(distdir) && \ sed -e 's/AM_MAINTAINER_MODE.*/AM_MAINTAINER_MODE([disable])/' \ configure.ac > conftmp.ac && mv conftmp.ac configure.ac cd $(distdir) && $(AUTOMAKE) --add-missing cd $(distdir) && $(AUTOMAKE) --foreign cd $(distdir) && $(ACLOCAL) -Iconfdb cd $(distdir) && $(AUTOCONF) -Iconfdb cd $(distdir) && $(AUTOHEADER) -Iconfdb # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f77/0000755000175000017500000000000012621010234014753 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f77/init/0000755000175000017500000000000012621010234015716 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f77/init/testlist0000644000175000017500000000001312620254305017516 0ustar mbanckmbanckbaseenvf 1 mpi-testsuite-3.2+dfsg/f77/init/Makefile.in0000644000175000017500000005055412621010234017774 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = baseenvf$(EXEEXT) EXTRA_PROGRAMS = checksizes$(EXEEXT) subdir = f77/init ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) baseenvf_SOURCES = baseenvf.f baseenvf_OBJECTS = baseenvf.$(OBJEXT) baseenvf_LDADD = $(LDADD) baseenvf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o nodist_checksizes_OBJECTS = checksizes.$(OBJEXT) checksizes_OBJECTS = $(nodist_checksizes_OBJECTS) checksizes_DEPENDENCIES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = F77COMPILE = $(F77) $(AM_FFLAGS) $(FFLAGS) AM_V_F77 = $(am__v_F77_@AM_V@) am__v_F77_ = $(am__v_F77_@AM_DEFAULT_V@) am__v_F77_0 = @echo " F77 " $@; am__v_F77_1 = F77LD = $(F77) F77LINK = $(F77LD) $(AM_FFLAGS) $(FFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_F77LD = $(am__v_F77LD_@AM_V@) am__v_F77LD_ = $(am__v_F77LD_@AM_DEFAULT_V@) am__v_F77LD_0 = @echo " F77LD " $@; am__v_F77LD_1 = SOURCES = baseenvf.f $(nodist_checksizes_SOURCES) DIST_SOURCES = baseenvf.f am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_f77.mtest $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F77 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. LDADD = $(top_builddir)/f77/util/mtestf.o CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f" lines AM_DEFAULT_SOURCE_EXT = .f # Checksizes is created by configure, and is a C program that tests that # configure has correctly computed the sizes of MPI_Aint and MPI_Offset # for Fortran. This is not run by default but can be used to check # that configure found the correct values. checksizes_LDADD = nodist_checksizes_SOURCES = checksizes.c DISTCLEANFILES = checksizes.c all: all-am .SUFFIXES: .SUFFIXES: .c .f .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f77.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f77/init/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f77/init/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f77.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) baseenvf$(EXEEXT): $(baseenvf_OBJECTS) $(baseenvf_DEPENDENCIES) $(EXTRA_baseenvf_DEPENDENCIES) @rm -f baseenvf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(baseenvf_OBJECTS) $(baseenvf_LDADD) $(LIBS) checksizes$(EXEEXT): $(checksizes_OBJECTS) $(checksizes_DEPENDENCIES) $(EXTRA_checksizes_DEPENDENCIES) @rm -f checksizes$(EXEEXT) $(AM_V_CCLD)$(LINK) $(checksizes_OBJECTS) $(checksizes_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/checksizes.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .f.o: $(AM_V_F77)$(F77COMPILE) -c -o $@ $< .f.obj: $(AM_V_F77)$(F77COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f77/util/mtestf.o: $(top_srcdir)/f77/util/mtestf.f (cd $(top_builddir)/f77/util && $(MAKE) mtestf.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f77/init/Makefile.am0000644000175000017500000000127312620254305017765 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f77.mtest EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f" lines AM_DEFAULT_SOURCE_EXT = .f noinst_PROGRAMS = baseenvf EXTRA_PROGRAMS = checksizes # Checksizes is created by configure, and is a C program that tests that # configure has correctly computed the sizes of MPI_Aint and MPI_Offset # for Fortran. This is not run by default but can be used to check # that configure found the correct values. checksizes_LDADD = nodist_checksizes_SOURCES = checksizes.c DISTCLEANFILES = checksizes.c mpi-testsuite-3.2+dfsg/f77/init/baseenvf.f0000644000175000017500000000530712620254305017673 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer ierr, provided, errs, rank, size integer iv, isubv, qprovided logical flag errs = 0 flag = .true. call mpi_finalized( flag, ierr ) if (flag) then errs = errs + 1 print *, 'Returned true for finalized before init' endif flag = .true. call mpi_initialized( flag, ierr ) if (flag) then errs = errs + 1 print *, 'Return true for initialized before init' endif provided = -1 call mpi_init_thread( MPI_THREAD_MULTIPLE, provided, ierr ) if (provided .ne. MPI_THREAD_MULTIPLE .and. & provided .ne. MPI_THREAD_SERIALIZED .and. & provided .ne. MPI_THREAD_FUNNELED .and. & provided .ne. MPI_THREAD_SINGLE) then errs = errs + 1 print *, ' Unrecognized value for provided = ', provided endif iv = -1 isubv = -1 call mpi_get_version( iv, isubv, ierr ) if (iv .ne. MPI_VERSION .or. isubv .ne. MPI_SUBVERSION) then errs = errs + 1 print *, 'Version in mpif.h and get_version do not agree' print *, 'Version in mpif.h is ', MPI_VERSION, '.', & MPI_SUBVERSION print *, 'Version in get_version is ', iv, '.', isubv endif if (iv .lt. 1 .or. iv .gt. 3) then errs = errs + 1 print *, 'Version of MPI is invalid (=', iv, ')' endif if (isubv.lt.0 .or. isubv.gt.2) then errs = errs + 1 print *, 'Subversion of MPI is invalid (=', isubv, ')' endif call mpi_comm_rank( MPI_COMM_WORLD, rank, ierr ) call mpi_comm_size( MPI_COMM_WORLD, size, ierr ) flag = .false. call mpi_is_thread_main( flag, ierr ) if (.not.flag) then errs = errs + 1 print *, 'is_thread_main returned false for main thread' endif call mpi_query_thread( qprovided, ierr ) if (qprovided .ne. provided) then errs = errs + 1 print *,'query thread and init thread disagree on'// & ' thread level' endif call mpi_finalize( ierr ) flag = .false. call mpi_finalized( flag, ierr ) if (.not. flag) then errs = errs + 1 print *, 'finalized returned false after finalize' endif if (rank .eq. 0) then if (errs .eq. 0) then print *, ' No Errors' else print *, ' Found ', errs, ' errors' endif endif end mpi-testsuite-3.2+dfsg/f77/info/0000755000175000017500000000000012621010234015706 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f77/info/infotestf.f0000644000175000017500000000302312620254305020064 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C C Simple info test program main implicit none include 'mpif.h' integer i1, i2 integer i, errs, ierr integer valuelen parameter (valuelen=64) character*(valuelen) value logical flag C errs = 0 call MTest_Init( ierr ) call mpi_info_create( i1, ierr ) call mpi_info_create( i2, ierr ) call mpi_info_set( i1, "key1", "value1", ierr ) call mpi_info_set( i2, "key2", "value2", ierr ) call mpi_info_get( i1, "key2", valuelen, value, flag, ierr ) if (flag) then print *, "Found key2 in info1" errs = errs + 1 endif call MPI_Info_get( i1, "key1", 64, value, flag, ierr ) if (.not. flag ) then print *, "Did not find key1 in info1" errs = errs + 1 else if (value .ne. "value1") then print *, "Found wrong value (", value, "), expected value1" errs = errs + 1 else C check for trailing blanks do i=7,valuelen if (value(i:i) .ne. " ") then print *, "Found non blank in info value" errs = errs + 1 endif enddo endif endif call mpi_info_free( i1, ierr ) call mpi_info_free( i2, ierr ) call MTest_Finalize( errs ) call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/info/infotest2f.f0000644000175000017500000001135612620254305020156 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer ierr, errs integer i1, i2 integer nkeys, i, j, sumindex, vlen, ln, valuelen logical found, flag character*(MPI_MAX_INFO_KEY) keys(6) character*(MPI_MAX_INFO_VAL) values(6) character*(MPI_MAX_INFO_KEY) mykey character*(MPI_MAX_INFO_VAL) myvalue C data keys/"Key1", "key2", "KeY3", "A Key With Blanks","See Below", & "last"/ data values/"value 1", "value 2", "VaLue 3", "key=valu:3","false", & "no test"/ C errs = 0 call mtest_init( ierr ) C Note that the MPI standard requires that leading an trailing blanks C are stripped from keys and values (Section 4.10, The Info Object) C C First, create and initialize an info call mpi_info_create( i1, ierr ) call mpi_info_set( i1, keys(1), values(1), ierr ) call mpi_info_set( i1, keys(2), values(2), ierr ) call mpi_info_set( i1, keys(3), values(3), ierr ) call mpi_info_set( i1, keys(4), values(4), ierr ) call mpi_info_set( i1, " See Below", values(5), ierr ) call mpi_info_set( i1, keys(6), " no test ", ierr ) C call mpi_info_get_nkeys( i1, nkeys, ierr ) if (nkeys .ne. 6) then print *, ' Number of keys should be 6, is ', nkeys endif sumindex = 0 do i=1, nkeys C keys are number from 0 to n-1, even in Fortran (Section 4.10) call mpi_info_get_nthkey( i1, i-1, mykey, ierr ) found = .false. do j=1, 6 if (mykey .eq. keys(j)) then found = .true. sumindex = sumindex + j call mpi_info_get_valuelen( i1, mykey, vlen, flag, ierr ) if (.not.flag) then errs = errs + 1 print *, ' no value for key', mykey else call mpi_info_get( i1, mykey, MPI_MAX_INFO_VAL, & myvalue, flag, ierr ) if (myvalue .ne. values(j)) then errs = errs + 1 print *, ' Value for ', mykey, ' not expected' else do ln=MPI_MAX_INFO_VAL,1,-1 if (myvalue(ln:ln) .ne. ' ') then if (vlen .ne. ln) then errs = errs + 1 print *, ' length is ', ln, & ' but valuelen gave ', vlen, & ' for key ', mykey endif goto 100 endif enddo 100 continue endif endif endif enddo if (.not.found) then print *, i, 'th key ', mykey, ' not in list' endif enddo if (sumindex .ne. 21) then errs = errs + 1 print *, ' Not all keys found' endif C C delete 2, then dup, then delete 2 more call mpi_info_delete( i1, keys(1), ierr ) call mpi_info_delete( i1, keys(2), ierr ) call mpi_info_dup( i1, i2, ierr ) call mpi_info_delete( i1, keys(3), ierr ) C C check the contents of i2 C valuelen does not signal an error for unknown keys; instead, sets C flag to false do i=1,2 flag = .true. call mpi_info_get_valuelen( i2, keys(i), valuelen, flag, ierr ) if (flag) then errs = errs + 1 print *, ' Found unexpected key ', keys(i) endif myvalue = 'A test' call mpi_info_get( i2, keys(i), MPI_MAX_INFO_VAL, & myvalue, flag, ierr ) if (flag) then errs = errs + 1 print *, ' Found unexpected key in MPI_Info_get ', keys(i) else if (myvalue .ne. 'A test') then errs = errs + 1 print *, ' Returned value overwritten, is now ', myvalue endif endif enddo do i=3,6 myvalue = ' ' call mpi_info_get( i2, keys(i), MPI_MAX_INFO_VAL, & myvalue, flag, ierr ) if (.not. flag) then errs = errs + 1 print *, ' Did not find key ', keys(i) else if (myvalue .ne. values(i)) then errs = errs + 1 print *, ' Found wrong value (', myvalue, ') for key ', & keys(i) endif endif enddo C C Free info call mpi_info_free( i1, ierr ) call mpi_info_free( i2, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/info/testlist0000644000175000017500000000003112620254305017506 0ustar mbanckmbanckinfotestf 1 infotest2f 1 mpi-testsuite-3.2+dfsg/f77/info/Makefile.in0000644000175000017500000004452712621010234017767 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = infotestf$(EXEEXT) infotest2f$(EXEEXT) subdir = f77/info ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) infotest2f_SOURCES = infotest2f.f infotest2f_OBJECTS = infotest2f.$(OBJEXT) infotest2f_LDADD = $(LDADD) infotest2f_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o infotestf_SOURCES = infotestf.f infotestf_OBJECTS = infotestf.$(OBJEXT) infotestf_LDADD = $(LDADD) infotestf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include F77COMPILE = $(F77) $(AM_FFLAGS) $(FFLAGS) AM_V_F77 = $(am__v_F77_@AM_V@) am__v_F77_ = $(am__v_F77_@AM_DEFAULT_V@) am__v_F77_0 = @echo " F77 " $@; am__v_F77_1 = F77LD = $(F77) F77LINK = $(F77LD) $(AM_FFLAGS) $(FFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_F77LD = $(am__v_F77LD_@AM_V@) am__v_F77LD_ = $(am__v_F77LD_@AM_DEFAULT_V@) am__v_F77LD_0 = @echo " F77LD " $@; am__v_F77LD_1 = SOURCES = infotest2f.f infotestf.f DIST_SOURCES = infotest2f.f infotestf.f am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_f77.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F77 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. LDADD = $(top_builddir)/f77/util/mtestf.o CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f" lines AM_DEFAULT_SOURCE_EXT = .f all: all-am .SUFFIXES: .SUFFIXES: .f .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f77.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f77/info/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f77/info/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f77.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) infotest2f$(EXEEXT): $(infotest2f_OBJECTS) $(infotest2f_DEPENDENCIES) $(EXTRA_infotest2f_DEPENDENCIES) @rm -f infotest2f$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(infotest2f_OBJECTS) $(infotest2f_LDADD) $(LIBS) infotestf$(EXEEXT): $(infotestf_OBJECTS) $(infotestf_DEPENDENCIES) $(EXTRA_infotestf_DEPENDENCIES) @rm -f infotestf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(infotestf_OBJECTS) $(infotestf_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .f.o: $(AM_V_F77)$(F77COMPILE) -c -o $@ $< .f.obj: $(AM_V_F77)$(F77COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f77/util/mtestf.o: $(top_srcdir)/f77/util/mtestf.f (cd $(top_builddir)/f77/util && $(MAKE) mtestf.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f77/info/Makefile.am0000644000175000017500000000051512620254305017753 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f77.mtest EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f" lines AM_DEFAULT_SOURCE_EXT = .f noinst_PROGRAMS = infotestf infotest2f mpi-testsuite-3.2+dfsg/f77/datatype/0000755000175000017500000000000012621010234016566 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f77/datatype/hindex1f.f0000644000175000017500000000314612620254305020457 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C C (C) 2011 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer errs, ierr, intsize integer i, displs(10), counts(10), dtype integer bufsize parameter (bufsize=100) integer inbuf(bufsize), outbuf(bufsize), packbuf(bufsize) integer position, len, psize C C Test for hindexed; C errs = 0 call mtest_init( ierr ) call mpi_type_size( MPI_INTEGER, intsize, ierr ) do i=1, 10 displs(i) = (10-i)*intsize counts(i) = 1 enddo call mpi_type_hindexed( 10, counts, displs, MPI_INTEGER, dtype, & ierr ) call mpi_type_commit( dtype, ierr ) C call mpi_pack_size( 1, dtype, MPI_COMM_WORLD, psize, ierr ) if (psize .gt. bufsize*intsize) then errs = errs + 1 else do i=1,10 inbuf(i) = i outbuf(i) = -i enddo position = 0 call mpi_pack( inbuf, 1, dtype, packbuf, psize, position, $ MPI_COMM_WORLD, ierr ) C len = position position = 0 call mpi_unpack( packbuf, len, position, outbuf, 10, $ MPI_INTEGER, MPI_COMM_WORLD, ierr ) C do i=1, 10 if (outbuf(i) .ne. 11-i) then errs = errs + 1 print *, 'outbuf(',i,')=',outbuf(i),', expected ', 10-i endif enddo endif C call mpi_type_free( dtype, ierr ) C call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/datatype/typesubf.f0000644000175000017500000000416512620254305020614 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer errs, ierr integer maxn, maxm parameter (maxn=10,maxm=15) integer fullsizes(2), subsizes(2), starts(2) integer fullarr(maxn,maxm),subarr(maxn-3,maxm-4) integer i,j, ssize integer newtype, size, rank, ans errs = 0 call mtest_init( ierr ) call mpi_comm_size( MPI_COMM_WORLD, size, ierr ) call mpi_comm_rank( MPI_COMM_WORLD, rank, ierr ) C C Create a Fortran-style subarray fullsizes(1) = maxn fullsizes(2) = maxm subsizes(1) = maxn - 3 subsizes(2) = maxm - 4 C starts are from zero, even in Fortran starts(1) = 1 starts(2) = 2 C In Fortran 90 notation, the original array is C integer a(maxn,maxm) C and the subarray is C a(1+1:(maxn-3) +(1+1)-1,2+1:(maxm-4)+(2+1)-1) C i.e., a (start:(len + start - 1),...) call mpi_type_create_subarray( 2, fullsizes, subsizes, starts, & MPI_ORDER_FORTRAN, MPI_INTEGER, newtype, ierr ) call mpi_type_commit( newtype, ierr ) C C Prefill the array do j=1, maxm do i=1, maxn fullarr(i,j) = (i-1) + (j-1) * maxn enddo enddo do j=1, subsizes(2) do i=1, subsizes(1) subarr(i,j) = -1 enddo enddo ssize = subsizes(1)*subsizes(2) call mpi_sendrecv( fullarr, 1, newtype, rank, 0, & subarr, ssize, MPI_INTEGER, rank, 0, & MPI_COMM_WORLD, MPI_STATUS_IGNORE, ierr ) C C Check the data do j=1, subsizes(2) do i=1, subsizes(1) ans = (i+starts(1)-1) + (j+starts(2)-1) * maxn if (subarr(i,j) .ne. ans) then errs = errs + 1 if (errs .le. 10) then print *, rank, 'subarr(',i,',',j,') = ', subarr(i,j) endif endif enddo enddo call mpi_type_free( newtype, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/datatype/bottomc.c0000644000175000017500000000421312620254305020411 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include "mpi.h" #include "../../include/mpitestconf.h" /* Name mapping. All routines are created with names that are lower case with a single trailing underscore. This matches many compilers. We use #define to change the name for Fortran compilers that do not use the lowercase/underscore pattern */ #ifdef F77_NAME_UPPER #define c_routine_ C_ROUTINE #elif defined(F77_NAME_LOWER) || defined(F77_NAME_MIXED) /* Mixed is ok because we use lowercase in all uses */ #define c_routine_ c_routine #elif defined(F77_NAME_LOWER_2USCORE) || defined(F77_NAME_LOWER_USCORE) || \ defined(F77_NAME_MIXED_USCORE) /* Else leave name alone (routines have no underscore, so both of these map to a lowercase, single underscore) */ #else #error 'Unrecognized Fortran name mapping' #endif void c_routine_(MPI_Fint * ftype, int *errs) { int count = 5; int lens[2] = { 1, 1 }; int buf[6]; int i, rank; MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Aint displs[2]; MPI_Datatype types[2], newtype; /* create an absolute datatype for buffer that consists */ /* of count, followed by R(5) */ MPI_Get_address(&count, &displs[0]); displs[1] = 0; types[0] = MPI_INT; types[1] = MPI_Type_f2c(*ftype); MPI_Type_create_struct(2, lens, displs, types, &newtype); MPI_Type_commit(&newtype); if (rank == 0) { /* the message sent contains an int count of 5, followed * by the 5 MPI_INTEGER entries of the Fortran array R. * Here we assume MPI_INTEGER has the same size as MPI_INT */ assert(sizeof(MPI_Fint) == sizeof(int)); MPI_Send(MPI_BOTTOM, 1, newtype, 1, 0, MPI_COMM_WORLD); } else { MPI_Recv(buf, 6, MPI_INT, 0, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); if (buf[0] != 5) *errs++; for (i = 1; i < 6; i++) if (buf[i] != i) *errs++; } MPI_Type_free(&newtype); } mpi-testsuite-3.2+dfsg/f77/datatype/testlist0000644000175000017500000000025512620254305020376 0ustar mbanckmbancktypenamef 1 typename3f 1 mpiversion=3.0 typesnamef 1 typecntsf 1 typem2f 1 typesubf 1 packef 1 gaddressf 1 allctypesf 1 hindex1f 1 hindexed_blockf 1 mpiversion=3.0 bottom 2 mpi-testsuite-3.2+dfsg/f77/datatype/Makefile.in0000644000175000017500000006053112621010234020640 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = typenamef$(EXEEXT) typesnamef$(EXEEXT) \ typecntsf$(EXEEXT) typesubf$(EXEEXT) typem2f$(EXEEXT) \ gaddressf$(EXEEXT) packef$(EXEEXT) allctypesf$(EXEEXT) \ hindex1f$(EXEEXT) hindexed_blockf$(EXEEXT) typename3f$(EXEEXT) \ bottom$(EXEEXT) subdir = f77/datatype ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = typeaints.h CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) allctypesf_SOURCES = allctypesf.f allctypesf_OBJECTS = allctypesf.$(OBJEXT) allctypesf_LDADD = $(LDADD) allctypesf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o am_bottom_OBJECTS = bottomc.$(OBJEXT) bottomf.$(OBJEXT) bottom_OBJECTS = $(am_bottom_OBJECTS) bottom_LDADD = $(LDADD) bottom_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o gaddressf_SOURCES = gaddressf.f gaddressf_OBJECTS = gaddressf.$(OBJEXT) gaddressf_LDADD = $(LDADD) gaddressf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o hindex1f_SOURCES = hindex1f.f hindex1f_OBJECTS = hindex1f.$(OBJEXT) hindex1f_LDADD = $(LDADD) hindex1f_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o hindexed_blockf_SOURCES = hindexed_blockf.f hindexed_blockf_OBJECTS = hindexed_blockf.$(OBJEXT) hindexed_blockf_LDADD = $(LDADD) hindexed_blockf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o packef_SOURCES = packef.f packef_OBJECTS = packef.$(OBJEXT) packef_LDADD = $(LDADD) packef_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o typecntsf_SOURCES = typecntsf.f typecntsf_OBJECTS = typecntsf.$(OBJEXT) typecntsf_LDADD = $(LDADD) typecntsf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o typem2f_SOURCES = typem2f.f typem2f_OBJECTS = typem2f.$(OBJEXT) typem2f_LDADD = $(LDADD) typem2f_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o typename3f_SOURCES = typename3f.f typename3f_OBJECTS = typename3f.$(OBJEXT) typename3f_LDADD = $(LDADD) typename3f_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o typenamef_SOURCES = typenamef.f typenamef_OBJECTS = typenamef.$(OBJEXT) typenamef_LDADD = $(LDADD) typenamef_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o typesnamef_SOURCES = typesnamef.f typesnamef_OBJECTS = typesnamef.$(OBJEXT) typesnamef_LDADD = $(LDADD) typesnamef_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o typesubf_SOURCES = typesubf.f typesubf_OBJECTS = typesubf.$(OBJEXT) typesubf_LDADD = $(LDADD) typesubf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = F77COMPILE = $(F77) $(AM_FFLAGS) $(FFLAGS) AM_V_F77 = $(am__v_F77_@AM_V@) am__v_F77_ = $(am__v_F77_@AM_DEFAULT_V@) am__v_F77_0 = @echo " F77 " $@; am__v_F77_1 = F77LD = $(F77) F77LINK = $(F77LD) $(AM_FFLAGS) $(FFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_F77LD = $(am__v_F77LD_@AM_V@) am__v_F77LD_ = $(am__v_F77LD_@AM_DEFAULT_V@) am__v_F77LD_0 = @echo " F77LD " $@; am__v_F77LD_1 = SOURCES = allctypesf.f $(bottom_SOURCES) gaddressf.f hindex1f.f \ hindexed_blockf.f packef.f typecntsf.f typem2f.f typename3f.f \ typenamef.f typesnamef.f typesubf.f DIST_SOURCES = allctypesf.f $(bottom_SOURCES) gaddressf.f hindex1f.f \ hindexed_blockf.f packef.f typecntsf.f typem2f.f typename3f.f \ typenamef.f typesnamef.f typesubf.f am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/typeaints.h.in \ $(top_srcdir)/Makefile_f77.mtest $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F77 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. LDADD = $(top_builddir)/f77/util/mtestf.o CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f" lines AM_DEFAULT_SOURCE_EXT = .f bottom_SOURCES = bottomc.c bottomf.f all: all-am .SUFFIXES: .SUFFIXES: .c .f .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f77.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f77/datatype/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f77/datatype/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f77.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): typeaints.h: $(top_builddir)/config.status $(srcdir)/typeaints.h.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) allctypesf$(EXEEXT): $(allctypesf_OBJECTS) $(allctypesf_DEPENDENCIES) $(EXTRA_allctypesf_DEPENDENCIES) @rm -f allctypesf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(allctypesf_OBJECTS) $(allctypesf_LDADD) $(LIBS) bottom$(EXEEXT): $(bottom_OBJECTS) $(bottom_DEPENDENCIES) $(EXTRA_bottom_DEPENDENCIES) @rm -f bottom$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(bottom_OBJECTS) $(bottom_LDADD) $(LIBS) gaddressf$(EXEEXT): $(gaddressf_OBJECTS) $(gaddressf_DEPENDENCIES) $(EXTRA_gaddressf_DEPENDENCIES) @rm -f gaddressf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(gaddressf_OBJECTS) $(gaddressf_LDADD) $(LIBS) hindex1f$(EXEEXT): $(hindex1f_OBJECTS) $(hindex1f_DEPENDENCIES) $(EXTRA_hindex1f_DEPENDENCIES) @rm -f hindex1f$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(hindex1f_OBJECTS) $(hindex1f_LDADD) $(LIBS) hindexed_blockf$(EXEEXT): $(hindexed_blockf_OBJECTS) $(hindexed_blockf_DEPENDENCIES) $(EXTRA_hindexed_blockf_DEPENDENCIES) @rm -f hindexed_blockf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(hindexed_blockf_OBJECTS) $(hindexed_blockf_LDADD) $(LIBS) packef$(EXEEXT): $(packef_OBJECTS) $(packef_DEPENDENCIES) $(EXTRA_packef_DEPENDENCIES) @rm -f packef$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(packef_OBJECTS) $(packef_LDADD) $(LIBS) typecntsf$(EXEEXT): $(typecntsf_OBJECTS) $(typecntsf_DEPENDENCIES) $(EXTRA_typecntsf_DEPENDENCIES) @rm -f typecntsf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(typecntsf_OBJECTS) $(typecntsf_LDADD) $(LIBS) typem2f$(EXEEXT): $(typem2f_OBJECTS) $(typem2f_DEPENDENCIES) $(EXTRA_typem2f_DEPENDENCIES) @rm -f typem2f$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(typem2f_OBJECTS) $(typem2f_LDADD) $(LIBS) typename3f$(EXEEXT): $(typename3f_OBJECTS) $(typename3f_DEPENDENCIES) $(EXTRA_typename3f_DEPENDENCIES) @rm -f typename3f$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(typename3f_OBJECTS) $(typename3f_LDADD) $(LIBS) typenamef$(EXEEXT): $(typenamef_OBJECTS) $(typenamef_DEPENDENCIES) $(EXTRA_typenamef_DEPENDENCIES) @rm -f typenamef$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(typenamef_OBJECTS) $(typenamef_LDADD) $(LIBS) typesnamef$(EXEEXT): $(typesnamef_OBJECTS) $(typesnamef_DEPENDENCIES) $(EXTRA_typesnamef_DEPENDENCIES) @rm -f typesnamef$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(typesnamef_OBJECTS) $(typesnamef_LDADD) $(LIBS) typesubf$(EXEEXT): $(typesubf_OBJECTS) $(typesubf_DEPENDENCIES) $(EXTRA_typesubf_DEPENDENCIES) @rm -f typesubf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(typesubf_OBJECTS) $(typesubf_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bottomc.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .f.o: $(AM_V_F77)$(F77COMPILE) -c -o $@ $< .f.obj: $(AM_V_F77)$(F77COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f77/util/mtestf.o: $(top_srcdir)/f77/util/mtestf.f (cd $(top_builddir)/f77/util && $(MAKE) mtestf.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml gaddressf.$(OBJEXT): typeaints.h packef.$(OBJEXT): typeaints.h typecntsf.$(OBJEXT): typeaints.h typem2f.$(OBJEXT): typeaints.h hindexed_blockf.$(OBJEXT): typeaints.h # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f77/datatype/typeaints.h.in0000644000175000017500000000024712620254305021377 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C @F77_MPI_ADDRESS@ aint, aintv(max_asizev) mpi-testsuite-3.2+dfsg/f77/datatype/allctypesf.f0000644000175000017500000001265512620254305021124 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2004 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main include 'mpif.h' integer atype, ierr C call mtest_init(ierr) call mpi_comm_set_errhandler( MPI_COMM_WORLD, MPI_ERRORS_RETURN, * ierr ) C C Check that all Ctypes are available in Fortran (MPI 2.1, p 483, line 46) C call checkdtype( MPI_CHAR, "MPI_CHAR", ierr ) call checkdtype( MPI_SIGNED_CHAR, "MPI_SIGNED_CHAR", ierr ) call checkdtype( MPI_UNSIGNED_CHAR, "MPI_UNSIGNED_CHAR", ierr ) call checkdtype( MPI_BYTE, "MPI_BYTE", ierr ) call checkdtype( MPI_WCHAR, "MPI_WCHAR", ierr ) call checkdtype( MPI_SHORT, "MPI_SHORT", ierr ) call checkdtype( MPI_UNSIGNED_SHORT, "MPI_UNSIGNED_SHORT", ierr ) call checkdtype( MPI_INT, "MPI_INT", ierr ) call checkdtype( MPI_UNSIGNED, "MPI_UNSIGNED", ierr ) call checkdtype( MPI_LONG, "MPI_LONG", ierr ) call checkdtype( MPI_UNSIGNED_LONG, "MPI_UNSIGNED_LONG", ierr ) call checkdtype( MPI_FLOAT, "MPI_FLOAT", ierr ) call checkdtype( MPI_DOUBLE, "MPI_DOUBLE", ierr ) if (MPI_LONG_DOUBLE .ne. MPI_DATATYPE_NULL) then call checkdtype( MPI_LONG_DOUBLE, "MPI_LONG_DOUBLE", ierr ) endif if (MPI_LONG_LONG_INT .ne. MPI_DATATYPE_NULL) then call checkdtype2( MPI_LONG_LONG_INT, "MPI_LONG_LONG_INT", * "MPI_LONG_LONG", ierr ) endif if (MPI_UNSIGNED_LONG_LONG .ne. MPI_DATATYPE_NULL) then call checkdtype( MPI_UNSIGNED_LONG_LONG, * "MPI_UNSIGNED_LONG_LONG", ierr ) endif if (MPI_LONG_LONG .ne. MPI_DATATYPE_NULL) then call checkdtype2( MPI_LONG_LONG, "MPI_LONG_LONG", * "MPI_LONG_LONG_INT", ierr ) endif call checkdtype( MPI_PACKED, "MPI_PACKED", ierr ) call checkdtype( MPI_LB, "MPI_LB", ierr ) call checkdtype( MPI_UB, "MPI_UB", ierr ) call checkdtype( MPI_FLOAT_INT, "MPI_FLOAT_INT", ierr ) call checkdtype( MPI_DOUBLE_INT, "MPI_DOUBLE_INT", ierr ) call checkdtype( MPI_LONG_INT, "MPI_LONG_INT", ierr ) call checkdtype( MPI_SHORT_INT, "MPI_SHORT_INT", ierr ) call checkdtype( MPI_2INT, "MPI_2INT", ierr ) if (MPI_LONG_DOUBLE_INT .ne. MPI_DATATYPE_NULL) then call checkdtype( MPI_LONG_DOUBLE_INT, "MPI_LONG_DOUBLE_INT", * ierr) endif C C Check that all Ctypes are available in Fortran (MPI 2.2) C Note that because of implicit declarations in Fortran, this C code should compile even with pre MPI 2.2 implementations. C if (MPI_VERSION .gt. 2 .or. (MPI_VERSION .eq. 2 .and. * MPI_SUBVERSION .ge. 2)) then call checkdtype( MPI_INT8_T, "MPI_INT8_T", ierr ) call checkdtype( MPI_INT16_T, "MPI_INT16_T", ierr ) call checkdtype( MPI_INT32_T, "MPI_INT32_T", ierr ) call checkdtype( MPI_INT64_T, "MPI_INT64_T", ierr ) call checkdtype( MPI_UINT8_T, "MPI_UINT8_T", ierr ) call checkdtype( MPI_UINT16_T, "MPI_UINT16_T", ierr ) call checkdtype( MPI_UINT32_T, "MPI_UINT32_T", ierr ) call checkdtype( MPI_UINT64_T, "MPI_UINT64_T", ierr ) C other C99 types call checkdtype( MPI_C_BOOL, "MPI_C_BOOL", ierr ) call checkdtype( MPI_C_FLOAT_COMPLEX, "MPI_C_FLOAT_COMPLEX", * ierr) call checkdtype2( MPI_C_COMPLEX, "MPI_C_COMPLEX", * "MPI_C_FLOAT_COMPLEX", ierr ) call checkdtype( MPI_C_DOUBLE_COMPLEX, "MPI_C_DOUBLE_COMPLEX", * ierr ) if (MPI_C_LONG_DOUBLE_COMPLEX .ne. MPI_DATATYPE_NULL) then call checkdtype( MPI_C_LONG_DOUBLE_COMPLEX, * "MPI_C_LONG_DOUBLE_COMPLEX", ierr ) endif C address/offset types call checkdtype( MPI_AINT, "MPI_AINT", ierr ) call checkdtype( MPI_OFFSET, "MPI_OFFSET", ierr ) endif C call mtest_finalize( ierr ) call MPI_Finalize( ierr ) end C C Check name of datatype subroutine CheckDtype( intype, name, ierr ) include 'mpif.h' integer intype, ierr character *(*) name integer ir, rlen character *(MPI_MAX_OBJECT_NAME) outname C outname = "" call MPI_TYPE_GET_NAME( intype, outname, rlen, ir ) if (ir .ne. MPI_SUCCESS) then print *, " Datatype ", name, " not available in Fortran" ierr = ierr + 1 else if (outname .ne. name) then print *, " For datatype ", name, " found name ", * outname(1:rlen) ierr = ierr + 1 endif endif return end C C Check name of datatype (allows alias) subroutine CheckDtype2( intype, name, name2, ierr ) include 'mpif.h' integer intype, ierr character *(*) name, name2 integer ir, rlen character *(MPI_MAX_OBJECT_NAME) outname C outname = "" call MPI_TYPE_GET_NAME( intype, outname, rlen, ir ) if (ir .ne. MPI_SUCCESS) then print *, " Datatype ", name, " not available in Fortran" ierr = ierr + 1 else if (outname .ne. name .and. outname .ne. name2) then print *, " For datatype ", name, " found name ", * outname(1:rlen) ierr = ierr + 1 endif endif return end mpi-testsuite-3.2+dfsg/f77/datatype/typename3f.f0000644000175000017500000000223712620254305021024 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C C (C) 2012 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' character*(MPI_MAX_OBJECT_NAME) name integer namelen integer ierr, errs errs = 0 call mtest_init( ierr ) C C Check each Fortran datatype, including the size-specific ones C See the C version (typename.c) for the relevant MPI sections call MPI_Type_get_name( MPI_AINT, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_AINT") then errs = errs + 1 print *, "Expected MPI_AINT but got "//name(1:namelen) endif call MPI_Type_get_name( MPI_OFFSET, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_OFFSET") then errs = errs + 1 print *, "Expected MPI_OFFSET but got "//name(1:namelen) endif call MPI_Type_get_name( MPI_COUNT, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_COUNT") then errs = errs + 1 print *, "Expected MPI_COUNT but got "//name(1:namelen) endif call mtest_finalize( errs ) call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/datatype/Makefile.am0000644000175000017500000000145512620254305020637 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f77.mtest EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f" lines AM_DEFAULT_SOURCE_EXT = .f noinst_PROGRAMS = typenamef typesnamef typecntsf typesubf typem2f gaddressf \ packef allctypesf hindex1f hindexed_blockf typename3f bottom bottom_SOURCES=bottomc.c bottomf.f ## typeaints.h will be distributed because it's listed in AC_CONFIG_FILES/AC_OUTPUT ## ensure that dependent tests will be rebuilt when typeaints.h is updated gaddressf.$(OBJEXT): typeaints.h packef.$(OBJEXT): typeaints.h typecntsf.$(OBJEXT): typeaints.h typem2f.$(OBJEXT): typeaints.h hindexed_blockf.$(OBJEXT): typeaints.h mpi-testsuite-3.2+dfsg/f77/datatype/packef.f0000644000175000017500000001510712620254305020202 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer ierr, errs integer inbuf(10), ioutbuf(10), inbuf2(10), ioutbuf2(10) integer i, insize, rsize, csize, insize2 character*(16) cbuf, coutbuf double precision rbuf(10), routbuf(10) integer packbuf(1000), pbufsize, intsize integer max_asizev parameter (max_asizev = 3) include 'typeaints.h' errs = 0 call mtest_init( ierr ) call mpi_type_size( MPI_INTEGER, intsize, ierr ) pbufsize = 1000 * intsize call mpi_pack_external_size( 'external32', 10, MPI_INTEGER, & aint, ierr ) if (aint .ne. 10 * 4) then errs = errs + 1 print *, 'Expected 40 for size of 10 external32 integers', & ', got ', aint endif call mpi_pack_external_size( 'external32', 10, MPI_LOGICAL, & aint, ierr ) if (aint .ne. 10 * 4) then errs = errs + 1 print *, 'Expected 40 for size of 10 external32 logicals', & ', got ', aint endif call mpi_pack_external_size( 'external32', 10, MPI_CHARACTER, & aint, ierr ) if (aint .ne. 10 * 1) then errs = errs + 1 print *, 'Expected 10 for size of 10 external32 characters', & ', got ', aint endif call mpi_pack_external_size( 'external32', 3, MPI_INTEGER2, & aint, ierr ) if (aint .ne. 3 * 2) then errs = errs + 1 print *, 'Expected 6 for size of 3 external32 INTEGER*2', & ', got ', aint endif call mpi_pack_external_size( 'external32', 3, MPI_INTEGER4, & aint, ierr ) if (aint .ne. 3 * 4) then errs = errs + 1 print *, 'Expected 12 for size of 3 external32 INTEGER*4', & ', got ', aint endif call mpi_pack_external_size( 'external32', 3, MPI_REAL4, & aint, ierr ) if (aint .ne. 3 * 4) then errs = errs + 1 print *, 'Expected 12 for size of 3 external32 REAL*4', & ', got ', aint endif call mpi_pack_external_size( 'external32', 3, MPI_REAL8, & aint, ierr ) if (aint .ne. 3 * 8) then errs = errs + 1 print *, 'Expected 24 for size of 3 external32 REAL*8', & ', got ', aint endif if (MPI_INTEGER1 .ne. MPI_DATATYPE_NULL) then call mpi_pack_external_size( 'external32', 3, MPI_INTEGER1, & aint, ierr ) if (aint .ne. 3 * 1) then errs = errs + 1 print *, 'Expected 3 for size of 3 external32 INTEGER*1', & ', got ', aint endif endif if (MPI_INTEGER8 .ne. MPI_DATATYPE_NULL) then call mpi_pack_external_size( 'external32', 3, MPI_INTEGER8, & aint, ierr ) if (aint .ne. 3 * 8) then errs = errs + 1 print *, 'Expected 24 for size of 3 external32 INTEGER*8', & ', got ', aint endif endif C C Initialize values C insize = 10 do i=1, insize inbuf(i) = i enddo rsize = 3 do i=1, rsize rbuf(i) = 1000.0 * i enddo cbuf = 'This is a string' csize = 16 insize2 = 7 do i=1, insize2 inbuf2(i) = 5000-i enddo C aintv(1) = pbufsize aintv(2) = 0 aintv(3) = 0 C One MPI implementation failed to increment the position; instead, C it set the value with the amount of data packed in this call C We use aintv(3) to detect and report this specific error call mpi_pack_external( 'external32', inbuf, insize, MPI_INTEGER, & packbuf, aintv(1), aintv(2), ierr ) if (aintv(2) .le. aintv(3)) then print *, ' Position decreased after pack of integer!' endif aintv(3) = aintv(2) call mpi_pack_external( 'external32', rbuf, rsize, & MPI_DOUBLE_PRECISION, packbuf, aintv(1), & aintv(2), ierr ) if (aintv(2) .le. aintv(3)) then print *, ' Position decreased after pack of real!' endif aintv(3) = aintv(2) call mpi_pack_external( 'external32', cbuf, csize, & MPI_CHARACTER, packbuf, aintv(1), & aintv(2), ierr ) if (aintv(2) .le. aintv(3)) then print *, ' Position decreased after pack of character!' endif aintv(3) = aintv(2) call mpi_pack_external( 'external32', inbuf2, insize2, & MPI_INTEGER, & packbuf, aintv(1), aintv(2), ierr ) if (aintv(2) .le. aintv(3)) then print *, ' Position decreased after pack of integer (2nd)!' endif aintv(3) = aintv(2) C C We could try sending this with MPI_BYTE... aintv(2) = 0 call mpi_unpack_external( 'external32', packbuf, aintv(1), & aintv(2), ioutbuf, insize, MPI_INTEGER, ierr ) call mpi_unpack_external( 'external32', packbuf, aintv(1), & aintv(2), routbuf, rsize, MPI_DOUBLE_PRECISION, ierr ) call mpi_unpack_external( 'external32', packbuf, aintv(1), & aintv(2), coutbuf, csize, MPI_CHARACTER, ierr ) call mpi_unpack_external( 'external32', packbuf, aintv(1), & aintv(2), ioutbuf2, insize2, MPI_INTEGER, ierr ) C C Now, test the values C do i=1, insize if (ioutbuf(i) .ne. i) then errs = errs + 1 print *, 'ioutbuf(',i,') = ', ioutbuf(i), ' expected ', i endif enddo do i=1, rsize if (routbuf(i) .ne. 1000.0 * i) then errs = errs + 1 print *, 'routbuf(',i,') = ', routbuf(i), ' expected ', & & 1000.0 * i endif enddo if (coutbuf(1:csize) .ne. 'This is a string') then errs = errs + 1 print *, 'coutbuf = ', coutbuf(1:csize), ' expected ', & & 'This is a string' endif do i=1, insize2 if (ioutbuf2(i) .ne. 5000-i) then errs = errs + 1 print *, 'ioutbuf2(',i,') = ', ioutbuf2(i), ' expected ', & & 5000-i endif enddo C call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/datatype/typem2f.f0000644000175000017500000001267012620254305020341 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer errs, ierr, i, intsize integer type1, type2, type3, type4, type5 integer max_asizev parameter (max_asizev = 10) include 'typeaints.h' integer blocklens(max_asizev), dtypes(max_asizev) integer displs(max_asizev) integer recvbuf(6*max_asizev) integer sendbuf(max_asizev), status(MPI_STATUS_SIZE) integer rank, size errs = 0 call mtest_init( ierr ) call mpi_comm_size( MPI_COMM_WORLD, size, ierr ) call mpi_comm_rank( MPI_COMM_WORLD, rank, ierr ) C call mpi_type_size( MPI_INTEGER, intsize, ierr ) C aintv(1) = 0 aintv(2) = 3 * intsize call mpi_type_create_resized( MPI_INTEGER, aintv(1), aintv(2), & type1, ierr ) call mpi_type_commit( type1, ierr ) aintv(1) = -1 aintv(2) = -1 call mpi_type_get_extent( type1, aintv(1), aintv(2), ierr ) if (aintv(1) .ne. 0) then errs = errs + 1 print *, 'Did not get expected lb' endif if (aintv(2) .ne. 3*intsize) then errs = errs + 1 print *, 'Did not get expected extent' endif aintv(1) = -1 aintv(2) = -1 call mpi_type_get_true_extent( type1, aintv(1), aintv(2), ierr ) if (aintv(1) .ne. 0) then errs = errs + 1 print *, 'Did not get expected true lb' endif if (aintv(2) .ne. intsize) then errs = errs + 1 print *, 'Did not get expected true extent (', aintv(2), ') ', & ' expected ', intsize endif C do i=1,10 blocklens(i) = 1 aintv(i) = (i-1) * 3 * intsize enddo call mpi_type_create_hindexed( 10, blocklens, aintv, & MPI_INTEGER, type2, ierr ) call mpi_type_commit( type2, ierr ) C aint = 3 * intsize call mpi_type_create_hvector( 10, 1, aint, MPI_INTEGER, type3, & ierr ) call mpi_type_commit( type3, ierr ) C do i=1,10 blocklens(i) = 1 dtypes(i) = MPI_INTEGER aintv(i) = (i-1) * 3 * intsize enddo call mpi_type_create_struct( 10, blocklens, aintv, dtypes, & type4, ierr ) call mpi_type_commit( type4, ierr ) do i=1,10 displs(i) = (i-1) * 3 enddo call mpi_type_create_indexed_block( 10, 1, displs, & MPI_INTEGER, type5, ierr ) call mpi_type_commit( type5, ierr ) C C Using each time, send and receive using these types do i=1, max_asizev*3 recvbuf(i) = -1 enddo do i=1, max_asizev sendbuf(i) = i enddo call mpi_sendrecv( sendbuf, max_asizev, MPI_INTEGER, rank, 0, & recvbuf, max_asizev, type1, rank, 0, & MPI_COMM_WORLD, status, ierr ) do i=1, max_asizev if (recvbuf(1+(i-1)*3) .ne. i ) then errs = errs + 1 print *, 'type1:', i, 'th element = ', recvbuf(1+(i-1)*3) endif enddo C do i=1, max_asizev*3 recvbuf(i) = -1 enddo do i=1, max_asizev sendbuf(i) = i enddo call mpi_sendrecv( sendbuf, max_asizev, MPI_INTEGER, rank, 0, & recvbuf, 1, type2, rank, 0, & MPI_COMM_WORLD, status, ierr ) do i=1, max_asizev if (recvbuf(1+(i-1)*3) .ne. i ) then errs = errs + 1 print *, 'type2:', i, 'th element = ', recvbuf(1+(i-1)*3) endif enddo C do i=1, max_asizev*3 recvbuf(i) = -1 enddo do i=1, max_asizev sendbuf(i) = i enddo call mpi_sendrecv( sendbuf, max_asizev, MPI_INTEGER, rank, 0, & recvbuf, 1, type3, rank, 0, & MPI_COMM_WORLD, status, ierr ) do i=1, max_asizev if (recvbuf(1+(i-1)*3) .ne. i ) then errs = errs + 1 print *, 'type3:', i, 'th element = ', recvbuf(1+(i-1)*3) endif enddo C do i=1, max_asizev*3 recvbuf(i) = -1 enddo do i=1, max_asizev sendbuf(i) = i enddo call mpi_sendrecv( sendbuf, max_asizev, MPI_INTEGER, rank, 0, & recvbuf, 1, type4, rank, 0, & MPI_COMM_WORLD, status, ierr ) do i=1, max_asizev if (recvbuf(1+(i-1)*3) .ne. i ) then errs = errs + 1 print *, 'type4:', i, 'th element = ', recvbuf(1+(i-1)*3) endif enddo C do i=1, max_asizev*3 recvbuf(i) = -1 enddo do i=1, max_asizev sendbuf(i) = i enddo call mpi_sendrecv( sendbuf, max_asizev, MPI_INTEGER, rank, 0, & recvbuf, 1, type5, rank, 0, & MPI_COMM_WORLD, status, ierr ) do i=1, max_asizev if (recvbuf(1+(i-1)*3) .ne. i ) then errs = errs + 1 print *, 'type5:', i, 'th element = ', recvbuf(1+(i-1)*3) endif enddo C call mpi_type_free( type1, ierr ) call mpi_type_free( type2, ierr ) call mpi_type_free( type3, ierr ) call mpi_type_free( type4, ierr ) call mpi_type_free( type5, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/datatype/typesnamef.f0000644000175000017500000000342312620254305021122 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' character*(MPI_MAX_OBJECT_NAME) cname integer rlen, ln integer ntype1, ntype2, errs, ierr errs = 0 call MTest_Init( ierr ) call mpi_type_vector( 10, 1, 100, MPI_INTEGER, ntype1, ierr ) rlen = -1 cname = 'XXXXXX' call mpi_type_get_name( ntype1, cname, rlen, ierr ) if (rlen .ne. 0) then errs = errs + 1 print *, ' Expected length 0, got ', rlen endif rlen = 0 do ln=MPI_MAX_OBJECT_NAME,1,-1 if (cname(ln:ln) .ne. ' ') then rlen = ln goto 100 endif enddo 100 continue if (rlen .ne. 0) then errs = errs + 1 print *, 'Datatype name is not all blank' endif C C now add a name, then dup call mpi_type_set_name( ntype1, 'a vector type', ierr ) call mpi_type_dup( ntype1, ntype2, ierr ) rlen = -1 cname = 'XXXXXX' call mpi_type_get_name( ntype2, cname, rlen, ierr ) if (rlen .ne. 0) then errs = errs + 1 print *, ' (type2) Expected length 0, got ', rlen endif rlen = 0 do ln=MPI_MAX_OBJECT_NAME,1,-1 if (cname(ln:ln) .ne. ' ') then rlen = ln goto 110 endif enddo 110 continue if (rlen .ne. 0) then errs = errs + 1 print *, ' (type2) Datatype name is not all blank' endif call mpi_type_free( ntype1, ierr ) call mpi_type_free( ntype2, ierr ) call MTest_Finalize( errs ) call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/datatype/typecntsf.f0000644000175000017500000000646412620254305020776 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer errs, ierr integer ntype1, ntype2 C C This is a very simple test that just tests that the contents/envelope C routines can be called. This should be upgraded to test the new C MPI-2 datatype routines (which use address-sized integers) C errs = 0 call mtest_init( ierr ) call explore( MPI_INTEGER, MPI_COMBINER_NAMED, errs ) call explore( MPI_BYTE, MPI_COMBINER_NAMED, errs ) call mpi_type_vector( 10, 1, 30, MPI_DOUBLE_PRECISION, ntype1, & ierr ) call explore( ntype1, MPI_COMBINER_VECTOR, errs ) call mpi_type_dup( ntype1, ntype2, ierr ) call explore( ntype2, MPI_COMBINER_DUP, errs ) call mpi_type_free( ntype2, ierr ) call mpi_type_free( ntype1, ierr ) C call mtest_finalize( errs ) call mpi_finalize( ierr ) end C subroutine explore( dtype, mycomb, errs ) implicit none include 'mpif.h' integer dtype, mycomb, errs integer ierr integer nints, nadds, ntype, combiner integer max_nints, max_dtypes, max_asizev parameter (max_nints = 10, max_dtypes = 10, max_asizev=10) integer intv(max_nints), dtypesv(max_dtypes) include 'typeaints.h' C call mpi_type_get_envelope( dtype, nints, nadds, ntype, & combiner, ierr ) C if (combiner .ne. MPI_COMBINER_NAMED) then call mpi_type_get_contents( dtype, & max_nints, max_asizev, max_dtypes, & intv, aintv, dtypesv, ierr ) C C dtypesv of constructed types must be free'd now C if (combiner .eq. MPI_COMBINER_DUP) then call mpi_type_free( dtypesv(1), ierr ) endif endif if (combiner .ne. mycomb) then errs = errs + 1 print *, ' Expected combiner ', mycomb, ' but got ', & combiner endif C C List all combiner types to check that they are defined in mpif.h if (combiner .eq. MPI_COMBINER_NAMED) then else if (combiner .eq. MPI_COMBINER_DUP) then else if (combiner .eq. MPI_COMBINER_CONTIGUOUS) then else if (combiner .eq. MPI_COMBINER_VECTOR) then else if (combiner .eq. MPI_COMBINER_HVECTOR_INTEGER) then else if (combiner .eq. MPI_COMBINER_HVECTOR) then else if (combiner .eq. MPI_COMBINER_INDEXED) then else if (combiner .eq. MPI_COMBINER_HINDEXED_INTEGER) then else if (combiner .eq. MPI_COMBINER_HINDEXED) then else if (combiner .eq. MPI_COMBINER_INDEXED_BLOCK) then else if (combiner .eq. MPI_COMBINER_STRUCT_INTEGER) then else if (combiner .eq. MPI_COMBINER_STRUCT) then else if (combiner .eq. MPI_COMBINER_SUBARRAY) then else if (combiner .eq. MPI_COMBINER_DARRAY) then else if (combiner .eq. MPI_COMBINER_F90_REAL) then else if (combiner .eq. MPI_COMBINER_F90_COMPLEX) then else if (combiner .eq. MPI_COMBINER_F90_INTEGER) then else if (combiner .eq. MPI_COMBINER_RESIZED) then else errs = errs + 1 print *, ' Unknown combiner ', combiner endif return end mpi-testsuite-3.2+dfsg/f77/datatype/gaddressf.f0000644000175000017500000000166212620254305020714 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer max_asizev parameter (max_asizev=2) include 'typeaints.h' integer iarray(200), gap, intsize integer ierr, errs errs = 0 call MPI_Init(ierr) call MPI_Get_address( iarray(1), aintv(1), ierr ) call MPI_Get_address( iarray(200), aintv(2), ierr ) gap = aintv(2) - aintv(1) call MPI_Type_size( MPI_INTEGER, intsize, ierr ) if (gap .ne. 199 * intsize) then errs = errs + 1 print *, ' Using get_address, computed a gap of ', gap print *, ' Expected a gap of ', 199 * intsize endif if (errs .gt. 0) then print *, ' Found ', errs, ' errors' else print *, ' No Errors' endif call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/datatype/bottomf.f0000644000175000017500000000167212620254305020425 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2015 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C C C This test tests absolute datatypes and MPI_BOTTOM in mixed C Fortran and C code. MPI requires MPI_Get_address return C the same value in all languages. C See discussion on p.652 of MPI-3.0 program main implicit none include 'mpif.h' integer :: R(5) integer :: type, ierr, aoblen(1), aotype(1) integer (kind=mpi_address_kind) :: aodisp(1) integer errs errs = 0 R = (/1, 2, 3, 4, 5/) call mtest_init(ierr) ! create an absolute datatype for array r aoblen(1) = 5 call MPI_Get_address(R, aodisp(1), ierr) aotype(1) = MPI_INTEGER call MPI_Type_create_struct(1,aoblen,aodisp,aotype, type, ierr) call c_routine(type, errs) call MPI_Type_free(type, ierr); call mtest_finalize(errs) call MPI_Finalize(ierr) end mpi-testsuite-3.2+dfsg/f77/datatype/typenamef.f0000644000175000017500000001634012620254305020741 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' character*(MPI_MAX_OBJECT_NAME) name integer namelen integer ierr, errs errs = 0 call mtest_init( ierr ) C C Check each Fortran datatype, including the size-specific ones C See the C version (typename.c) for the relevant MPI sections call MPI_Type_get_name( MPI_COMPLEX, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_COMPLEX") then errs = errs + 1 print *, "Expected MPI_COMPLEX but got "//name(1:namelen) endif call MPI_Type_get_name( MPI_DOUBLE_COMPLEX, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_DOUBLE_COMPLEX") then errs = errs + 1 print *, "Expected MPI_DOUBLE_COMPLEX but got "// & name(1:namelen) endif call MPI_Type_get_name( MPI_LOGICAL, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_LOGICAL") then errs = errs + 1 print *, "Expected MPI_LOGICAL but got "//name(1:namelen) endif call MPI_Type_get_name( MPI_REAL, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_REAL") then errs = errs + 1 print *, "Expected MPI_REAL but got "//name(1:namelen) endif call MPI_Type_get_name( MPI_DOUBLE_PRECISION, name, namelen, ierr) if (name(1:namelen) .ne. "MPI_DOUBLE_PRECISION") then errs = errs + 1 print *, "Expected MPI_DOUBLE_PRECISION but got "// & name(1:namelen) endif call MPI_Type_get_name( MPI_INTEGER, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_INTEGER") then errs = errs + 1 print *, "Expected MPI_INTEGER but got "//name(1:namelen) endif call MPI_Type_get_name( MPI_2INTEGER, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_2INTEGER") then errs = errs + 1 print *, "Expected MPI_2INTEGER but got "//name(1:namelen) endif C 2COMPLEX was present only in MPI 1.0 C call MPI_Type_get_name( MPI_2COMPLEX, name, namelen, ierr ) C if (name(1:namelen) .ne. "MPI_2COMPLEX") then C errs = errs + 1 C print *, "Expected MPI_2COMPLEX but got "//name(1:namelen) C endif C call MPI_Type_get_name(MPI_2DOUBLE_PRECISION, name, namelen, ierr) if (name(1:namelen) .ne. "MPI_2DOUBLE_PRECISION") then errs = errs + 1 print *, "Expected MPI_2DOUBLE_PRECISION but got "// & name(1:namelen) endif call MPI_Type_get_name( MPI_2REAL, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_2REAL") then errs = errs + 1 print *, "Expected MPI_2REAL but got "//name(1:namelen) endif C 2DOUBLE_COMPLEX isn't in MPI 2.1 C call MPI_Type_get_name( MPI_2DOUBLE_COMPLEX, name, namelen, ierr ) C if (name(1:namelen) .ne. "MPI_2DOUBLE_COMPLEX") then C errs = errs + 1 C print *, "Expected MPI_2DOUBLE_COMPLEX but got "// C & name(1:namelen) C endif call MPI_Type_get_name( MPI_CHARACTER, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_CHARACTER") then errs = errs + 1 print *, "Expected MPI_CHARACTER but got "//name(1:namelen) endif call MPI_Type_get_name( MPI_BYTE, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_BYTE") then errs = errs + 1 print *, "Expected MPI_BYTE but got "//name(1:namelen) endif if (MPI_REAL4 .ne. MPI_DATATYPE_NULL) then call MPI_Type_get_name( MPI_REAL4, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_REAL4") then errs = errs + 1 print *, "Expected MPI_REAL4 but got "//name(1:namelen) endif endif if (MPI_REAL8 .ne. MPI_DATATYPE_NULL) then call MPI_Type_get_name( MPI_REAL8, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_REAL8") then errs = errs + 1 print *, "Expected MPI_REAL8 but got "//name(1:namelen) endif endif if (MPI_REAL16 .ne. MPI_DATATYPE_NULL) then call MPI_Type_get_name( MPI_REAL16, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_REAL16") then errs = errs + 1 print *, "Expected MPI_REAL16 but got "//name(1:namelen) endif endif if (MPI_COMPLEX8 .ne. MPI_DATATYPE_NULL) then call MPI_Type_get_name( MPI_COMPLEX8, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_COMPLEX8") then errs = errs + 1 print *, "Expected MPI_COMPLEX8 but got "// & name(1:namelen) endif endif if (MPI_COMPLEX16 .ne. MPI_DATATYPE_NULL) then call MPI_Type_get_name( MPI_COMPLEX16, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_COMPLEX16") then errs = errs + 1 print *, "Expected MPI_COMPLEX16 but got "// & name(1:namelen) endif endif if (MPI_COMPLEX32 .ne. MPI_DATATYPE_NULL) then call MPI_Type_get_name( MPI_COMPLEX32, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_COMPLEX32") then errs = errs + 1 print *, "Expected MPI_COMPLEX32 but got "// & name(1:namelen) endif endif if (MPI_INTEGER1 .ne. MPI_DATATYPE_NULL) then call MPI_Type_get_name( MPI_INTEGER1, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_INTEGER1") then errs = errs + 1 print *, "Expected MPI_INTEGER1 but got "// & name(1:namelen) endif endif if (MPI_INTEGER2 .ne. MPI_DATATYPE_NULL) then call MPI_Type_get_name( MPI_INTEGER2, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_INTEGER2") then errs = errs + 1 print *, "Expected MPI_INTEGER2 but got "// & name(1:namelen) endif endif if (MPI_INTEGER4 .ne. MPI_DATATYPE_NULL) then call MPI_Type_get_name( MPI_INTEGER4, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_INTEGER4") then errs = errs + 1 print *, "Expected MPI_INTEGER4 but got "// & name(1:namelen) endif endif if (MPI_INTEGER8 .ne. MPI_DATATYPE_NULL) then call MPI_Type_get_name( MPI_INTEGER8, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_INTEGER8") then errs = errs + 1 print *, "Expected MPI_INTEGER8 but got "// & name(1:namelen) endif endif C MPI_INTEGER16 is in MPI 2.1, but it is missing from most tables C Some MPI implementations may not provide it C if (MPI_INTEGER16 .ne. MPI_DATATYPE_NULL) then C call MPI_Type_get_name( MPI_INTEGER16, name, namelen, ierr ) C if (name(1:namelen) .ne. "MPI_INTEGER16") then C errs = errs + 1 C print *, "Expected MPI_INTEGER16 but got "// C & name(1:namelen) C endif C endif call mtest_finalize( errs ) call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/datatype/hindexed_blockf.f0000644000175000017500000001276112620254305022064 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer errs, ierr, i, intsize integer type1, type2, type3, type4, type5 integer max_asizev parameter (max_asizev = 10) include 'typeaints.h' integer blocklens(max_asizev), dtypes(max_asizev) integer displs(max_asizev) integer recvbuf(6*max_asizev) integer sendbuf(max_asizev), status(MPI_STATUS_SIZE) integer rank, size errs = 0 call mtest_init( ierr ) call mpi_comm_size( MPI_COMM_WORLD, size, ierr ) call mpi_comm_rank( MPI_COMM_WORLD, rank, ierr ) C call mpi_type_size( MPI_INTEGER, intsize, ierr ) C aintv(1) = 0 aintv(2) = 3 * intsize call mpi_type_create_resized( MPI_INTEGER, aintv(1), aintv(2), & type1, ierr ) call mpi_type_commit( type1, ierr ) aintv(1) = -1 aintv(2) = -1 call mpi_type_get_extent( type1, aintv(1), aintv(2), ierr ) if (aintv(1) .ne. 0) then errs = errs + 1 print *, 'Did not get expected lb' endif if (aintv(2) .ne. 3*intsize) then errs = errs + 1 print *, 'Did not get expected extent' endif aintv(1) = -1 aintv(2) = -1 call mpi_type_get_true_extent( type1, aintv(1), aintv(2), ierr ) if (aintv(1) .ne. 0) then errs = errs + 1 print *, 'Did not get expected true lb' endif if (aintv(2) .ne. intsize) then errs = errs + 1 print *, 'Did not get expected true extent (', aintv(2), ') ', & ' expected ', intsize endif C do i=1,10 blocklens(i) = 1 aintv(i) = (i-1) * 3 * intsize enddo call mpi_type_create_hindexed( 10, blocklens, aintv, & MPI_INTEGER, type2, ierr ) call mpi_type_commit( type2, ierr ) C aint = 3 * intsize call mpi_type_create_hvector( 10, 1, aint, MPI_INTEGER, type3, & ierr ) call mpi_type_commit( type3, ierr ) C do i=1,10 blocklens(i) = 1 dtypes(i) = MPI_INTEGER aintv(i) = (i-1) * 3 * intsize enddo call mpi_type_create_struct( 10, blocklens, aintv, dtypes, & type4, ierr ) call mpi_type_commit( type4, ierr ) call mpi_type_get_extent(MPI_INTEGER, aintv(1), aint, ierr) do i=1,10 aintv(i) = (i-1) * 3 * aint enddo call mpi_type_create_hindexed_block( 10, 1, aintv, & MPI_INTEGER, type5, ierr ) call mpi_type_commit( type5, ierr ) C C Using each time, send and receive using these types do i=1, max_asizev*3 recvbuf(i) = -1 enddo do i=1, max_asizev sendbuf(i) = i enddo call mpi_sendrecv( sendbuf, max_asizev, MPI_INTEGER, rank, 0, & recvbuf, max_asizev, type1, rank, 0, & MPI_COMM_WORLD, status, ierr ) do i=1, max_asizev if (recvbuf(1+(i-1)*3) .ne. i ) then errs = errs + 1 print *, 'type1:', i, 'th element = ', recvbuf(1+(i-1)*3) endif enddo C do i=1, max_asizev*3 recvbuf(i) = -1 enddo do i=1, max_asizev sendbuf(i) = i enddo call mpi_sendrecv( sendbuf, max_asizev, MPI_INTEGER, rank, 0, & recvbuf, 1, type2, rank, 0, & MPI_COMM_WORLD, status, ierr ) do i=1, max_asizev if (recvbuf(1+(i-1)*3) .ne. i ) then errs = errs + 1 print *, 'type2:', i, 'th element = ', recvbuf(1+(i-1)*3) endif enddo C do i=1, max_asizev*3 recvbuf(i) = -1 enddo do i=1, max_asizev sendbuf(i) = i enddo call mpi_sendrecv( sendbuf, max_asizev, MPI_INTEGER, rank, 0, & recvbuf, 1, type3, rank, 0, & MPI_COMM_WORLD, status, ierr ) do i=1, max_asizev if (recvbuf(1+(i-1)*3) .ne. i ) then errs = errs + 1 print *, 'type3:', i, 'th element = ', recvbuf(1+(i-1)*3) endif enddo C do i=1, max_asizev*3 recvbuf(i) = -1 enddo do i=1, max_asizev sendbuf(i) = i enddo call mpi_sendrecv( sendbuf, max_asizev, MPI_INTEGER, rank, 0, & recvbuf, 1, type4, rank, 0, & MPI_COMM_WORLD, status, ierr ) do i=1, max_asizev if (recvbuf(1+(i-1)*3) .ne. i ) then errs = errs + 1 print *, 'type4:', i, 'th element = ', recvbuf(1+(i-1)*3) endif enddo C do i=1, max_asizev*3 recvbuf(i) = -1 enddo do i=1, max_asizev sendbuf(i) = i enddo call mpi_sendrecv( sendbuf, max_asizev, MPI_INTEGER, rank, 0, & recvbuf, 1, type5, rank, 0, & MPI_COMM_WORLD, status, ierr ) do i=1, max_asizev if (recvbuf(1+(i-1)*3) .ne. i ) then errs = errs + 1 print *, 'type5:', i, 'th element = ', recvbuf(1+(i-1)*3) endif enddo C call mpi_type_free( type1, ierr ) call mpi_type_free( type2, ierr ) call mpi_type_free( type3, ierr ) call mpi_type_free( type4, ierr ) call mpi_type_free( type5, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/Makefile.in0000644000175000017500000005210112621010234017017 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = f77 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = testlist CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/testlist.in \ $(top_srcdir)/Makefile_f77.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F77 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. LDADD = $(top_builddir)/f77/util/mtestf.o CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist.in static_subdirs = util attr datatype coll pt2pt info init comm topo ext profile SUBDIRS = $(static_subdirs) $(spawndir) $(iodir) $(rmadir) DIST_SUBDIRS = $(static_subdirs) spawn io rma all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f77.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f77/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f77/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f77.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): testlist: $(top_builddir)/config.status $(srcdir)/testlist.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic cscopelist-am ctags ctags-am \ distclean distclean-generic distclean-tags distdir dvi dvi-am \ html html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile $(top_builddir)/f77/util/mtestf.o: $(top_srcdir)/f77/util/mtestf.f (cd $(top_builddir)/f77/util && $(MAKE) mtestf.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f77/spawn/0000755000175000017500000000000012621010234016103 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f77/spawn/spawnf.f0000644000175000017500000000600212620254305017556 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer errs, err integer rank, size, rsize, i integer np integer errcodes(2) integer parentcomm, intercomm integer status(MPI_STATUS_SIZE) integer ierr integer can_spawn errs = 0 np = 2 call MTest_Init( ierr ) call MTestSpawnPossible( can_spawn, errs ) if ( can_spawn .eq. 0 ) then call MTest_Finalize( errs ) goto 300 endif call MPI_Comm_get_parent( parentcomm, ierr ) if (parentcomm .eq. MPI_COMM_NULL) then C Create 2 more processes call MPI_Comm_spawn( "./spawnf", MPI_ARGV_NULL, np, $ MPI_INFO_NULL, 0, MPI_COMM_WORLD, intercomm, errcodes $ ,ierr ) else intercomm = parentcomm endif C We now have a valid intercomm call MPI_Comm_remote_size( intercomm, rsize, ierr ) call MPI_Comm_size( intercomm, size, ierr ) call MPI_Comm_rank( intercomm, rank, ierr ) if (parentcomm .eq. MPI_COMM_NULL) then C Master if (rsize .ne. np) then errs = errs + 1 print *, "Did not create ", np, " processes (got ", rsize, $ ")" endif if (rank .eq. 0) then do i=0,rsize-1 call MPI_Send( i, 1, MPI_INTEGER, i, 0, intercomm, ierr $ ) enddo C We could use intercomm reduce to get the errors from the C children, but we'll use a simpler loop to make sure that C we get valid data do i=0, rsize-1 call MPI_Recv( err, 1, MPI_INTEGER, i, 1, intercomm, $ MPI_STATUS_IGNORE, ierr ) errs = errs + err enddo endif else C Child if (size .ne. np) then errs = errs + 1 print *, "(Child) Did not create ", np, " processes (got " $ ,size, ")" endif call MPI_Recv( i, 1, MPI_INTEGER, 0, 0, intercomm, status, $ ierr ) if (i .ne. rank) then errs = errs + 1 print *, "Unexpected rank on child ", rank, "(",i,")" endif C Send the errs back to the master process call MPI_Ssend( errs, 1, MPI_INTEGER, 0, 1, intercomm, ierr ) endif C It isn't necessary to free the intercomm, but it should not hurt call MPI_Comm_free( intercomm, ierr ) C Note that the MTest_Finalize get errs only over COMM_WORLD C Note also that both the parent and child will generate "No C Errors" if both call MTest_Finalize if (parentcomm .eq. MPI_COMM_NULL) then call MTest_Finalize( errs ) endif 300 continue call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/spawn/Makefile.in0000644000175000017500000005070412621010234020156 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = namepubf$(EXEEXT) spawnf$(EXEEXT) \ spawnargvf$(EXEEXT) spawnmultf$(EXEEXT) spawnmult2f$(EXEEXT) \ connaccf$(EXEEXT) subdir = f77/spawn ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = testlist type1aint.h CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) connaccf_SOURCES = connaccf.f connaccf_OBJECTS = connaccf.$(OBJEXT) connaccf_LDADD = $(LDADD) connaccf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o namepubf_SOURCES = namepubf.f namepubf_OBJECTS = namepubf.$(OBJEXT) namepubf_LDADD = $(LDADD) namepubf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o spawnargvf_SOURCES = spawnargvf.f spawnargvf_OBJECTS = spawnargvf.$(OBJEXT) am__DEPENDENCIES_1 = spawnargvf_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_1) spawnf_SOURCES = spawnf.f spawnf_OBJECTS = spawnf.$(OBJEXT) spawnf_LDADD = $(LDADD) spawnf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o spawnmult2f_SOURCES = spawnmult2f.f spawnmult2f_OBJECTS = spawnmult2f.$(OBJEXT) spawnmult2f_LDADD = $(LDADD) spawnmult2f_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o spawnmultf_SOURCES = spawnmultf.f spawnmultf_OBJECTS = spawnmultf.$(OBJEXT) spawnmultf_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_1) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include F77COMPILE = $(F77) $(AM_FFLAGS) $(FFLAGS) AM_V_F77 = $(am__v_F77_@AM_V@) am__v_F77_ = $(am__v_F77_@AM_DEFAULT_V@) am__v_F77_0 = @echo " F77 " $@; am__v_F77_1 = F77LD = $(F77) F77LINK = $(F77LD) $(AM_FFLAGS) $(FFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_F77LD = $(am__v_F77LD_@AM_V@) am__v_F77LD_ = $(am__v_F77LD_@AM_DEFAULT_V@) am__v_F77LD_0 = @echo " F77LD " $@; am__v_F77LD_1 = SOURCES = connaccf.f namepubf.f spawnargvf.f spawnf.f spawnmult2f.f \ spawnmultf.f DIST_SOURCES = connaccf.f namepubf.f spawnargvf.f spawnf.f \ spawnmult2f.f spawnmultf.f am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/testlist.in \ $(srcdir)/type1aint.h.in $(top_srcdir)/Makefile_f77.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F77 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. LDADD = $(top_builddir)/f77/util/mtestf.o CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist.in # avoid having to write many "foo_SOURCES = foo.f" lines AM_DEFAULT_SOURCE_EXT = .f # add "-lU77" (or equivalent) to the link line for these tests that use getarg spawnargvf_LDADD = $(LDADD) $(F77_GETARG_LIBS) spawnmultf_LDADD = $(LDADD) $(F77_GETARG_LIBS) all: all-am .SUFFIXES: .SUFFIXES: .f .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f77.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f77/spawn/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f77/spawn/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f77.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): testlist: $(top_builddir)/config.status $(srcdir)/testlist.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ type1aint.h: $(top_builddir)/config.status $(srcdir)/type1aint.h.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) connaccf$(EXEEXT): $(connaccf_OBJECTS) $(connaccf_DEPENDENCIES) $(EXTRA_connaccf_DEPENDENCIES) @rm -f connaccf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(connaccf_OBJECTS) $(connaccf_LDADD) $(LIBS) namepubf$(EXEEXT): $(namepubf_OBJECTS) $(namepubf_DEPENDENCIES) $(EXTRA_namepubf_DEPENDENCIES) @rm -f namepubf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(namepubf_OBJECTS) $(namepubf_LDADD) $(LIBS) spawnargvf$(EXEEXT): $(spawnargvf_OBJECTS) $(spawnargvf_DEPENDENCIES) $(EXTRA_spawnargvf_DEPENDENCIES) @rm -f spawnargvf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(spawnargvf_OBJECTS) $(spawnargvf_LDADD) $(LIBS) spawnf$(EXEEXT): $(spawnf_OBJECTS) $(spawnf_DEPENDENCIES) $(EXTRA_spawnf_DEPENDENCIES) @rm -f spawnf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(spawnf_OBJECTS) $(spawnf_LDADD) $(LIBS) spawnmult2f$(EXEEXT): $(spawnmult2f_OBJECTS) $(spawnmult2f_DEPENDENCIES) $(EXTRA_spawnmult2f_DEPENDENCIES) @rm -f spawnmult2f$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(spawnmult2f_OBJECTS) $(spawnmult2f_LDADD) $(LIBS) spawnmultf$(EXEEXT): $(spawnmultf_OBJECTS) $(spawnmultf_DEPENDENCIES) $(EXTRA_spawnmultf_DEPENDENCIES) @rm -f spawnmultf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(spawnmultf_OBJECTS) $(spawnmultf_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .f.o: $(AM_V_F77)$(F77COMPILE) -c -o $@ $< .f.obj: $(AM_V_F77)$(F77COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f77/util/mtestf.o: $(top_srcdir)/f77/util/mtestf.f (cd $(top_builddir)/f77/util && $(MAKE) mtestf.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # ensure that dependent tests will be rebuilt when type1aint.h is updated spawnmult2f.$(OBJEXT): type1aint.h # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f77/spawn/spawnmult2f.f0000644000175000017500000001067012620254305020550 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C C This tests spawn_mult by using the same executable and no command-line C options. The attribute MPI_APPNUM is used to determine which C executable is running. C program main implicit none include 'mpif.h' include 'type1aint.h' integer errs, err integer rank, size, rsize, wsize, i integer np(2) integer infos(2) integer errcodes(2) integer parentcomm, intercomm integer status(MPI_STATUS_SIZE) character*(30) cmds(2) integer appnum logical flag integer ierr integer can_spawn errs = 0 call MTest_Init( ierr ) call MTestSpawnPossible( can_spawn, errs ) if ( can_spawn .eq. 0 ) then call MTest_Finalize( errs ) goto 300 endif call MPI_Comm_get_parent( parentcomm, ierr ) if (parentcomm .eq. MPI_COMM_NULL) then C Create 2 more processes cmds(1) = "./spawnmult2f" cmds(2) = "./spawnmult2f" np(1) = 1 np(2) = 1 infos(1)= MPI_INFO_NULL infos(2)= MPI_INFO_NULL call MPI_Comm_spawn_multiple( 2, cmds, MPI_ARGVS_NULL, & & np, infos, 0, & & MPI_COMM_WORLD, intercomm, errcodes, ierr ) else intercomm = parentcomm endif C We now have a valid intercomm call MPI_Comm_remote_size( intercomm, rsize, ierr ) call MPI_Comm_size( intercomm, size, ierr ) call MPI_Comm_rank( intercomm, rank, ierr ) if (parentcomm .eq. MPI_COMM_NULL) then C Master if (rsize .ne. np(1) + np(2)) then errs = errs + 1 print *, "Did not create ", np(1)+np(2), & & " processes (got ", rsize, ")" endif C Allow a multi-process parent if (rank .eq. 0) then do i=0, rsize-1 call MPI_Send( i, 1, MPI_INTEGER, i, 0, intercomm, & & ierr ) enddo C We could use intercomm reduce to get the errors from the C children, but we'll use a simpler loop to make sure that C we get valid data do i=0, rsize-1 call MPI_Recv( err, 1, MPI_INTEGER, i, 1, intercomm, & & MPI_STATUS_IGNORE, ierr ) errs = errs + err enddo endif else C Child C FIXME: This assumes that stdout is handled for the children C (the error count will still be reported to the parent) if (size .ne. 2) then errs = errs + 1 print *, "(Child) Did not create ", 2, & & " processes (got ",size, ")" call mpi_comm_size( MPI_COMM_WORLD, wsize, ierr ) if (wsize .eq. 2) then errs = errs + 1 print *, "(Child) world size is 2 but ", & & " local intercomm size is not 2" endif endif call MPI_Recv( i, 1, MPI_INTEGER, 0, 0, intercomm, status, ierr & & ) if (i .ne. rank) then errs = errs + 1 print *, "Unexpected rank on child ", rank, "(",i,")" endif C C Check for correct APPNUM call mpi_comm_get_attr( MPI_COMM_WORLD, MPI_APPNUM, aint, & & flag, ierr ) C My appnum should be my rank in comm world if (flag) then appnum = aint if (appnum .ne. rank) then errs = errs + 1 print *, "appnum is ", appnum, " but should be ", rank endif else errs = errs + 1 print *, "appnum was not set" endif C Send the errs back to the master process call MPI_Ssend( errs, 1, MPI_INTEGER, 0, 1, intercomm, ierr ) endif C It isn't necessary to free the intercomm, but it should not hurt call MPI_Comm_free( intercomm, ierr ) C Note that the MTest_Finalize get errs only over COMM_WORLD if (parentcomm .eq. MPI_COMM_NULL) then call MTest_Finalize( errs ) endif 300 continue call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/spawn/spawnmultf.f0000644000175000017500000001326712620254305020473 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C C This is a special test that requires an getarg/iargc routine C This tests spawn_mult by using the same executable but different C command-line options. C program main C This implicit none is removed here because the iargc was not C declared on the old sparc compilers C implicit none include 'mpif.h' integer errs, err integer rank, size, rsize, wsize, i integer np(2) integer infos(2) integer errcodes(2) integer parentcomm, intercomm integer status(MPI_STATUS_SIZE) character*(10) inargv(2,6), outargv(2,6) character*(30) cmds(2) character*(80) argv(64) integer argc integer ierr integer can_spawn C C Arguments are stored by rows, not columns in the vector. C We write the data in a way that looks like the transpose, C since Fortran stores by column data inargv /"a", "-p", & & "b=c", "27", & & "d e", "-echo", & & "-pf", " ", & & "Ss", " ", & & " ", " "/ data outargv /"a", "-p", & & "b=c", "27", & & "d e", "-echo", & & "-pf", " ", & & "Ss", " ", & & " ", " "/ errs = 0 call MTest_Init( ierr ) call MTestSpawnPossible( can_spawn, errs ) if ( can_spawn .eq. 0 ) then call MTest_Finalize( errs ) goto 300 endif call MPI_Comm_get_parent( parentcomm, ierr ) if (parentcomm .eq. MPI_COMM_NULL) then C Create 2 more processes cmds(1) = "./spawnmultf" cmds(2) = "./spawnmultf" np(1) = 1 np(2) = 1 infos(1)= MPI_INFO_NULL infos(2)= MPI_INFO_NULL call MPI_Comm_spawn_multiple( 2, cmds, inargv, & & np, infos, 0, & & MPI_COMM_WORLD, intercomm, errcodes, ierr ) else intercomm = parentcomm endif C We now have a valid intercomm call MPI_Comm_remote_size( intercomm, rsize, ierr ) call MPI_Comm_size( intercomm, size, ierr ) call MPI_Comm_rank( intercomm, rank, ierr ) if (parentcomm .eq. MPI_COMM_NULL) then C Master if (rsize .ne. np(1) + np(2)) then errs = errs + 1 print *, "Did not create ", np(1)+np(2), & & " processes (got ", rsize, ")" endif do i=0, rsize-1 call MPI_Send( i, 1, MPI_INTEGER, i, 0, intercomm, ierr ) enddo C We could use intercomm reduce to get the errors from the C children, but we'll use a simpler loop to make sure that C we get valid data do i=0, rsize-1 call MPI_Recv( err, 1, MPI_INTEGER, i, 1, intercomm, & & MPI_STATUS_IGNORE, ierr ) errs = errs + err enddo else C Child C FIXME: This assumes that stdout is handled for the children C (the error count will still be reported to the parent) argc = iargc() do i=1, argc call getarg( i, argv(i) ) enddo if (size .ne. 2) then errs = errs + 1 print *, "(Child) Did not create ", 2, & & " processes (got ",size, ")" call mpi_comm_size( MPI_COMM_WORLD, wsize, ierr ) if (wsize .eq. 2) then errs = errs + 1 print *, "(Child) world size is 2 but ", & & " local intercomm size is not 2" endif endif call MPI_Recv( i, 1, MPI_INTEGER, 0, 0, intercomm, status, ierr & & ) if (i .ne. rank) then errs = errs + 1 print *, "Unexpected rank on child ", rank, "(",i,")" endif C Check the command line do i=1, argc if (outargv(rank+1,i) .eq. " ") then errs = errs + 1 print *, "Wrong number of arguments (", argc, ")" goto 200 endif if (argv(i) .ne. outargv(rank+1,i)) then errs = errs + 1 print *, "Found arg ", argv(i), " but expected ", & & outargv(rank+1,i) endif enddo 200 continue if (outargv(rank+1,i) .ne. " ") then C We had too few args in the spawned command errs = errs + 1 print *, "Too few arguments to spawned command" endif C Send the errs back to the master process call MPI_Ssend( errs, 1, MPI_INTEGER, 0, 1, intercomm, ierr ) endif C It isn't necessary to free the intercomm, but it should not hurt call MPI_Comm_free( intercomm, ierr ) C Note that the MTest_Finalize get errs only over COMM_WORLD if (parentcomm .eq. MPI_COMM_NULL) then call MTest_Finalize( errs ) endif 300 continue call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/spawn/Makefile.am0000644000175000017500000000134712620254305020154 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f77.mtest EXTRA_DIST = testlist.in # avoid having to write many "foo_SOURCES = foo.f" lines AM_DEFAULT_SOURCE_EXT = .f noinst_PROGRAMS = namepubf spawnf spawnargvf spawnmultf spawnmult2f connaccf ## type1aint.h will be distributed because it's listed in AC_CONFIG_FILES/AC_OUTPUT # ensure that dependent tests will be rebuilt when type1aint.h is updated spawnmult2f.$(OBJEXT): type1aint.h # add "-lU77" (or equivalent) to the link line for these tests that use getarg spawnargvf_LDADD = $(LDADD) $(F77_GETARG_LIBS) spawnmultf_LDADD = $(LDADD) $(F77_GETARG_LIBS) mpi-testsuite-3.2+dfsg/f77/spawn/testlist.in0000644000175000017500000000020712620254305020315 0ustar mbanckmbanck@namepub_tests@namepubf 2 spawnf 1 @F77SPAWNARGTEST@spawnargvf 1 @namepub_tests@connaccf 2 @F77SPAWNARGTEST@spawnmultf 1 spawnmult2f 2 mpi-testsuite-3.2+dfsg/f77/spawn/namepubf.f0000644000175000017500000000614212620254305020062 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer errs character*(MPI_MAX_PORT_NAME) port_name character*(MPI_MAX_PORT_NAME) port_name_out character*(256) serv_name integer merr, mclass character*(MPI_MAX_ERROR_STRING) errmsg integer msglen, rank integer ierr errs = 0 call MTest_Init( ierr ) call MPI_Comm_rank(MPI_COMM_WORLD, rank, ierr ) C Note that according to the MPI standard, port_name must C have been created by MPI_Open_port. For current testing C purposes, we'll use a fake name. This test should eventually use C a valid name from Open_port port_name = 'otherhost:122' serv_name = 'MyTest' call MPI_Comm_set_errhandler( MPI_COMM_WORLD, MPI_ERRORS_RETURN, $ ierr ) if (rank .eq. 0) then merr = -1 call MPI_Publish_name( serv_name, MPI_INFO_NULL, port_name, $ merr ) if (merr .ne. MPI_SUCCESS) then errs = errs + 1 call MPI_Error_string( merr, errmsg, msglen, ierr ) print *, "Error in Publish_name ", errmsg(1:msglen) endif call MPI_Barrier(MPI_COMM_WORLD, ierr ) call MPI_Barrier(MPI_COMM_WORLD, ierr ) merr = -1 call MPI_Unpublish_name( serv_name, MPI_INFO_NULL, port_name, $ merr) if (merr .ne. MPI_SUCCESS) then errs = errs + 1 call MPI_Error_string( merr, errmsg, msglen, ierr ) print *, "Error in Unpublish name ", errmsg(1:msglen) endif else call MPI_Barrier(MPI_COMM_WORLD, ierr ) merr = -1 call MPI_Lookup_name( serv_name, MPI_INFO_NULL, port_name_out, $ merr) if (merr .ne. MPI_SUCCESS) then errs = errs + 1 call MPI_Error_string( merr, errmsg, msglen, ierr ) print *, "Error in Lookup name", errmsg(1:msglen) else if (port_name .ne. port_name_out) then errs = errs + 1 print *, "Lookup name returned the wrong value (", $ port_name_out, "), expected (", port_name, ")" endif endif call MPI_Barrier(MPI_COMM_WORLD, ierr ) endif call MPI_Barrier(MPI_COMM_WORLD, ierr ) merr = -1 call MPI_Lookup_name( serv_name, MPI_INFO_NULL, port_name_out, $ merr ) if (merr .eq. MPI_SUCCESS) then errs = errs + 1 print *, "Lookup name returned name after it was unpublished" else C Must be class MPI_ERR_NAME call MPI_Error_class( merr, mclass, ierr ) if (mclass .ne. MPI_ERR_NAME) then errs = errs + 1 call MPI_Error_string( merr, errmsg, msglen, ierr ) print *, "Lookup name returned the wrong error class $ (",mclass,"), msg ", errmsg endif endif call MTest_Finalize( errs ) call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/spawn/type1aint.h.in0000644000175000017500000000022412620254305020605 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C @F77_MPI_ADDRESS@ aint mpi-testsuite-3.2+dfsg/f77/spawn/spawnargvf.f0000644000175000017500000000777312620254305020456 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C C This is a special test that requires an getarg/iargc routine C program main C This implicit none is removed here because the iargc was not C declared on the old sparc compilers C implicit none include 'mpif.h' integer errs, err integer rank, size, rsize, i integer np integer errcodes(2) integer parentcomm, intercomm integer status(MPI_STATUS_SIZE) character*(10) inargv(6), outargv(6) character*(80) argv(64) integer argc data inargv /"a", "b=c", "d e", "-pf", " Ss", " " / data outargv /"a", "b=c", "d e", "-pf", " Ss", " " / integer ierr integer can_spawn errs = 0 np = 2 call MTest_Init( ierr ) call MTestSpawnPossible( can_spawn, errs ) if ( can_spawn .eq. 0 ) then call MTest_Finalize( errs ) goto 300 endif call MPI_Comm_get_parent( parentcomm, ierr ) if (parentcomm .eq. MPI_COMM_NULL) then C Create 2 more processes call MPI_Comm_spawn( "./spawnargvf", inargv, np, $ MPI_INFO_NULL, 0, MPI_COMM_WORLD, intercomm, errcodes, $ ierr ) else intercomm = parentcomm endif C We now have a valid intercomm call MPI_Comm_remote_size( intercomm, rsize, ierr ) call MPI_Comm_size( intercomm, size, ierr ) call MPI_Comm_rank( intercomm, rank, ierr ) if (parentcomm .eq. MPI_COMM_NULL) then C Master if (rsize .ne. np) then errs = errs + 1 print *, "Did not create ", np, " processes (got $ ", rsize, ")" endif do i=0, rsize-1 call MPI_Send( i, 1, MPI_INTEGER, i, 0, intercomm, ierr ) enddo C We could use intercomm reduce to get the errors from the C children, but we'll use a simpler loop to make sure that C we get valid data do i=0, rsize-1 call MPI_Recv( err, 1, MPI_INTEGER, i, 1, intercomm, $ MPI_STATUS_IGNORE, ierr ) errs = errs + err enddo else C Child C FIXME: This assumes that stdout is handled for the children C (the error count will still be reported to the parent) argc = iargc() do i=1, argc call getarg( i, argv(i) ) enddo if (size .ne. np) then errs = errs + 1 print *, "(Child) Did not create ", np, " processes (got ", $ size, ")" endif call MPI_Recv( i, 1, MPI_INTEGER, 0, 0, intercomm, status, ierr $ ) if (i .ne. rank) then errs = errs + 1 print *, "Unexpected rank on child ", rank, "(",i,")" endif C Check the command line do i=1, argc if (outargv(i) .eq. " ") then errs = errs + 1 print *, "Wrong number of arguments (", argc, ")" goto 200 endif if (argv(i) .ne. outargv(i)) then errs = errs + 1 print *, "Found arg ", argv(i), " but expected ", $ outargv(i) endif enddo 200 continue if (outargv(i) .ne. " ") then C We had too few args in the spawned command errs = errs + 1 print *, "Too few arguments to spawned command" endif C Send the errs back to the master process call MPI_Ssend( errs, 1, MPI_INTEGER, 0, 1, intercomm, ierr ) endif C It isn't necessary to free the intercomm, but it should not hurt call MPI_Comm_free( intercomm, ierr ) C Note that the MTest_Finalize get errs only over COMM_WORLD if (parentcomm .eq. MPI_COMM_NULL) then call MTest_Finalize( errs ) endif 300 continue call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/spawn/connaccf.f0000644000175000017500000001164112620254305020037 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer size, rank, ierr, errs, eclass integer color, comm, intercomm integer s1, s2 character*(MPI_MAX_PORT_NAME) portname errs = 0 call mtest_init( ierr ) call mpi_comm_size( MPI_COMM_WORLD, size, ierr ) call mpi_comm_rank( MPI_COMM_WORLD, rank, ierr ) if (size .lt. 2) then print *, 'This example must have at least 2 processes' call mpi_abort( MPI_COMM_WORLD, 1, ierr ) endif C C Part of this test is to ensure that lookups cleanly fail when C a name is not present. This code is used to ensure that the C name is not in use before the test. C The MPI Standard (10.4.4 Name Publishing) requires that a process that C has published a name unpublish it before it exits. C This code attempts to lookup the name that we want to use as the C service name for this example. If it is found (it should not be, but C might if an MPI program with this service name exits without unpublishing C the servicename, and the runtime that provides the name publishing C leaves the servicename in use. This block of code should not be necessary C in a robust MPI implementation, but should not cause problems for a correct. C call mpi_barrier( MPI_COMM_WORLD, ierr ) call mpi_comm_set_errhandler( MPI_COMM_WORLD, MPI_ERRORS_RETURN, & ierr ) call mpi_lookup_name( "fservtest", MPI_INFO_NULL, portname, ierr ) if (ierr .eq. MPI_SUCCESS) then call mpi_unpublish_name( "fservtest", MPI_INFO_NULL, portname, & ierr ) endif call mpi_barrier( MPI_COMM_WORLD, ierr ) C Ignore errors from unpublish_name (such as name-not-found) call mpi_comm_set_errhandler( MPI_COMM_WORLD, & MPI_ERRORS_ARE_FATAL, ierr ) C C The server (accept) side is rank < size/2 and the client (connect) C side is rank >= size/2 color = 0 if (rank .ge. size/2) color = 1 call mpi_comm_split( MPI_COMM_WORLD, color, rank, comm, ierr ) C if (rank .lt. size/2) then C Server call mpi_barrier( MPI_COMM_WORLD, ierr ) if (rank .eq. 0) then call mpi_open_port( MPI_INFO_NULL, portname, ierr ) call mpi_publish_name( "fservtest", MPI_INFO_NULL, & portname, ierr ) endif call mpi_barrier( MPI_COMM_WORLD, ierr ) call mpi_comm_accept( portname, MPI_INFO_NULL, 0, comm, & intercomm, ierr ) if (rank .eq. 0) then call mpi_close_port( portname, ierr ) call mpi_unpublish_name( "fservtest", MPI_INFO_NULL, & portname, ierr ) endif else C Client call mpi_comm_set_errhandler( MPI_COMM_WORLD,MPI_ERRORS_RETURN, & ierr ) ierr = MPI_SUCCESS call mpi_lookup_name( "fservtest", MPI_INFO_NULL, & portname, ierr ) if (ierr .eq. MPI_SUCCESS) then errs = errs + 1 print *, 'lookup name returned a value before published' else call mpi_error_class( ierr, eclass, ierr ) if (eclass .ne. MPI_ERR_NAME) then errs = errs + 1 print *, ' Wrong error class, is ', eclass, ' must be ', & MPI_ERR_NAME C See the MPI-2 Standard, 5.4.4 endif endif call mpi_comm_set_errhandler( MPI_COMM_WORLD, & MPI_ERRORS_ARE_FATAL, ierr ) call mpi_barrier( MPI_COMM_WORLD, ierr ) call mpi_barrier( MPI_COMM_WORLD, ierr ) call mpi_lookup_name( "fservtest", MPI_INFO_NULL, & portname, ierr ) C This should not happen (ERRORS_ARE_FATAL), but just in case... if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 print *, ' Major error: errors_are_fatal set but returned' print *, ' non MPI_SUCCESS value. Details:' call MTestPrintErrorMsg( ' Unable to lookup fservtest port', & ierr ) C Unable to continue without a valid port call mpi_abort( MPI_COMM_WORLD, 1, ierr ) endif call mpi_comm_connect( portname, MPI_INFO_NULL, 0, comm, & intercomm, ierr ) endif C C Check that this is an acceptable intercomm call mpi_comm_size( intercomm, s1, ierr ) call mpi_comm_remote_size( intercomm, s2, ierr ) if (s1 + s2 .ne. size) then errs = errs + 1 print *, ' Wrong size for intercomm = ', s1+s2 endif call mpi_comm_free(comm, ierr) C Everyone can now abandon the new intercomm call mpi_comm_disconnect( intercomm, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/coll/0000755000175000017500000000000012621010234015704 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f77/coll/exscanf.f0000644000175000017500000000603612620254305017517 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C subroutine uop( cin, cout, count, datatype ) implicit none include 'mpif.h' integer cin(*), cout(*) integer count, datatype integer i if (datatype .ne. MPI_INTEGER) then write(6,*) 'Invalid datatype passed to user_op()' return endif do i=1, count cout(i) = cin(i) + cout(i) enddo end C program main implicit none include 'mpif.h' integer inbuf(2), outbuf(2) integer ans, rank, size, comm integer errs, ierr integer sumop external uop errs = 0 call mtest_init( ierr ) C C A simple test of exscan comm = MPI_COMM_WORLD call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) inbuf(1) = rank inbuf(2) = -rank call mpi_exscan( inbuf, outbuf, 2, MPI_INTEGER, MPI_SUM, comm, & ierr ) C this process has the sum of i from 0 to rank-1, which is C (rank)(rank-1)/2 and -i ans = (rank * (rank - 1))/2 if (rank .gt. 0) then if (outbuf(1) .ne. ans) then errs = errs + 1 print *, rank, ' Expected ', ans, ' got ', outbuf(1) endif if (outbuf(2) .ne. -ans) then errs = errs + 1 print *, rank, ' Expected ', -ans, ' got ', outbuf(1) endif endif C C Try a user-defined operation C call mpi_op_create( uop, .true., sumop, ierr ) inbuf(1) = rank inbuf(2) = -rank call mpi_exscan( inbuf, outbuf, 2, MPI_INTEGER, sumop, comm, & ierr ) C this process has the sum of i from 0 to rank-1, which is C (rank)(rank-1)/2 and -i ans = (rank * (rank - 1))/2 if (rank .gt. 0) then if (outbuf(1) .ne. ans) then errs = errs + 1 print *, rank, ' sumop: Expected ', ans, ' got ', outbuf(1) endif if (outbuf(2) .ne. -ans) then errs = errs + 1 print *, rank, ' sumop: Expected ', -ans, ' got ', outbuf(1) endif endif call mpi_op_free( sumop, ierr ) C C Try a user-defined operation (and don't claim it is commutative) C call mpi_op_create( uop, .false., sumop, ierr ) inbuf(1) = rank inbuf(2) = -rank call mpi_exscan( inbuf, outbuf, 2, MPI_INTEGER, sumop, comm, & ierr ) C this process has the sum of i from 0 to rank-1, which is C (rank)(rank-1)/2 and -i ans = (rank * (rank - 1))/2 if (rank .gt. 0) then if (outbuf(1) .ne. ans) then errs = errs + 1 print *, rank, ' sumop2: Expected ', ans, ' got ', outbuf(1) endif if (outbuf(2) .ne. -ans) then errs = errs + 1 print *, rank, ' sumop2: Expected ', -ans, ' got ',outbuf(1) endif endif call mpi_op_free( sumop, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/coll/red_scat_blockf.f0000644000175000017500000000320712620254305021171 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2012 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C C A simple test for Fortran support of Reduce_scatter_block C with or withoutMPI_IN_PLACE. C program main implicit none include 'mpif.h' integer MAX_SIZE parameter (MAX_SIZE=1024) integer sbuf(MAX_SIZE), rbuf(MAX_SIZE) integer comm, rank, size integer sumval, ierr, errs, i errs = 0 call mtest_init( ierr ) comm = MPI_COMM_WORLD call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) do i = 1, size sbuf(i) = rank + (i-1) enddo call MPI_Reduce_scatter_block(sbuf, rbuf, 1, MPI_INTEGER, . MPI_SUM, comm, ierr) sumval = size * rank + ((size-1) * size)/2 if ( rbuf(1) .ne. sumval ) then errs = errs + 1 print *, 'Reduce_scatter_block does not get expected value.' print *, '[', rank, ']', 'Got ', rbuf(1), ' but expected ', . sumval, '.' endif C Try MPI_IN_PLACE do i = 1, size rbuf(i) = rank + (i-1) enddo call MPI_Reduce_scatter_block(MPI_IN_PLACE, rbuf, 1, MPI_INTEGER, . MPI_SUM, comm, ierr) if ( rbuf(1) .ne. sumval ) then errs = errs + 1 print *, 'Reduce_scatter_block does not get expected value.' print *, '[', rank, ']', 'Got ', rbuf(1), ' but expected ', . sumval, '.' endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/coll/testlist0000644000175000017500000000040112620254305017505 0ustar mbanckmbanckuallreducef 4 exscanf 5 alltoallwf 7 alltoallvf 7 inplacef 4 reducelocalf 2 mpiversion=2.2 redscatf 4 split_typef 4 mpiversion=3.0 nonblockingf 4 mpiversion=3.0 vw_inplacef 4 mpiversion=2.2 red_scat_blockf 4 mpiversion=2.2 nonblocking_inpf 4 mpiversion=3.0 mpi-testsuite-3.2+dfsg/f77/coll/Makefile.in0000644000175000017500000005676012621010234017767 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = uallreducef$(EXEEXT) exscanf$(EXEEXT) \ alltoallwf$(EXEEXT) inplacef$(EXEEXT) allredint8f$(EXEEXT) \ allredopttf$(EXEEXT) reducelocalf$(EXEEXT) alltoallvf$(EXEEXT) \ redscatf$(EXEEXT) split_typef$(EXEEXT) nonblockingf$(EXEEXT) \ vw_inplacef$(EXEEXT) red_scat_blockf$(EXEEXT) \ nonblocking_inpf$(EXEEXT) subdir = f77/coll ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) allredint8f_SOURCES = allredint8f.f allredint8f_OBJECTS = allredint8f.$(OBJEXT) allredint8f_LDADD = $(LDADD) allredint8f_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o allredopttf_SOURCES = allredopttf.f allredopttf_OBJECTS = allredopttf.$(OBJEXT) allredopttf_LDADD = $(LDADD) allredopttf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o alltoallvf_SOURCES = alltoallvf.f alltoallvf_OBJECTS = alltoallvf.$(OBJEXT) alltoallvf_LDADD = $(LDADD) alltoallvf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o alltoallwf_SOURCES = alltoallwf.f alltoallwf_OBJECTS = alltoallwf.$(OBJEXT) alltoallwf_LDADD = $(LDADD) alltoallwf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o exscanf_SOURCES = exscanf.f exscanf_OBJECTS = exscanf.$(OBJEXT) exscanf_LDADD = $(LDADD) exscanf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o inplacef_SOURCES = inplacef.f inplacef_OBJECTS = inplacef.$(OBJEXT) inplacef_LDADD = $(LDADD) inplacef_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o nonblocking_inpf_SOURCES = nonblocking_inpf.f nonblocking_inpf_OBJECTS = nonblocking_inpf.$(OBJEXT) nonblocking_inpf_LDADD = $(LDADD) nonblocking_inpf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o nonblockingf_SOURCES = nonblockingf.f nonblockingf_OBJECTS = nonblockingf.$(OBJEXT) nonblockingf_LDADD = $(LDADD) nonblockingf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o red_scat_blockf_SOURCES = red_scat_blockf.f red_scat_blockf_OBJECTS = red_scat_blockf.$(OBJEXT) red_scat_blockf_LDADD = $(LDADD) red_scat_blockf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o redscatf_SOURCES = redscatf.f redscatf_OBJECTS = redscatf.$(OBJEXT) redscatf_LDADD = $(LDADD) redscatf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o reducelocalf_SOURCES = reducelocalf.f reducelocalf_OBJECTS = reducelocalf.$(OBJEXT) reducelocalf_LDADD = $(LDADD) reducelocalf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o split_typef_SOURCES = split_typef.f split_typef_OBJECTS = split_typef.$(OBJEXT) split_typef_LDADD = $(LDADD) split_typef_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o uallreducef_SOURCES = uallreducef.f uallreducef_OBJECTS = uallreducef.$(OBJEXT) uallreducef_LDADD = $(LDADD) uallreducef_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o vw_inplacef_SOURCES = vw_inplacef.f vw_inplacef_OBJECTS = vw_inplacef.$(OBJEXT) vw_inplacef_LDADD = $(LDADD) vw_inplacef_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include F77COMPILE = $(F77) $(AM_FFLAGS) $(FFLAGS) AM_V_F77 = $(am__v_F77_@AM_V@) am__v_F77_ = $(am__v_F77_@AM_DEFAULT_V@) am__v_F77_0 = @echo " F77 " $@; am__v_F77_1 = F77LD = $(F77) F77LINK = $(F77LD) $(AM_FFLAGS) $(FFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_F77LD = $(am__v_F77LD_@AM_V@) am__v_F77LD_ = $(am__v_F77LD_@AM_DEFAULT_V@) am__v_F77LD_0 = @echo " F77LD " $@; am__v_F77LD_1 = SOURCES = allredint8f.f allredopttf.f alltoallvf.f alltoallwf.f \ exscanf.f inplacef.f nonblocking_inpf.f nonblockingf.f \ red_scat_blockf.f redscatf.f reducelocalf.f split_typef.f \ uallreducef.f vw_inplacef.f DIST_SOURCES = allredint8f.f allredopttf.f alltoallvf.f alltoallwf.f \ exscanf.f inplacef.f nonblocking_inpf.f nonblockingf.f \ red_scat_blockf.f redscatf.f reducelocalf.f split_typef.f \ uallreducef.f vw_inplacef.f am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_f77.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F77 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. LDADD = $(top_builddir)/f77/util/mtestf.o CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f" lines AM_DEFAULT_SOURCE_EXT = .f all: all-am .SUFFIXES: .SUFFIXES: .f .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f77.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f77/coll/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f77/coll/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f77.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) allredint8f$(EXEEXT): $(allredint8f_OBJECTS) $(allredint8f_DEPENDENCIES) $(EXTRA_allredint8f_DEPENDENCIES) @rm -f allredint8f$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(allredint8f_OBJECTS) $(allredint8f_LDADD) $(LIBS) allredopttf$(EXEEXT): $(allredopttf_OBJECTS) $(allredopttf_DEPENDENCIES) $(EXTRA_allredopttf_DEPENDENCIES) @rm -f allredopttf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(allredopttf_OBJECTS) $(allredopttf_LDADD) $(LIBS) alltoallvf$(EXEEXT): $(alltoallvf_OBJECTS) $(alltoallvf_DEPENDENCIES) $(EXTRA_alltoallvf_DEPENDENCIES) @rm -f alltoallvf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(alltoallvf_OBJECTS) $(alltoallvf_LDADD) $(LIBS) alltoallwf$(EXEEXT): $(alltoallwf_OBJECTS) $(alltoallwf_DEPENDENCIES) $(EXTRA_alltoallwf_DEPENDENCIES) @rm -f alltoallwf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(alltoallwf_OBJECTS) $(alltoallwf_LDADD) $(LIBS) exscanf$(EXEEXT): $(exscanf_OBJECTS) $(exscanf_DEPENDENCIES) $(EXTRA_exscanf_DEPENDENCIES) @rm -f exscanf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(exscanf_OBJECTS) $(exscanf_LDADD) $(LIBS) inplacef$(EXEEXT): $(inplacef_OBJECTS) $(inplacef_DEPENDENCIES) $(EXTRA_inplacef_DEPENDENCIES) @rm -f inplacef$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(inplacef_OBJECTS) $(inplacef_LDADD) $(LIBS) nonblocking_inpf$(EXEEXT): $(nonblocking_inpf_OBJECTS) $(nonblocking_inpf_DEPENDENCIES) $(EXTRA_nonblocking_inpf_DEPENDENCIES) @rm -f nonblocking_inpf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(nonblocking_inpf_OBJECTS) $(nonblocking_inpf_LDADD) $(LIBS) nonblockingf$(EXEEXT): $(nonblockingf_OBJECTS) $(nonblockingf_DEPENDENCIES) $(EXTRA_nonblockingf_DEPENDENCIES) @rm -f nonblockingf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(nonblockingf_OBJECTS) $(nonblockingf_LDADD) $(LIBS) red_scat_blockf$(EXEEXT): $(red_scat_blockf_OBJECTS) $(red_scat_blockf_DEPENDENCIES) $(EXTRA_red_scat_blockf_DEPENDENCIES) @rm -f red_scat_blockf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(red_scat_blockf_OBJECTS) $(red_scat_blockf_LDADD) $(LIBS) redscatf$(EXEEXT): $(redscatf_OBJECTS) $(redscatf_DEPENDENCIES) $(EXTRA_redscatf_DEPENDENCIES) @rm -f redscatf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(redscatf_OBJECTS) $(redscatf_LDADD) $(LIBS) reducelocalf$(EXEEXT): $(reducelocalf_OBJECTS) $(reducelocalf_DEPENDENCIES) $(EXTRA_reducelocalf_DEPENDENCIES) @rm -f reducelocalf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(reducelocalf_OBJECTS) $(reducelocalf_LDADD) $(LIBS) split_typef$(EXEEXT): $(split_typef_OBJECTS) $(split_typef_DEPENDENCIES) $(EXTRA_split_typef_DEPENDENCIES) @rm -f split_typef$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(split_typef_OBJECTS) $(split_typef_LDADD) $(LIBS) uallreducef$(EXEEXT): $(uallreducef_OBJECTS) $(uallreducef_DEPENDENCIES) $(EXTRA_uallreducef_DEPENDENCIES) @rm -f uallreducef$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(uallreducef_OBJECTS) $(uallreducef_LDADD) $(LIBS) vw_inplacef$(EXEEXT): $(vw_inplacef_OBJECTS) $(vw_inplacef_DEPENDENCIES) $(EXTRA_vw_inplacef_DEPENDENCIES) @rm -f vw_inplacef$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(vw_inplacef_OBJECTS) $(vw_inplacef_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .f.o: $(AM_V_F77)$(F77COMPILE) -c -o $@ $< .f.obj: $(AM_V_F77)$(F77COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f77/util/mtestf.o: $(top_srcdir)/f77/util/mtestf.f (cd $(top_builddir)/f77/util && $(MAKE) mtestf.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f77/coll/alltoallvf.f0000644000175000017500000001103612620254305020224 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2011 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer ierr, errs integer i, ans, size, rank, color, comm, newcomm integer maxSize, displ parameter (maxSize=128) integer scounts(maxSize), sdispls(maxSize), stypes(maxSize) integer rcounts(maxSize), rdispls(maxSize), rtypes(maxSize) integer sbuf(maxSize), rbuf(maxSize) errs = 0 call mtest_init( ierr ) C Get a comm call mpi_comm_dup( MPI_COMM_WORLD, comm, ierr ) call mpi_comm_size( comm, size, ierr ) if (size .gt. maxSize) then call mpi_comm_rank( comm, rank, ierr ) color = 1 if (rank .lt. maxSize) color = 0 call mpi_comm_split( comm, color, rank, newcomm, ierr ) call mpi_comm_free( comm, ierr ) comm = newcomm call mpi_comm_size( comm, size, ierr ) endif call mpi_comm_rank( comm, rank, ierr ) C if (size .le. maxSize) then C Initialize the data. Just use this as an all to all C Use the same test as alltoallwf.c , except displacements are in units of C integers instead of bytes do i=1, size scounts(i) = 1 sdispls(i) = (i-1) stypes(i) = MPI_INTEGER sbuf(i) = rank * size + i rcounts(i) = 1 rdispls(i) = (i-1) rtypes(i) = MPI_INTEGER rbuf(i) = -1 enddo call mpi_alltoallv( sbuf, scounts, sdispls, stypes, & rbuf, rcounts, rdispls, rtypes, comm, ierr ) C C check rbuf(i) = data from the ith location of the ith send buf, or C rbuf(i) = (i-1) * size + i do i=1, size ans = (i-1) * size + rank + 1 if (rbuf(i) .ne. ans) then errs = errs + 1 print *, rank, ' rbuf(', i, ') = ', rbuf(i), & ' expected ', ans endif enddo C C A halo-exchange example - mostly zero counts C do i=1, size scounts(i) = 0 sdispls(i) = 0 stypes(i) = MPI_INTEGER sbuf(i) = -1 rcounts(i) = 0 rdispls(i) = 0 rtypes(i) = MPI_INTEGER rbuf(i) = -1 enddo C C Note that the arrays are 1-origin displ = 0 if (rank .gt. 0) then scounts(1+rank-1) = 1 rcounts(1+rank-1) = 1 sdispls(1+rank-1) = displ rdispls(1+rank-1) = rank - 1 sbuf(1+displ) = rank displ = displ + 1 endif scounts(1+rank) = 1 rcounts(1+rank) = 1 sdispls(1+rank) = displ rdispls(1+rank) = rank sbuf(1+displ) = rank displ = displ + 1 if (rank .lt. size-1) then scounts(1+rank+1) = 1 rcounts(1+rank+1) = 1 sdispls(1+rank+1) = displ rdispls(1+rank+1) = rank+1 sbuf(1+displ) = rank displ = displ + 1 endif call mpi_alltoallv( sbuf, scounts, sdispls, stypes, & rbuf, rcounts, rdispls, rtypes, comm, ierr ) C C Check the neighbor values are correctly moved C if (rank .gt. 0) then if (rbuf(1+rank-1) .ne. rank-1) then errs = errs + 1 print *, rank, ' rbuf(',1+rank-1, ') = ', rbuf(1+rank-1), & 'expected ', rank-1 endif endif if (rbuf(1+rank) .ne. rank) then errs = errs + 1 print *, rank, ' rbuf(', 1+rank, ') = ', rbuf(1+rank), & 'expected ', rank endif if (rank .lt. size-1) then if (rbuf(1+rank+1) .ne. rank+1) then errs = errs + 1 print *, rank, ' rbuf(', 1+rank+1, ') = ',rbuf(1+rank+1), & 'expected ', rank+1 endif endif do i=0,rank-2 if (rbuf(1+i) .ne. -1) then errs = errs + 1 print *, rank, ' rbuf(', 1+i, ') = ', rbuf(1+i), & 'expected -1' endif enddo do i=rank+2,size-1 if (rbuf(1+i) .ne. -1) then errs = errs + 1 print *, rank, ' rbuf(', i, ') = ', rbuf(1+i), & 'expected -1' endif enddo endif call mpi_comm_free( comm, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/coll/uallreducef.f0000644000175000017500000000310712620254305020357 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C C C Test user-defined operations. This tests a simple commutative operation C subroutine uop( cin, cout, count, datatype ) implicit none include 'mpif.h' integer cin(*), cout(*) integer count, datatype integer i if (datatype .ne. MPI_INTEGER) then print *, 'Invalid datatype (',datatype,') passed to user_op()' return endif do i=1, count cout(i) = cin(i) + cout(i) enddo end program main implicit none include 'mpif.h' external uop integer ierr, errs integer count, sumop, vin(65000), vout(65000), i, size integer comm errs = 0 call mtest_init(ierr) call mpi_op_create( uop, .true., sumop, ierr ) comm = MPI_COMM_WORLD call mpi_comm_size( comm, size, ierr ) count = 1 do while (count .lt. 65000) do i=1, count vin(i) = i vout(i) = -1 enddo call mpi_allreduce( vin, vout, count, MPI_INTEGER, sumop, * comm, ierr ) C Check that all results are correct do i=1, count if (vout(i) .ne. i * size) then errs = errs + 1 if (errs .lt. 10) print *, "vout(",i,") = ", vout(i) endif enddo count = count + count enddo call mpi_op_free( sumop, ierr ) call mtest_finalize(errs) call mpi_finalize(ierr) end mpi-testsuite-3.2+dfsg/f77/coll/allredint8f.f0000644000175000017500000000104612620254305020300 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2006 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer*8 inbuf, outbuf integer errs, ierr errs = 0 call mtest_init( ierr ) C C A simple test of allreduce for the optional integer*8 type call mpi_allreduce(inbuf, outbuf, 1, MPI_INTEGER8, MPI_SUM, & MPI_COMM_WORLD, ierr) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/coll/nonblocking_inpf.f0000644000175000017500000001015012620254305021377 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2012 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C C A simple test for Fortran support of the MPI_IN_PLACE value in Alltoall[vw]. C program main implicit none include 'mpif.h' integer SIZEOFINT integer MAX_SIZE parameter (MAX_SIZE=1024) integer rbuf(MAX_SIZE) integer rdispls(MAX_SIZE), rcounts(MAX_SIZE), rtypes(MAX_SIZE) integer comm, rank, size, req integer sumval, ierr, errs integer iexpected, igot integer i, j errs = 0 call mtest_init( ierr ) comm = MPI_COMM_WORLD call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) call mpi_type_size( MPI_INTEGER, SIZEOFINT, ierr ) do i=1,MAX_SIZE rbuf(i) = -1 enddo do i=1,size rbuf(i) = (i-1) * size + rank enddo call mpi_ialltoall( MPI_IN_PLACE, -1, MPI_DATATYPE_NULL, . rbuf, 1, MPI_INTEGER, comm, req, ierr ) call mpi_wait( req, MPI_STATUS_IGNORE, ierr ) do i=1,size if (rbuf(i) .ne. (rank*size + i - 1)) then errs = errs + 1 print *, '[', rank, ']: IALLTOALL rbuf(', i, ') = ', . rbuf(i), ', should be', rank * size + i - 1 endif enddo do i=1,MAX_SIZE rbuf(i) = -1 enddo do i=1,size rcounts(i) = i-1 + rank rdispls(i) = (i-1) * (2*size) do j=0,rcounts(i)-1 rbuf(rdispls(i)+j+1) = 100 * rank + 10 * (i-1) + j enddo enddo call mpi_ialltoallv( MPI_IN_PLACE, 0, 0, MPI_DATATYPE_NULL, . rbuf, rcounts, rdispls, MPI_INTEGER, . comm, req, ierr ) call mpi_wait( req, MPI_STATUS_IGNORE, ierr ) do i=1,size do j=0,rcounts(i)-1 iexpected = 100 * (i-1) + 10 * rank + j igot = rbuf(rdispls(i)+j+1) if ( igot .ne. iexpected ) then errs = errs + 1 print *, '[', rank, ']: IALLTOALLV got ', igot, . ',but expected ', iexpected, . ' for block=', i-1, ' element=', j endif enddo enddo do i=1,MAX_SIZE rbuf(i) = -1 enddo do i=1,size rcounts(i) = i-1 + rank rdispls(i) = (i-1) * (2*size) * SIZEOFINT rtypes(i) = MPI_INTEGER do j=0,rcounts(i)-1 rbuf(rdispls(i)/SIZEOFINT+j+1) = 100 * rank . + 10 * (i-1) + j enddo enddo call mpi_ialltoallw( MPI_IN_PLACE, 0, 0, MPI_DATATYPE_NULL, . rbuf, rcounts, rdispls, rtypes, . comm, req, ierr ) call mpi_wait( req, MPI_STATUS_IGNORE, ierr ) do i=1,size do j=0,rcounts(i)-1 iexpected = 100 * (i-1) + 10 * rank + j igot = rbuf(rdispls(i)/SIZEOFINT+j+1) if ( igot .ne. iexpected ) then errs = errs + 1 print *, '[', rank, ']: IALLTOALLW got ', igot, . ',but expected ', iexpected, . ' for block=', i-1, ' element=', j endif enddo enddo do i=1,MAX_SIZE rbuf(i) = -1 enddo do i = 1, size rbuf(i) = rank + (i-1) enddo call mpi_ireduce_scatter_block( MPI_IN_PLACE, rbuf, 1, . MPI_INTEGER, MPI_SUM, comm, . req, ierr ) call mpi_wait( req, MPI_STATUS_IGNORE, ierr ) sumval = size * rank + ((size-1) * size)/2 if ( rbuf(1) .ne. sumval ) then errs = errs + 1 print *, 'Ireduce_scatter_block does not get expected value.' print *, '[', rank, ']:', 'Got ', rbuf(1), ' but expected ', . sumval, '.' endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/coll/split_typef.f0000644000175000017500000000247212620254305020432 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2012 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer ierr, errs integer i, ans, size, rank, color, comm, newcomm integer maxSize, displ parameter (maxSize=128) integer scounts(maxSize), sdispls(maxSize), stypes(maxSize) integer rcounts(maxSize), rdispls(maxSize), rtypes(maxSize) integer sbuf(maxSize), rbuf(maxSize) errs = 0 call mtest_init( ierr ) call mpi_comm_dup( MPI_COMM_WORLD, comm, ierr ) call mpi_comm_split_type( comm, MPI_COMM_TYPE_SHARED, rank, & MPI_INFO_NULL, newcomm, ierr ) call mpi_comm_rank( newcomm, rank, ierr ) call mpi_comm_size( newcomm, size, ierr ) do i=1, size scounts(i) = 1 sdispls(i) = (i-1) stypes(i) = MPI_INTEGER sbuf(i) = rank * size + i rcounts(i) = 1 rdispls(i) = (i-1) rtypes(i) = MPI_INTEGER rbuf(i) = -1 enddo call mpi_alltoallv( sbuf, scounts, sdispls, stypes, & rbuf, rcounts, rdispls, rtypes, newcomm, ierr ) call mpi_comm_free( newcomm, ierr ) call mpi_comm_free( comm, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/coll/vw_inplacef.f0000644000175000017500000000674312620254305020372 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2012 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C C A simple test for Fortran support of the MPI_IN_PLACE value in Alltoall[vw]. C program main implicit none include 'mpif.h' integer SIZEOFINT integer MAX_SIZE parameter (MAX_SIZE=1024) integer rbuf(MAX_SIZE) integer rdispls(MAX_SIZE), rcounts(MAX_SIZE), rtypes(MAX_SIZE) integer ierr, errs integer comm, root integer rank, size integer iexpected, igot integer i, j errs = 0 call mtest_init( ierr ) comm = MPI_COMM_WORLD call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) call mpi_type_size( MPI_INTEGER, SIZEOFINT, ierr ) if (size .gt. MAX_SIZE) then print *, ' At most ', MAX_SIZE, ' processes allowed' call mpi_abort( MPI_COMM_WORLD, 1, ierr ) endif C do i=1,MAX_SIZE rbuf(i) = -1 enddo do i=1,size rbuf(i) = (i-1) * size + rank enddo call mpi_alltoall( MPI_IN_PLACE, -1, MPI_DATATYPE_NULL, $ rbuf, 1, MPI_INTEGER, comm, ierr ) do i=1,size if (rbuf(i) .ne. (rank*size + i - 1)) then errs = errs + 1 print *, '[', rank, '] rbuf(', i, ') = ', rbuf(i), $ ', should be', rank * size + i - 1 endif enddo do i=1,MAX_SIZE rbuf(i) = -1 enddo do i=1,size rcounts(i) = (i-1) + rank rdispls(i) = (i-1) * (2*size) do j=0,rcounts(i)-1 rbuf(rdispls(i)+j+1) = 100 * rank + 10 * (i-1) + j enddo enddo call mpi_alltoallv( MPI_IN_PLACE, 0, 0, MPI_DATATYPE_NULL, $ rbuf, rcounts, rdispls, MPI_INTEGER, $ comm, ierr ) do i=1,size do j=0,rcounts(i)-1 iexpected = 100 * (i-1) + 10 * rank + j igot = rbuf(rdispls(i)+j+1) if ( igot .ne. iexpected ) then errs = errs + 1 print *, '[', rank, '] ALLTOALLV got ', igot, $ ',but expected ', iexpected, $ ' for block=', i-1, ' element=', j endif enddo enddo do i=1,MAX_SIZE rbuf(i) = -1 enddo C Alltoallw's displs[] are in bytes not in type extents. do i=1,size rcounts(i) = (i-1) + rank rdispls(i) = (i-1) * (2*size) * SIZEOFINT rtypes(i) = MPI_INTEGER do j=0,rcounts(i)-1 rbuf(rdispls(i)/SIZEOFINT+j+1) = 100 * rank $ + 10 * (i-1) + j enddo enddo call mpi_alltoallw( MPI_IN_PLACE, 0, 0, MPI_DATATYPE_NULL, $ rbuf, rcounts, rdispls, rtypes, $ comm, ierr ) do i=1,size do j=0,rcounts(i)-1 iexpected = 100 * (i-1) + 10 * rank + j igot = rbuf(rdispls(i)/SIZEOFINT+j+1) if ( igot .ne. iexpected ) then errs = errs + 1 print *, '[', rank, '] ALLTOALLW got ', igot, $ ',but expected ', iexpected, $ ' for block=', i-1, ' element=', j endif enddo enddo call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/coll/redscatf.f0000644000175000017500000000433712620254305017665 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2011 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C subroutine uop( cin, cout, count, datatype ) implicit none include 'mpif.h' integer cin(*), cout(*) integer count, datatype integer i if (datatype .ne. MPI_INTEGER) then write(6,*) 'Invalid datatype ',datatype,' passed to user_op()' return endif do i=1, count cout(i) = cin(i) + cout(i) enddo end C C Test of reduce scatter. C C Each processor contributes its rank + the index to the reduction, C then receives the ith sum C C Can be called with any number of processors. C program main implicit none include 'mpif.h' integer errs, ierr, toterr integer maxsize parameter (maxsize=1024) integer sendbuf(maxsize), recvbuf, recvcounts(maxsize) integer size, rank, i, sumval integer comm, sumop external uop errs = 0 call mtest_init( ierr ) comm = MPI_COMM_WORLD call mpi_comm_size( comm, size, ierr ) call mpi_comm_rank( comm, rank, ierr ) if (size .gt. maxsize) then endif do i=1, size sendbuf(i) = rank + i - 1 recvcounts(i) = 1 enddo call mpi_reduce_scatter( sendbuf, recvbuf, recvcounts, & MPI_INTEGER, MPI_SUM, comm, ierr ) sumval = size * rank + ((size - 1) * size)/2 C recvbuf should be size * (rank + i) if (recvbuf .ne. sumval) then errs = errs + 1 print *, "Did not get expected value for reduce scatter" print *, rank, " Got ", recvbuf, " expected ", sumval endif call mpi_op_create( uop, .true., sumop, ierr ) call mpi_reduce_scatter( sendbuf, recvbuf, recvcounts, & MPI_INTEGER, sumop, comm, ierr ) sumval = size * rank + ((size - 1) * size)/2 C recvbuf should be size * (rank + i) if (recvbuf .ne. sumval) then errs = errs + 1 print *, "sumop: Did not get expected value for reduce scatter" print *, rank, " Got ", recvbuf, " expected ", sumval endif call mpi_op_free( sumop, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/coll/Makefile.am0000644000175000017500000000073612620254305017756 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f77.mtest EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f" lines AM_DEFAULT_SOURCE_EXT = .f noinst_PROGRAMS = uallreducef exscanf alltoallwf inplacef allredint8f allredopttf reducelocalf alltoallvf redscatf split_typef nonblockingf vw_inplacef red_scat_blockf nonblocking_inpf mpi-testsuite-3.2+dfsg/f77/coll/allredopttf.f0000644000175000017500000000261212620254305020404 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2007 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer*8 inbuf, outbuf double complex zinbuf, zoutbuf integer wsize integer errs, ierr errs = 0 call mtest_init( ierr ) call mpi_comm_size( MPI_COMM_WORLD, wsize, ierr ) C C A simple test of allreduce for the optional integer*8 type inbuf = 1 outbuf = 0 call mpi_allreduce(inbuf, outbuf, 1, MPI_INTEGER8, MPI_SUM, & MPI_COMM_WORLD, ierr) if (outbuf .ne. wsize ) then errs = errs + 1 print *, "result wrong for sum with integer*8 = got ", outbuf, & " but should have ", wsize endif zinbuf = (1,1) zoutbuf = (0,0) call mpi_allreduce(zinbuf, zoutbuf, 1, MPI_DOUBLE_COMPLEX, & MPI_SUM, MPI_COMM_WORLD, ierr) if (dreal(zoutbuf) .ne. wsize ) then errs = errs + 1 print *, "result wrong for sum with double complex = got ", & outbuf, " but should have ", wsize endif if (dimag(zoutbuf) .ne. wsize ) then errs = errs + 1 print *, "result wrong for sum with double complex = got ", & outbuf, " but should have ", wsize endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/coll/reducelocalf.f0000644000175000017500000000455712620254305020526 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2009 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C C C Test Fortran MPI_Reduce_local with MPI_OP_SUM and with user-defined operation. C subroutine user_op( invec, outvec, count, datatype ) implicit none include 'mpif.h' integer invec(*), outvec(*) integer count, datatype integer ii if (datatype .ne. MPI_INTEGER) then write(6,*) 'Invalid datatype passed to user_op()' return endif do ii=1, count outvec(ii) = invec(ii) * 2 + outvec(ii) enddo end program main implicit none include 'mpif.h' integer max_buf_size parameter (max_buf_size=65000) integer vin(max_buf_size), vout(max_buf_size) external user_op integer ierr, errs integer count, myop integer ii errs = 0 call mtest_init(ierr) count = 0 do while (count .le. max_buf_size ) do ii = 1,count vin(ii) = ii vout(ii) = ii enddo call mpi_reduce_local( vin, vout, count, & MPI_INTEGER, MPI_SUM, ierr ) C Check if the result is correct do ii = 1,count if ( vin(ii) .ne. ii ) then errs = errs + 1 endif if ( vout(ii) .ne. 2*ii ) then errs = errs + 1 endif enddo if ( count .gt. 0 ) then count = count + count else count = 1 endif enddo call mpi_op_create( user_op, .false., myop, ierr ) count = 0 do while (count .le. max_buf_size) do ii = 1, count vin(ii) = ii vout(ii) = ii enddo call mpi_reduce_local( vin, vout, count, & MPI_INTEGER, myop, ierr ) C Check if the result is correct do ii = 1, count if ( vin(ii) .ne. ii ) then errs = errs + 1 endif if ( vout(ii) .ne. 3*ii ) then errs = errs + 1 endif enddo if ( count .gt. 0 ) then count = count + count else count = 1 endif enddo call mpi_op_free( myop, ierr ) call mtest_finalize(errs) call mpi_finalize(ierr) end mpi-testsuite-3.2+dfsg/f77/coll/inplacef.f0000644000175000017500000000511512620254305017646 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2005 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C C This is a simple test that Fortran support the MPI_IN_PLACE value C program main implicit none include 'mpif.h' integer ierr, errs integer comm, root integer rank, size integer i integer MAX_SIZE parameter (MAX_SIZE=1024) integer rbuf(MAX_SIZE), rdispls(MAX_SIZE), rcount(MAX_SIZE), $ sbuf(MAX_SIZE) errs = 0 call mtest_init( ierr ) comm = MPI_COMM_WORLD call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) root = 0 C Gather with inplace do i=1,size rbuf(i) = - i enddo rbuf(1+root) = root if (rank .eq. root) then call mpi_gather( MPI_IN_PLACE, 1, MPI_INTEGER, rbuf, 1, $ MPI_INTEGER, root, comm, ierr ) do i=1,size if (rbuf(i) .ne. i-1) then errs = errs + 1 print *, '[',rank,'] rbuf(', i, ') = ', rbuf(i), $ ' in gather' endif enddo else call mpi_gather( rank, 1, MPI_INTEGER, rbuf, 1, MPI_INTEGER, $ root, comm, ierr ) endif C Gatherv with inplace do i=1,size rbuf(i) = - i rcount(i) = 1 rdispls(i) = i-1 enddo rbuf(1+root) = root if (rank .eq. root) then call mpi_gatherv( MPI_IN_PLACE, 1, MPI_INTEGER, rbuf, rcount, $ rdispls, MPI_INTEGER, root, comm, ierr ) do i=1,size if (rbuf(i) .ne. i-1) then errs = errs + 1 print *, '[', rank, '] rbuf(', i, ') = ', rbuf(i), $ ' in gatherv' endif enddo else call mpi_gatherv( rank, 1, MPI_INTEGER, rbuf, rcount, rdispls, $ MPI_INTEGER, root, comm, ierr ) endif C Scatter with inplace do i=1,size sbuf(i) = i enddo rbuf(1) = -1 if (rank .eq. root) then call mpi_scatter( sbuf, 1, MPI_INTEGER, MPI_IN_PLACE, 1, $ MPI_INTEGER, root, comm, ierr ) else call mpi_scatter( sbuf, 1, MPI_INTEGER, rbuf, 1, $ MPI_INTEGER, root, comm, ierr ) if (rbuf(1) .ne. rank+1) then errs = errs + 1 print *, '[', rank, '] rbuf = ', rbuf(1), $ ' in scatter' endif endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/coll/nonblockingf.f0000644000175000017500000000645512620254305020546 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2012 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer NUM_INTS parameter (NUM_INTS=2) integer maxSize parameter (maxSize=128) integer scounts(maxSize), sdispls(maxSize) integer rcounts(maxSize), rdispls(maxSize) integer types(maxSize) integer sbuf(maxSize), rbuf(maxSize) integer comm, size, rank, req integer ierr, errs integer ii, ans errs = 0 call mtest_init(ierr) comm = MPI_COMM_WORLD call MPI_Comm_size(comm, size, ierr) call MPI_Comm_rank(comm, rank, ierr) C do ii = 1, size sbuf(2*ii-1) = ii sbuf(2*ii) = ii sbuf(2*ii-1) = ii sbuf(2*ii) = ii scounts(ii) = NUM_INTS rcounts(ii) = NUM_INTS sdispls(ii) = (ii-1) * NUM_INTS rdispls(ii) = (ii-1) * NUM_INTS types(ii) = MPI_INTEGER enddo call MPI_Ibarrier(comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call MPI_Ibcast(sbuf, NUM_INTS, MPI_INTEGER, 0, comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call MPI_Igather(sbuf, NUM_INTS, MPI_INTEGER, . rbuf, NUM_INTS, MPI_INTEGER, . 0, comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call MPI_Igatherv(sbuf, NUM_INTS, MPI_INTEGER, . rbuf, rcounts, rdispls, MPI_INTEGER, . 0, comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call MPI_Ialltoall(sbuf, NUM_INTS, MPI_INTEGER, . rbuf, NUM_INTS, MPI_INTEGER, . comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call MPI_Ialltoallv(sbuf, scounts, sdispls, MPI_INTEGER, . rbuf, rcounts, rdispls, MPI_INTEGER, . comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call MPI_Ialltoallw(sbuf, scounts, sdispls, types, . rbuf, rcounts, rdispls, types, . comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call MPI_Ireduce(sbuf, rbuf, NUM_INTS, MPI_INTEGER, . MPI_SUM, 0, comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call MPI_Iallreduce(sbuf, rbuf, NUM_INTS, MPI_INTEGER, . MPI_SUM, comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call MPI_Ireduce_scatter(sbuf, rbuf, rcounts, MPI_INTEGER, . MPI_SUM, comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call MPI_Ireduce_scatter_block(sbuf, rbuf, NUM_INTS, MPI_INTEGER, . MPI_SUM, comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call MPI_Iscan(sbuf, rbuf, NUM_INTS, MPI_INTEGER, . MPI_SUM, comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call MPI_Iexscan(sbuf, rbuf, NUM_INTS, MPI_INTEGER, . MPI_SUM, comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call mtest_finalize( errs ) call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/coll/alltoallwf.f0000644000175000017500000000412612620254305020227 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer ierr, errs integer i, intsize, ans, size, rank, color, comm, newcomm integer maxSize parameter (maxSize=32) integer scounts(maxSize), sdispls(maxSize), stypes(maxSize) integer rcounts(maxSize), rdispls(maxSize), rtypes(maxSize) integer sbuf(maxSize), rbuf(maxSize) errs = 0 call mtest_init( ierr ) call mpi_type_size( MPI_INTEGER, intsize, ierr ) C Get a comm call mpi_comm_dup( MPI_COMM_WORLD, comm, ierr ) call mpi_comm_size( comm, size, ierr ) if (size .gt. maxSize) then call mpi_comm_rank( comm, rank, ierr ) color = 1 if (rank .lt. maxSize) color = 0 call mpi_comm_split( comm, color, rank, newcomm, ierr ) call mpi_comm_free( comm, ierr ) comm = newcomm call mpi_comm_size( comm, size, ierr ) endif call mpi_comm_rank( comm, rank, ierr ) if (size .le. maxSize) then C Initialize the data. Just use this as an all to all do i=1, size scounts(i) = 1 sdispls(i) = (i-1)*intsize stypes(i) = MPI_INTEGER sbuf(i) = rank * size + i rcounts(i) = 1 rdispls(i) = (i-1)*intsize rtypes(i) = MPI_INTEGER rbuf(i) = -1 enddo call mpi_alltoallw( sbuf, scounts, sdispls, stypes, & rbuf, rcounts, rdispls, rtypes, comm, ierr ) C C check rbuf(i) = data from the ith location of the ith send buf, or C rbuf(i) = (i-1) * size + i do i=1, size ans = (i-1) * size + rank + 1 if (rbuf(i) .ne. ans) then errs = errs + 1 print *, rank, ' rbuf(', i, ') = ', rbuf(i), & ' expected ', ans endif enddo endif call mpi_comm_free( comm, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/attr/0000755000175000017500000000000012621010234015725 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f77/attr/typeattr3f.f0000644000175000017500000000521112620254305020210 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2004 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C C This tests the null copy function (returns flag false; thus the C attribute should not be propagated to a dup'ed communicator C This is much like the test in typeattr2f C program main implicit none include 'mpif.h' integer errs, ierr include 'attraints.h' integer type1, type2 integer keyval logical flag C C The only difference between the MPI-2 and MPI-1 attribute caching C routines in Fortran is that the take an address-sized integer C instead of a simple integer. These still are not pointers, C so the values are still just integers. C errs = 0 call mtest_init( ierr ) type1 = MPI_INTEGER C extrastate = 1001 call mpi_type_create_keyval( MPI_TYPE_NULL_COPY_FN, & MPI_TYPE_NULL_DELETE_FN, keyval, & extrastate, ierr ) flag = .true. call mpi_type_get_attr( type1, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' get attr returned true when no attr set' endif C Test the null copy function valin = 5001 call mpi_type_set_attr( type1, keyval, valin, ierr ) call mpi_type_dup( type1, type2, ierr ) C Because we set NULL_COPY_FN, the attribute should not C appear on the dup'ed communicator flag = .false. call mpi_type_get_attr( type1, keyval, valout, flag, ierr ) if (valout .ne. 5001) then errs = errs + 1 print *, 'Unexpected output value in type ', valout endif flag = .true. call mpi_type_get_attr( type2, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' Attribute incorrectly present on dup datatype' endif C Test the delete function call mpi_type_free( type2, ierr ) C C Test the attr delete function call mpi_type_dup( type1, type2, ierr ) valin = 6001 extrastate = 1001 call mpi_type_set_attr( type2, keyval, valin, ierr ) call mpi_type_delete_attr( type2, keyval, ierr ) flag = .true. call mpi_type_get_attr( type2, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' Delete_attr did not delete attribute' endif call mpi_type_free( type2, ierr ) C ierr = -1 call mpi_type_free_keyval( keyval, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call mtestprinterror( ierr ) endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/attr/baseattrf.f0000644000175000017500000000332612620254305020063 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer value, commsize logical flag integer ierr, errs errs = 0 call mpi_init( ierr ) call mpi_comm_size( MPI_COMM_WORLD, commsize, ierr ) call mpi_attr_get( MPI_COMM_WORLD, MPI_UNIVERSE_SIZE, value, flag $ , ierr) ! MPI_UNIVERSE_SIZE need not be set if (flag) then if (value .lt. commsize) then print *, "MPI_UNIVERSE_SIZE is ", value, " less than world " $ , commsize errs = errs + 1 endif endif call mpi_attr_get( MPI_COMM_WORLD, MPI_LASTUSEDCODE, value, flag, $ ierr ) ! Last used code must be defined and >= MPI_ERR_LASTCODE if (flag) then if (value .lt. MPI_ERR_LASTCODE) then errs = errs + 1 print *, "MPI_LASTUSEDCODE points to an integer $ (", value, ") smaller than MPI_ERR_LASTCODE (", $ MPI_ERR_LASTCODE, ")" endif else errs = errs + 1 print *, "MPI_LASTUSECODE is not defined" endif call mpi_attr_get( MPI_COMM_WORLD, MPI_APPNUM, value, flag, ierr ) ! appnum need not be set if (flag) then if (value .lt. 0) then errs = errs + 1 print *, "MPI_APPNUM is defined as ", value, $ " but must be nonnegative" endif endif ! Check for errors if (errs .eq. 0) then print *, " No Errors" else print *, " Found ", errs, " errors" endif call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/attr/commattrf.f0000644000175000017500000001125612620254305020105 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer errs, ierr include 'attraints.h' integer comm1, comm2 integer curcount, keyval logical flag external mycopyfn, mydelfn integer callcount, delcount common /myattr/ callcount, delcount C C The only difference between the MPI-2 and MPI-1 attribute caching C routines in Fortran is that the take an address-sized integer C instead of a simple integer. These still are not pointers, C so the values are still just integers. C errs = 0 callcount = 0 delcount = 0 call mtest_init( ierr ) call mpi_comm_dup( MPI_COMM_WORLD, comm1, ierr ) C extrastate = 1001 call mpi_comm_create_keyval( mycopyfn, mydelfn, keyval, & extrastate, ierr ) flag = .true. call mpi_comm_get_attr( comm1, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' get attr returned true when no attr set' endif valin = 2003 call mpi_comm_set_attr( comm1, keyval, valin, ierr ) flag = .false. valout = -1 call mpi_comm_get_attr( comm1, keyval, valout, flag, ierr ) if (valout .ne. 2003) then errs = errs + 1 print *, 'Unexpected value (should be 2003)', valout, & ' from attr' endif valin = 2001 call mpi_comm_set_attr( comm1, keyval, valin, ierr ) flag = .false. valout = -1 call mpi_comm_get_attr( comm1, keyval, valout, flag, ierr ) if (valout .ne. 2001) then errs = errs + 1 print *, 'Unexpected value (should be 2001)', valout, & ' from attr' endif C C Test the copy function valin = 5001 call mpi_comm_set_attr( comm1, keyval, valin, ierr ) call mpi_comm_dup( comm1, comm2, ierr ) flag = .false. call mpi_comm_get_attr( comm1, keyval, valout, flag, ierr ) if (valout .ne. 5001) then errs = errs + 1 print *, 'Unexpected output value in comm ', valout endif flag = .false. call mpi_comm_get_attr( comm2, keyval, valout, flag, ierr ) if (valout .ne. 5003) then errs = errs + 1 print *, 'Unexpected output value in comm2 ', valout endif C Test the delete function curcount = delcount call mpi_comm_free( comm2, ierr ) if (delcount .ne. curcount + 1) then errs = errs + 1 print *, ' did not get expected value of delcount ', & delcount, curcount + 1 endif C C Test the attr delete function call mpi_comm_dup( comm1, comm2, ierr ) valin = 6001 extrastate = 1001 call mpi_comm_set_attr( comm2, keyval, valin, ierr ) delcount = 0 call mpi_comm_delete_attr( comm2, keyval, ierr ) if (delcount .ne. 1) then errs = errs + 1 print *, ' Delete_attr did not call delete function' endif flag = .true. call mpi_comm_get_attr( comm2, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' Delete_attr did not delete attribute' endif call mpi_comm_free( comm2, ierr ) C ierr = -1 call mpi_comm_free_keyval( keyval, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call mtestprinterror( ierr ) endif call mpi_comm_free( comm1, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end C subroutine mycopyfn( oldcomm, keyval, extrastate, valin, valout, & flag, ierr ) implicit none include 'mpif.h' integer oldcomm, keyval, ierr include 'attraints.h' logical flag integer callcount, delcount common /myattr/ callcount, delcount C increment the attribute by 2 valout = valin + 2 callcount = callcount + 1 if (extrastate .eq. 1001) then flag = .true. ierr = MPI_SUCCESS else print *, ' Unexpected value of extrastate = ', extrastate flag = .false. ierr = MPI_ERR_OTHER endif end C subroutine mydelfn( comm, keyval, val, extrastate, ierr ) implicit none include 'mpif.h' integer comm, keyval, ierr include 'attraints.h' integer callcount, delcount common /myattr/ callcount, delcount delcount = delcount + 1 if (extrastate .eq. 1001) then ierr = MPI_SUCCESS else print *, ' Unexpected value of extrastate = ', extrastate ierr = MPI_ERR_OTHER endif end mpi-testsuite-3.2+dfsg/f77/attr/testlist0000644000175000017500000000017612620254305017537 0ustar mbanckmbanckattrmpi1f 1 baseattrf 1 baseattr2f 1 commattrf 1 commattr2f 1 commattr3f 1 commattr4f 1 typeattrf 1 typeattr2f 1 typeattr3f 1 mpi-testsuite-3.2+dfsg/f77/attr/Makefile.in0000644000175000017500000005401512621010234017777 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = attrmpi1f$(EXEEXT) baseattrf$(EXEEXT) \ baseattr2f$(EXEEXT) commattrf$(EXEEXT) commattr2f$(EXEEXT) \ commattr3f$(EXEEXT) commattr4f$(EXEEXT) typeattrf$(EXEEXT) \ typeattr2f$(EXEEXT) typeattr3f$(EXEEXT) subdir = f77/attr ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = attraints.h CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) attrmpi1f_SOURCES = attrmpi1f.f attrmpi1f_OBJECTS = attrmpi1f.$(OBJEXT) attrmpi1f_LDADD = $(LDADD) attrmpi1f_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o baseattr2f_SOURCES = baseattr2f.f baseattr2f_OBJECTS = baseattr2f.$(OBJEXT) baseattr2f_LDADD = $(LDADD) baseattr2f_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o baseattrf_SOURCES = baseattrf.f baseattrf_OBJECTS = baseattrf.$(OBJEXT) baseattrf_LDADD = $(LDADD) baseattrf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o commattr2f_SOURCES = commattr2f.f commattr2f_OBJECTS = commattr2f.$(OBJEXT) commattr2f_LDADD = $(LDADD) commattr2f_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o commattr3f_SOURCES = commattr3f.f commattr3f_OBJECTS = commattr3f.$(OBJEXT) commattr3f_LDADD = $(LDADD) commattr3f_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o commattr4f_SOURCES = commattr4f.f commattr4f_OBJECTS = commattr4f.$(OBJEXT) commattr4f_LDADD = $(LDADD) commattr4f_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o commattrf_SOURCES = commattrf.f commattrf_OBJECTS = commattrf.$(OBJEXT) commattrf_LDADD = $(LDADD) commattrf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o typeattr2f_SOURCES = typeattr2f.f typeattr2f_OBJECTS = typeattr2f.$(OBJEXT) typeattr2f_LDADD = $(LDADD) typeattr2f_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o typeattr3f_SOURCES = typeattr3f.f typeattr3f_OBJECTS = typeattr3f.$(OBJEXT) typeattr3f_LDADD = $(LDADD) typeattr3f_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o typeattrf_SOURCES = typeattrf.f typeattrf_OBJECTS = typeattrf.$(OBJEXT) typeattrf_LDADD = $(LDADD) typeattrf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include F77COMPILE = $(F77) $(AM_FFLAGS) $(FFLAGS) AM_V_F77 = $(am__v_F77_@AM_V@) am__v_F77_ = $(am__v_F77_@AM_DEFAULT_V@) am__v_F77_0 = @echo " F77 " $@; am__v_F77_1 = F77LD = $(F77) F77LINK = $(F77LD) $(AM_FFLAGS) $(FFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_F77LD = $(am__v_F77LD_@AM_V@) am__v_F77LD_ = $(am__v_F77LD_@AM_DEFAULT_V@) am__v_F77LD_0 = @echo " F77LD " $@; am__v_F77LD_1 = SOURCES = attrmpi1f.f baseattr2f.f baseattrf.f commattr2f.f \ commattr3f.f commattr4f.f commattrf.f typeattr2f.f \ typeattr3f.f typeattrf.f DIST_SOURCES = attrmpi1f.f baseattr2f.f baseattrf.f commattr2f.f \ commattr3f.f commattr4f.f commattrf.f typeattr2f.f \ typeattr3f.f typeattrf.f am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/attraints.h.in \ $(top_srcdir)/Makefile_f77.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F77 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. LDADD = $(top_builddir)/f77/util/mtestf.o CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f" lines AM_DEFAULT_SOURCE_EXT = .f all: all-am .SUFFIXES: .SUFFIXES: .f .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f77.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f77/attr/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f77/attr/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f77.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): attraints.h: $(top_builddir)/config.status $(srcdir)/attraints.h.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) attrmpi1f$(EXEEXT): $(attrmpi1f_OBJECTS) $(attrmpi1f_DEPENDENCIES) $(EXTRA_attrmpi1f_DEPENDENCIES) @rm -f attrmpi1f$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(attrmpi1f_OBJECTS) $(attrmpi1f_LDADD) $(LIBS) baseattr2f$(EXEEXT): $(baseattr2f_OBJECTS) $(baseattr2f_DEPENDENCIES) $(EXTRA_baseattr2f_DEPENDENCIES) @rm -f baseattr2f$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(baseattr2f_OBJECTS) $(baseattr2f_LDADD) $(LIBS) baseattrf$(EXEEXT): $(baseattrf_OBJECTS) $(baseattrf_DEPENDENCIES) $(EXTRA_baseattrf_DEPENDENCIES) @rm -f baseattrf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(baseattrf_OBJECTS) $(baseattrf_LDADD) $(LIBS) commattr2f$(EXEEXT): $(commattr2f_OBJECTS) $(commattr2f_DEPENDENCIES) $(EXTRA_commattr2f_DEPENDENCIES) @rm -f commattr2f$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(commattr2f_OBJECTS) $(commattr2f_LDADD) $(LIBS) commattr3f$(EXEEXT): $(commattr3f_OBJECTS) $(commattr3f_DEPENDENCIES) $(EXTRA_commattr3f_DEPENDENCIES) @rm -f commattr3f$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(commattr3f_OBJECTS) $(commattr3f_LDADD) $(LIBS) commattr4f$(EXEEXT): $(commattr4f_OBJECTS) $(commattr4f_DEPENDENCIES) $(EXTRA_commattr4f_DEPENDENCIES) @rm -f commattr4f$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(commattr4f_OBJECTS) $(commattr4f_LDADD) $(LIBS) commattrf$(EXEEXT): $(commattrf_OBJECTS) $(commattrf_DEPENDENCIES) $(EXTRA_commattrf_DEPENDENCIES) @rm -f commattrf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(commattrf_OBJECTS) $(commattrf_LDADD) $(LIBS) typeattr2f$(EXEEXT): $(typeattr2f_OBJECTS) $(typeattr2f_DEPENDENCIES) $(EXTRA_typeattr2f_DEPENDENCIES) @rm -f typeattr2f$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(typeattr2f_OBJECTS) $(typeattr2f_LDADD) $(LIBS) typeattr3f$(EXEEXT): $(typeattr3f_OBJECTS) $(typeattr3f_DEPENDENCIES) $(EXTRA_typeattr3f_DEPENDENCIES) @rm -f typeattr3f$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(typeattr3f_OBJECTS) $(typeattr3f_LDADD) $(LIBS) typeattrf$(EXEEXT): $(typeattrf_OBJECTS) $(typeattrf_DEPENDENCIES) $(EXTRA_typeattrf_DEPENDENCIES) @rm -f typeattrf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(typeattrf_OBJECTS) $(typeattrf_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .f.o: $(AM_V_F77)$(F77COMPILE) -c -o $@ $< .f.obj: $(AM_V_F77)$(F77COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f77/util/mtestf.o: $(top_srcdir)/f77/util/mtestf.f (cd $(top_builddir)/f77/util && $(MAKE) mtestf.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # ensure that "{comm,type}attr*f.o" will be rebuilt when attraints.h is updated commattrf.$(OBJEXT): attraints.h commattr2f.$(OBJEXT): attraints.h commattr3f.$(OBJEXT): attraints.h typeattrf.$(OBJEXT): attraints.h typeattr2f.$(OBJEXT): attraints.h typeattr3f.$(OBJEXT): attraints.h # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f77/attr/commattr2f.f0000644000175000017500000000633512620254305020171 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C This is a modified version of commattrf.f that uses two of the C default functions C program main implicit none include 'mpif.h' integer errs, ierr include 'attraints.h' integer comm1, comm2 integer keyval logical flag C C The only difference between the MPI-2 and MPI-1 attribute caching C routines in Fortran is that the take an address-sized integer C instead of a simple integer. These still are not pointers, C so the values are still just integers. C errs = 0 call mtest_init( ierr ) call mpi_comm_dup( MPI_COMM_WORLD, comm1, ierr ) C extrastate = 1001 call mpi_comm_create_keyval( MPI_COMM_DUP_FN, & MPI_COMM_NULL_DELETE_FN, keyval, & extrastate, ierr ) flag = .true. call mpi_comm_get_attr( comm1, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' get attr returned true when no attr set' endif valin = 2003 call mpi_comm_set_attr( comm1, keyval, valin, ierr ) flag = .false. valout = -1 call mpi_comm_get_attr( comm1, keyval, valout, flag, ierr ) if (valout .ne. 2003) then errs = errs + 1 print *, 'Unexpected value (should be 2003)', valout, & ' from attr' endif valin = 2001 call mpi_comm_set_attr( comm1, keyval, valin, ierr ) flag = .false. valout = -1 call mpi_comm_get_attr( comm1, keyval, valout, flag, ierr ) if (valout .ne. 2001) then errs = errs + 1 print *, 'Unexpected value (should be 2001)', valout, & ' from attr' endif C C Test the copy function valin = 5001 call mpi_comm_set_attr( comm1, keyval, valin, ierr ) call mpi_comm_dup( comm1, comm2, ierr ) flag = .false. call mpi_comm_get_attr( comm1, keyval, valout, flag, ierr ) if (valout .ne. 5001) then errs = errs + 1 print *, 'Unexpected output value in comm ', valout endif flag = .false. call mpi_comm_get_attr( comm2, keyval, valout, flag, ierr ) if (valout .ne. 5001) then errs = errs + 1 print *, 'Unexpected output value in comm2 ', valout endif C Test the delete function call mpi_comm_free( comm2, ierr ) C C Test the attr delete function call mpi_comm_dup( comm1, comm2, ierr ) valin = 6001 extrastate = 1001 call mpi_comm_set_attr( comm2, keyval, valin, ierr ) call mpi_comm_delete_attr( comm2, keyval, ierr ) flag = .true. call mpi_comm_get_attr( comm2, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' Delete_attr did not delete attribute' endif call mpi_comm_free( comm2, ierr ) C ierr = -1 call mpi_comm_free_keyval( keyval, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call mtestprinterror( ierr ) endif call mpi_comm_free( comm1, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/attr/attrmpi1f.f0000644000175000017500000000356712620254305020026 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer value, wsize, wrank, extra, mykey integer rvalue, svalue, ncomm logical flag integer ierr, errs C errs = 0 call mtest_init( ierr ) call mpi_comm_size( MPI_COMM_WORLD, wsize, ierr ) call mpi_comm_rank( MPI_COMM_WORLD, wrank, ierr ) C C Simple attribute put and get C call mpi_keyval_create( MPI_NULL_COPY_FN, MPI_NULL_DELETE_FN, $ mykey, extra,ierr ) call mpi_attr_get( MPI_COMM_WORLD, mykey, value, flag, ierr ) if (flag) then errs = errs + 1 print *, $ "Did not get flag==.false. for attribute that was not set" endif C value = 1234567 svalue = value call mpi_attr_put( MPI_COMM_WORLD, mykey, value, ierr ) value = -9876543 call mpi_attr_get( MPI_COMM_WORLD, mykey, rvalue, flag, ierr ) if (.not. flag) then errs = errs + 1 print *, "Did not find attribute after set" else if (rvalue .ne. svalue) then errs = errs + 1 print *, "Attribute value ", rvalue, " should be ", svalue endif endif value = -123456 svalue = value call mpi_attr_put( MPI_COMM_WORLD, mykey, value, ierr ) value = 987654 call mpi_attr_get( MPI_COMM_WORLD, mykey, rvalue, flag, ierr ) if (.not. flag) then errs = errs + 1 print *, "Did not find attribute after set (neg)" else if (rvalue .ne. svalue) then errs = errs + 1 print *, "Neg Attribute value ", rvalue," should be ",svalue endif endif C call mpi_keyval_free( mykey, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/attr/Makefile.am0000644000175000017500000000157012620254305017774 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f77.mtest EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f" lines AM_DEFAULT_SOURCE_EXT = .f noinst_PROGRAMS = \ attrmpi1f \ baseattrf baseattr2f \ commattrf commattr2f \ commattr3f commattr4f \ typeattrf typeattr2f typeattr3f ## attraints.h will be distributed because it's listed in AC_CONFIG_FILES/AC_OUTPUT # ensure that "{comm,type}attr*f.o" will be rebuilt when attraints.h is updated commattrf.$(OBJEXT): attraints.h commattr2f.$(OBJEXT): attraints.h commattr3f.$(OBJEXT): attraints.h typeattrf.$(OBJEXT): attraints.h typeattr2f.$(OBJEXT): attraints.h typeattr3f.$(OBJEXT): attraints.h mpi-testsuite-3.2+dfsg/f77/attr/typeattrf.f0000644000175000017500000001125012620254305020125 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer errs, ierr include 'attraints.h' integer comm integer type1, type2 integer curcount, keyval logical flag external mycopyfn, mydelfn integer callcount, delcount common /myattr/ callcount, delcount C C The only difference between the MPI-2 and MPI-1 attribute caching C routines in Fortran is that the take an address-sized integer C instead of a simple integer. These still are not pointers, C so the values are still just integers. C errs = 0 callcount = 0 delcount = 0 call mtest_init( ierr ) C C Attach an attribute to a predefined object type1 = MPI_INTEGER extrastate = 1001 call mpi_type_create_keyval( mycopyfn, mydelfn, keyval, & extrastate, ierr ) flag = .true. call mpi_type_get_attr( type1, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' get attr returned true when no attr set' endif valin = 2003 call mpi_type_set_attr( type1, keyval, valin, ierr ) flag = .false. valout = -1 call mpi_type_get_attr( type1, keyval, valout, flag, ierr ) if (valout .ne. 2003) then errs = errs + 1 print *, 'Unexpected value (should be 2003)', valout, & ' from attr' endif valin = 2001 call mpi_type_set_attr( type1, keyval, valin, ierr ) flag = .false. valout = -1 call mpi_type_get_attr( type1, keyval, valout, flag, ierr ) if (valout .ne. 2001) then errs = errs + 1 print *, 'Unexpected value (should be 2001)', valout, & ' from attr' endif C C Test the copy function valin = 5001 call mpi_type_set_attr( type1, keyval, valin, ierr ) call mpi_type_dup( type1, type2, ierr ) flag = .false. call mpi_type_get_attr( type1, keyval, valout, flag, ierr ) if (valout .ne. 5001) then errs = errs + 1 print *, 'Unexpected output value in type ', valout endif flag = .false. call mpi_type_get_attr( type2, keyval, valout, flag, ierr ) if (valout .ne. 5003) then errs = errs + 1 print *, 'Unexpected output value in type2 ', valout endif C Test the delete function curcount = delcount call mpi_type_free( type2, ierr ) if (delcount .ne. curcount + 1) then errs = errs + 1 print *, ' did not get expected value of delcount ', & delcount, curcount + 1 endif C C Test the attr delete function call mpi_type_dup( type1, type2, ierr ) valin = 6001 extrastate = 1001 call mpi_type_set_attr( type2, keyval, valin, ierr ) delcount = 0 call mpi_type_delete_attr( type2, keyval, ierr ) if (delcount .ne. 1) then errs = errs + 1 print *, ' Delete_attr did not call delete function' endif flag = .true. call mpi_type_get_attr( type2, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' Delete_attr did not delete attribute' endif call mpi_type_free( type2, ierr ) ierr = -1 call mpi_type_free_keyval( keyval, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call mtestprinterror( ierr ) endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end C subroutine mycopyfn( oldtype, keyval, extrastate, valin, valout, & flag, ierr ) implicit none include 'mpif.h' integer oldtype, keyval, ierr include 'attraints.h' logical flag integer callcount, delcount common /myattr/ callcount, delcount C increment the attribute by 2 valout = valin + 2 callcount = callcount + 1 if (extrastate .eq. 1001) then flag = .true. ierr = MPI_SUCCESS else print *, ' Unexpected value of extrastate = ', extrastate flag = .false. ierr = MPI_ERR_OTHER endif end C subroutine mydelfn( type, keyval, val, extrastate, ierr ) implicit none include 'mpif.h' integer type, keyval, ierr include 'attraints.h' integer callcount, delcount common /myattr/ callcount, delcount delcount = delcount + 1 if (extrastate .eq. 1001) then ierr = MPI_SUCCESS else print *, ' Unexpected value of extrastate = ', extrastate ierr = MPI_ERR_OTHER endif end mpi-testsuite-3.2+dfsg/f77/attr/typeattr2f.f0000644000175000017500000000623012620254305020211 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C This is a modified version of typeattrf.f that uses two of the C default functions C program main implicit none include 'mpif.h' integer errs, ierr include 'attraints.h' integer type1, type2 integer keyval logical flag C C The only difference between the MPI-2 and MPI-1 attribute caching C routines in Fortran is that the take an address-sized integer C instead of a simple integer. These still are not pointers, C so the values are still just integers. C errs = 0 call mtest_init( ierr ) type1 = MPI_INTEGER C extrastate = 1001 call mpi_type_create_keyval( MPI_TYPE_DUP_FN, & MPI_TYPE_NULL_DELETE_FN, keyval, & extrastate, ierr ) flag = .true. call mpi_type_get_attr( type1, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' get attr returned true when no attr set' endif valin = 2003 call mpi_type_set_attr( type1, keyval, valin, ierr ) flag = .false. valout = -1 call mpi_type_get_attr( type1, keyval, valout, flag, ierr ) if (valout .ne. 2003) then errs = errs + 1 print *, 'Unexpected value (should be 2003)', valout, & ' from attr' endif valin = 2001 call mpi_type_set_attr( type1, keyval, valin, ierr ) flag = .false. valout = -1 call mpi_type_get_attr( type1, keyval, valout, flag, ierr ) if (valout .ne. 2001) then errs = errs + 1 print *, 'Unexpected value (should be 2001)', valout, & ' from attr' endif C C Test the copy function valin = 5001 call mpi_type_set_attr( type1, keyval, valin, ierr ) call mpi_type_dup( type1, type2, ierr ) flag = .false. call mpi_type_get_attr( type1, keyval, valout, flag, ierr ) if (valout .ne. 5001) then errs = errs + 1 print *, 'Unexpected output value in type ', valout endif flag = .false. call mpi_type_get_attr( type2, keyval, valout, flag, ierr ) if (valout .ne. 5001) then errs = errs + 1 print *, 'Unexpected output value in type2 ', valout endif C Test the delete function call mpi_type_free( type2, ierr ) C C Test the attr delete function call mpi_type_dup( type1, type2, ierr ) valin = 6001 extrastate = 1001 call mpi_type_set_attr( type2, keyval, valin, ierr ) call mpi_type_delete_attr( type2, keyval, ierr ) flag = .true. call mpi_type_get_attr( type2, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' Delete_attr did not delete attribute' endif call mpi_type_free( type2, ierr ) C ierr = -1 call mpi_type_free_keyval( keyval, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call mtestprinterror( ierr ) endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/attr/commattr3f.f0000644000175000017500000000532212620254305020165 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2004 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C C This tests the null copy function (returns flag false; thus the C attribute should not be propagated to a dup'ed communicator C This is must like the test in commattr2f C program main implicit none include 'mpif.h' integer errs, ierr include 'attraints.h' integer comm1, comm2 integer keyval logical flag C C The only difference between the MPI-2 and MPI-1 attribute caching C routines in Fortran is that the take an address-sized integer C instead of a simple integer. These still are not pointers, C so the values are still just integers. C errs = 0 call mtest_init( ierr ) call mpi_comm_dup( MPI_COMM_WORLD, comm1, ierr ) C extrastate = 1001 call mpi_comm_create_keyval( MPI_COMM_NULL_COPY_FN, & MPI_COMM_NULL_DELETE_FN, keyval, & extrastate, ierr ) flag = .true. call mpi_comm_get_attr( comm1, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' get attr returned true when no attr set' endif C Test the null copy function valin = 5001 call mpi_comm_set_attr( comm1, keyval, valin, ierr ) call mpi_comm_dup( comm1, comm2, ierr ) C Because we set NULL_COPY_FN, the attribute should not C appear on the dup'ed communicator flag = .false. call mpi_comm_get_attr( comm1, keyval, valout, flag, ierr ) if (valout .ne. 5001) then errs = errs + 1 print *, 'Unexpected output value in comm ', valout endif flag = .true. call mpi_comm_get_attr( comm2, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' Attribute incorrectly present on dup communicator' endif C Test the delete function call mpi_comm_free( comm2, ierr ) C C Test the attr delete function call mpi_comm_dup( comm1, comm2, ierr ) valin = 6001 extrastate = 1001 call mpi_comm_set_attr( comm2, keyval, valin, ierr ) call mpi_comm_delete_attr( comm2, keyval, ierr ) flag = .true. call mpi_comm_get_attr( comm2, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' Delete_attr did not delete attribute' endif call mpi_comm_free( comm2, ierr ) C ierr = -1 call mpi_comm_free_keyval( keyval, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call mtestprinterror( ierr ) endif call mpi_comm_free( comm1, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/attr/attraints.h.in0000644000175000017500000000025712620254305020530 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C @F77_MPI_ADDRESS@ extrastate, valin, valout, val mpi-testsuite-3.2+dfsg/f77/attr/baseattr2f.f0000644000175000017500000000667212620254305020154 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C C (C) 2001 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer ierr, errs logical flag integer value, commsize, commrank errs = 0 call mpi_init( ierr ) call mpi_comm_size( MPI_COMM_WORLD, commsize, ierr ) call mpi_comm_rank( MPI_COMM_WORLD, commrank, ierr ) call mpi_attr_get( MPI_COMM_WORLD, MPI_TAG_UB, value, flag, ierr $ ) if (.not. flag) then errs = errs + 1 print *, "Could not get TAG_UB" else if (value .lt. 32767) then errs = errs + 1 print *, "Got too-small value (", value, ") for TAG_UB" endif endif call mpi_attr_get( MPI_COMM_WORLD, MPI_HOST, value, flag, ierr ) if (.not. flag) then errs = errs + 1 print *, "Could not get HOST" else if ((value .lt. 0 .or. value .ge. commsize) .and. value .ne. $ MPI_PROC_NULL) then errs = errs + 1 print *, "Got invalid value ", value, " for HOST" endif endif call mpi_attr_get( MPI_COMM_WORLD, MPI_IO, value, flag, ierr ) if (.not. flag) then errs = errs + 1 print *, "Could not get IO" else if ((value .lt. 0 .or. value .ge. commsize) .and. value .ne. $ MPI_ANY_SOURCE .and. value .ne. MPI_PROC_NULL) then errs = errs + 1 print *, "Got invalid value ", value, " for IO" endif endif call mpi_attr_get( MPI_COMM_WORLD, MPI_WTIME_IS_GLOBAL, value, $ flag, ierr ) if (flag) then C Wtime need not be set if (value .lt. 0 .or. value .gt. 1) then errs = errs + 1 print *, "Invalid value for WTIME_IS_GLOBAL (got ", value, $ ")" endif endif call mpi_attr_get( MPI_COMM_WORLD, MPI_APPNUM, value, flag, ierr $ ) C appnum need not be set if (flag) then if (value .lt. 0) then errs = errs + 1 print *, "MPI_APPNUM is defined as ", value, $ " but must be nonnegative" endif endif call mpi_attr_get( MPI_COMM_WORLD, MPI_UNIVERSE_SIZE, value, $ flag, ierr ) C MPI_UNIVERSE_SIZE need not be set if (flag) then if (value .lt. commsize) then errs = errs + 1 print *, "MPI_UNIVERSE_SIZE = ", value, $ ", less than comm world (", commsize, ")" endif endif call mpi_attr_get( MPI_COMM_WORLD, MPI_LASTUSEDCODE, value, flag $ , ierr ) C Last used code must be defined and >= MPI_ERR_LASTCODE if (flag) then if (value .lt. MPI_ERR_LASTCODE) then errs = errs + 1 print *, "MPI_LASTUSEDCODE points to an integer (", $ MPI_ERR_LASTCODE, ") smaller than MPI_ERR_LASTCODE (", $ value, ")" endif else errs = errs + 1 print *, "MPI_LASTUSECODE is not defined" endif C Check for errors if (errs .eq. 0) then print *, " No Errors" else print *, " Found ", errs, " errors" endif call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/attr/commattr4f.f0000644000175000017500000000376512620254305020177 0ustar mbanckmbanckC program main C include 'mpif.h' integer ierr integer errs logical found integer comm2 integer key include 'attraints.h' errs = 0 C C initialize the mpi environment C call mpi_init(ierr) call mpi_comm_create_keyval(MPI_COMM_DUP_FN, $ MPI_NULL_DELETE_FN, $ key, $ extrastate, $ ierr) C C set a value for the attribute C valin = huge(valin) C C set attr in comm_world C call mpi_comm_set_attr(MPI_COMM_WORLD, $ key, $ valin, $ ierr) call mpi_comm_get_attr(MPI_COMM_WORLD, $ key, $ valout, $ found, $ ierr) if (found .neqv. .true.) then print *, "mpi_comm_set_attr reported key, but not found on ", $ "mpi_comm_world" errs = errs + 1 else if (valout .ne. valin) then print *, "key found, but valin does not match valout" print *, valout, " != ", valin errs = errs + 1 end if C C dup the communicator, attribute should follow C call mpi_comm_dup(MPI_COMM_WORLD, $ comm2, $ ierr) C C get the value for the attribute C call mpi_comm_get_attr(comm2, $ key, $ valout, $ found, $ ierr) if (found .neqv. .true.) then print *, "mpi_comm_set_attr reported key, but not found on ", $ "duped comm" errs = errs + 1 else if (valout .ne. valin) then print *, "key found, but value does not match that on ", $ "mpi_comm_world" print *, valout, " != ", valin errs = errs + 1 end if C C free the duped communicator C call mpi_comm_free(comm2, ierr) C C free keyval C call mpi_comm_delete_attr(MPI_COMM_WORLD, $ key, ierr) call mpi_comm_free_keyval(key, $ ierr) call mpi_finalize(ierr) if (errs .eq. 0) then print *, " No Errors" end if end mpi-testsuite-3.2+dfsg/f77/Makefile.am0000644000175000017500000000061312620254305017017 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f77.mtest EXTRA_DIST = testlist.in static_subdirs = util attr datatype coll pt2pt info init comm topo ext profile SUBDIRS = $(static_subdirs) $(spawndir) $(iodir) $(rmadir) DIST_SUBDIRS = $(static_subdirs) spawn io rma mpi-testsuite-3.2+dfsg/f77/util/0000755000175000017500000000000012621010234015730 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f77/util/Makefile.in0000644000175000017500000004211512621010234020000 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = f77/util ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = ARFLAGS = cru AM_V_AR = $(am__v_AR_@AM_V@) am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) am__v_AR_0 = @echo " AR " $@; am__v_AR_1 = libmtest_dummy_a_AR = $(AR) $(ARFLAGS) libmtest_dummy_a_LIBADD = am_libmtest_dummy_a_OBJECTS = mtestf.$(OBJEXT) libmtest_dummy_a_OBJECTS = $(am_libmtest_dummy_a_OBJECTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include F77COMPILE = $(F77) $(AM_FFLAGS) $(FFLAGS) AM_V_F77 = $(am__v_F77_@AM_V@) am__v_F77_ = $(am__v_F77_@AM_DEFAULT_V@) am__v_F77_0 = @echo " F77 " $@; am__v_F77_1 = F77LD = $(F77) F77LINK = $(F77LD) $(AM_FFLAGS) $(FFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_F77LD = $(am__v_F77LD_@AM_V@) am__v_F77LD_ = $(am__v_F77LD_@AM_DEFAULT_V@) am__v_F77LD_0 = @echo " F77LD " $@; am__v_F77LD_1 = SOURCES = $(libmtest_dummy_a_SOURCES) DIST_SOURCES = $(libmtest_dummy_a_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_LIBRARIES = libmtest_dummy.a libmtest_dummy_a_SOURCES = mtestf.f all: all-am .SUFFIXES: .SUFFIXES: .f .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f77/util/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f77/util/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): libmtest_dummy.a: $(libmtest_dummy_a_OBJECTS) $(libmtest_dummy_a_DEPENDENCIES) $(EXTRA_libmtest_dummy_a_DEPENDENCIES) $(AM_V_at)-rm -f libmtest_dummy.a $(AM_V_AR)$(libmtest_dummy_a_AR) libmtest_dummy.a $(libmtest_dummy_a_OBJECTS) $(libmtest_dummy_a_LIBADD) $(AM_V_at)$(RANLIB) libmtest_dummy.a mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .f.o: $(AM_V_F77)$(F77COMPILE) -c -o $@ $< .f.obj: $(AM_V_F77)$(F77COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile all-local installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \ clean-generic cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile all-local: mtestf.$(OBJEXT) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f77/util/Makefile.am0000644000175000017500000000060012620254305017770 0ustar mbanckmbanck## -*- Mode: Makefile; -*- ## vim: set ft=automake : ## ## (C) 2011 by Argonne National Laboratory. ## See COPYRIGHT in top-level directory. ## ## list a dummy library that we don't actually build in order to cause automake ## to emit a rule for building mtestf.o from mtestf.f EXTRA_LIBRARIES = libmtest_dummy.a libmtest_dummy_a_SOURCES = mtestf.f all-local: mtestf.$(OBJEXT) mpi-testsuite-3.2+dfsg/f77/util/mtestf.f0000644000175000017500000001134112620254305017411 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C subroutine MTest_Init( ierr ) C Place the include first so that we can automatically create a C Fortran 90 version that uses the mpi module instead. If C the module is in a different place, the compiler can complain C about out-of-order statements implicit none include 'mpif.h' integer ierr logical flag logical dbgflag integer wrank common /mtest/ dbgflag, wrank call MPI_Initialized( flag, ierr ) if (.not. flag) then call MPI_Init( ierr ) endif dbgflag = .false. call MPI_Comm_rank( MPI_COMM_WORLD, wrank, ierr ) end C subroutine MTest_Finalize( errs ) implicit none include 'mpif.h' integer errs integer rank, toterrs, ierr call MPI_Comm_rank( MPI_COMM_WORLD, rank, ierr ) call MPI_Allreduce( errs, toterrs, 1, MPI_INTEGER, MPI_SUM, * MPI_COMM_WORLD, ierr ) if (rank .eq. 0) then if (toterrs .gt. 0) then print *, " Found ", toterrs, " errors" else print *, " No Errors" endif endif end C C A simple get intracomm for now logical function MTestGetIntracomm( comm, min_size, qsmaller ) implicit none include 'mpif.h' integer ierr integer comm, min_size, size, rank logical qsmaller integer myindex save myindex data myindex /0/ comm = MPI_COMM_NULL if (myindex .eq. 0) then comm = MPI_COMM_WORLD else if (myindex .eq. 1) then call mpi_comm_dup( MPI_COMM_WORLD, comm, ierr ) else if (myindex .eq. 2) then call mpi_comm_size( MPI_COMM_WORLD, size, ierr ) call mpi_comm_rank( MPI_COMM_WORLD, rank, ierr ) call mpi_comm_split( MPI_COMM_WORLD, 0, size - rank, comm, & ierr ) else if (min_size .eq. 1 .and. myindex .eq. 3) then comm = MPI_COMM_SELF endif endif myindex = mod( myindex, 4 ) + 1 MTestGetIntracomm = comm .ne. MPI_COMM_NULL end C subroutine MTestFreeComm( comm ) implicit none include 'mpif.h' integer comm, ierr if (comm .ne. MPI_COMM_WORLD .and. & comm .ne. MPI_COMM_SELF .and. & comm .ne. MPI_COMM_NULL) then call mpi_comm_free( comm, ierr ) endif end C subroutine MTestPrintError( errcode ) implicit none include 'mpif.h' integer errcode integer errclass, slen, ierr character*(MPI_MAX_ERROR_STRING) string call MPI_Error_class( errcode, errclass, ierr ) call MPI_Error_string( errcode, string, slen, ierr ) print *, "Error class ", errclass, "(", string(1:slen), ")" end C subroutine MTestPrintErrorMsg( msg, errcode ) implicit none include 'mpif.h' character*(*) msg integer errcode integer errclass, slen, ierr character*(MPI_MAX_ERROR_STRING) string call MPI_Error_class( errcode, errclass, ierr ) call MPI_Error_string( errcode, string, slen, ierr ) print *, msg, ": Error class ", errclass, " $ (", string(1:slen), ")" end subroutine MTestSpawnPossible( can_spawn, errs ) implicit none include 'mpif.h' integer can_spawn integer errs integer(kind=MPI_ADDRESS_KIND) val integer ierror logical flag integer comm_size call mpi_comm_get_attr( MPI_COMM_WORLD, MPI_UNIVERSE_SIZE, val, & flag, ierror ) if ( ierror .ne. MPI_SUCCESS ) then C MPI_UNIVERSE_SIZE keyval missing from MPI_COMM_WORLD attributes can_spawn = -1 errs = errs + 1 else if ( flag ) then comm_size = -1 call mpi_comm_size( MPI_COMM_WORLD, comm_size, ierror ) if ( ierror .ne. MPI_SUCCESS ) then C MPI_COMM_SIZE failed for MPI_COMM_WORLD can_spawn = -1 errs = errs + 1 return endif if ( val .le. comm_size ) then C no additional processes can be spawned can_spawn = 0 else can_spawn = 1 endif else C No attribute associated with key MPI_UNIVERSE_SIZE of MPI_COMM_WORLD can_spawn = -1 endif endif end mpi-testsuite-3.2+dfsg/f77/comm/0000755000175000017500000000000012621010234015706 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f77/comm/testlist0000644000175000017500000000002712620254305017513 0ustar mbanckmbanckcommnamef 2 commerrf 2 mpi-testsuite-3.2+dfsg/f77/comm/Makefile.in0000644000175000017500000004446712621010234017772 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = commnamef$(EXEEXT) commerrf$(EXEEXT) subdir = f77/comm ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) commerrf_SOURCES = commerrf.f commerrf_OBJECTS = commerrf.$(OBJEXT) commerrf_LDADD = $(LDADD) commerrf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o commnamef_SOURCES = commnamef.f commnamef_OBJECTS = commnamef.$(OBJEXT) commnamef_LDADD = $(LDADD) commnamef_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include F77COMPILE = $(F77) $(AM_FFLAGS) $(FFLAGS) AM_V_F77 = $(am__v_F77_@AM_V@) am__v_F77_ = $(am__v_F77_@AM_DEFAULT_V@) am__v_F77_0 = @echo " F77 " $@; am__v_F77_1 = F77LD = $(F77) F77LINK = $(F77LD) $(AM_FFLAGS) $(FFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_F77LD = $(am__v_F77LD_@AM_V@) am__v_F77LD_ = $(am__v_F77LD_@AM_DEFAULT_V@) am__v_F77LD_0 = @echo " F77LD " $@; am__v_F77LD_1 = SOURCES = commerrf.f commnamef.f DIST_SOURCES = commerrf.f commnamef.f am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_f77.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F77 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. LDADD = $(top_builddir)/f77/util/mtestf.o CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f" lines AM_DEFAULT_SOURCE_EXT = .f all: all-am .SUFFIXES: .SUFFIXES: .f .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f77.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f77/comm/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f77/comm/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f77.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) commerrf$(EXEEXT): $(commerrf_OBJECTS) $(commerrf_DEPENDENCIES) $(EXTRA_commerrf_DEPENDENCIES) @rm -f commerrf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(commerrf_OBJECTS) $(commerrf_LDADD) $(LIBS) commnamef$(EXEEXT): $(commnamef_OBJECTS) $(commnamef_DEPENDENCIES) $(EXTRA_commnamef_DEPENDENCIES) @rm -f commnamef$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(commnamef_OBJECTS) $(commnamef_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .f.o: $(AM_V_F77)$(F77COMPILE) -c -o $@ $< .f.obj: $(AM_V_F77)$(F77COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f77/util/mtestf.o: $(top_srcdir)/f77/util/mtestf.f (cd $(top_builddir)/f77/util && $(MAKE) mtestf.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f77/comm/Makefile.am0000644000175000017500000000051312620254305017751 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f77.mtest EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f" lines AM_DEFAULT_SOURCE_EXT = .f noinst_PROGRAMS = commnamef commerrf mpi-testsuite-3.2+dfsg/f77/comm/commnamef.f0000644000175000017500000000443212620254305020032 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer errs, ierr integer comm(4), i, rlen, ln integer ncomm character*(MPI_MAX_OBJECT_NAME) inname(4), cname logical MTestGetIntracomm errs = 0 call mtest_init( ierr ) C Test the predefined communicators do ln=1,MPI_MAX_OBJECT_NAME cname(ln:ln) = 'X' enddo call mpi_comm_get_name( MPI_COMM_WORLD, cname, rlen, ierr ) do ln=MPI_MAX_OBJECT_NAME,1,-1 if (cname(ln:ln) .ne. ' ') then if (ln .ne. rlen) then errs = errs + 1 print *, 'result len ', rlen,' not equal to actual len ', & ln endif goto 110 endif enddo if (cname(1:rlen) .ne. 'MPI_COMM_WORLD') then errs = errs + 1 print *, 'Did not get MPI_COMM_WORLD for world' endif 110 continue C do ln=1,MPI_MAX_OBJECT_NAME cname(ln:ln) = 'X' enddo call mpi_comm_get_name( MPI_COMM_SELF, cname, rlen, ierr ) do ln=MPI_MAX_OBJECT_NAME,1,-1 if (cname(ln:ln) .ne. ' ') then if (ln .ne. rlen) then errs = errs + 1 print *, 'result len ', rlen,' not equal to actual len ', & ln endif goto 120 endif enddo if (cname(1:rlen) .ne. 'MPI_COMM_SELF') then errs = errs + 1 print *, 'Did not get MPI_COMM_SELF for world' endif 120 continue C do i = 1, 4 if (MTestGetIntracomm( comm(i), 1, .true. )) then ncomm = i write( inname(i), '(a,i1)') 'myname',i call mpi_comm_set_name( comm(i), inname(i), ierr ) else goto 130 endif enddo 130 continue C C Now test them all do i=1, ncomm call mpi_comm_get_name( comm(i), cname, rlen, ierr ) if (inname(i) .ne. cname) then errs = errs + 1 print *, ' Expected ', inname(i), ' got ', cname endif call MTestFreeComm( comm(i) ) enddo C call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/comm/commerrf.f0000644000175000017500000001064412620254305017704 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer errs, ierr, code(2), newerrclass, eclass character*(MPI_MAX_ERROR_STRING) errstring integer comm, rlen external myerrhanfunc CF90 INTERFACE CF90 SUBROUTINE myerrhanfunc(vv0,vv1) CF90 INTEGER vv0,vv1 CF90 END SUBROUTINE CF90 END INTERFACE integer myerrhan, qerr integer callcount, codesSeen(3) common /myerrhan/ callcount, codesSeen errs = 0 callcount = 0 call mtest_init( ierr ) C C Setup some new codes and classes call mpi_add_error_class( newerrclass, ierr ) call mpi_add_error_code( newerrclass, code(1), ierr ) call mpi_add_error_code( newerrclass, code(2), ierr ) call mpi_add_error_string( newerrclass, "New Class", ierr ) call mpi_add_error_string( code(1), "First new code", ierr ) call mpi_add_error_string( code(2), "Second new code", ierr ) C C call mpi_comm_create_errhandler( myerrhanfunc, myerrhan, ierr ) C C Create a new communicator so that we can leave the default errors-abort C on MPI_COMM_WORLD call mpi_comm_dup( MPI_COMM_WORLD, comm, ierr ) C call mpi_comm_set_errhandler( comm, myerrhan, ierr ) call mpi_comm_get_errhandler( comm, qerr, ierr ) if (qerr .ne. myerrhan) then errs = errs + 1 print *, ' Did not get expected error handler' endif call mpi_errhandler_free( qerr, ierr ) C We can free our error handler now call mpi_errhandler_free( myerrhan, ierr ) call mpi_comm_call_errhandler( comm, newerrclass, ierr ) call mpi_comm_call_errhandler( comm, code(1), ierr ) call mpi_comm_call_errhandler( comm, code(2), ierr ) if (callcount .ne. 3) then errs = errs + 1 print *, ' Expected 3 calls to error handler, found ', & callcount else if (codesSeen(1) .ne. newerrclass) then errs = errs + 1 print *, 'Expected class ', newerrclass, ' got ', & codesSeen(1) endif if (codesSeen(2) .ne. code(1)) then errs = errs + 1 print *, 'Expected code ', code(1), ' got ', & codesSeen(2) endif if (codesSeen(3) .ne. code(2)) then errs = errs + 1 print *, 'Expected code ', code(2), ' got ', & codesSeen(3) endif endif call mpi_comm_free( comm, ierr ) C C Check error strings while here... call mpi_error_string( newerrclass, errstring, rlen, ierr ) if (errstring(1:rlen) .ne. "New Class") then errs = errs + 1 print *, ' Wrong string for error class: ', errstring(1:rlen) endif call mpi_error_class( code(1), eclass, ierr ) if (eclass .ne. newerrclass) then errs = errs + 1 print *, ' Class for new code is not correct' endif call mpi_error_string( code(1), errstring, rlen, ierr ) if (errstring(1:rlen) .ne. "First new code") then errs = errs + 1 print *, ' Wrong string for error code: ', errstring(1:rlen) endif call mpi_error_class( code(2), eclass, ierr ) if (eclass .ne. newerrclass) then errs = errs + 1 print *, ' Class for new code is not correct' endif call mpi_error_string( code(2), errstring, rlen, ierr ) if (errstring(1:rlen) .ne. "Second new code") then errs = errs + 1 print *, ' Wrong string for error code: ', errstring(1:rlen) endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end C subroutine myerrhanfunc( comm, errcode ) implicit none include 'mpif.h' integer comm, errcode integer rlen, ierr integer callcount, codesSeen(3) character*(MPI_MAX_ERROR_STRING) errstring common /myerrhan/ callcount, codesSeen callcount = callcount + 1 C Remember the code we've seen if (callcount .le. 3) then codesSeen(callcount) = errcode endif call mpi_error_string( errcode, errstring, rlen, ierr ) if (ierr .ne. MPI_SUCCESS) then print *, ' Panic! could not get error string' call mpi_abort( MPI_COMM_WORLD, 1, ierr ) endif end mpi-testsuite-3.2+dfsg/f77/testlist.in0000644000175000017500000000012512620254305017164 0ustar mbanckmbanckattr coll datatype pt2pt info @spawndir@ @iodir@ @rmadir@ init comm ext topo profile mpi-testsuite-3.2+dfsg/f77/ext/0000755000175000017500000000000012621010234015553 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f77/ext/c2f2c.c0000644000175000017500000001466412620254305016641 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * This file contains the C routines used in testing the c2f and f2c * handle conversion functions, except for MPI_File and MPI_Win (to * allow working with MPI implementations that do not include those * features). * * The tests follow this pattern: * * Fortran main program * calls c routine with each handle type, with a prepared * and valid handle (often requires constructing an object) * * C routine uses xxx_f2c routine to get C handle, checks some * properties (i.e., size and rank of communicator, contents of datatype) * * Then the Fortran main program calls a C routine that provides * a handle, and the Fortran program performs similar checks. * * We also assume that a C int is a Fortran integer. If this is not the * case, these tests must be modified. */ /* style: allow:fprintf:10 sig:0 */ #include #include "mpi.h" #include "../../include/mpitestconf.h" #include /* Name mapping. All routines are created with names that are lower case with a single trailing underscore. This matches many compilers. We use #define to change the name for Fortran compilers that do not use the lowercase/underscore pattern */ #ifdef F77_NAME_UPPER #define c2fcomm_ C2FCOMM #define c2fgroup_ C2FGROUP #define c2ftype_ C2FTYPE #define c2finfo_ C2FINFO #define c2frequest_ C2FREQUEST #define c2fop_ C2FOP #define c2ferrhandler_ C2FERRHANDLER #define f2ccomm_ F2CCOMM #define f2cgroup_ F2CGROUP #define f2ctype_ F2CTYPE #define f2cinfo_ F2CINFO #define f2crequest_ F2CREQUEST #define f2cop_ F2COP #define f2cerrhandler_ F2CERRHANDLER #elif defined(F77_NAME_LOWER) || defined(F77_NAME_MIXED) /* Mixed is ok because we use lowercase in all uses */ #define c2fcomm_ c2fcomm #define c2fgroup_ c2fgroup #define c2ftype_ c2ftype #define c2finfo_ c2finfo #define c2frequest_ c2frequest #define c2fop_ c2fop #define c2ferrhandler_ c2ferrhandler #define f2ccomm_ f2ccomm #define f2cgroup_ f2cgroup #define f2ctype_ f2ctype #define f2cinfo_ f2cinfo #define f2crequest_ f2crequest #define f2cop_ f2cop #define f2cerrhandler_ f2cerrhandler #elif defined(F77_NAME_LOWER_2USCORE) || defined(F77_NAME_LOWER_USCORE) || \ defined(F77_NAME_MIXED_USCORE) /* Else leave name alone (routines have no underscore, so both of these map to a lowercase, single underscore) */ #else #error 'Unrecognized Fortran name mapping' #endif /* Prototypes to keep compilers happy */ MPI_Fint c2fcomm_(MPI_Fint *); MPI_Fint c2fgroup_(MPI_Fint *); MPI_Fint c2finfo_(MPI_Fint *); MPI_Fint c2frequest_(MPI_Fint *); MPI_Fint c2ftype_(MPI_Fint *); MPI_Fint c2fop_(MPI_Fint *); MPI_Fint c2ferrhandler_(MPI_Fint *); void f2ccomm_(MPI_Fint *); void f2cgroup_(MPI_Fint *); void f2cinfo_(MPI_Fint *); void f2crequest_(MPI_Fint *); void f2ctype_(MPI_Fint *); void f2cop_(MPI_Fint *); void f2cerrhandler_(MPI_Fint *); MPI_Fint c2fcomm_(MPI_Fint * comm) { MPI_Comm cComm = MPI_Comm_f2c(*comm); int cSize, wSize, cRank, wRank; MPI_Comm_size(MPI_COMM_WORLD, &wSize); MPI_Comm_rank(MPI_COMM_WORLD, &wRank); MPI_Comm_size(cComm, &cSize); MPI_Comm_rank(cComm, &cRank); if (wSize != cSize || wRank != cRank) { fprintf(stderr, "Comm: Did not get expected size,rank (got %d,%d)", cSize, cRank); return 1; } return 0; } MPI_Fint c2fgroup_(MPI_Fint * group) { MPI_Group cGroup = MPI_Group_f2c(*group); int cSize, wSize, cRank, wRank; /* We pass in the group of comm world */ MPI_Comm_size(MPI_COMM_WORLD, &wSize); MPI_Comm_rank(MPI_COMM_WORLD, &wRank); MPI_Group_size(cGroup, &cSize); MPI_Group_rank(cGroup, &cRank); if (wSize != cSize || wRank != cRank) { fprintf(stderr, "Group: Did not get expected size,rank (got %d,%d)", cSize, cRank); return 1; } return 0; } MPI_Fint c2ftype_(MPI_Fint * type) { MPI_Datatype dtype = MPI_Type_f2c(*type); if (dtype != MPI_INTEGER) { fprintf(stderr, "Type: Did not get expected type\n"); return 1; } return 0; } MPI_Fint c2finfo_(MPI_Fint * info) { MPI_Info cInfo = MPI_Info_f2c(*info); int flag; char value[100]; MPI_Fint errs = 0; MPI_Info_get(cInfo, (char *) "host", sizeof(value), value, &flag); if (!flag || strcmp(value, "myname") != 0) { fprintf(stderr, "Info: Wrong value or no value for host\n"); errs++; } MPI_Info_get(cInfo, (char *) "wdir", sizeof(value), value, &flag); if (!flag || strcmp(value, "/rdir/foo") != 0) { fprintf(stderr, "Info: Wrong value of no value for wdir\n"); errs++; } return errs; } MPI_Fint c2frequest_(MPI_Fint * request) { MPI_Request req = MPI_Request_f2c(*request); MPI_Status status; int flag; MPI_Test(&req, &flag, &status); MPI_Test_cancelled(&status, &flag); if (!flag) { fprintf(stderr, "Request: Wrong value for flag\n"); return 1; } else { *request = MPI_Request_c2f(req); } return 0; } MPI_Fint c2fop_(MPI_Fint * op) { MPI_Op cOp = MPI_Op_f2c(*op); if (cOp != MPI_SUM) { fprintf(stderr, "Op: did not get sum\n"); return 1; } return 0; } MPI_Fint c2ferrhandler_(MPI_Fint * errh) { MPI_Errhandler errhand = MPI_Errhandler_f2c(*errh); if (errhand != MPI_ERRORS_RETURN) { fprintf(stderr, "Errhandler: did not get errors return\n"); return 1; } return 0; } /* * The following routines provide handles to the calling Fortran program */ void f2ccomm_(MPI_Fint * comm) { *comm = MPI_Comm_c2f(MPI_COMM_WORLD); } void f2cgroup_(MPI_Fint * group) { MPI_Group wgroup; MPI_Comm_group(MPI_COMM_WORLD, &wgroup); *group = MPI_Group_c2f(wgroup); } void f2ctype_(MPI_Fint * type) { *type = MPI_Type_c2f(MPI_INTEGER); } void f2cinfo_(MPI_Fint * info) { MPI_Info cinfo; MPI_Info_create(&cinfo); MPI_Info_set(cinfo, (char *) "host", (char *) "myname"); MPI_Info_set(cinfo, (char *) "wdir", (char *) "/rdir/foo"); *info = MPI_Info_c2f(cinfo); } void f2crequest_(MPI_Fint * req) { MPI_Request cReq; MPI_Irecv(NULL, 0, MPI_INT, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &cReq); MPI_Cancel(&cReq); *req = MPI_Request_c2f(cReq); } void f2cop_(MPI_Fint * op) { *op = MPI_Op_c2f(MPI_SUM); } void f2cerrhandler_(MPI_Fint * errh) { *errh = MPI_Errhandler_c2f(MPI_ERRORS_RETURN); } mpi-testsuite-3.2+dfsg/f77/ext/c2f2cf.f0000644000175000017500000000721412620254305017003 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer errs, toterrs, ierr integer wrank, wsize integer wgroup, info, req integer fsize, frank integer comm, group, type, op, errh, result integer c2fcomm, c2fgroup, c2ftype, c2finfo, c2frequest, $ c2ferrhandler, c2fop character value*100 logical flag errs = 0 call mpi_init( ierr ) C C Test passing a Fortran MPI object to C call mpi_comm_rank( MPI_COMM_WORLD, wrank, ierr ) errs = errs + c2fcomm( MPI_COMM_WORLD ) call mpi_comm_group( MPI_COMM_WORLD, wgroup, ierr ) errs = errs + c2fgroup( wgroup ) call mpi_group_free( wgroup, ierr ) call mpi_info_create( info, ierr ) call mpi_info_set( info, "host", "myname", ierr ) call mpi_info_set( info, "wdir", "/rdir/foo", ierr ) errs = errs + c2finfo( info ) call mpi_info_free( info, ierr ) errs = errs + c2ftype( MPI_INTEGER ) call mpi_irecv( 0, 0, MPI_INTEGER, MPI_ANY_SOURCE, MPI_ANY_TAG, $ MPI_COMM_WORLD, req, ierr ) call mpi_cancel( req, ierr ) errs = errs + c2frequest( req ) call mpi_wait( req, MPI_STATUS_IGNORE, ierr ) errs = errs + c2ferrhandler( MPI_ERRORS_RETURN ) errs = errs + c2fop( MPI_SUM ) C C Test using a C routine to provide the Fortran handle call mpi_comm_size( MPI_COMM_WORLD, wsize, ierr ) call mpi_comm_rank( MPI_COMM_WORLD, wrank, ierr ) call f2ccomm( comm ) call mpi_comm_size( comm, fsize, ierr ) call mpi_comm_rank( comm, frank, ierr ) if (fsize.ne.wsize .or. frank.ne.wrank) then errs = errs + 1 print *, "Comm(fortran) has wrong size or rank" endif call f2cgroup( group ) call mpi_group_size( group, fsize, ierr ) call mpi_group_rank( group, frank, ierr ) if (fsize.ne.wsize .or. frank.ne.wrank) then errs = errs + 1 print *, "Group(fortran) has wrong size or rank" endif call mpi_group_free( group, ierr ) call f2ctype( type ) if (type .ne. MPI_INTEGER) then errs = errs + 1 print *, "Datatype(fortran) is not MPI_INT" endif call f2cinfo( info ) call mpi_info_get( info, "host", 100, value, flag, ierr ) if (.not. flag) then errs = errs + 1 print *, "Info test for host returned false" else if (value .ne. "myname") then errs = errs + 1 print *, "Info test for host returned ", value endif call mpi_info_get( info, "wdir", 100, value, flag, ierr ) if (.not. flag) then errs = errs + 1 print *, "Info test for wdir returned false" else if (value .ne. "/rdir/foo") then errs = errs + 1 print *, "Info test for wdir returned ", value endif call mpi_info_free( info, ierr ) call f2cop( op ) if (op .ne. MPI_SUM) then errs = errs + 1 print *, "Fortran MPI_SUM not MPI_SUM in C" endif call f2cerrhandler( errh ) if (errh .ne. MPI_ERRORS_RETURN) then errs = errs + 1 print *,"Fortran MPI_ERRORS_RETURN not MPI_ERRORS_RETURN in C" endif C C Summarize the errors C call mpi_allreduce( errs, toterrs, 1, MPI_INTEGER, MPI_SUM, $ MPI_COMM_WORLD, ierr ) if (wrank .eq. 0) then if (toterrs .eq. 0) then print *, ' No Errors' else print *, ' Found ', toterrs, ' errors' endif endif call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/ext/add1size.h.in0000644000175000017500000000022712620254305020046 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C @F77_MPI_ADDRESS@ asize mpi-testsuite-3.2+dfsg/f77/ext/Makefile.in0000644000175000017500000005331312621010234017625 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ EXTRA_PROGRAMS = allocmemf$(EXEEXT) noinst_PROGRAMS = c2f2cf$(EXEEXT) ctypesinf$(EXEEXT) c2fmult$(EXEEXT) subdir = f77/ext ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = add1size.h testlist CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am_allocmemf_OBJECTS = allocmemf.$(OBJEXT) allocmemf_OBJECTS = $(am_allocmemf_OBJECTS) allocmemf_LDADD = $(LDADD) allocmemf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o am_c2f2cf_OBJECTS = c2f2c.$(OBJEXT) c2f2cf.$(OBJEXT) c2f2cf_OBJECTS = $(am_c2f2cf_OBJECTS) c2f2cf_LDADD = $(LDADD) c2f2cf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o am_c2fmult_OBJECTS = c2fmult.$(OBJEXT) c2fmult_OBJECTS = $(am_c2fmult_OBJECTS) c2fmult_DEPENDENCIES = $(top_builddir)/util/mtest.o am_ctypesinf_OBJECTS = ctypesinf.$(OBJEXT) ctypesfromc.$(OBJEXT) ctypesinf_OBJECTS = $(am_ctypesinf_OBJECTS) ctypesinf_LDADD = $(LDADD) ctypesinf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = F77COMPILE = $(F77) $(AM_FFLAGS) $(FFLAGS) AM_V_F77 = $(am__v_F77_@AM_V@) am__v_F77_ = $(am__v_F77_@AM_DEFAULT_V@) am__v_F77_0 = @echo " F77 " $@; am__v_F77_1 = F77LD = $(F77) F77LINK = $(F77LD) $(AM_FFLAGS) $(FFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_F77LD = $(am__v_F77LD_@AM_V@) am__v_F77LD_ = $(am__v_F77LD_@AM_DEFAULT_V@) am__v_F77LD_0 = @echo " F77LD " $@; am__v_F77LD_1 = SOURCES = $(allocmemf_SOURCES) $(c2f2cf_SOURCES) $(c2fmult_SOURCES) \ $(ctypesinf_SOURCES) DIST_SOURCES = $(allocmemf_SOURCES) $(c2f2cf_SOURCES) \ $(c2fmult_SOURCES) $(ctypesinf_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/add1size.h.in \ $(srcdir)/testlist.in $(top_srcdir)/Makefile_f77.mtest \ $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F77 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. LDADD = $(top_builddir)/f77/util/mtestf.o CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist.in allocmemf_SOURCES = allocmemf.f c2f2cf_SOURCES = c2f2c.c c2f2cf.f ctypesinf_SOURCES = ctypesinf.f ctypesfromc.c # C programs get a different mtest utility object c2fmult_LDADD = $(top_builddir)/util/mtest.o c2fmult_SOURCES = c2fmult.c all: all-am .SUFFIXES: .SUFFIXES: .c .f .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f77.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f77/ext/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f77/ext/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f77.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): add1size.h: $(top_builddir)/config.status $(srcdir)/add1size.h.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ testlist: $(top_builddir)/config.status $(srcdir)/testlist.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) allocmemf$(EXEEXT): $(allocmemf_OBJECTS) $(allocmemf_DEPENDENCIES) $(EXTRA_allocmemf_DEPENDENCIES) @rm -f allocmemf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(allocmemf_OBJECTS) $(allocmemf_LDADD) $(LIBS) c2f2cf$(EXEEXT): $(c2f2cf_OBJECTS) $(c2f2cf_DEPENDENCIES) $(EXTRA_c2f2cf_DEPENDENCIES) @rm -f c2f2cf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(c2f2cf_OBJECTS) $(c2f2cf_LDADD) $(LIBS) c2fmult$(EXEEXT): $(c2fmult_OBJECTS) $(c2fmult_DEPENDENCIES) $(EXTRA_c2fmult_DEPENDENCIES) @rm -f c2fmult$(EXEEXT) $(AM_V_CCLD)$(LINK) $(c2fmult_OBJECTS) $(c2fmult_LDADD) $(LIBS) ctypesinf$(EXEEXT): $(ctypesinf_OBJECTS) $(ctypesinf_DEPENDENCIES) $(EXTRA_ctypesinf_DEPENDENCIES) @rm -f ctypesinf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(ctypesinf_OBJECTS) $(ctypesinf_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c2f2c.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c2fmult.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctypesfromc.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .f.o: $(AM_V_F77)$(F77COMPILE) -c -o $@ $< .f.obj: $(AM_V_F77)$(F77COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f77/util/mtestf.o: $(top_srcdir)/f77/util/mtestf.f (cd $(top_builddir)/f77/util && $(MAKE) mtestf.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # ensure that dependent tests will be rebuilt when add1size.h is updated allocmemf.$(OBJEXT): add1size.h # we don't get this from Makefile_f77.mtest and we don't include Makefile.mtest $(top_builddir)/util/mtest.o: (cd $(top_builddir)/util && $(MAKE) mtest.o) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f77/ext/Makefile.am0000644000175000017500000000165512620254305017626 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f77.mtest EXTRA_DIST = testlist.in # allocmemf is an "extra" program because it requires a Fortran extension EXTRA_PROGRAMS = allocmemf noinst_PROGRAMS = c2f2cf ctypesinf c2fmult allocmemf_SOURCES = allocmemf.f c2f2cf_SOURCES = c2f2c.c c2f2cf.f ctypesinf_SOURCES = ctypesinf.f ctypesfromc.c # C programs get a different mtest utility object c2fmult_LDADD = $(top_builddir)/util/mtest.o c2fmult_SOURCES = c2fmult.c ## add1size.h will be distributed because it's listed in AC_CONFIG_FILES/AC_OUTPUT # ensure that dependent tests will be rebuilt when add1size.h is updated allocmemf.$(OBJEXT): add1size.h # we don't get this from Makefile_f77.mtest and we don't include Makefile.mtest $(top_builddir)/util/mtest.o: (cd $(top_builddir)/util && $(MAKE) mtest.o) mpi-testsuite-3.2+dfsg/f77/ext/testlist.in0000644000175000017500000000005212620254305017763 0ustar mbanckmbanckc2f2cf 1 c2fmult 1 ctypesinf 1 @ALLOCMEMF@mpi-testsuite-3.2+dfsg/f77/ext/c2fmult.c0000644000175000017500000000320712620254305017305 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Check that MPI_xxxx_c2f, applied to the same object several times, yields the same handle. We do this because when MPI handles in C are a different length than those in Fortran, care needs to be exercised to ensure that the mapping from one to another is unique. (Test added to test a potential problem in ROMIO for handling MPI_File on 64-bit systems) */ #include "mpi.h" #include #include "mpitest.h" int main(int argc, char *argv[]) { MPI_Fint handleA, handleB; int rc; int errs = 0; int buf[1]; MPI_Request cRequest; MPI_Status st; int tFlag; MTest_Init(&argc, &argv); /* Request */ rc = MPI_Irecv(buf, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, &cRequest); if (rc) { errs++; printf("Unable to create request\n"); } else { handleA = MPI_Request_c2f(cRequest); handleB = MPI_Request_c2f(cRequest); if (handleA != handleB) { errs++; printf("MPI_Request_c2f does not give the same handle twice on the same MPI_Request\n"); } } MPI_Cancel(&cRequest); MPI_Test(&cRequest, &tFlag, &st); MPI_Test_cancelled(&st, &tFlag); if (!tFlag) { errs++; printf("Unable to cancel MPI_Irecv request\n"); } /* Using MPI_Request_free should be ok, but some MPI implementations * object to it imediately after the cancel and that isn't essential to * this test */ MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/f77/ext/allocmemf.f0000644000175000017500000000224312620254305017672 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2004 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' C C This program makes use of a common (but not universal; g77 doesn't C have it) extension: the "Cray" pointer. This allows MPI_Alloc_mem C to allocate memory and return it to Fortran, where it can be used. C As this is not standard Fortran, this test is not run by default. C To run it, build (with a suitable compiler) and run with C mpiexec -n 1 ./allocmemf C real a pointer (p,a(100,100)) include 'add1size.h' integer ierr, sizeofreal, errs integer i,j C errs = 0 call mtest_init(ierr) call mpi_type_size( MPI_REAL, sizeofreal, ierr ) C Make sure we pass in an integer of the correct type asize = sizeofreal * 100 * 100 call mpi_alloc_mem( asize,MPI_INFO_NULL,p,ierr ) do i=1,100 do j=1,100 a(i,j) = -1 enddo enddo a(3,5) = 10.0 call mpi_free_mem( a, ierr ) call mtest_finalize(errs) call mpi_finalize(ierr) end mpi-testsuite-3.2+dfsg/f77/ext/ctypesfromc.c0000644000175000017500000001020712620254305020265 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2008 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * This file contains the C routines used in testing that all C datatypes * are available in Fortran and have the correct values. * * The tests follow this pattern: * * Fortran main program * calls the c routine f2ctype with each of the C types and the name of * the type. That c routine using MPI_Type_f2c to convert the * Fortran handle to a C handle, and then compares it to the corresponding * C type, which is found by looking up the C handle by name * * C routine uses xxx_f2c routine to get C handle, checks some * properties (i.e., size and rank of communicator, contents of datatype) * * Then the Fortran main program calls a C routine that provides * a handle, and the Fortran program performs similar checks. * * We also assume that a C int is a Fortran integer. If this is not the * case, these tests must be modified. */ /* style: allow:fprintf:10 sig:0 */ #include #include "mpi.h" #include "../../include/mpitestconf.h" #include /* Create an array with all of the MPI names in it */ /* This is extracted from the test in test/mpi/types/typename.c ; only the C types are included. */ typedef struct mpi_names_t { MPI_Datatype dtype; const char *name; } mpi_names_t; /* The MPI standard specifies that the names must be the MPI names, not the related language names (e.g., MPI_CHAR, not char) */ static mpi_names_t mpi_names[] = { {MPI_CHAR, "MPI_CHAR"}, {MPI_SIGNED_CHAR, "MPI_SIGNED_CHAR"}, {MPI_UNSIGNED_CHAR, "MPI_UNSIGNED_CHAR"}, {MPI_WCHAR, "MPI_WCHAR"}, {MPI_SHORT, "MPI_SHORT"}, {MPI_UNSIGNED_SHORT, "MPI_UNSIGNED_SHORT"}, {MPI_INT, "MPI_INT"}, {MPI_UNSIGNED, "MPI_UNSIGNED"}, {MPI_LONG, "MPI_LONG"}, {MPI_UNSIGNED_LONG, "MPI_UNSIGNED_LONG"}, {MPI_FLOAT, "MPI_FLOAT"}, {MPI_DOUBLE, "MPI_DOUBLE"}, {MPI_FLOAT_INT, "MPI_FLOAT_INT"}, {MPI_DOUBLE_INT, "MPI_DOUBLE_INT"}, {MPI_LONG_INT, "MPI_LONG_INT"}, {MPI_SHORT_INT, "MPI_SHORT_INT"}, {MPI_2INT, "MPI_2INT"}, {MPI_LONG_DOUBLE, "MPI_LONG_DOUBLE"}, {MPI_LONG_LONG_INT, "MPI_LONG_LONG_INT"}, {MPI_LONG_LONG, "MPI_LONG_LONG"}, {MPI_UNSIGNED_LONG_LONG, "MPI_UNSIGNED_LONG_LONG"}, {MPI_LONG_DOUBLE_INT, "MPI_LONG_DOUBLE_INT"}, {0, (char *) 0}, /* Sentinal used to indicate the last element */ }; /* Name mapping. All routines are created with names that are lower case with a single trailing underscore. This matches many compilers. We use #define to change the name for Fortran compilers that do not use the lowercase/underscore pattern */ #ifdef F77_NAME_UPPER #define f2ctype_ F2CTYPE #elif defined(F77_NAME_LOWER) || defined(F77_NAME_MIXED) /* Mixed is ok because we use lowercase in all uses */ #define f2ctype_ f2ctype #elif defined(F77_NAME_LOWER_2USCORE) || defined(F77_NAME_LOWER_USCORE) || \ defined(F77_NAME_MIXED_USCORE) /* Else leave name alone (routines have no underscore, so both of these map to a lowercase, single underscore) */ #else #error 'Unrecognized Fortran name mapping' #endif /* Prototypes to keep compilers happy */ int f2ctype_(MPI_Fint *, MPI_Fint *); /* */ int f2ctype_(MPI_Fint * fhandle, MPI_Fint * typeidx) { int errs = 0; MPI_Datatype ctype; /* printf("Testing %s\n", mpi_names[*typeidx].name); */ ctype = MPI_Type_f2c(*fhandle); if (ctype != mpi_names[*typeidx].dtype) { char mytypename[MPI_MAX_OBJECT_NAME]; int mytypenamelen; /* An implementation is not *required* to deliver the * corresponding C version of the MPI Datatype bit-for-bit. But * if *must* act like it - e.g., the datatype name must be the same */ MPI_Type_get_name(ctype, mytypename, &mytypenamelen); if (strcmp(mytypename, mpi_names[*typeidx].name) != 0) { errs++; printf("C and Fortran types for %s (c name is %s) do not match f=%d, ctof=%d.\n", mpi_names[*typeidx].name, mytypename, *fhandle, MPI_Type_c2f(ctype)); } } return errs; } mpi-testsuite-3.2+dfsg/f77/ext/ctypesinf.f0000644000175000017500000000317312620254305017742 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2008 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main include 'mpif.h' integer ierr integer errs, wrank integer f2ctype C call mtest_init( ierr ) call mpi_comm_rank( MPI_COMM_WORLD, wrank, ierr ) C errs = 0 C errs = errs + f2ctype( MPI_CHAR, 0 ) errs = errs + f2ctype( MPI_SIGNED_CHAR, 1 ) errs = errs + f2ctype( MPI_UNSIGNED_CHAR, 2 ) errs = errs + f2ctype( MPI_WCHAR, 3 ) errs = errs + f2ctype( MPI_SHORT, 4 ) errs = errs + f2ctype( MPI_UNSIGNED_SHORT, 5 ) errs = errs + f2ctype( MPI_INT, 6 ) errs = errs + f2ctype( MPI_UNSIGNED, 7 ) errs = errs + f2ctype( MPI_LONG, 8 ) errs = errs + f2ctype( MPI_UNSIGNED_LONG, 9 ) errs = errs + f2ctype( MPI_FLOAT, 10 ) errs = errs + f2ctype( MPI_DOUBLE, 11 ) errs = errs + f2ctype( MPI_FLOAT_INT, 12 ) errs = errs + f2ctype( MPI_DOUBLE_INT, 13 ) errs = errs + f2ctype( MPI_LONG_INT, 14 ) errs = errs + f2ctype( MPI_SHORT_INT, 15 ) errs = errs + f2ctype( MPI_2INT, 16 ) if (MPI_LONG_DOUBLE .ne. MPI_DATATYPE_NULL) then errs = errs + f2ctype( MPI_LONG_DOUBLE, 17 ) errs = errs + f2ctype( MPI_LONG_DOUBLE_INT, 21 ) endif if (MPI_LONG_LONG .ne. MPI_DATATYPE_NULL) then errs = errs + f2ctype( MPI_LONG_LONG_INT, 18 ) errs = errs + f2ctype( MPI_LONG_LONG, 19 ) errs = errs + f2ctype( MPI_UNSIGNED_LONG_LONG, 20 ) endif C C Summarize the errors C call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/pt2pt/0000755000175000017500000000000012621010234016024 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f77/pt2pt/statusesf.f0000644000175000017500000000316212620254305020226 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none C Test support for MPI_STATUS_IGNORE and MPI_STATUSES_IGNORE include 'mpif.h' integer nreqs parameter (nreqs = 100) integer reqs(nreqs) integer ierr, rank, i integer errs ierr = -1 errs = 0 call mpi_init( ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 print *, 'Unexpected return from MPI_INIT', ierr endif ierr = -1 call mpi_comm_rank( MPI_COMM_WORLD, rank, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 print *, 'Unexpected return from MPI_COMM_WORLD', ierr endif do i=1, nreqs, 2 ierr = -1 call mpi_isend( MPI_BOTTOM, 0, MPI_BYTE, rank, i, $ MPI_COMM_WORLD, reqs(i), ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 print *, 'Unexpected return from MPI_ISEND', ierr endif ierr = -1 call mpi_irecv( MPI_BOTTOM, 0, MPI_BYTE, rank, i, $ MPI_COMM_WORLD, reqs(i+1), ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 print *, 'Unexpected return from MPI_IRECV', ierr endif enddo ierr = -1 call mpi_waitall( nreqs, reqs, MPI_STATUSES_IGNORE, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 print *, 'Unexpected return from MPI_WAITALL', ierr endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/pt2pt/dummyf.f0000644000175000017500000000130612620254305017504 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2011 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C C C This file is used to disable certain compiler optimizations that C can cause incorrect results with the test in greqf.f. It provides a C point where extrastate may be modified, limiting the compilers ability C to move code around. C The include of mpif.h is not needed in the F77 case but in the C F90 case it is, because in that case, extrastate is defined as an C integer (kind=MPI_ADDRESS_KIND), and the script that creates the C F90 tests from the F77 tests looks for mpif.h subroutine dummyupdate( extrastate ) include 'mpif.h' include 'attr1aints.h' end mpi-testsuite-3.2+dfsg/f77/pt2pt/testlist0000644000175000017500000000007012620254305017627 0ustar mbanckmbanckstatusesf 1 greqf 1 allpairf 2 mprobef 2 mpiversion=3.0 mpi-testsuite-3.2+dfsg/f77/pt2pt/Makefile.in0000644000175000017500000004654712621010234020111 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = allpairf$(EXEEXT) statusesf$(EXEEXT) greqf$(EXEEXT) \ mprobef$(EXEEXT) subdir = f77/pt2pt ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = attr1aints.h CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) allpairf_SOURCES = allpairf.f allpairf_OBJECTS = allpairf.$(OBJEXT) allpairf_LDADD = $(LDADD) allpairf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o am_greqf_OBJECTS = greqf.$(OBJEXT) dummyf.$(OBJEXT) greqf_OBJECTS = $(am_greqf_OBJECTS) greqf_LDADD = $(LDADD) greqf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o mprobef_SOURCES = mprobef.f mprobef_OBJECTS = mprobef.$(OBJEXT) mprobef_LDADD = $(LDADD) mprobef_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o statusesf_SOURCES = statusesf.f statusesf_OBJECTS = statusesf.$(OBJEXT) statusesf_LDADD = $(LDADD) statusesf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include F77COMPILE = $(F77) $(AM_FFLAGS) $(FFLAGS) AM_V_F77 = $(am__v_F77_@AM_V@) am__v_F77_ = $(am__v_F77_@AM_DEFAULT_V@) am__v_F77_0 = @echo " F77 " $@; am__v_F77_1 = F77LD = $(F77) F77LINK = $(F77LD) $(AM_FFLAGS) $(FFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_F77LD = $(am__v_F77LD_@AM_V@) am__v_F77LD_ = $(am__v_F77LD_@AM_DEFAULT_V@) am__v_F77LD_0 = @echo " F77LD " $@; am__v_F77LD_1 = SOURCES = allpairf.f $(greqf_SOURCES) mprobef.f statusesf.f DIST_SOURCES = allpairf.f $(greqf_SOURCES) mprobef.f statusesf.f am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/attr1aints.h.in \ $(top_srcdir)/Makefile_f77.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F77 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. LDADD = $(top_builddir)/f77/util/mtestf.o CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f" lines AM_DEFAULT_SOURCE_EXT = .f greqf_SOURCES = greqf.f dummyf.f all: all-am .SUFFIXES: .SUFFIXES: .f .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f77.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f77/pt2pt/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f77/pt2pt/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f77.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): attr1aints.h: $(top_builddir)/config.status $(srcdir)/attr1aints.h.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) allpairf$(EXEEXT): $(allpairf_OBJECTS) $(allpairf_DEPENDENCIES) $(EXTRA_allpairf_DEPENDENCIES) @rm -f allpairf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(allpairf_OBJECTS) $(allpairf_LDADD) $(LIBS) greqf$(EXEEXT): $(greqf_OBJECTS) $(greqf_DEPENDENCIES) $(EXTRA_greqf_DEPENDENCIES) @rm -f greqf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(greqf_OBJECTS) $(greqf_LDADD) $(LIBS) mprobef$(EXEEXT): $(mprobef_OBJECTS) $(mprobef_DEPENDENCIES) $(EXTRA_mprobef_DEPENDENCIES) @rm -f mprobef$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(mprobef_OBJECTS) $(mprobef_LDADD) $(LIBS) statusesf$(EXEEXT): $(statusesf_OBJECTS) $(statusesf_DEPENDENCIES) $(EXTRA_statusesf_DEPENDENCIES) @rm -f statusesf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(statusesf_OBJECTS) $(statusesf_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .f.o: $(AM_V_F77)$(F77COMPILE) -c -o $@ $< .f.obj: $(AM_V_F77)$(F77COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f77/util/mtestf.o: $(top_srcdir)/f77/util/mtestf.f (cd $(top_builddir)/f77/util && $(MAKE) mtestf.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # ensure that dependent tests will be rebuilt when typeaints.h is updated greqf.$(OBJEXT): attr1aints.h # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f77/pt2pt/allpairf.f0000644000175000017500000007277212620254305020014 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2012 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C C This program is based on the allpair.f test from the MPICH-1 test C (test/pt2pt/allpair.f), which in turn was inspired by a bug report from C fsset@corelli.lerc.nasa.gov (Scott Townsend) program allpair implicit none include 'mpif.h' integer ierr, errs, comm logical mtestGetIntraComm logical verbose common /flags/ verbose errs = 0 verbose = .false. C verbose = .true. call MTest_Init( ierr ) do while ( mtestGetIntraComm( comm, 2, .false. ) ) call test_pair_send( comm, errs ) call test_pair_ssend( comm, errs ) call test_pair_rsend( comm, errs ) call test_pair_isend( comm, errs ) call test_pair_irsend( comm, errs ) call test_pair_issend( comm, errs ) call test_pair_psend( comm, errs ) call test_pair_prsend( comm, errs ) call test_pair_pssend( comm, errs ) call test_pair_sendrecv( comm, errs ) call test_pair_sendrecvrepl( comm, errs ) call mtestFreeComm( comm ) enddo C call MTest_Finalize( errs ) call MPI_Finalize(ierr) C end C subroutine test_pair_send( comm, errs ) implicit none include 'mpif.h' integer comm, errs integer rank, size, ierr, next, prev, tag, count integer TEST_SIZE parameter (TEST_SIZE=2000) integer status(MPI_STATUS_SIZE) real send_buf(TEST_SIZE), recv_buf(TEST_SIZE) logical verbose common /flags/ verbose C if (verbose) then print *, ' Send and recv' endif C call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) next = rank + 1 if (next .ge. size) next = 0 C prev = rank - 1 if (prev .lt. 0) prev = size - 1 C tag = 1123 count = TEST_SIZE / 5 C call clear_test_data(recv_buf,TEST_SIZE) C if (rank .eq. 0) then C call init_test_data(send_buf,TEST_SIZE) C call MPI_Send(send_buf, count, MPI_REAL, next, tag, . comm, ierr) C call MPI_Recv(recv_buf, TEST_SIZE, MPI_REAL, . MPI_ANY_SOURCE, MPI_ANY_TAG, comm, status, ierr) C call msg_check( recv_buf, next, tag, count, status, TEST_SIZE, . 'send and recv', errs ) else if (prev .eq. 0) then call MPI_Recv(recv_buf, TEST_SIZE, MPI_REAL, . MPI_ANY_SOURCE, MPI_ANY_TAG, comm, status, ierr) call msg_check( recv_buf, prev, tag, count, status, TEST_SIZE, . 'send and recv', errs ) C call MPI_Send(recv_buf, count, MPI_REAL, prev, tag, comm, ierr) end if C end C subroutine test_pair_rsend( comm, errs ) implicit none include 'mpif.h' integer comm, errs integer rank, size, ierr, next, prev, tag, count, i integer TEST_SIZE parameter (TEST_SIZE=2000) integer status(MPI_STATUS_SIZE), requests(1) real send_buf(TEST_SIZE), recv_buf(TEST_SIZE) logical verbose common /flags/ verbose C if (verbose) then print *, ' Rsend and recv' endif C C call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) next = rank + 1 if (next .ge. size) next = 0 C prev = rank - 1 if (prev .lt. 0) prev = size - 1 C tag = 1456 count = TEST_SIZE / 3 C call clear_test_data(recv_buf,TEST_SIZE) C if (rank .eq. 0) then C call init_test_data(send_buf,TEST_SIZE) C call MPI_Recv( MPI_BOTTOM, 0, MPI_INTEGER, next, tag, . comm, status, ierr ) C call MPI_Rsend(send_buf, count, MPI_REAL, next, tag, . comm, ierr) C call MPI_Probe(MPI_ANY_SOURCE, tag, comm, status, ierr) C if (status(MPI_SOURCE) .ne. next) then print *, 'Rsend: Incorrect source, expected', next, . ', got', status(MPI_SOURCE) errs = errs + 1 end if C if (status(MPI_TAG) .ne. tag) then print *, 'Rsend: Incorrect tag, expected', tag, . ', got', status(MPI_TAG) errs = errs + 1 end if C call MPI_Get_count(status, MPI_REAL, i, ierr) C if (i .ne. count) then print *, 'Rsend: Incorrect count, expected', count, . ', got', i errs = errs + 1 end if C call MPI_Recv(recv_buf, TEST_SIZE, MPI_REAL, . MPI_ANY_SOURCE, MPI_ANY_TAG, comm, . status, ierr) C call msg_check( recv_buf, next, tag, count, status, TEST_SIZE, . 'rsend and recv', errs ) C else if (prev .eq. 0) then C call MPI_Irecv(recv_buf, TEST_SIZE, MPI_REAL, . MPI_ANY_SOURCE, MPI_ANY_TAG, comm, . requests(1), ierr) call MPI_Send( MPI_BOTTOM, 0, MPI_INTEGER, prev, tag, . comm, ierr ) call MPI_Wait( requests(1), status, ierr ) call msg_check( recv_buf, prev, tag, count, status, TEST_SIZE, . 'rsend and recv', errs ) C call MPI_Send(recv_buf, count, MPI_REAL, prev, tag, . comm, ierr) end if C end C subroutine test_pair_ssend( comm, errs ) implicit none include 'mpif.h' integer comm, errs integer rank, size, ierr, next, prev, tag, count, i integer TEST_SIZE parameter (TEST_SIZE=2000) integer status(MPI_STATUS_SIZE) logical flag real send_buf(TEST_SIZE), recv_buf(TEST_SIZE) logical verbose common /flags/ verbose C if (verbose) then print *, ' Ssend and recv' endif C C call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) next = rank + 1 if (next .ge. size) next = 0 C prev = rank - 1 if (prev .lt. 0) prev = size - 1 C tag = 1789 count = TEST_SIZE / 3 C call clear_test_data(recv_buf,TEST_SIZE) C if (rank .eq. 0) then C call init_test_data(send_buf,TEST_SIZE) C call MPI_Iprobe(MPI_ANY_SOURCE, tag, . comm, flag, status, ierr) C if (flag) then print *, 'Ssend: Iprobe succeeded! source', . status(MPI_SOURCE), . ', tag', status(MPI_TAG) errs = errs + 1 end if C call MPI_Ssend(send_buf, count, MPI_REAL, next, tag, . comm, ierr) C do while (.not. flag) call MPI_Iprobe(MPI_ANY_SOURCE, tag, . comm, flag, status, ierr) end do C if (status(MPI_SOURCE) .ne. next) then print *, 'Ssend: Incorrect source, expected', next, . ', got', status(MPI_SOURCE) errs = errs + 1 end if C if (status(MPI_TAG) .ne. tag) then print *, 'Ssend: Incorrect tag, expected', tag, . ', got', status(MPI_TAG) errs = errs + 1 end if C call MPI_Get_count(status, MPI_REAL, i, ierr) C if (i .ne. count) then print *, 'Ssend: Incorrect count, expected', count, . ', got', i errs = errs + 1 end if C call MPI_Recv(recv_buf, TEST_SIZE, MPI_REAL, . MPI_ANY_SOURCE, MPI_ANY_TAG, comm, . status, ierr) C call msg_check( recv_buf, next, tag, count, status, . TEST_SIZE, 'ssend and recv', errs ) C else if (prev .eq. 0) then C call MPI_Recv(recv_buf, TEST_SIZE, MPI_REAL, . MPI_ANY_SOURCE, MPI_ANY_TAG, comm, . status, ierr) C call msg_check( recv_buf, prev, tag, count, status, TEST_SIZE, . 'ssend and recv', errs ) C call MPI_Ssend(recv_buf, count, MPI_REAL, prev, tag, . comm, ierr) end if C end C subroutine test_pair_isend( comm, errs ) implicit none include 'mpif.h' integer comm, errs integer rank, size, ierr, next, prev, tag, count integer TEST_SIZE parameter (TEST_SIZE=2000) integer status(MPI_STATUS_SIZE), requests(2) integer statuses(MPI_STATUS_SIZE,2) real send_buf(TEST_SIZE), recv_buf(TEST_SIZE) logical verbose common /flags/ verbose C if (verbose) then print *, ' isend and irecv' endif C C call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) next = rank + 1 if (next .ge. size) next = 0 C prev = rank - 1 if (prev .lt. 0) prev = size - 1 C tag = 2123 count = TEST_SIZE / 5 C call clear_test_data(recv_buf,TEST_SIZE) C if (rank .eq. 0) then C call MPI_Irecv(recv_buf, TEST_SIZE, MPI_REAL, . MPI_ANY_SOURCE, MPI_ANY_TAG, comm, . requests(1), ierr) C call init_test_data(send_buf,TEST_SIZE) C call MPI_Isend(send_buf, count, MPI_REAL, next, tag, . comm, requests(2), ierr) C call MPI_Waitall(2, requests, statuses, ierr) C call rq_check( requests, 2, 'isend and irecv' ) C call msg_check( recv_buf, next, tag, count, statuses(1,1), . TEST_SIZE, 'isend and irecv', errs ) C else if (prev .eq. 0) then C call MPI_Recv(recv_buf, TEST_SIZE, MPI_REAL, . MPI_ANY_SOURCE, MPI_ANY_TAG, comm, . status, ierr) C call msg_check( recv_buf, prev, tag, count, status, TEST_SIZE, . 'isend and irecv', errs ) C call MPI_Isend(recv_buf, count, MPI_REAL, prev, tag, . comm, requests(1), ierr) C call MPI_Wait(requests(1), status, ierr) C call rq_check( requests(1), 1, 'isend and irecv' ) C end if C end C subroutine test_pair_irsend( comm, errs ) implicit none include 'mpif.h' integer comm, errs integer rank, size, ierr, next, prev, tag, count, index, i integer TEST_SIZE integer dupcom parameter (TEST_SIZE=2000) integer status(MPI_STATUS_SIZE), requests(2) integer statuses(MPI_STATUS_SIZE,2) logical flag real send_buf(TEST_SIZE), recv_buf(TEST_SIZE) logical verbose common /flags/ verbose C if (verbose) then print *, ' Irsend and irecv' endif C call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) next = rank + 1 if (next .ge. size) next = 0 C prev = rank - 1 if (prev .lt. 0) prev = size - 1 C call mpi_comm_dup( comm, dupcom, ierr ) C tag = 2456 count = TEST_SIZE / 3 C call clear_test_data(recv_buf,TEST_SIZE) C if (rank .eq. 0) then C call MPI_Irecv(recv_buf, TEST_SIZE, MPI_REAL, . MPI_ANY_SOURCE, MPI_ANY_TAG, comm, . requests(1), ierr) C call init_test_data(send_buf,TEST_SIZE) C call MPI_Sendrecv( MPI_BOTTOM, 0, MPI_INTEGER, next, 0, . MPI_BOTTOM, 0, MPI_INTEGER, next, 0, . dupcom, status, ierr ) C call MPI_Irsend(send_buf, count, MPI_REAL, next, tag, . comm, requests(2), ierr) C index = -1 do while (index .ne. 1) call MPI_Waitany(2, requests, index, statuses, ierr) end do C call rq_check( requests(1), 1, 'irsend and irecv' ) C call msg_check( recv_buf, next, tag, count, statuses, . TEST_SIZE, 'irsend and irecv', errs ) C else if (prev .eq. 0) then C call MPI_Irecv(recv_buf, TEST_SIZE, MPI_REAL, . MPI_ANY_SOURCE, MPI_ANY_TAG, comm, . requests(1), ierr) C call MPI_Sendrecv( MPI_BOTTOM, 0, MPI_INTEGER, prev, 0, . MPI_BOTTOM, 0, MPI_INTEGER, prev, 0, . dupcom, status, ierr ) C flag = .FALSE. do while (.not. flag) call MPI_Test(requests(1), flag, status, ierr) end do C call rq_check( requests, 1, 'irsend and irecv (test)' ) C call msg_check( recv_buf, prev, tag, count, status, TEST_SIZE, . 'irsend and irecv', errs ) C call MPI_Irsend(recv_buf, count, MPI_REAL, prev, tag, . comm, requests(1), ierr) C call MPI_Waitall(1, requests, statuses, ierr) C call rq_check( requests, 1, 'irsend and irecv' ) C end if C call mpi_comm_free( dupcom, ierr ) C end C subroutine test_pair_issend( comm, errs ) implicit none include 'mpif.h' integer comm, errs integer rank, size, ierr, next, prev, tag, count, index integer TEST_SIZE parameter (TEST_SIZE=2000) integer status(MPI_STATUS_SIZE), requests(2) integer statuses(MPI_STATUS_SIZE,2) logical flag real send_buf(TEST_SIZE), recv_buf(TEST_SIZE) logical verbose common /flags/ verbose C if (verbose) then print *, ' issend and irecv (testall)' endif C C call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) next = rank + 1 if (next .ge. size) next = 0 C prev = rank - 1 if (prev .lt. 0) prev = size - 1 C tag = 2789 count = TEST_SIZE / 3 C call clear_test_data(recv_buf,TEST_SIZE) C if (rank .eq. 0) then C call MPI_Irecv(recv_buf, TEST_SIZE, MPI_REAL, . MPI_ANY_SOURCE, MPI_ANY_TAG, comm, . requests(1), ierr) C call init_test_data(send_buf,TEST_SIZE) C call MPI_Issend(send_buf, count, MPI_REAL, next, tag, . comm, requests(2), ierr) C flag = .FALSE. do while (.not. flag) call MPI_Testall(2, requests, flag, statuses, ierr) end do C call rq_check( requests, 2, 'issend and irecv (testall)' ) C call msg_check( recv_buf, next, tag, count, statuses(1,1), . TEST_SIZE, 'issend and recv (testall)', errs ) C else if (prev .eq. 0) then C call MPI_Recv(recv_buf, TEST_SIZE, MPI_REAL, . MPI_ANY_SOURCE, MPI_ANY_TAG, comm, . status, ierr) call msg_check( recv_buf, prev, tag, count, status, TEST_SIZE, . 'issend and recv', errs ) call MPI_Issend(recv_buf, count, MPI_REAL, prev, tag, . comm, requests(1), ierr) C flag = .FALSE. do while (.not. flag) call MPI_Testany(1, requests(1), index, flag, . statuses(1,1), ierr) end do C call rq_check( requests, 1, 'issend and recv (testany)' ) C end if C end C subroutine test_pair_psend( comm, errs ) implicit none include 'mpif.h' integer comm, errs integer rank, size, ierr, next, prev, tag, count, i integer TEST_SIZE parameter (TEST_SIZE=2000) integer status(MPI_STATUS_SIZE) integer statuses(MPI_STATUS_SIZE,2), requests(2) real send_buf(TEST_SIZE), recv_buf(TEST_SIZE) logical verbose common /flags/ verbose C if (verbose) then print *, ' Persistent send and recv' endif C call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) next = rank + 1 if (next .ge. size) next = 0 C prev = rank - 1 if (prev .lt. 0) prev = size - 1 C tag = 3123 count = TEST_SIZE / 5 C call clear_test_data(recv_buf,TEST_SIZE) call MPI_Recv_init(recv_buf, TEST_SIZE, MPI_REAL, . MPI_ANY_SOURCE, MPI_ANY_TAG, comm, . requests(2), ierr) C if (rank .eq. 0) then C call init_test_data(send_buf,TEST_SIZE) C call MPI_Send_init(send_buf, count, MPI_REAL, next, tag, . comm, requests(1), ierr) C call MPI_Startall(2, requests, ierr) call MPI_Waitall(2, requests, statuses, ierr) C call msg_check( recv_buf, next, tag, count, statuses(1,2), . TEST_SIZE, 'persistent send/recv', errs ) C call MPI_Request_free(requests(1), ierr) C else if (prev .eq. 0) then C call MPI_Send_init(send_buf, count, MPI_REAL, prev, tag, . comm, requests(1), ierr) call MPI_Start(requests(2), ierr) call MPI_Wait(requests(2), status, ierr) C call msg_check( recv_buf, prev, tag, count, status, TEST_SIZE, * 'persistent send/recv', errs ) C do i = 1,count send_buf(i) = recv_buf(i) end do C call MPI_Start(requests(1), ierr) call MPI_Wait(requests(1), status, ierr) C call MPI_Request_free(requests(1), ierr) end if C call dummyRef( send_buf, count, ierr ) call MPI_Request_free(requests(2), ierr) C end C subroutine test_pair_prsend( comm, errs ) implicit none include 'mpif.h' integer comm, errs integer rank, size, ierr, next, prev, tag, count, index, i integer outcount, indices(2) integer TEST_SIZE parameter (TEST_SIZE=2000) integer statuses(MPI_STATUS_SIZE,2), requests(2) integer status(MPI_STATUS_SIZE) logical flag real send_buf(TEST_SIZE), recv_buf(TEST_SIZE) logical verbose common /flags/ verbose C if (verbose) then print *, ' Persistent Rsend and recv' endif C call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) next = rank + 1 if (next .ge. size) next = 0 C prev = rank - 1 if (prev .lt. 0) prev = size - 1 C tag = 3456 count = TEST_SIZE / 3 C call clear_test_data(recv_buf,TEST_SIZE) C call MPI_Recv_init(recv_buf, TEST_SIZE, MPI_REAL, . MPI_ANY_SOURCE, MPI_ANY_TAG, comm, . requests(2), ierr) C if (rank .eq. 0) then C call MPI_Rsend_init(send_buf, count, MPI_REAL, next, tag, . comm, requests(1), ierr) C call init_test_data(send_buf,TEST_SIZE) C call MPI_Recv( MPI_BOTTOM, 0, MPI_INTEGER, next, tag, . comm, status, ierr ) C call MPI_Startall(2, requests, ierr) C index = -1 C do while (index .ne. 2) call MPI_Waitsome(2, requests, outcount, . indices, statuses, ierr) do i = 1,outcount if (indices(i) .eq. 2) then call msg_check( recv_buf, next, tag, count, . statuses(1,i), TEST_SIZE, 'waitsome', errs ) index = 2 end if end do end do C call MPI_Request_free(requests(1), ierr) else if (prev .eq. 0) then C call MPI_Rsend_init(send_buf, count, MPI_REAL, prev, tag, . comm, requests(1), ierr) C call MPI_Start(requests(2), ierr) C call MPI_Send( MPI_BOTTOM, 0, MPI_INTEGER, prev, tag, . comm, ierr ) C flag = .FALSE. do while (.not. flag) call MPI_Test(requests(2), flag, status, ierr) end do call msg_check( recv_buf, prev, tag, count, status, TEST_SIZE, . 'test', errs ) C do i = 1,count send_buf(i) = recv_buf(i) end do C call MPI_Start(requests(1), ierr) call MPI_Wait(requests(1), status, ierr) C call MPI_Request_free(requests(1), ierr) end if C call dummyRef( send_buf, count, ierr ) call MPI_Request_free(requests(2), ierr) C end C subroutine test_pair_pssend( comm, errs ) implicit none include 'mpif.h' integer comm, errs integer rank, size, ierr, next, prev, tag, count, index, i integer outcount, indices(2) integer TEST_SIZE parameter (TEST_SIZE=2000) integer statuses(MPI_STATUS_SIZE,2), requests(2) integer status(MPI_STATUS_SIZE) logical flag real send_buf(TEST_SIZE), recv_buf(TEST_SIZE) logical verbose common /flags/ verbose C if (verbose) then print *, ' Persistent Ssend and recv' endif C call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) next = rank + 1 if (next .ge. size) next = 0 C prev = rank - 1 if (prev .lt. 0) prev = size - 1 C tag = 3789 count = TEST_SIZE / 3 C call clear_test_data(recv_buf,TEST_SIZE) C call MPI_Recv_init(recv_buf, TEST_SIZE, MPI_REAL, . MPI_ANY_SOURCE, MPI_ANY_TAG, comm, . requests(1), ierr) C if (rank .eq. 0) then C call MPI_Ssend_init(send_buf, count, MPI_REAL, next, tag, . comm, requests(2), ierr) C call init_test_data(send_buf,TEST_SIZE) C call MPI_Startall(2, requests, ierr) C index = -1 do while (index .ne. 1) call MPI_Testsome(2, requests, outcount, . indices, statuses, ierr) do i = 1,outcount if (indices(i) .eq. 1) then call msg_check( recv_buf, next, tag, count, . statuses(1,i), TEST_SIZE, 'testsome', errs ) index = 1 end if end do end do C call MPI_Request_free(requests(2), ierr) C else if (prev .eq. 0) then C call MPI_Ssend_init(send_buf, count, MPI_REAL, prev, tag, . comm, requests(2), ierr) C call MPI_Start(requests(1), ierr) C flag = .FALSE. do while (.not. flag) call MPI_Testany(1, requests(1), index, flag, . statuses(1,1), ierr) end do call msg_check( recv_buf, prev, tag, count, statuses(1,1), . TEST_SIZE, 'testany', errs ) do i = 1,count send_buf(i) = recv_buf(i) end do C call MPI_Start(requests(2), ierr) call MPI_Wait(requests(2), status, ierr) C call MPI_Request_free(requests(2), ierr) C end if C call dummyRef( send_buf, count, ierr ) call MPI_Request_free(requests(1), ierr) C end C subroutine test_pair_sendrecv( comm, errs ) implicit none include 'mpif.h' integer comm, errs integer rank, size, ierr, next, prev, tag, count integer TEST_SIZE parameter (TEST_SIZE=2000) integer status(MPI_STATUS_SIZE) real send_buf(TEST_SIZE), recv_buf(TEST_SIZE) logical verbose common /flags/ verbose C if (verbose) then print *, ' Sendrecv' endif C C call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) next = rank + 1 if (next .ge. size) next = 0 C prev = rank - 1 if (prev .lt. 0) prev = size - 1 C tag = 4123 count = TEST_SIZE / 5 call clear_test_data(recv_buf,TEST_SIZE) if (rank .eq. 0) then call init_test_data(send_buf,TEST_SIZE) call MPI_Sendrecv(send_buf, count, MPI_REAL, next, tag, . recv_buf, count, MPI_REAL, next, tag, . comm, status, ierr) call msg_check( recv_buf, next, tag, count, status, TEST_SIZE, . 'sendrecv', errs ) else if (prev .eq. 0) then call MPI_Recv(recv_buf, TEST_SIZE, MPI_REAL, . MPI_ANY_SOURCE, MPI_ANY_TAG, comm, . status, ierr) call msg_check( recv_buf, prev, tag, count, status, TEST_SIZE, . 'recv/send', errs ) call MPI_Send(recv_buf, count, MPI_REAL, prev, tag, . comm, ierr) end if C end C subroutine test_pair_sendrecvrepl( comm, errs ) implicit none include 'mpif.h' integer comm, errs integer rank, size, ierr, next, prev, tag, count, i integer TEST_SIZE parameter (TEST_SIZE=2000) integer status(MPI_STATUS_SIZE) real send_buf(TEST_SIZE), recv_buf(TEST_SIZE) logical verbose common /flags/ verbose C if (verbose) then print *, ' Sendrecv replace' endif C call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) next = rank + 1 if (next .ge. size) next = 0 C prev = rank - 1 if (prev .lt. 0) prev = size - 1 C tag = 4456 count = TEST_SIZE / 3 if (rank .eq. 0) then C call init_test_data(recv_buf, TEST_SIZE) C do 11 i = count+1,TEST_SIZE recv_buf(i) = 0.0 11 continue C call MPI_Sendrecv_replace(recv_buf, count, MPI_REAL, . next, tag, next, tag, . comm, status, ierr) call msg_check( recv_buf, next, tag, count, status, TEST_SIZE, . 'sendrecvreplace', errs ) else if (prev .eq. 0) then call clear_test_data(recv_buf,TEST_SIZE) call MPI_Recv(recv_buf, TEST_SIZE, MPI_REAL, . MPI_ANY_SOURCE, MPI_ANY_TAG, comm, . status, ierr) call msg_check( recv_buf, prev, tag, count, status, TEST_SIZE, . 'recv/send for replace', errs ) call MPI_Send(recv_buf, count, MPI_REAL, prev, tag, . comm, ierr) end if C end C c------------------------------------------------------------------------------ c c Check for correct source, tag, count, and data in test message. c c------------------------------------------------------------------------------ subroutine msg_check( recv_buf, source, tag, count, status, n, * name, errs ) implicit none include 'mpif.h' integer n, errs real recv_buf(n) integer source, tag, count, rank, status(MPI_STATUS_SIZE) character*(*) name logical foundError integer ierr, recv_src, recv_tag, recv_count foundError = .false. recv_src = status(MPI_SOURCE) recv_tag = status(MPI_TAG) call MPI_Comm_rank( MPI_COMM_WORLD, rank, ierr ) call MPI_Get_count(status, MPI_REAL, recv_count, ierr) if (recv_src .ne. source) then print *, '[', rank, '] Unexpected source:', recv_src, * ' in ', name errs = errs + 1 foundError = .true. end if if (recv_tag .ne. tag) then print *, '[', rank, '] Unexpected tag:', recv_tag, ' in ', name errs = errs + 1 foundError = .true. end if if (recv_count .ne. count) then print *, '[', rank, '] Unexpected count:', recv_count, * ' in ', name errs = errs + 1 foundError = .true. end if call verify_test_data(recv_buf, count, n, name, errs ) end c------------------------------------------------------------------------------ c c Check that requests have been set to null c c------------------------------------------------------------------------------ subroutine rq_check( requests, n, msg ) include 'mpif.h' integer n, requests(n) character*(*) msg integer i c do 10 i=1, n if (requests(i) .ne. MPI_REQUEST_NULL) then print *, 'Nonnull request in ', msg endif 10 continue c end c------------------------------------------------------------------------------ c c Initialize test data buffer with integral sequence. c c------------------------------------------------------------------------------ subroutine init_test_data(buf,n) integer n real buf(n) integer i do 10 i = 1, n buf(i) = REAL(i) 10 continue end c------------------------------------------------------------------------------ c c Clear test data buffer c c------------------------------------------------------------------------------ subroutine clear_test_data(buf, n) integer n real buf(n) integer i do 10 i = 1, n buf(i) = 0. 10 continue end c------------------------------------------------------------------------------ c c Verify test data buffer c c------------------------------------------------------------------------------ subroutine verify_test_data( buf, count, n, name, errs ) implicit none include 'mpif.h' integer n, errs real buf(n) character *(*) name integer count, ierr, i C do 10 i = 1, count if (buf(i) .ne. REAL(i)) then print 100, buf(i), i, count, name errs = errs + 1 endif 10 continue C do 20 i = count + 1, n if (buf(i) .ne. 0.) then print 100, buf(i), i, n, name errs = errs + 1 endif 20 continue C 100 format('Invalid data', f6.1, ' at ', i4, ' of ', i4, ' in ', a) C end C C This routine is used to prevent the compiler from deallocating the C array "a", which may happen in some of the tests (see the text in C the MPI standard about why this may be a problem in valid Fortran C codes). Without this, for example, tests fail with the Cray ftn C compiler. C subroutine dummyRef( a, n, ie ) integer n, ie real a(n) C This condition will never be true, but the compile won't know that if (ie .eq. -1) then print *, a(n) endif return end mpi-testsuite-3.2+dfsg/f77/pt2pt/attr1aints.h.in0000644000175000017500000000025712620254305020710 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C @F77_MPI_ADDRESS@ extrastate, valin, valout, val mpi-testsuite-3.2+dfsg/f77/pt2pt/Makefile.am0000644000175000017500000000107212620254305020070 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f77.mtest EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f" lines AM_DEFAULT_SOURCE_EXT = .f noinst_PROGRAMS = allpairf statusesf greqf mprobef greqf_SOURCES = greqf.f dummyf.f ## attr1aints.h will be distributed because it's listed in AC_CONFIG_FILES/AC_OUTPUT # ensure that dependent tests will be rebuilt when typeaints.h is updated greqf.$(OBJEXT): attr1aints.h mpi-testsuite-3.2+dfsg/f77/pt2pt/mprobef.f0000644000175000017500000005721312620254305017645 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2012 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer idx, ierr, rank, size, count integer sendbuf(8), recvbuf(8) integer s1(MPI_STATUS_SIZE), s2(MPI_STATUS_SIZE) integer msg, errs integer rreq logical found, flag ierr = -1 errs = 0 call mpi_init( ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 print *, ' Unexpected return from MPI_INIT', ierr endif call mpi_comm_rank( MPI_COMM_WORLD, rank, ierr ) call mpi_comm_size( MPI_COMM_WORLD, size, ierr ) if (size .lt. 2) then errs = errs + 1 print *, ' This test requires at least 2 processes' C Abort now - do not continue in this case. call mpi_abort( MPI_COMM_WORLD, 1, ierr ) endif if (size .gt. 2) then print *, ' This test is running with ', size, ' processes,' print *, ' only 2 processes are used.' endif C Test 0: simple Send and Mprobe+Mrecv. if (rank .eq. 0) then sendbuf(1) = 1735928559 sendbuf(2) = 1277009102 call MPI_Send(sendbuf, 2, MPI_INTEGER, . 1, 5, MPI_COMM_WORLD, ierr) else do idx = 1, MPI_STATUS_SIZE s1(idx) = 0 s2(idx) = 0 enddo C the error fields are initialized for modification check. s1(MPI_ERROR) = MPI_ERR_DIMS s2(MPI_ERROR) = MPI_ERR_OTHER msg = MPI_MESSAGE_NULL call MPI_Mprobe(0, 5, MPI_COMM_WORLD, msg, s1, ierr) if (s1(MPI_SOURCE) .ne. 0) then errs = errs + 1 print *, 's1(MPI_SOURCE) != 0 at T0 Mprobe().' endif if (s1(MPI_TAG) .ne. 5) then errs = errs + 1 print *, 's1(MPI_TAG) != 5 at T0 Mprobe().' endif if (s1(MPI_ERROR) .ne. MPI_ERR_DIMS) then errs = errs + 1 print *, 's1(MPI_ERROR) != MPI_ERR_DIMS at T0 Mprobe().' endif if (msg .eq. MPI_MESSAGE_NULL) then errs = errs + 1 print *, 'msg == MPI_MESSAGE_NULL at T0 Mprobe().' endif count = -1 call MPI_Get_count(s1, MPI_INTEGER, count, ierr) if (count .ne. 2) then errs = errs + 1 print *, 'probed buffer does not have 2 MPI_INTEGERs.' endif recvbuf(1) = 19088743 recvbuf(2) = 1309737967 call MPI_Mrecv(recvbuf, count, MPI_INTEGER, msg, s2, ierr) if (recvbuf(1) .ne. 1735928559) then errs = errs + 1 print *, 'recvbuf(1) is corrupted at T0 Mrecv().' endif if (recvbuf(2) .ne. 1277009102) then errs = errs + 1 print *, 'recvbuf(2) is corrupted at T0 Mrecv().' endif if (s2(MPI_SOURCE) .ne. 0) then errs = errs + 1 print *, 's2(MPI_SOURCE) != 0 at T0 Mrecv().' endif if (s2(MPI_TAG) .ne. 5) then errs = errs + 1 print *, 's2(MPI_TAG) != 5 at T0 Mrecv().' endif if (s2(MPI_ERROR) .ne. MPI_ERR_OTHER) then errs = errs + 1 print *, 's2(MPI_ERROR) != MPI_ERR_OTHER at T0 Mrecv().' endif if (msg .ne. MPI_MESSAGE_NULL) then errs = errs + 1 print *, 'msg != MPI_MESSAGE_NULL at T0 Mrecv().' endif endif C Test 1: simple Send and Mprobe+Imrecv. if (rank .eq. 0) then sendbuf(1) = 1735928559 sendbuf(2) = 1277009102 call MPI_Send(sendbuf, 2, MPI_INTEGER, . 1, 5, MPI_COMM_WORLD, ierr) else do idx = 1, MPI_STATUS_SIZE s1(idx) = 0 s2(idx) = 0 enddo C the error fields are initialized for modification check. s1(MPI_ERROR) = MPI_ERR_DIMS s2(MPI_ERROR) = MPI_ERR_OTHER msg = MPI_MESSAGE_NULL call MPI_Mprobe(0, 5, MPI_COMM_WORLD, msg, s1, ierr) if (s1(MPI_SOURCE) .ne. 0) then errs = errs + 1 print *, 's1(MPI_SOURCE) != 0 at T1 Mprobe().' endif if (s1(MPI_TAG) .ne. 5) then errs = errs + 1 print *, 's1(MPI_TAG) != 5 at T1 Mprobe().' endif if (s1(MPI_ERROR) .ne. MPI_ERR_DIMS) then errs = errs + 1 print *, 's1(MPI_ERROR) != MPI_ERR_DIMS at T1 Mprobe().' endif if (msg .eq. MPI_MESSAGE_NULL) then errs = errs + 1 print *, 'msg == MPI_MESSAGE_NULL at T1 Mprobe().' endif count = -1 call MPI_Get_count(s1, MPI_INTEGER, count, ierr) if (count .ne. 2) then errs = errs + 1 print *, 'probed buffer does not have 2 MPI_INTEGERs.' endif rreq = MPI_REQUEST_NULL recvbuf(1) = 19088743 recvbuf(2) = 1309737967 call MPI_Imrecv(recvbuf, count, MPI_INTEGER, msg, rreq, ierr) if (rreq .eq. MPI_REQUEST_NULL) then errs = errs + 1 print *, 'rreq is unmodified at T1 Imrecv().' endif call MPI_Wait(rreq, s2, ierr) if (recvbuf(1) .ne. 1735928559) then errs = errs + 1 print *, 'recvbuf(1) is corrupted at T1 Imrecv().' endif if (recvbuf(2) .ne. 1277009102) then errs = errs + 1 print *, 'recvbuf(2) is corrupted at T1 Imrecv().' endif if (s2(MPI_SOURCE) .ne. 0) then errs = errs + 1 print *, 's2(MPI_SOURCE) != 0 at T1 Imrecv().' endif if (s2(MPI_TAG) .ne. 5) then errs = errs + 1 print *, 's2(MPI_TAG) != 5 at T1 Imrecv().' endif if (s2(MPI_ERROR) .ne. MPI_ERR_OTHER) then errs = errs + 1 print *, 's2(MPI_ERROR) != MPI_ERR_OTHER at T1 Imrecv().' endif if (msg .ne. MPI_MESSAGE_NULL) then errs = errs + 1 print *, 'msg != MPI_MESSAGE_NULL at T1 Imrecv().' endif endif C Test 2: simple Send and Improbe+Mrecv. if (rank .eq. 0) then sendbuf(1) = 1735928559 sendbuf(2) = 1277009102 call MPI_Send(sendbuf, 2, MPI_INTEGER, . 1, 5, MPI_COMM_WORLD, ierr) else do idx = 1, MPI_STATUS_SIZE s1(idx) = 0 s2(idx) = 0 enddo C the error fields are initialized for modification check. s1(MPI_ERROR) = MPI_ERR_DIMS s2(MPI_ERROR) = MPI_ERR_OTHER msg = MPI_MESSAGE_NULL call MPI_Improbe(0, 5, MPI_COMM_WORLD, found, msg, s1, ierr) do while (.not. found) call MPI_Improbe(0, 5, MPI_COMM_WORLD, . found, msg, s1, ierr) enddo if (msg .eq. MPI_MESSAGE_NULL) then errs = errs + 1 print *, 'msg == MPI_MESSAGE_NULL at T2 Improbe().' endif if (s1(MPI_SOURCE) .ne. 0) then errs = errs + 1 print *, 's1(MPI_SOURCE) != 0 at T2 Improbe().' endif if (s1(MPI_TAG) .ne. 5) then errs = errs + 1 print *, 's1(MPI_TAG) != 5 at T2 Improbe().' endif if (s1(MPI_ERROR) .ne. MPI_ERR_DIMS) then errs = errs + 1 print *, 's1(MPI_ERROR) != MPI_ERR_DIMS at T2 Improbe().' endif count = -1 call MPI_Get_count(s1, MPI_INTEGER, count, ierr) if (count .ne. 2) then errs = errs + 1 print *, 'probed buffer does not have 2 MPI_INTEGERs.' endif recvbuf(1) = 19088743 recvbuf(2) = 1309737967 call MPI_Mrecv(recvbuf, count, MPI_INTEGER, msg, s2, ierr) if (recvbuf(1) .ne. 1735928559) then errs = errs + 1 print *, 'recvbuf(1) is corrupted at T2 Mrecv().' endif if (recvbuf(2) .ne. 1277009102) then errs = errs + 1 print *, 'recvbuf(2) is corrupted at T2 Mrecv().' endif if (s2(MPI_SOURCE) .ne. 0) then errs = errs + 1 print *, 's2(MPI_SOURCE) != 0 at T2 Mrecv().' endif if (s2(MPI_TAG) .ne. 5) then errs = errs + 1 print *, 's2(MPI_TAG) != 5 at T2 Mrecv().' endif if (s2(MPI_ERROR) .ne. MPI_ERR_OTHER) then errs = errs + 1 print *, 's2(MPI_ERROR) != MPI_ERR_OTHER at T2 Mrecv().' endif if (msg .ne. MPI_MESSAGE_NULL) then errs = errs + 1 print *, 'msg != MPI_MESSAGE_NULL at T2 Mrecv().' endif endif C Test 3: simple Send and Improbe+Imrecv. if (rank .eq. 0) then sendbuf(1) = 1735928559 sendbuf(2) = 1277009102 call MPI_Send(sendbuf, 2, MPI_INTEGER, . 1, 5, MPI_COMM_WORLD, ierr) else do idx = 1, MPI_STATUS_SIZE s1(idx) = 0 s2(idx) = 0 enddo C the error fields are initialized for modification check. s1(MPI_ERROR) = MPI_ERR_DIMS s2(MPI_ERROR) = MPI_ERR_OTHER msg = MPI_MESSAGE_NULL call MPI_Improbe(0, 5, MPI_COMM_WORLD, found, msg, s1, ierr) do while (.not. found) call MPI_Improbe(0, 5, MPI_COMM_WORLD, . found, msg, s1, ierr) enddo if (msg .eq. MPI_MESSAGE_NULL) then errs = errs + 1 print *, 'msg == MPI_MESSAGE_NULL at T3 Improbe().' endif if (s1(MPI_SOURCE) .ne. 0) then errs = errs + 1 print *, 's1(MPI_SOURCE) != 0 at T3 Improbe().' endif if (s1(MPI_TAG) .ne. 5) then errs = errs + 1 print *, 's1(MPI_TAG) != 5 at T3 Improbe().' endif if (s1(MPI_ERROR) .ne. MPI_ERR_DIMS) then errs = errs + 1 print *, 's1(MPI_ERROR) != MPI_ERR_DIMS at T3 Improbe().' endif count = -1 call MPI_Get_count(s1, MPI_INTEGER, count, ierr) if (count .ne. 2) then errs = errs + 1 print *, 'probed buffer does not have 2 MPI_INTEGERs.' endif rreq = MPI_REQUEST_NULL recvbuf(1) = 19088743 recvbuf(2) = 1309737967 call MPI_Imrecv(recvbuf, count, MPI_INTEGER, msg, rreq, ierr) if (rreq .eq. MPI_REQUEST_NULL) then errs = errs + 1 print *, 'rreq is unmodified at T3 Imrecv().' endif call MPI_Wait(rreq, s2, ierr) if (recvbuf(1) .ne. 1735928559) then errs = errs + 1 print *, 'recvbuf(1) is corrupted at T3 Imrecv().' endif if (recvbuf(2) .ne. 1277009102) then errs = errs + 1 print *, 'recvbuf(2) is corrupted at T3 Imrecv().' endif if (s2(MPI_SOURCE) .ne. 0) then errs = errs + 1 print *, 's2(MPI_SOURCE) != 0 at T3 Imrecv().' endif if (s2(MPI_TAG) .ne. 5) then errs = errs + 1 print *, 's2(MPI_TAG) != 5 at T3 Imrecv().' endif if (s2(MPI_ERROR) .ne. MPI_ERR_OTHER) then errs = errs + 1 print *, 's2(MPI_ERROR) != MPI_ERR_OTHER at T3 Imrecv().' endif if (msg .ne. MPI_MESSAGE_NULL) then errs = errs + 1 print *, 'msg != MPI_MESSAGE_NULL at T3 Imrecv().' endif endif C Test 4: Mprobe+Mrecv with MPI_PROC_NULL if (.true.) then do idx = 1, MPI_STATUS_SIZE s1(idx) = 0 s2(idx) = 0 enddo C the error fields are initialized for modification check. s1(MPI_ERROR) = MPI_ERR_DIMS s2(MPI_ERROR) = MPI_ERR_OTHER msg = MPI_MESSAGE_NULL call MPI_Mprobe(MPI_PROC_NULL, 5, MPI_COMM_WORLD, . msg, s1, ierr) if (s1(MPI_SOURCE) .ne. MPI_PROC_NULL) then errs = errs + 1 print *, 's1(MPI_SOURCE) != MPI_PROC_NULL at T4 Mprobe().' endif if (s1(MPI_TAG) .ne. MPI_ANY_TAG) then errs = errs + 1 print *, 's1(MPI_TAG) != MPI_ANY_TAG at T4 Mprobe().' endif if (s1(MPI_ERROR) .ne. MPI_ERR_DIMS) then errs = errs + 1 print *, 's1(MPI_ERROR) != MPI_ERR_DIMS at T4 Mprobe().' endif if (msg .ne. MPI_MESSAGE_NO_PROC) then errs = errs + 1 print *, 'msg != MPI_MESSAGE_NO_PROC at T4 Mprobe().' endif count = -1 call MPI_Get_count(s1, MPI_INTEGER, count, ierr) if (count .ne. 0) then errs = errs + 1 print *, 'probed buffer does not have 0 MPI_INTEGER.' endif recvbuf(1) = 19088743 recvbuf(2) = 1309737967 call MPI_Mrecv(recvbuf, count, MPI_INTEGER, msg, s2, ierr) C recvbuf() should remain unmodified if (recvbuf(1) .ne. 19088743) then errs = errs + 1 print *, 'recvbuf(1) is corrupted at T4 Mrecv().' endif if (recvbuf(2) .ne. 1309737967) then errs = errs + 1 print *, 'recvbuf(2) is corrupted at T4 Mrecv().' endif if (s2(MPI_SOURCE) .ne. MPI_PROC_NULL) then errs = errs + 1 print *, 's2(MPI_SOURCE) != MPI_PROC_NULL at T4 Mrecv().' endif if (s2(MPI_TAG) .ne. MPI_ANY_TAG) then errs = errs + 1 print *, 's2(MPI_TAG) != MPI_ANY_TAG at T4 Mrecv().' endif if (s2(MPI_ERROR) .ne. MPI_ERR_OTHER) then errs = errs + 1 print *, 's2(MPI_ERROR) != MPI_ERR_OTHER at T4 Mrecv().' endif if (msg .ne. MPI_MESSAGE_NULL) then errs = errs + 1 print *, 'msg != MPI_MESSAGE_NULL at T4 Mrecv().' endif count = -1 call MPI_Get_count(s2, MPI_INTEGER, count, ierr) if (count .ne. 0) then errs = errs + 1 print *, 'recv buffer does not have 0 MPI_INTEGER.' endif endif C Test 5: Mprobe+Imrecv with MPI_PROC_NULL if (.true.) then do idx = 1, MPI_STATUS_SIZE s1(idx) = 0 s2(idx) = 0 enddo C the error fields are initialized for modification check. s1(MPI_ERROR) = MPI_ERR_DIMS s2(MPI_ERROR) = MPI_ERR_OTHER msg = MPI_MESSAGE_NULL call MPI_Mprobe(MPI_PROC_NULL, 5, MPI_COMM_WORLD, . msg, s1, ierr) if (s1(MPI_SOURCE) .ne. MPI_PROC_NULL) then errs = errs + 1 print *, 's1(MPI_SOURCE) != MPI_PROC_NULL at T5 Mprobe().' endif if (s1(MPI_TAG) .ne. MPI_ANY_TAG) then errs = errs + 1 print *, 's1(MPI_TAG) != MPI_ANY_TAG at T5 Mprobe().' endif if (s1(MPI_ERROR) .ne. MPI_ERR_DIMS) then errs = errs + 1 print *, 's1(MPI_ERROR) != MPI_ERR_DIMS at T5 Mprobe().' endif if (msg .ne. MPI_MESSAGE_NO_PROC) then errs = errs + 1 print *, 'msg != MPI_MESSAGE_NO_PROC at T5 Mprobe().' endif count = -1 call MPI_Get_count(s1, MPI_INTEGER, count, ierr) if (count .ne. 0) then errs = errs + 1 print *, 'probed buffer does not have 0 MPI_INTEGER.' endif rreq = MPI_REQUEST_NULL recvbuf(1) = 19088743 recvbuf(2) = 1309737967 call MPI_Imrecv(recvbuf, count, MPI_INTEGER, msg, rreq, ierr) if (rreq .eq. MPI_REQUEST_NULL) then errs = errs + 1 print *, 'rreq == MPI_REQUEST_NULL at T5 Imrecv().' endif flag = .false. call MPI_Test(rreq, flag, s2, ierr) if (.not. flag) then errs = errs + 1 print *, 'flag is false at T5 Imrecv().' endif C recvbuf() should remain unmodified if (recvbuf(1) .ne. 19088743) then errs = errs + 1 print *, 'recvbuf(1) is corrupted at T5 Imrecv().' endif if (recvbuf(2) .ne. 1309737967) then errs = errs + 1 print *, 'recvbuf(2) is corrupted at T5 Imrecv().' endif if (s2(MPI_SOURCE) .ne. MPI_PROC_NULL) then errs = errs + 1 print *, 's2(MPI_SOURCE) != MPI_PROC_NULL at T5 Imrecv().' endif if (s2(MPI_TAG) .ne. MPI_ANY_TAG) then errs = errs + 1 print *, 's2(MPI_TAG) != MPI_ANY_TAG at T5 Imrecv().' endif if (s2(MPI_ERROR) .ne. MPI_ERR_OTHER) then errs = errs + 1 print *, 's2(MPI_ERROR) != MPI_ERR_OTHER at T5 Imrecv().' endif if (msg .ne. MPI_MESSAGE_NULL) then errs = errs + 1 print *, 'msg != MPI_MESSAGE_NULL at T5 Imrecv().' endif count = -1 call MPI_Get_count(s2, MPI_INTEGER, count, ierr) if (count .ne. 0) then errs = errs + 1 print *, 'recv buffer does not have 0 MPI_INTEGER.' endif endif C Test 6: Improbe+Mrecv with MPI_PROC_NULL if (.true.) then do idx = 1, MPI_STATUS_SIZE s1(idx) = 0 s2(idx) = 0 enddo C the error fields are initialized for modification check. s1(MPI_ERROR) = MPI_ERR_DIMS s2(MPI_ERROR) = MPI_ERR_OTHER found = .false. msg = MPI_MESSAGE_NULL call MPI_Improbe(MPI_PROC_NULL, 5, MPI_COMM_WORLD, . found, msg, s1, ierr) if (.not. found) then errs = errs + 1 print *, 'found is false at T6 Improbe().' endif if (s1(MPI_SOURCE) .ne. MPI_PROC_NULL) then errs = errs + 1 print *, 's1(MPI_SOURCE) != MPI_PROC_NULL at T6 Improbe()' endif if (s1(MPI_TAG) .ne. MPI_ANY_TAG) then errs = errs + 1 print *, 's1(MPI_TAG) != MPI_ANY_TAG at T6 Improbe().' endif if (s1(MPI_ERROR) .ne. MPI_ERR_DIMS) then errs = errs + 1 print *, 's1(MPI_ERROR) != MPI_ERR_DIMS at T6 Improbe().' endif if (msg .ne. MPI_MESSAGE_NO_PROC) then errs = errs + 1 print *, 'msg != MPI_MESSAGE_NO_PROC at T6 Improbe().' endif count = -1 call MPI_Get_count(s1, MPI_INTEGER, count, ierr) if (count .ne. 0) then errs = errs + 1 print *, 'probed buffer does not have 0 MPI_INTEGER.' endif recvbuf(1) = 19088743 recvbuf(2) = 1309737967 call MPI_Mrecv(recvbuf, count, MPI_INTEGER, msg, s2, ierr) C recvbuf() should remain unmodified if (recvbuf(1) .ne. 19088743) then errs = errs + 1 print *, 'recvbuf(1) is corrupted at T6 Mrecv().' endif if (recvbuf(2) .ne. 1309737967) then errs = errs + 1 print *, 'recvbuf(2) is corrupted at T6 Mrecv().' endif if (s2(MPI_SOURCE) .ne. MPI_PROC_NULL) then errs = errs + 1 print *, 's2(MPI_SOURCE) != MPI_PROC_NULL at T6 Mrecv().' endif if (s2(MPI_TAG) .ne. MPI_ANY_TAG) then errs = errs + 1 print *, 's2(MPI_TAG) != MPI_ANY_TAG at T6 Mrecv().' endif if (s2(MPI_ERROR) .ne. MPI_ERR_OTHER) then errs = errs + 1 print *, 's2(MPI_ERROR) != MPI_ERR_OTHER at T6 Mrecv().' endif if (msg .ne. MPI_MESSAGE_NULL) then errs = errs + 1 print *, 'msg != MPI_MESSAGE_NULL at T6 Mrecv().' endif count = -1 call MPI_Get_count(s2, MPI_INTEGER, count, ierr) if (count .ne. 0) then errs = errs + 1 print *, 'recv buffer does not have 0 MPI_INTEGER.' endif endif C Test 7: Improbe+Imrecv with MPI_PROC_NULL if (.true.) then do idx = 1, MPI_STATUS_SIZE s1(idx) = 0 s2(idx) = 0 enddo C the error fields are initialized for modification check. s1(MPI_ERROR) = MPI_ERR_DIMS s2(MPI_ERROR) = MPI_ERR_OTHER found = .false. msg = MPI_MESSAGE_NULL call MPI_Improbe(MPI_PROC_NULL, 5, MPI_COMM_WORLD, . found, msg, s1, ierr) if (.not. found) then errs = errs + 1 print *, 'found is false at T7 Improbe().' endif if (s1(MPI_SOURCE) .ne. MPI_PROC_NULL) then errs = errs + 1 print *, 's1(MPI_SOURCE) != MPI_PROC_NULL at T7 Improbe()' endif if (s1(MPI_TAG) .ne. MPI_ANY_TAG) then errs = errs + 1 print *, 's1(MPI_TAG) != MPI_ANY_TAG at T7 Improbe().' endif if (s1(MPI_ERROR) .ne. MPI_ERR_DIMS) then errs = errs + 1 print *, 's1(MPI_ERROR) != MPI_ERR_DIMS at T7 Improbe().' endif if (msg .ne. MPI_MESSAGE_NO_PROC) then errs = errs + 1 print *, 'msg != MPI_MESSAGE_NO_PROC at T7 Improbe().' endif count = -1 call MPI_Get_count(s1, MPI_INTEGER, count, ierr) if (count .ne. 0) then errs = errs + 1 print *, 'probed buffer does not have 0 MPI_INTEGER.' endif rreq = MPI_REQUEST_NULL recvbuf(1) = 19088743 recvbuf(2) = 1309737967 call MPI_Imrecv(recvbuf, count, MPI_INTEGER, msg, rreq, ierr) if (rreq .eq. MPI_REQUEST_NULL) then errs = errs + 1 print *, 'rreq == MPI_REQUEST_NULL at T7 Imrecv().' endif flag = .false. call MPI_Test(rreq, flag, s2, ierr) if (.not. flag) then errs = errs + 1 print *, 'flag is false at T7 Imrecv().' endif C recvbuf() should remain unmodified if (recvbuf(1) .ne. 19088743) then errs = errs + 1 print *, 'recvbuf(1) is corrupted at T7 Imrecv().' endif if (recvbuf(2) .ne. 1309737967) then errs = errs + 1 print *, 'recvbuf(2) is corrupted at T7 Imrecv().' endif if (s2(MPI_SOURCE) .ne. MPI_PROC_NULL) then errs = errs + 1 print *, 's2(MPI_SOURCE) != MPI_PROC_NULL at T7 Imrecv().' endif if (s2(MPI_TAG) .ne. MPI_ANY_TAG) then errs = errs + 1 print *, 's2(MPI_TAG) != MPI_ANY_TAG at T7 Imrecv().' endif if (s2(MPI_ERROR) .ne. MPI_ERR_OTHER) then errs = errs + 1 print *, 's2(MPI_ERROR) != MPI_ERR_OTHER at T7 Imrecv().' endif if (msg .ne. MPI_MESSAGE_NULL) then errs = errs + 1 print *, 'msg != MPI_MESSAGE_NULL at T7 Imrecv().' endif count = -1 call MPI_Get_count(s2, MPI_INTEGER, count, ierr) if (count .ne. 0) then errs = errs + 1 print *, 'recv buffer does not have 0 MPI_INTEGER.' endif endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/pt2pt/greqf.f0000644000175000017500000000660512620254305017316 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C subroutine query_fn( extrastate, status, ierr ) implicit none include 'mpif.h' integer status(MPI_STATUS_SIZE), ierr include 'attr1aints.h' C C set a default status status(MPI_SOURCE) = MPI_UNDEFINED status(MPI_TAG) = MPI_UNDEFINED call mpi_status_set_cancelled( status, .false., ierr) call mpi_status_set_elements( status, MPI_BYTE, 0, ierr ) ierr = MPI_SUCCESS end C subroutine free_fn( extrastate, ierr ) implicit none include 'mpif.h' integer value, ierr include 'attr1aints.h' integer freefncall common /fnccalls/ freefncall C C For testing purposes, the following print can be used to check whether C the free_fn is called C print *, 'Free_fn called' C extrastate = extrastate - 1 C The value returned by the free function is the error code C returned by the wait/test function ierr = MPI_SUCCESS end C subroutine cancel_fn( extrastate, complete, ierr ) implicit none include 'mpif.h' integer ierr logical complete include 'attr1aints.h' ierr = MPI_SUCCESS end C C C This is a very simple test of generalized requests. Normally, the C MPI_Grequest_complete function would be called from another routine, C often running in a separate thread. This simple code allows us to C check that requests can be created, tested, and waited on in the C case where the request is complete before the wait is called. C C Note that MPI did *not* define a routine that can be called within C test or wait to advance the state of a generalized request. C Most uses of generalized requests will need to use a separate thread. C program main implicit none include 'mpif.h' integer errs, ierr logical flag integer status(MPI_STATUS_SIZE) integer request external query_fn, free_fn, cancel_fn include 'attr1aints.h' integer freefncall common /fnccalls/ freefncall errs = 0 freefncall = 0 call MTest_Init( ierr ) extrastate = 0 call mpi_grequest_start( query_fn, free_fn, cancel_fn, & extrastate, request, ierr ) call mpi_test( request, flag, status, ierr ) if (flag) then errs = errs + 1 print *, 'Generalized request marked as complete' endif call mpi_grequest_complete( request, ierr ) call MPI_Wait( request, status, ierr ) extrastate = 1 call mpi_grequest_start( query_fn, free_fn, cancel_fn, & extrastate, request, ierr ) call mpi_grequest_complete( request, ierr ) call mpi_wait( request, MPI_STATUS_IGNORE, ierr ) C C The following routine may prevent an optimizing compiler from C just remembering that extrastate was set in grequest_start call dummyupdate(extrastate) if (extrastate .ne. 0) then errs = errs + 1 if (freefncall .eq. 0) then print *, 'Free routine not called' else print *, 'Free routine did not update extra_data' print *, 'extrastate = ', extrastate endif endif C call MTest_Finalize( errs ) call mpi_finalize( ierr ) end C mpi-testsuite-3.2+dfsg/f77/profile/0000755000175000017500000000000012621010234016413 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f77/profile/testlist0000644000175000017500000000001412620254305020214 0ustar mbanckmbanckprofile1f 2 mpi-testsuite-3.2+dfsg/f77/profile/Makefile.in0000644000175000017500000004404712621010234020471 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = profile1f$(EXEEXT) subdir = f77/profile ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) profile1f_SOURCES = profile1f.f profile1f_OBJECTS = profile1f.$(OBJEXT) profile1f_LDADD = $(LDADD) profile1f_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include F77COMPILE = $(F77) $(AM_FFLAGS) $(FFLAGS) AM_V_F77 = $(am__v_F77_@AM_V@) am__v_F77_ = $(am__v_F77_@AM_DEFAULT_V@) am__v_F77_0 = @echo " F77 " $@; am__v_F77_1 = F77LD = $(F77) F77LINK = $(F77LD) $(AM_FFLAGS) $(FFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_F77LD = $(am__v_F77LD_@AM_V@) am__v_F77LD_ = $(am__v_F77LD_@AM_DEFAULT_V@) am__v_F77LD_0 = @echo " F77LD " $@; am__v_F77LD_1 = SOURCES = profile1f.f DIST_SOURCES = profile1f.f am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_f77.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F77 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. LDADD = $(top_builddir)/f77/util/mtestf.o CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f" lines AM_DEFAULT_SOURCE_EXT = .f all: all-am .SUFFIXES: .SUFFIXES: .f .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f77.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f77/profile/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f77/profile/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f77.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) profile1f$(EXEEXT): $(profile1f_OBJECTS) $(profile1f_DEPENDENCIES) $(EXTRA_profile1f_DEPENDENCIES) @rm -f profile1f$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(profile1f_OBJECTS) $(profile1f_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .f.o: $(AM_V_F77)$(F77COMPILE) -c -o $@ $< .f.obj: $(AM_V_F77)$(F77COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f77/util/mtestf.o: $(top_srcdir)/f77/util/mtestf.f (cd $(top_builddir)/f77/util && $(MAKE) mtestf.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # ensure that dependent tests will be rebuilt when typeaints.h is updated greqf.$(OBJEXT): attr1aints.h # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f77/profile/profile1f.f0000644000175000017500000000623412620254305020466 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2013 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main include "mpif.h" integer ierr integer smsg(3), rmsg(3), toterrs, wsize, wrank common /myinfo/ calls, amount, rcalls, ramount integer calls, amount, rcalls, ramount toterrs = 0 call mpi_init( ierr ) call init_counts() call mpi_comm_rank( MPI_COMM_WORLD, wrank, ierr ) call mpi_comm_size( MPI_COMM_WORLD, wsize, ierr ) if (wrank .eq. 0) then smsg(1) = 3 call mpi_send( smsg, 1, MPI_INT, 1, 0, MPI_COMM_WORLD, ierr ) else if (wrank .eq. 1) then call mpi_recv( rmsg, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, $ MPI_STATUS_IGNORE, ierr ) if (rmsg(1) .ne. 3) then toterrs = toterrs + 1 print *, "Unexpected received value ", rmsg(1) endif endif C C check that we used the profiling versions of the routines toterrs = 0 if (wrank .eq. 0) then if (calls.ne.1) then toterrs = toterrs + 1 print *, "Sender calls is ", calls endif if (amount.ne.1) then toterrs = toterrs + 1 print *, "Sender amount is ", amount endif else if (wrank .eq. 1) then if (rcalls.ne.1) then toterrs = toterrs + 1 print *, "Receiver calls is ", rcalls endif if (ramount.ne.1) then toterrs = toterrs + 1 print *, "Receiver amount is ", ramount endif endif call mpi_allreduce( MPI_IN_PLACE, toterrs, 1, MPI_INT, MPI_SUM, $ MPI_COMM_WORLD, ierr ) if (wrank .eq. 0) then if (toterrs .eq. 0) then print *, " No Errors" else print *, " Found ", toterrs, " errors" endif endif C call mpi_finalize( ierr ) end C subroutine mpi_send( smsg, count, dtype, dest, tag, comm, ierr ) include "mpif.h" integer count, dtype, dest, tag, comm, ierr integer smsg(count) common /myinfo/ calls, amount, rcalls, ramount integer calls, amount, rcalls, ramount c calls = calls + 1 amount = amount + count call pmpi_send( smsg, count, dtype, dest, tag, comm, ierr ) return end C subroutine mpi_recv( rmsg, count, dtype, src, tag, comm, status, $ ierr ) include "mpif.h" integer count, dtype, src, tag, comm, status(MPI_STATUS_SIZE), $ ierr integer rmsg(count) common /myinfo/ calls, amount, rcalls, ramount integer calls, amount, rcalls, ramount rcalls = rcalls + 1 ramount = ramount + 1 call pmpi_recv( rmsg, count, dtype, src, tag, comm, status, ierr $ ) return end C subroutine init_counts() common /myinfo/ calls, amount, rcalls, ramount integer calls, amount, rcalls, ramount calls = 0 amount = 0 rcalls = 0 ramount = 0 end C subroutine mpi_pcontrol( ierr ) integer ierr return end mpi-testsuite-3.2+dfsg/f77/profile/Makefile.am0000644000175000017500000000100112620254305020447 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f77.mtest EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f" lines AM_DEFAULT_SOURCE_EXT = .f noinst_PROGRAMS = profile1f ## attr1aints.h will be distributed because it's listed in AC_CONFIG_FILES/AC_OUTPUT # ensure that dependent tests will be rebuilt when typeaints.h is updated greqf.$(OBJEXT): attr1aints.h mpi-testsuite-3.2+dfsg/f77/io/0000755000175000017500000000000012621010234015362 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f77/io/Makefile.in0000644000175000017500000010132112621010234017425 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = iwriteatf$(EXEEXT) iwritef$(EXEEXT) \ iwriteshf$(EXEEXT) writef$(EXEEXT) writeatf$(EXEEXT) \ writeallf$(EXEEXT) writeallbef$(EXEEXT) writeordf$(EXEEXT) \ writeordbef$(EXEEXT) writeshf$(EXEEXT) writeatallf$(EXEEXT) \ writeatallbef$(EXEEXT) fileerrf$(EXEEXT) fileinfof$(EXEEXT) \ shpositionf$(EXEEXT) atomicityf$(EXEEXT) miscfilef$(EXEEXT) \ setviewcurf$(EXEEXT) c2fmultio$(EXEEXT) c2f2ciof$(EXEEXT) \ $(am__EXEEXT_1) @BUILD_MPIX_TESTS_TRUE@am__append_1 = \ @BUILD_MPIX_TESTS_TRUE@ i_setviewcurf \ @BUILD_MPIX_TESTS_TRUE@ iwriteatallf subdir = f77/io ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = iooffset.h iodisp.h ioaint.h testlist CONFIG_CLEAN_VPATH_FILES = @BUILD_MPIX_TESTS_TRUE@am__EXEEXT_1 = i_setviewcurf$(EXEEXT) \ @BUILD_MPIX_TESTS_TRUE@ iwriteatallf$(EXEEXT) PROGRAMS = $(noinst_PROGRAMS) atomicityf_SOURCES = atomicityf.f atomicityf_OBJECTS = atomicityf.$(OBJEXT) atomicityf_LDADD = $(LDADD) atomicityf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o am_c2f2ciof_OBJECTS = c2f2cio.$(OBJEXT) c2f2ciof.$(OBJEXT) c2f2ciof_OBJECTS = $(am_c2f2ciof_OBJECTS) c2f2ciof_LDADD = $(LDADD) c2f2ciof_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o am_c2fmultio_OBJECTS = c2fmultio.$(OBJEXT) c2fmultio_OBJECTS = $(am_c2fmultio_OBJECTS) c2fmultio_DEPENDENCIES = fileerrf_SOURCES = fileerrf.f fileerrf_OBJECTS = fileerrf.$(OBJEXT) fileerrf_LDADD = $(LDADD) fileerrf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o fileinfof_SOURCES = fileinfof.f fileinfof_OBJECTS = fileinfof.$(OBJEXT) fileinfof_LDADD = $(LDADD) fileinfof_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o i_setviewcurf_SOURCES = i_setviewcurf.f i_setviewcurf_OBJECTS = i_setviewcurf.$(OBJEXT) i_setviewcurf_LDADD = $(LDADD) i_setviewcurf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o nodist_iwriteatallf_OBJECTS = iwriteatallf.$(OBJEXT) iwriteatallf_OBJECTS = $(nodist_iwriteatallf_OBJECTS) iwriteatallf_LDADD = $(LDADD) iwriteatallf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o nodist_iwriteatf_OBJECTS = iwriteatf.$(OBJEXT) iwriteatf_OBJECTS = $(nodist_iwriteatf_OBJECTS) iwriteatf_LDADD = $(LDADD) iwriteatf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o nodist_iwritef_OBJECTS = iwritef.$(OBJEXT) iwritef_OBJECTS = $(nodist_iwritef_OBJECTS) iwritef_LDADD = $(LDADD) iwritef_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o nodist_iwriteshf_OBJECTS = iwriteshf.$(OBJEXT) iwriteshf_OBJECTS = $(nodist_iwriteshf_OBJECTS) iwriteshf_LDADD = $(LDADD) iwriteshf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o miscfilef_SOURCES = miscfilef.f miscfilef_OBJECTS = miscfilef.$(OBJEXT) miscfilef_LDADD = $(LDADD) miscfilef_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o setviewcurf_SOURCES = setviewcurf.f setviewcurf_OBJECTS = setviewcurf.$(OBJEXT) setviewcurf_LDADD = $(LDADD) setviewcurf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o shpositionf_SOURCES = shpositionf.f shpositionf_OBJECTS = shpositionf.$(OBJEXT) shpositionf_LDADD = $(LDADD) shpositionf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o nodist_writeallbef_OBJECTS = writeallbef.$(OBJEXT) writeallbef_OBJECTS = $(nodist_writeallbef_OBJECTS) writeallbef_LDADD = $(LDADD) writeallbef_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o nodist_writeallf_OBJECTS = writeallf.$(OBJEXT) writeallf_OBJECTS = $(nodist_writeallf_OBJECTS) writeallf_LDADD = $(LDADD) writeallf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o nodist_writeatallbef_OBJECTS = writeatallbef.$(OBJEXT) writeatallbef_OBJECTS = $(nodist_writeatallbef_OBJECTS) writeatallbef_LDADD = $(LDADD) writeatallbef_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o nodist_writeatallf_OBJECTS = writeatallf.$(OBJEXT) writeatallf_OBJECTS = $(nodist_writeatallf_OBJECTS) writeatallf_LDADD = $(LDADD) writeatallf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o nodist_writeatf_OBJECTS = writeatf.$(OBJEXT) writeatf_OBJECTS = $(nodist_writeatf_OBJECTS) writeatf_LDADD = $(LDADD) writeatf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o nodist_writef_OBJECTS = writef.$(OBJEXT) writef_OBJECTS = $(nodist_writef_OBJECTS) writef_LDADD = $(LDADD) writef_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o nodist_writeordbef_OBJECTS = writeordbef.$(OBJEXT) writeordbef_OBJECTS = $(nodist_writeordbef_OBJECTS) writeordbef_LDADD = $(LDADD) writeordbef_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o nodist_writeordf_OBJECTS = writeordf.$(OBJEXT) writeordf_OBJECTS = $(nodist_writeordf_OBJECTS) writeordf_LDADD = $(LDADD) writeordf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o nodist_writeshf_OBJECTS = writeshf.$(OBJEXT) writeshf_OBJECTS = $(nodist_writeshf_OBJECTS) writeshf_LDADD = $(LDADD) writeshf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = F77COMPILE = $(F77) $(AM_FFLAGS) $(FFLAGS) AM_V_F77 = $(am__v_F77_@AM_V@) am__v_F77_ = $(am__v_F77_@AM_DEFAULT_V@) am__v_F77_0 = @echo " F77 " $@; am__v_F77_1 = F77LD = $(F77) F77LINK = $(F77LD) $(AM_FFLAGS) $(FFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_F77LD = $(am__v_F77LD_@AM_V@) am__v_F77LD_ = $(am__v_F77LD_@AM_DEFAULT_V@) am__v_F77LD_0 = @echo " F77LD " $@; am__v_F77LD_1 = SOURCES = atomicityf.f $(c2f2ciof_SOURCES) $(c2fmultio_SOURCES) \ fileerrf.f fileinfof.f i_setviewcurf.f \ $(nodist_iwriteatallf_SOURCES) $(nodist_iwriteatf_SOURCES) \ $(nodist_iwritef_SOURCES) $(nodist_iwriteshf_SOURCES) \ miscfilef.f setviewcurf.f shpositionf.f \ $(nodist_writeallbef_SOURCES) $(nodist_writeallf_SOURCES) \ $(nodist_writeatallbef_SOURCES) $(nodist_writeatallf_SOURCES) \ $(nodist_writeatf_SOURCES) $(nodist_writef_SOURCES) \ $(nodist_writeordbef_SOURCES) $(nodist_writeordf_SOURCES) \ $(nodist_writeshf_SOURCES) DIST_SOURCES = atomicityf.f $(c2f2ciof_SOURCES) $(c2fmultio_SOURCES) \ fileerrf.f fileinfof.f i_setviewcurf.f miscfilef.f \ setviewcurf.f shpositionf.f am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/ioaint.h.in \ $(srcdir)/iodisp.h.in $(srcdir)/iooffset.h.in \ $(srcdir)/testlist.in $(top_srcdir)/Makefile_f77.mtest \ $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F77 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. LDADD = $(top_builddir)/f77/util/mtestf.o # just in case CLEANFILES = summary.xml summary.tap gen-src-tmp gen-src-stamp EXTRA_DIST = testlist.in ioharness.defn ioharness.tlt # avoid having to write many "foo_SOURCES = foo.f" lines AM_DEFAULT_SOURCE_EXT = .f # We don't want to distribute these source files because they are created by # "testmerge", hence "nodist_foo_SOURCES" nodist_iwriteatf_SOURCES = iwriteatf.f nodist_iwriteatallf_SOURCES = iwriteatallf.f nodist_iwritef_SOURCES = iwritef.f nodist_iwriteshf_SOURCES = iwriteshf.f nodist_writeallbef_SOURCES = writeallbef.f nodist_writeallf_SOURCES = writeallf.f nodist_writeatallbef_SOURCES = writeatallbef.f nodist_writeatallf_SOURCES = writeatallf.f nodist_writeatf_SOURCES = writeatf.f nodist_writef_SOURCES = writef.f nodist_writeordbef_SOURCES = writeordbef.f nodist_writeordf_SOURCES = writeordf.f nodist_writeshf_SOURCES = writeshf.f c2fmultio_SOURCES = c2fmultio.c # this is a C only program, so we must either: # A) prevent the makefile-wide "LDADD=mtestf.o" from affecting this program, or # B) link with the fortran compiler, otherwise we'll get link failures from # compilers with runtime support libs, such as PGI c2fmultio_LDADD = c2f2ciof_SOURCES = c2f2cio.c c2f2ciof.f # these files are genereated using testmerge (see below) generated_io_sources = \ iwriteatf.f \ iwriteatallf.f \ iwritef.f \ iwriteshf.f \ writeallbef.f \ writeallf.f \ writeatallbef.f \ writeatallf.f \ writeatf.f \ writef.f \ writeordbef.f \ writeordf.f \ writeshf.f DISTCLEANFILES = $(generated_io_sources) all: all-am .SUFFIXES: .SUFFIXES: .c .f .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f77.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f77/io/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f77/io/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f77.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): iooffset.h: $(top_builddir)/config.status $(srcdir)/iooffset.h.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ iodisp.h: $(top_builddir)/config.status $(srcdir)/iodisp.h.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ ioaint.h: $(top_builddir)/config.status $(srcdir)/ioaint.h.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ testlist: $(top_builddir)/config.status $(srcdir)/testlist.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) atomicityf$(EXEEXT): $(atomicityf_OBJECTS) $(atomicityf_DEPENDENCIES) $(EXTRA_atomicityf_DEPENDENCIES) @rm -f atomicityf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(atomicityf_OBJECTS) $(atomicityf_LDADD) $(LIBS) c2f2ciof$(EXEEXT): $(c2f2ciof_OBJECTS) $(c2f2ciof_DEPENDENCIES) $(EXTRA_c2f2ciof_DEPENDENCIES) @rm -f c2f2ciof$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(c2f2ciof_OBJECTS) $(c2f2ciof_LDADD) $(LIBS) c2fmultio$(EXEEXT): $(c2fmultio_OBJECTS) $(c2fmultio_DEPENDENCIES) $(EXTRA_c2fmultio_DEPENDENCIES) @rm -f c2fmultio$(EXEEXT) $(AM_V_CCLD)$(LINK) $(c2fmultio_OBJECTS) $(c2fmultio_LDADD) $(LIBS) fileerrf$(EXEEXT): $(fileerrf_OBJECTS) $(fileerrf_DEPENDENCIES) $(EXTRA_fileerrf_DEPENDENCIES) @rm -f fileerrf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(fileerrf_OBJECTS) $(fileerrf_LDADD) $(LIBS) fileinfof$(EXEEXT): $(fileinfof_OBJECTS) $(fileinfof_DEPENDENCIES) $(EXTRA_fileinfof_DEPENDENCIES) @rm -f fileinfof$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(fileinfof_OBJECTS) $(fileinfof_LDADD) $(LIBS) i_setviewcurf$(EXEEXT): $(i_setviewcurf_OBJECTS) $(i_setviewcurf_DEPENDENCIES) $(EXTRA_i_setviewcurf_DEPENDENCIES) @rm -f i_setviewcurf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(i_setviewcurf_OBJECTS) $(i_setviewcurf_LDADD) $(LIBS) iwriteatallf$(EXEEXT): $(iwriteatallf_OBJECTS) $(iwriteatallf_DEPENDENCIES) $(EXTRA_iwriteatallf_DEPENDENCIES) @rm -f iwriteatallf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(iwriteatallf_OBJECTS) $(iwriteatallf_LDADD) $(LIBS) iwriteatf$(EXEEXT): $(iwriteatf_OBJECTS) $(iwriteatf_DEPENDENCIES) $(EXTRA_iwriteatf_DEPENDENCIES) @rm -f iwriteatf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(iwriteatf_OBJECTS) $(iwriteatf_LDADD) $(LIBS) iwritef$(EXEEXT): $(iwritef_OBJECTS) $(iwritef_DEPENDENCIES) $(EXTRA_iwritef_DEPENDENCIES) @rm -f iwritef$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(iwritef_OBJECTS) $(iwritef_LDADD) $(LIBS) iwriteshf$(EXEEXT): $(iwriteshf_OBJECTS) $(iwriteshf_DEPENDENCIES) $(EXTRA_iwriteshf_DEPENDENCIES) @rm -f iwriteshf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(iwriteshf_OBJECTS) $(iwriteshf_LDADD) $(LIBS) miscfilef$(EXEEXT): $(miscfilef_OBJECTS) $(miscfilef_DEPENDENCIES) $(EXTRA_miscfilef_DEPENDENCIES) @rm -f miscfilef$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(miscfilef_OBJECTS) $(miscfilef_LDADD) $(LIBS) setviewcurf$(EXEEXT): $(setviewcurf_OBJECTS) $(setviewcurf_DEPENDENCIES) $(EXTRA_setviewcurf_DEPENDENCIES) @rm -f setviewcurf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(setviewcurf_OBJECTS) $(setviewcurf_LDADD) $(LIBS) shpositionf$(EXEEXT): $(shpositionf_OBJECTS) $(shpositionf_DEPENDENCIES) $(EXTRA_shpositionf_DEPENDENCIES) @rm -f shpositionf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(shpositionf_OBJECTS) $(shpositionf_LDADD) $(LIBS) writeallbef$(EXEEXT): $(writeallbef_OBJECTS) $(writeallbef_DEPENDENCIES) $(EXTRA_writeallbef_DEPENDENCIES) @rm -f writeallbef$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(writeallbef_OBJECTS) $(writeallbef_LDADD) $(LIBS) writeallf$(EXEEXT): $(writeallf_OBJECTS) $(writeallf_DEPENDENCIES) $(EXTRA_writeallf_DEPENDENCIES) @rm -f writeallf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(writeallf_OBJECTS) $(writeallf_LDADD) $(LIBS) writeatallbef$(EXEEXT): $(writeatallbef_OBJECTS) $(writeatallbef_DEPENDENCIES) $(EXTRA_writeatallbef_DEPENDENCIES) @rm -f writeatallbef$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(writeatallbef_OBJECTS) $(writeatallbef_LDADD) $(LIBS) writeatallf$(EXEEXT): $(writeatallf_OBJECTS) $(writeatallf_DEPENDENCIES) $(EXTRA_writeatallf_DEPENDENCIES) @rm -f writeatallf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(writeatallf_OBJECTS) $(writeatallf_LDADD) $(LIBS) writeatf$(EXEEXT): $(writeatf_OBJECTS) $(writeatf_DEPENDENCIES) $(EXTRA_writeatf_DEPENDENCIES) @rm -f writeatf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(writeatf_OBJECTS) $(writeatf_LDADD) $(LIBS) writef$(EXEEXT): $(writef_OBJECTS) $(writef_DEPENDENCIES) $(EXTRA_writef_DEPENDENCIES) @rm -f writef$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(writef_OBJECTS) $(writef_LDADD) $(LIBS) writeordbef$(EXEEXT): $(writeordbef_OBJECTS) $(writeordbef_DEPENDENCIES) $(EXTRA_writeordbef_DEPENDENCIES) @rm -f writeordbef$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(writeordbef_OBJECTS) $(writeordbef_LDADD) $(LIBS) writeordf$(EXEEXT): $(writeordf_OBJECTS) $(writeordf_DEPENDENCIES) $(EXTRA_writeordf_DEPENDENCIES) @rm -f writeordf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(writeordf_OBJECTS) $(writeordf_LDADD) $(LIBS) writeshf$(EXEEXT): $(writeshf_OBJECTS) $(writeshf_DEPENDENCIES) $(EXTRA_writeshf_DEPENDENCIES) @rm -f writeshf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(writeshf_OBJECTS) $(writeshf_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c2f2cio.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c2fmultio.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .f.o: $(AM_V_F77)$(F77COMPILE) -c -o $@ $< .f.obj: $(AM_V_F77)$(F77COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-local clean-noinstPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-local clean-noinstPROGRAMS cscopelist-am ctags ctags-am \ distclean distclean-compile distclean-generic distclean-tags \ distdir dvi dvi-am html html-am info info-am install \ install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile $(top_builddir)/f77/util/mtestf.o: $(top_srcdir)/f77/util/mtestf.f (cd $(top_builddir)/f77/util && $(MAKE) mtestf.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # ensure that dependent tests will be rebuilt when headers are updated atomicityf.$(OBJEXT): iodisp.h iwriteatf.$(OBJEXT): iooffset.h iwritef.$(OBJEXT): iooffset.h miscfilef.$(OBJEXT): iooffset.h iodisp.h setviewcurf.$(OBJEXT): iooffset.h shpositionf.$(OBJEXT): iooffset.h ioaint.h writeallbef.$(OBJEXT): iooffset.h writeallf.$(OBJEXT): iooffset.h writeatallbef.$(OBJEXT): iooffset.h writeatallf.$(OBJEXT): iooffset.h writeatf.$(OBJEXT): iooffset.h writef.$(OBJEXT): iooffset.h writeordbef.$(OBJEXT): iooffset.h writeordf.$(OBJEXT): iooffset.h # a parallel-safe scheme to generate the tests, see the automake-1.11.1 manual, # section 27.9 "Handling Tools That Produce Multiple Outputs" for an explanation # # Note that using testmerge at make-time adds a dependency on perl for users. # It's been like this for a long time, so I don't think it's a problem in # practice. The best way to fix this is to drop the nodist_foo_SOURCES lines, # modify testmerge to output the stamp file, and then enclose modified versions # of these rules in an "if MAINAINER_MODE". The files also should then move to # MAINTAINERCLEANFILES from DISTCLEANFILES. [goodell@ 2011-07-11] gen-src-stamp: $(srcdir)/ioharness.defn $(srcdir)/ioharness.tlt @rm -f gen-src-tmp @touch gen-src-tmp $(top_builddir)/maint/testmerge -defn=$(top_srcdir)/maint/common.defn \ $(srcdir)/ioharness.defn $(srcdir)/ioharness.tlt @mv -f gen-src-tmp $@ $(generated_io_sources): gen-src-stamp @if test -f $@; then :; else \ trap 'rm -rf gen-src-lock gen-src-stamp' 1 2 13 15; \ if mkdir gen-src-lock 2>/dev/null; then \ rm -f gen-src-stamp; \ $(MAKE) $(AM_MAKEFLAGS) gen-src-stamp; \ rmdir gen-src-lock; \ else \ while test -d gen-src-lock; do sleep 1; done; \ test -f gen-src-stamp; exit $$?; \ fi; \ fi # clean up after the test programs clean-local: -rm -f .iotest.txt.* # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f77/io/ioharness.defn0000644000175000017500000003634512620254305020236 0ustar mbanckmbanck# # (C) 2004 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # Definitions for various MPI I/O Read/write tests # If we want a separate step to check the file as written different # from the read step, insert it here. # # If the open fails, jump to 111 call mpi_file_open( comm, filename, MPI_MODE_RDWR + MPI_MODE_CREATE, MPI_INFO_NULL, fh, ierr ) if (ierr .ne. MPI_SUCCESS) then goto 111 endif call mpi_file_close( fh, ierr ) call mpi_barrier( comm, ierr ) call mpi_comm_rank( comm, r, ierr ) if (r .eq. 0) then call mpi_file_delete( filename, MPI_INFO_NULL, ierr ) endif call mpi_barrier( comm, ierr ) # Common code to initialize the buffer for contiguous writes do i=1, n buf(i) = r*n + (k-1)*n*s + i-1 enddo # This is for double buffered tests do i=1, n buf2(i) = r*n + (k)*n*s + i-1 enddo do i=1, n ans = r*n + (k-1)*n*s + i-1 if (buf(i) .ne. ans) then errs = errs + 1 if (errs .le. 10) then print *, r, k, ' buf(',i,') = ', buf(i), ' expected ', ans endif endif enddo do i=1, n buf(i) = - (r*n + (k-1)*n*s + i) enddo do i=1, n if (buf2(i) .ne. r*n + (k)*n*s + i-1) then errs = errs + 1 if (errs .le. 10) then print *, r,k,' buf2(',i,') = ', buf2(i) endif endif enddo do i=1, n buf2(i) = - (r*n + (k)*n*s + i) enddo # Common error check if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 if (errs .le. 10) then call MTestPrintError( ierr ) endif endif # Common error check when MPI_ERR_IN_STATUS is a possibility # (status array is then statuses, of length nreq (one status per request) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 if (errs .le. 10) then call MTestPrintError( ierr ) if (ierr .eq. MPI_ERR_IN_STATUS) then do i=1, nreq if (statuses(MPI_ERROR,i) .ne. MPI_SUCCESS) then print *, 'For statuses[', i, '], error is:' call MTestPrintError( statuses(MPI_ERROR,i) ) endif enddo endif endif endif # Common offset computation, based on the block, rank, size offset = (r * n + (k - 1) * n * s) * intsize # Set the view of the file for this process; suitable for # collective I/O and independent file I/O without seek call mpi_type_vector( b, n, n*s, MPI_INTEGER, filetype, ierr ) call mpi_type_commit( filetype, ierr ) offset = r * n * intsize call mpi_file_set_view( fh, offset, MPI_INTEGER, filetype, "native", MPI_INFO_NULL, ierr ) call mpi_type_free( filetype, ierr ) # Some tests require that the individual processes proceed in order. # The following definitions initialize the src and dest, and arrange # to pass a token using MPI_Ssend # Prereqs: r and s contain rank and size, and src,dest are declared. # The ring is executed b times, with index variable k src = mod( r + s - 1, s ) dest = mod( r + 1, s ) if (s .eq. 1) then src = MPI_PROC_NULL dest = MPI_PROC_NULL endif if (r .eq. s-1) then call mpi_ssend( MPI_BOTTOM, 0, MPI_INTEGER, dest, 1, comm, ierr ) endif call mpi_recv( MPI_BOTTOM, 0, MPI_INTEGER, src, k, comm, MPI_STATUS_IGNORE, ierr ) if (r .eq. s-1) then call mpi_ssend( MPI_BOTTOM, 0, MPI_INTEGER, dest, k+1, comm, ierr ) else call mpi_ssend( MPI_BOTTOM, 0, MPI_INTEGER, dest, k, comm, ierr ) endif if (r .eq. 0) then call mpi_recv( MPI_BOTTOM, 0, MPI_INTEGER, src, b+1, comm, MPI_STATUS_IGNORE, ierr ) endif # # ---------------------------------------------------------------------------- # This test uses the individual file pointers. # To reach the correct locations, we seek to the position integer status(MPI_STATUS_SIZE) integer buf(MAX_BUFFER), ans include 'iooffset.h' do k=1, b call mpi_file_seek( fh, offset, MPI_SEEK_SET, ierr ) call mpi_file_write( fh, buf, n, MPI_INTEGER, status, ierr ) enddo # No extra declarations are needed for the read step do k=1, b call mpi_file_seek( fh, offset, MPI_SEEK_SET, ierr ) call mpi_file_read( fh, buf, n, MPI_INTEGER, status, ierr ) enddo # This test uses independent I/O with thread-safe, individual file pointers integer status(MPI_STATUS_SIZE) integer buf(MAX_BUFFER), ans include 'iooffset.h' do k=1, b call mpi_file_write_at( fh, offset, buf, n, MPI_INTEGER, status, ierr ) enddo # No extra declarations are needed for the read step do k=1, b call mpi_file_read_at( fh, offset, buf, n, MPI_INTEGER, status, ierr ) enddo # This test uses collective I/O with thread-safe, individual file pointers integer status(MPI_STATUS_SIZE) integer buf(MAX_BUFFER), ans include 'iooffset.h' do k=1, b call mpi_file_write_at_all( fh, offset, buf, n, MPI_INTEGER, status, ierr ) enddo # No extra declarations are needed for the read step do k=1, b call mpi_file_read_at_all( fh, offset, buf, n, MPI_INTEGER, status, ierr ) enddo # This test uses nonblocking collective I/O with thread-safe, individual file pointers integer status(MPI_STATUS_SIZE) integer request integer buf(MAX_BUFFER), ans include 'iooffset.h' do k=1, b call mpi_file_iwrite_at_all( fh, offset, buf, n, MPI_INTEGER, request, ierr ) call mpi_wait(request, status, ierr) enddo # No extra declarations are needed for the read step do k=1, b call mpi_file_iread_at_all( fh, offset, buf, n, MPI_INTEGER, request, ierr ) call mpi_wait(request, status, ierr) enddo # This test uses collective I/O with thread-safe, individual file pointers integer status(MPI_STATUS_SIZE) integer buf(MAX_BUFFER), ans include 'iooffset.h' do k=1, b call mpi_file_write_at_all_begin( fh, offset, buf, n, MPI_INTEGER, ierr ) call mpi_file_write_at_all_end( fh, buf, status, ierr ) enddo # No extra declarations are needed for the read step do k=1, b call mpi_file_read_at_all_begin( fh, offset, buf, n, MPI_INTEGER, ierr ) call mpi_file_read_at_all_end( fh, buf, status, ierr ) enddo # This test uses nonblocking I/O with independent file pointers integer statuses(MPI_STATUS_SIZE,2) integer buf(MAX_BUFFER), buf2(MAX_BUFFER), ans integer req(2), nreq include 'iooffset.h' do k=1, b ,2 nreq = 1 call mpi_file_iwrite_at( fh, offset, buf, n, MPI_INTEGER, req(1), ierr ) if (k+1 .le. b) then offset = offset + (s * n) * intsize nreq = nreq + 1 call mpi_file_iwrite_at( fh, offset, buf2, n, MPI_INTEGER, req(2), ierr ) endif call mpi_waitall( nreq, req, statuses, ierr ) enddo # No extra declarations are needed for the read step do k=1, b ,2 nreq = 1 call mpi_file_iread_at( fh, offset, buf, n, MPI_INTEGER, req(1), ierr ) if (k+1 .le. b) then offset = offset + (s * n) * intsize nreq = nreq + 1 call mpi_file_iread_at( fh, offset, buf2, n, MPI_INTEGER, req(2), ierr ) endif call mpi_waitall( nreq, req, statuses, ierr ) if (nreq .eq. 2) then endif enddo # This test uses nonblocking I/O with independent file pointers and explicit # seeks integer statuses(MPI_STATUS_SIZE,2) integer buf(MAX_BUFFER), buf2(MAX_BUFFER), ans integer req(2), nreq include 'iooffset.h' do k=1, b ,2 nreq = 1 call mpi_file_seek( fh, offset, MPI_SEEK_SET, ierr ) call mpi_file_iwrite( fh, buf, n, MPI_INTEGER, req(1), ierr ) if (k+1 .le. b) then offset = offset + (s * n) * intsize call mpi_file_seek( fh, offset, MPI_SEEK_SET, ierr ) nreq = nreq + 1 call mpi_file_iwrite( fh, buf2, n, MPI_INTEGER, req(2), ierr ) endif call mpi_waitall( nreq, req, statuses, ierr ) enddo # No extra declarations are needed for the read step do k=1, b ,2 nreq = 1 call mpi_file_seek( fh, offset, MPI_SEEK_SET, ierr ) call mpi_file_iread( fh, buf, n, MPI_INTEGER, req(1), ierr ) if (k+1 .le. b) then offset = offset + (s * n) * intsize call mpi_file_seek( fh, offset, MPI_SEEK_SET, ierr ) nreq = nreq + 1 call mpi_file_iread( fh, buf2, n, MPI_INTEGER, req(2), ierr ) endif call mpi_waitall( nreq, req, statuses, ierr ) if (nreq .eq. 2) then endif enddo # This test uses nonblocking I/O with shared file pointers integer status(MPI_STATUS_SIZE) integer buf(MAX_BUFFER), ans integer src, dest integer req do k=1, b call mpi_file_iwrite_shared( fh, buf, n, MPI_INTEGER, req, ierr ) call mpi_wait( req, status, ierr ) enddo # No extra declarations are needed for the read step do k=1, b call mpi_file_iread_shared( fh, buf, n, MPI_INTEGER, req, ierr ) call mpi_wait( req, status, ierr ) enddo # This test uses collective I/O integer status(MPI_STATUS_SIZE) integer buf(MAX_BUFFER), ans integer filetype include 'iooffset.h' do k=1, b call mpi_file_write_all( fh, buf, n, MPI_INTEGER, status, ierr ) enddo # No extra declarations are needed for the read step do k=1, b call mpi_file_read_all( fh, buf, n, MPI_INTEGER, status, ierr ) enddo # This test uses split collective I/O integer status(MPI_STATUS_SIZE) integer buf(MAX_BUFFER), ans integer filetype include 'iooffset.h' do k=1, b call mpi_file_write_all_begin( fh, buf, n, MPI_INTEGER, ierr ) call mpi_file_write_all_end( fh, buf, status, ierr ) enddo # No extra declarations are needed for the read step do k=1, b call mpi_file_read_all_begin( fh, buf, n, MPI_INTEGER, ierr ) call mpi_file_read_all_end( fh, buf, status, ierr ) enddo # This test uses the shared file pointers collectively. integer status(MPI_STATUS_SIZE) integer buf(MAX_BUFFER), ans include 'iooffset.h' do k=1, b call mpi_file_write_ordered( fh, buf, n, MPI_INTEGER, status, ierr ) enddo # No extra declarations are needed for the read step do k=1, b call mpi_file_read_ordered( fh, buf, n, MPI_INTEGER, status, ierr ) enddo # This test uses the shared file pointers with split collectives. integer status(MPI_STATUS_SIZE) integer buf(MAX_BUFFER), ans include 'iooffset.h' do k=1, b call mpi_file_write_ordered_begin( fh, buf, n, MPI_INTEGER, ierr ) call mpi_file_write_ordered_end( fh, buf, status, ierr ) enddo # No extra declarations are needed for the read step do k=1, b call mpi_file_read_ordered_begin( fh, buf, n, MPI_INTEGER, ierr ) call mpi_file_read_ordered_end( fh, buf, status, ierr ) enddo # This test uses the shared file pointers independently. # We pass a token to control the oredering integer status(MPI_STATUS_SIZE) integer buf(MAX_BUFFER), ans integer src, dest do k=1, b call mpi_file_write_shared( fh, buf, n, MPI_INTEGER, status, ierr ) enddo # No extra declarations are needed for the read step do k=1, b call mpi_file_read_shared( fh, buf, n, MPI_INTEGER, status, ierr ) enddo mpi-testsuite-3.2+dfsg/f77/io/ioaint.h.in0000644000175000017500000000022612620254305017433 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C @F77_MPI_ADDRESS@ aint mpi-testsuite-3.2+dfsg/f77/io/ioharness.tlt0000644000175000017500000000423612620254305020117 0ustar mbanckmbanck program main implicit none include 'mpif.h' integer maxfparm parameter (maxfparm=5) integer max_buffer parameter (max_buffer=65536) integer maxftype parameter (maxftype=3) C integer comm, fh, ftype, itmp, fparm, n, b, i, k, r, s integer intsize integer errs, toterrs, err, ierr integer wrank, wsize integer fparms(2,maxfparm) character *(100) filename data fparms/1,4000, 4000,8, 4096,8, 64000,8, 65536,8 / errs = 0 call MTest_Init( ierr ) call mpi_comm_rank( MPI_COMM_WORLD, wrank, ierr ) call mpi_comm_size( MPI_COMM_WORLD, wsize, ierr ) call mpi_type_size( MPI_INTEGER, intsize, ierr ) do ftype = 1, maxftype filename = "iotest.txt" if (ftype .eq. 1) then comm = MPI_COMM_WORLD elseif (ftype .eq. 2) then call mpi_comm_split( MPI_COMM_WORLD, 0, wsize - wrank, comm, ierr ) else itmp = 1 if (wrank .eq. 0) itmp = 0 call mpi_comm_split( MPI_COMM_WORLD, itmp, wrank, comm, ierr ) if (wrank .eq. 0) then goto 10 endif endif call mpi_comm_size( comm, s, ierr ) call mpi_comm_rank( comm, r, ierr ) do fparm=1, maxfparm n = fparms(1,fparm) b = fparms(2,fparm) C Try writing the file, then check it C Now, open the same file for reading enddo 10 continue C C Jump to 111 on a failure to open 111 continue if (comm .ne. MPI_COMM_WORLD) then call mpi_comm_free( comm, ierr ) endif enddo call MTest_Finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/io/Makefile.am0000644000175000017500000001072412620254305017432 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f77.mtest EXTRA_DIST = testlist.in # avoid having to write many "foo_SOURCES = foo.f" lines AM_DEFAULT_SOURCE_EXT = .f noinst_PROGRAMS = \ iwriteatf \ iwritef \ iwriteshf \ writef \ writeatf \ writeallf \ writeallbef \ writeordf \ writeordbef \ writeshf \ writeatallf \ writeatallbef \ fileerrf \ fileinfof \ shpositionf \ atomicityf \ miscfilef \ setviewcurf \ c2fmultio \ c2f2ciof if BUILD_MPIX_TESTS noinst_PROGRAMS += \ i_setviewcurf \ iwriteatallf endif # We don't want to distribute these source files because they are created by # "testmerge", hence "nodist_foo_SOURCES" nodist_iwriteatf_SOURCES = iwriteatf.f nodist_iwriteatallf_SOURCES = iwriteatallf.f nodist_iwritef_SOURCES = iwritef.f nodist_iwriteshf_SOURCES = iwriteshf.f nodist_writeallbef_SOURCES = writeallbef.f nodist_writeallf_SOURCES = writeallf.f nodist_writeatallbef_SOURCES = writeatallbef.f nodist_writeatallf_SOURCES = writeatallf.f nodist_writeatf_SOURCES = writeatf.f nodist_writef_SOURCES = writef.f nodist_writeordbef_SOURCES = writeordbef.f nodist_writeordf_SOURCES = writeordf.f nodist_writeshf_SOURCES = writeshf.f c2fmultio_SOURCES = c2fmultio.c # this is a C only program, so we must either: # A) prevent the makefile-wide "LDADD=mtestf.o" from affecting this program, or # B) link with the fortran compiler, otherwise we'll get link failures from # compilers with runtime support libs, such as PGI c2fmultio_LDADD = c2f2ciof_SOURCES = c2f2cio.c c2f2ciof.f ## these header files will be distributed because they're listed in ## AC_CONFIG_FILES/AC_OUTPUT # ensure that dependent tests will be rebuilt when headers are updated atomicityf.$(OBJEXT): iodisp.h iwriteatf.$(OBJEXT): iooffset.h iwritef.$(OBJEXT): iooffset.h miscfilef.$(OBJEXT): iooffset.h iodisp.h setviewcurf.$(OBJEXT): iooffset.h shpositionf.$(OBJEXT): iooffset.h ioaint.h writeallbef.$(OBJEXT): iooffset.h writeallf.$(OBJEXT): iooffset.h writeatallbef.$(OBJEXT): iooffset.h writeatallf.$(OBJEXT): iooffset.h writeatf.$(OBJEXT): iooffset.h writef.$(OBJEXT): iooffset.h writeordbef.$(OBJEXT): iooffset.h writeordf.$(OBJEXT): iooffset.h # these files are genereated using testmerge (see below) generated_io_sources = \ iwriteatf.f \ iwriteatallf.f \ iwritef.f \ iwriteshf.f \ writeallbef.f \ writeallf.f \ writeatallbef.f \ writeatallf.f \ writeatf.f \ writef.f \ writeordbef.f \ writeordf.f \ writeshf.f EXTRA_DIST += ioharness.defn ioharness.tlt # a parallel-safe scheme to generate the tests, see the automake-1.11.1 manual, # section 27.9 "Handling Tools That Produce Multiple Outputs" for an explanation # # Note that using testmerge at make-time adds a dependency on perl for users. # It's been like this for a long time, so I don't think it's a problem in # practice. The best way to fix this is to drop the nodist_foo_SOURCES lines, # modify testmerge to output the stamp file, and then enclose modified versions # of these rules in an "if MAINAINER_MODE". The files also should then move to # MAINTAINERCLEANFILES from DISTCLEANFILES. [goodell@ 2011-07-11] gen-src-stamp: $(srcdir)/ioharness.defn $(srcdir)/ioharness.tlt @rm -f gen-src-tmp @touch gen-src-tmp $(top_builddir)/maint/testmerge -defn=$(top_srcdir)/maint/common.defn \ $(srcdir)/ioharness.defn $(srcdir)/ioharness.tlt @mv -f gen-src-tmp $@ $(generated_io_sources): gen-src-stamp ## Recover from the removal of $@ @if test -f $@; then :; else \ trap 'rm -rf gen-src-lock gen-src-stamp' 1 2 13 15; \ ## mkdir is a portable test-and-set if mkdir gen-src-lock 2>/dev/null; then \ ## This code is being executed by the first process. rm -f gen-src-stamp; \ $(MAKE) $(AM_MAKEFLAGS) gen-src-stamp; \ rmdir gen-src-lock; \ else \ ## This code is being executed by the follower processes. ## Wait until the first process is done. while test -d gen-src-lock; do sleep 1; done; \ ## Succeed if and only if the first process succeeded. test -f gen-src-stamp; exit $$?; \ fi; \ fi # just in case CLEANFILES += gen-src-tmp gen-src-stamp # clean up after the test programs clean-local: -rm -f .iotest.txt.* DISTCLEANFILES = $(generated_io_sources) mpi-testsuite-3.2+dfsg/f77/io/fileerrf.f0000644000175000017500000001273612620254305017350 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer errs, ierr, code(2), newerrclass, eclass character*(MPI_MAX_ERROR_STRING) errstring integer comm, rlen integer buf(10) integer file external myerrhanfunc CF90 INTERFACE CF90 SUBROUTINE myerrhanfunc(vv0,vv1) CF90 INTEGER vv0,vv1 CF90 END SUBROUTINE CF90 END INTERFACE integer myerrhan, qerr integer callcount, codesSeen(3) common /myerrhan/ callcount, codesSeen errs = 0 callcount = 0 call mtest_init( ierr ) C C Setup some new codes and classes call mpi_add_error_class( newerrclass, ierr ) call mpi_add_error_code( newerrclass, code(1), ierr ) call mpi_add_error_code( newerrclass, code(2), ierr ) call mpi_add_error_string( newerrclass, "New Class", ierr ) call mpi_add_error_string( code(1), "First new code", ierr ) call mpi_add_error_string( code(2), "Second new code", ierr ) C call mpi_file_create_errhandler( myerrhanfunc, myerrhan, ierr ) C C Create a new communicator so that we can leave the default errors-abort C on MPI_COMM_WORLD. Use this comm for file_open, just to leave a little C more separation from comm_world C call mpi_comm_dup( MPI_COMM_WORLD, comm, ierr ) call mpi_file_open( comm, "testfile.txt", MPI_MODE_RDWR + & & MPI_MODE_CREATE, MPI_INFO_NULL, file, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintError( ierr ) endif C call mpi_file_set_errhandler( file, myerrhan, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintError( ierr ) endif call mpi_file_get_errhandler( file, qerr, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintError( ierr ) endif if (qerr .ne. myerrhan) then errs = errs + 1 print *, ' Did not get expected error handler' endif call mpi_errhandler_free( qerr, ierr ) C We can free our error handler now call mpi_errhandler_free( myerrhan, ierr ) call mpi_file_call_errhandler( file, newerrclass, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintError( ierr ) endif call mpi_file_call_errhandler( file, code(1), ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintError( ierr ) endif call mpi_file_call_errhandler( file, code(2), ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintError( ierr ) endif if (callcount .ne. 3) then errs = errs + 1 print *, ' Expected 3 calls to error handler, found ', & callcount else if (codesSeen(1) .ne. newerrclass) then errs = errs + 1 print *, 'Expected class ', newerrclass, ' got ', & codesSeen(1) endif if (codesSeen(2) .ne. code(1)) then errs = errs + 1 print *, 'Expected code ', code(1), ' got ', & codesSeen(2) endif if (codesSeen(3) .ne. code(2)) then errs = errs + 1 print *, 'Expected code ', code(2), ' got ', & codesSeen(3) endif endif call mpi_file_close( file, ierr ) call mpi_comm_free( comm, ierr ) call mpi_file_delete( "testfile.txt", MPI_INFO_NULL, ierr ) C C Check error strings while here here... call mpi_error_string( newerrclass, errstring, rlen, ierr ) if (errstring(1:rlen) .ne. "New Class") then errs = errs + 1 print *, ' Wrong string for error class: ', errstring(1:rlen) endif call mpi_error_class( code(1), eclass, ierr ) if (eclass .ne. newerrclass) then errs = errs + 1 print *, ' Class for new code is not correct' endif call mpi_error_string( code(1), errstring, rlen, ierr ) if (errstring(1:rlen) .ne. "First new code") then errs = errs + 1 print *, ' Wrong string for error code: ', errstring(1:rlen) endif call mpi_error_class( code(2), eclass, ierr ) if (eclass .ne. newerrclass) then errs = errs + 1 print *, ' Class for new code is not correct' endif call mpi_error_string( code(2), errstring, rlen, ierr ) if (errstring(1:rlen) .ne. "Second new code") then errs = errs + 1 print *, ' Wrong string for error code: ', errstring(1:rlen) endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end C subroutine myerrhanfunc( file, errcode ) implicit none include 'mpif.h' integer file, errcode integer rlen, ierr integer callcount, codesSeen(3) character*(MPI_MAX_ERROR_STRING) errstring common /myerrhan/ callcount, codesSeen callcount = callcount + 1 C Remember the code we've seen if (callcount .le. 3) then codesSeen(callcount) = errcode endif call mpi_error_string( errcode, errstring, rlen, ierr ) if (ierr .ne. MPI_SUCCESS) then print *, ' Panic! could not get error string' call mpi_abort( MPI_COMM_WORLD, 1, ierr ) endif end mpi-testsuite-3.2+dfsg/f77/io/testlist.in0000644000175000017500000000047212620254305017600 0ustar mbanckmbanckiwriteatf 4 iwritef 4 iwriteshf 4 writef 4 writeatf 4 writeallf 4 writeshf 4 writeordf 4 writeatallf 4 writeatallbef 4 writeallbef 4 writeordbef 4 fileerrf 1 fileinfof 3 shpositionf 4 atomicityf 8 miscfilef 4 setviewcurf 4 c2f2ciof 1 c2fmultio 1 i_setviewcurf 4 mpiversion=3.1 iwriteatallf 4 mpiversion=3.1 mpi-testsuite-3.2+dfsg/f77/io/iooffset.h.in0000644000175000017500000000022712620254305017767 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C @F77_MPI_OFFSET@ offset mpi-testsuite-3.2+dfsg/f77/io/i_setviewcurf.f0000644000175000017500000000755612620254305020434 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' include 'iooffset.h' integer errs, ierr, size, rank integer fh, comm, status(MPI_STATUS_SIZE) integer buf(1024) integer request errs = 0 call MTest_Init( ierr ) C This test reads a header then sets the view to every "size" int, C using set view and current displacement. The file is first written C using a combination of collective and ordered writes comm = MPI_COMM_WORLD call MPI_File_open( comm, "test.ord", MPI_MODE_WRONLY + $ MPI_MODE_CREATE, MPI_INFO_NULL, fh, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Open(1)", ierr ) endif call MPI_Comm_size( comm, size, ierr ) call MPI_Comm_rank( comm, rank, ierr ) if (size .gt. 1024) then if (rank .eq. 0) then print *, $"This program must be run with no more than 1024 processes" call MPI_Abort( MPI_COMM_WORLD, 1, ierr ) endif endif buf(1) = size call MPI_File_iwrite_all( fh, buf, 1, MPI_INTEGER, request, ierr) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "iwrite_all", ierr ) endif call MPI_Wait(request, status, ierr) call MPI_File_get_position( fh, offset, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Get_position", ierr ) endif call MPI_File_seek_shared( fh, offset, MPI_SEEK_SET, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Seek_shared", ierr ) endif buf(1) = rank call MPI_File_write_ordered( fh, buf, 1, MPI_INTEGER, status,ierr) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Write_ordered", ierr ) endif call MPI_File_close( fh, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Close(1)", ierr ) endif C Reopen the file as sequential call MPI_File_open( comm, "test.ord", MPI_MODE_RDONLY + $ MPI_MODE_SEQUENTIAL + MPI_MODE_DELETE_ON_CLOSE, $ MPI_INFO_NULL, fh, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Open(Read)", ierr ) endif if (rank .eq. 0) then call MPI_File_read_shared( fh, buf, 1, MPI_INTEGER, status, $ ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Read_all", ierr ) endif if (buf(1) .ne. size) then errs = errs + 1 print *, "Unexpected value for the header = ", buf(1), $ ", should be ", size endif endif call MPI_Barrier( comm, ierr ) C All processes must provide the same file view for MODE_SEQUENTIAL call MPI_File_set_view( fh, MPI_DISPLACEMENT_CURRENT, MPI_INTEGER $ ,MPI_INTEGER, "native", MPI_INFO_NULL, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Set_view", ierr ) endif buf(1) = -1 call MPI_File_read_ordered( fh, buf, 1, MPI_INTEGER, status, ierr $ ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Read_all", ierr ) endif if (buf(1) .ne. rank) then errs = errs + 1 print *, rank, ": buf(1) = ", buf(1) endif call MPI_File_close( fh, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Close(2)", ierr ) endif call MTest_Finalize( errs ) call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/io/c2fmultio.c0000644000175000017500000000302512620254305017442 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Check that MPI_File_c2f, applied to the same object several times, yields the same handle. We do this because when MPI handles in C are a different length than those in Fortran, care needs to be exercised to ensure that the mapping from one to another is unique. (Test added to test a potential problem in ROMIO for handling MPI_File on 64-bit systems) */ #include "mpi.h" #include int main(int argc, char *argv[]) { MPI_Fint handleA, handleB; int rc; int errs = 0; int rank; MPI_File cFile; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); /* File */ rc = MPI_File_open(MPI_COMM_WORLD, (char *) "temp", MPI_MODE_RDWR | MPI_MODE_DELETE_ON_CLOSE | MPI_MODE_CREATE, MPI_INFO_NULL, &cFile); if (rc) { errs++; printf("Unable to open file \"temp\"\n"); } else { handleA = MPI_File_c2f(cFile); handleB = MPI_File_c2f(cFile); if (handleA != handleB) { errs++; printf("MPI_File_c2f does not give the same handle twice on the same MPI_File\n"); } } MPI_File_close(&cFile); if (rank == 0) { if (errs) { fprintf(stderr, "Found %d errors\n", errs); } else { printf(" No Errors\n"); } } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/f77/io/atomicityf.f0000644000175000017500000001553412620254305017721 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2004 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' include 'iodisp.h' C tests whether atomicity semantics are satisfied for overlapping accesses C in atomic mode. The probability of detecting errors is higher if you run C it on 8 or more processes. C This is a version of the test in romio/test/atomicity.c . integer BUFSIZE parameter (BUFSIZE=10000) integer writebuf(BUFSIZE), readbuf(BUFSIZE) integer i, mynod, nprocs, len, ierr, errs, toterrs character*50 filename integer newtype, fh, info, status(MPI_STATUS_SIZE) errs = 0 call MPI_Init(ierr) call MPI_Comm_rank(MPI_COMM_WORLD, mynod, ierr ) call MPI_Comm_size(MPI_COMM_WORLD, nprocs, ierr ) C Unlike the C version, we fix the filename because of the difficulties C in accessing the command line from different Fortran environments filename = "testfile.txt" C test atomicity of contiguous accesses C initialize file to all zeros if (mynod .eq. 0) then call MPI_File_delete(filename, MPI_INFO_NULL, ierr ) call MPI_File_open(MPI_COMM_SELF, filename, MPI_MODE_CREATE + $ MPI_MODE_RDWR, MPI_INFO_NULL, fh, ierr ) do i=1, BUFSIZE writebuf(i) = 0 enddo call MPI_File_write(fh, writebuf, BUFSIZE, MPI_INTEGER, status, $ ierr) call MPI_File_close(fh, ierr ) endif call MPI_Barrier(MPI_COMM_WORLD, ierr ) do i=1, BUFSIZE writebuf(i) = 10 readbuf(i) = 20 enddo call MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_CREATE + $ MPI_MODE_RDWR, MPI_INFO_NULL, fh, ierr ) C set atomicity to true call MPI_File_set_atomicity(fh, .true., ierr) if (ierr .ne. MPI_SUCCESS) then print *, "Atomic mode not supported on this file system." call MPI_Abort(MPI_COMM_WORLD, 1, ierr ) endif call MPI_Barrier(MPI_COMM_WORLD, ierr ) C process 0 writes and others concurrently read. In atomic mode, C the data read must be either all old values or all new values; nothing C in between. if (mynod .eq. 0) then call MPI_File_write(fh, writebuf, BUFSIZE, MPI_INTEGER, status, $ ierr) else call MPI_File_read(fh, readbuf, BUFSIZE, MPI_INTEGER, status, $ ierr ) if (ierr .eq. MPI_SUCCESS) then if (readbuf(1) .eq. 0) then C the rest must also be 0 do i=2, BUFSIZE if (readbuf(i) .ne. 0) then errs = errs + 1 print *, "(contig)Process ", mynod, ": readbuf(", i $ ,") is ", readbuf(i), ", should be 0" call MPI_Abort(MPI_COMM_WORLD, 1, ierr ) endif enddo else if (readbuf(1) .eq. 10) then C the rest must also be 10 do i=2, BUFSIZE if (readbuf(i) .ne. 10) then errs = errs + 1 print *, "(contig)Process ", mynod, ": readbuf(", i $ ,") is ", readbuf(i), ", should be 10" call MPI_Abort(MPI_COMM_WORLD, 1, ierr ) endif enddo else errs = errs + 1 print *, "(contig)Process ", mynod, ": readbuf(1) is ", $ readbuf(1), ", should be either 0 or 10" endif endif endif call MPI_File_close( fh, ierr ) call MPI_Barrier( MPI_COMM_WORLD, ierr ) C repeat the same test with a noncontiguous filetype call MPI_Type_vector(BUFSIZE, 1, 2, MPI_INTEGER, newtype, ierr) call MPI_Type_commit(newtype, ierr ) call MPI_Info_create(info, ierr ) C I am setting these info values for testing purposes only. It is C better to use the default values in practice. */ call MPI_Info_set(info, "ind_rd_buffer_size", "1209", ierr ) call MPI_Info_set(info, "ind_wr_buffer_size", "1107", ierr ) if (mynod .eq. 0) then call MPI_File_delete(filename, MPI_INFO_NULL, ierr ) call MPI_File_open(MPI_COMM_SELF, filename, MPI_MODE_CREATE + $ MPI_MODE_RDWR, info, fh, ierr ) do i=1, BUFSIZE writebuf(i) = 0 enddo disp = 0 call MPI_File_set_view(fh, disp, MPI_INTEGER, newtype, "native" $ ,info, ierr) call MPI_File_write(fh, writebuf, BUFSIZE, MPI_INTEGER, status, $ ierr ) call MPI_File_close( fh, ierr ) endif call MPI_Barrier( MPI_COMM_WORLD, ierr ) do i=1, BUFSIZE writebuf(i) = 10 readbuf(i) = 20 enddo call MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_CREATE + $ MPI_MODE_RDWR, info, fh, ierr ) call MPI_File_set_atomicity(fh, .true., ierr) disp = 0 call MPI_File_set_view(fh, disp, MPI_INTEGER, newtype, "native", $ info, ierr ) call MPI_Barrier(MPI_COMM_WORLD, ierr ) if (mynod .eq. 0) then call MPI_File_write(fh, writebuf, BUFSIZE, MPI_INTEGER, status, $ ierr ) else call MPI_File_read(fh, readbuf, BUFSIZE, MPI_INTEGER, status, $ ierr ) if (ierr .eq. MPI_SUCCESS) then if (readbuf(1) .eq. 0) then do i=2, BUFSIZE if (readbuf(i) .ne. 0) then errs = errs + 1 print *, "(noncontig)Process ", mynod, ": readbuf(" $ , i,") is ", readbuf(i), ", should be 0" call MPI_Abort(MPI_COMM_WORLD, 1, ierr ) endif enddo else if (readbuf(1) .eq. 10) then do i=2, BUFSIZE if (readbuf(i) .ne. 10) then errs = errs + 1 print *, "(noncontig)Process ", mynod, ": readbuf(" $ , i,") is ", readbuf(i), ", should be 10" call MPI_Abort(MPI_COMM_WORLD, 1, ierr ) endif enddo else errs = errs + 1 print *, "(noncontig)Process ", mynod, ": readbuf(1) is " $ ,readbuf(1), ", should be either 0 or 10" endif endif endif call MPI_File_close( fh, ierr ) call MPI_Barrier(MPI_COMM_WORLD, ierr ) call MPI_Allreduce( errs, toterrs, 1, MPI_INTEGER, MPI_SUM, $ MPI_COMM_WORLD, ierr ) if (mynod .eq. 0) then if( toterrs .gt. 0) then print *, "Found ", toterrs, " errors" else print *, " No Errors" endif endif call MPI_Type_free(newtype, ierr ) call MPI_Info_free(info, ierr ) call MPI_Finalize(ierr) end mpi-testsuite-3.2+dfsg/f77/io/c2f2ciof.f0000644000175000017500000000322012620254305017133 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C C Test just the MPI-IO FILE object program main implicit none include 'mpif.h' integer errs, toterrs, ierr integer wrank integer wgroup integer fsize, frank integer comm, file, group, result integer c2ffile errs = 0 call mpi_init( ierr ) call mpi_comm_rank( MPI_COMM_WORLD, wrank, ierr ) call mpi_comm_group( MPI_COMM_WORLD, wgroup, ierr ) call mpi_file_open( MPI_COMM_WORLD, "temp", MPI_MODE_RDWR + $ MPI_MODE_DELETE_ON_CLOSE + MPI_MODE_CREATE, MPI_INFO_NULL, $ file, ierr ) if (ierr .ne. 0) then errs = errs + 1 else errs = errs + c2ffile( file ) call mpi_file_close( file, ierr ) endif call f2cfile( file ) C name is temp, in comm world, no info provided call mpi_file_get_group( file, group, ierr ) call mpi_group_compare( group, wgroup, result, ierr ) if (result .ne. MPI_IDENT) then errs = errs + 1 print *, "Group of file not the group of comm_world" endif call mpi_group_free( group, ierr ) call mpi_group_free( wgroup, ierr ) call mpi_file_close( file, ierr ) C C Summarize the errors C call mpi_allreduce( errs, toterrs, 1, MPI_INTEGER, MPI_SUM, $ MPI_COMM_WORLD, ierr ) if (wrank .eq. 0) then if (toterrs .eq. 0) then print *, ' No Errors' else print *, ' Found ', toterrs, ' errors' endif endif call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/io/c2f2cio.c0000644000175000017500000000525712620254305016776 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * This file contains the C routines used in testing the c2f and f2c * handle conversion functions for MPI_File * The tests follow this pattern: * * Fortran main program * calls c routine with each handle type, with a prepared * and valid handle (often requires constructing an object) * * C routine uses xxx_f2c routine to get C handle, checks some * properties (i.e., size and rank of communicator, contents of datatype) * * Then the Fortran main program calls a C routine that provides * a handle, and the Fortran program performs similar checks. * * We also assume that a C int is a Fortran integer. If this is not the * case, these tests must be modified. */ /* style: allow:fprintf:1 sig:0 */ #include #include "mpi.h" #include "../../include/mpitestconf.h" #include /* Name mapping. All routines are created with names that are lower case with a single trailing underscore. This matches many compilers. We use #define to change the name for Fortran compilers that do not use the lowercase/underscore pattern */ #ifdef F77_NAME_UPPER #define c2ffile_ C2FFILE #define f2cfile_ F2CFILE #elif defined(F77_NAME_LOWER) || defined(F77_NAME_MIXED) /* Mixed is ok because we use lowercase in all uses */ #define c2ffile_ c2ffile #define f2cfile_ f2cfile #elif defined(F77_NAME_LOWER_2USCORE) || defined(F77_NAME_LOWER_USCORE) || \ defined(F77_NAME_MIXED_USCORE) /* Else leave name alone (routines have no underscore, so both of these map to a lowercase, single underscore) */ #else #error 'Unrecognized Fortran name mapping' #endif /* Prototypes to keep compilers happy */ int c2ffile_(int *); void f2cfile_(int *); int c2ffile_(int *file) { MPI_File cFile = MPI_File_f2c(*file); MPI_Group group, wgroup; int result; MPI_File_get_group(cFile, &group); MPI_Comm_group(MPI_COMM_WORLD, &wgroup); MPI_Group_compare(group, wgroup, &result); if (result != MPI_IDENT) { fprintf(stderr, "File: did not get expected group\n"); return 1; } MPI_Group_free(&group); MPI_Group_free(&wgroup); return 0; } /* * The following routines provide handles to the calling Fortran program */ void f2cfile_(int *file) { MPI_File cFile; int rc; rc = MPI_File_open(MPI_COMM_WORLD, (char *) "temp", MPI_MODE_RDWR | MPI_MODE_DELETE_ON_CLOSE | MPI_MODE_CREATE, MPI_INFO_NULL, &cFile); if (rc) { *file = 0; } else { *file = MPI_File_c2f(cFile); } } mpi-testsuite-3.2+dfsg/f77/io/miscfilef.f0000644000175000017500000001651512620254305017512 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2004 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' C iooffset.h provides a variable "offset" that is of type MPI_Offset C (in Fortran 90, kind=MPI_OFFSET_KIND) include 'iooffset.h' C iodisp.h declares disp as an MPI_Offset integer include 'iodisp.h' integer rank, size integer fh, i, group, worldgroup, result integer ierr, errs integer BUFSIZE parameter (BUFSIZE=1024) integer buf(BUFSIZE) character*(50) filename character*(MPI_MAX_DATAREP_STRING) datarep integer amode logical atomicity integer newtype, etype, filetype integer integer_size, type_size C errs = 0 call mtest_init( ierr ) call mpi_comm_rank( MPI_COMM_WORLD, rank, ierr ) call mpi_comm_size( MPI_COMM_WORLD, size, ierr ) C C Create a file that we'll then query properties filename = "testfile.txt" call mpi_file_open( MPI_COMM_WORLD, filename, MPI_MODE_CREATE + & & MPI_MODE_RDWR, MPI_INFO_NULL, fh, ierr ) if (ierr .ne. MPI_SUCCESS) then print *, "Unable to create file ", filename call mpi_abort( MPI_COMM_WORLD, 1, ierr ) endif C C Fill in some data do i=1, BUFSIZE buf(i) = i enddo call mpi_file_write( fh, buf, BUFSIZE, MPI_INTEGER, & & MPI_STATUS_IGNORE, ierr ) call MPI_File_sync( fh, ierr ) C C Now, query properties of the file and the file handle call MPI_File_get_amode(fh, amode, ierr ) if (amode .ne. MPI_MODE_CREATE + MPI_MODE_RDWR) then errs = errs + 1 print *, " Amode was different than expected" endif C call MPI_File_get_atomicity( fh, atomicity, ierr ) if (atomicity) then errs = errs + 1 print *, " Atomicity was true but should be false" endif C call MPI_File_set_atomicity( fh, .true., ierr ) call MPI_File_get_atomicity( fh, atomicity, ierr ) if (.not. atomicity) then errs = errs + 1 print *, " Atomicity was set to true but ", & & "get_atomicity returned false" endif call MPI_File_set_atomicity( fh, .false., ierr ) C C FIXME: original code use 10,10,20, and the following code C assumed the original C C Create a vector type of 10 elements, each of 20 elements, with a stride of C 30 elements call mpi_type_vector( 10, 20, 30, MPI_INTEGER, newtype, ierr ) call mpi_type_commit( newtype, ierr ) C C All processes are getting the same view, with a 1000 byte offset offset = 1000 call mpi_file_set_view( fh, offset, MPI_INTEGER, newtype, "native" & & , MPI_INFO_NULL, ierr ) call mpi_file_get_view( fh, offset, etype, filetype, datarep, ierr & & ) if (offset .ne. 1000) then print *, " displacement was ", offset, ", expected 1000" errs = errs + 1 endif if (datarep .ne. "native") then print *, " data representation form was ", datarep, & & ", expected native" errs = errs + 1 endif C Find the byte offset, given an offset of 20 etypes relative to the C current view (the same as the blockcount of the filetype, which C places it at the beginning of the next block, hence a stride C distance away). offset = 20 call mpi_file_get_byte_offset( fh, offset, disp, ierr ) call mpi_type_size( MPI_INTEGER, integer_size, ierr ) if (disp .ne. 1000 + 30 * integer_size) then errs = errs + 1 print *, " (offset20)Byte offset = ", disp, ", should be ", & & 1000+20*integer_size endif C C We should also compare file and etypes. We just look at the C sizes and extents for now call mpi_type_size( etype, type_size, ierr ) if (type_size .ne. integer_size) then print *, " Etype has size ", type_size, ", but should be ", & & integer_size errs = errs + 1 endif call mpi_type_size( filetype, type_size, ierr ) if (type_size .ne. 10*20*integer_size) then print *, " filetype has size ", type_size, ", but should be ", & & 10*20*integer_size errs = errs + 1 endif C C Only free derived type call mpi_type_free( filetype, ierr ) call mpi_file_get_group( fh, group, ierr ) call mpi_comm_group( MPI_COMM_WORLD, worldgroup, ierr ) call mpi_group_compare( group, worldgroup, result, ierr ) if (result .ne. MPI_IDENT) then print *, " Group of file does not match group of comm_world" errs = errs + 1 endif call mpi_group_free( group, ierr ) call mpi_group_free( worldgroup, ierr ) offset = 1000+25*integer_size call mpi_file_set_size(fh, offset, ierr ) call mpi_barrier(MPI_COMM_WORLD, ierr ) call mpi_file_sync(fh, ierr ) call mpi_file_get_size( fh, offset, ierr ) if (offset .ne. 1000+25*integer_size) then errs = errs + 1 print *, " File size is ", offset, ", should be ", 1000 + 25 & & * integer_size endif C C File size is 1000+25ints. Seek to end. Note that the file size C places the end of the file into the gap in the view, so seeking C to the end, which is relative to the view, needs to give the end C of the first block of 20 ints) offset = 0 call mpi_file_seek( fh, offset, MPI_SEEK_END, ierr ) call mpi_file_get_position( fh, disp, ierr ) if (disp .ne. 20) then errs = errs + 1 print *, "File pointer position = ", disp, ", should be 20" if (disp .eq. 25) then C See MPI 2.1, section 13.4, page 399, lines 7-8. The disp must be C relative to the current view, in the etype units of the current view print *, " MPI implementation failed to position the "// & & "displacement within the current file view" endif C Make sure we use the expected position in the next step. disp = 20 endif call mpi_file_get_byte_offset(fh, disp, offset, ierr ) if (offset .ne. 1000+30*integer_size) then errs = errs + 1 print *, " (seek)Byte offset = ", offset, ", should be ", 1000 & & +30*integer_size endif call mpi_barrier(MPI_COMM_WORLD, ierr ) offset = -20 call mpi_file_seek(fh, offset, MPI_SEEK_CUR, ierr ) call mpi_file_get_position(fh, disp, ierr ) call mpi_file_get_byte_offset(fh, disp, offset, ierr ) if (offset .ne. 1000) then errs = errs + 1 print *, " File pointer position in bytes = ", offset, & & ", should be 1000" endif offset = 8192 call mpi_file_preallocate(fh, offset, ierr ) offset = 0 call mpi_file_get_size( fh, offset, ierr ) if (offset .lt. 8192) then errs = errs + 1 print *, " Size after preallocate is ", offset, & & ", should be at least 8192" endif call mpi_file_close( fh, ierr ) call mpi_barrier(MPI_COMM_WORLD, ierr ) if (rank .eq. 0) then call MPI_File_delete(filename, MPI_INFO_NULL, ierr ) endif call mpi_type_free( newtype, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/io/setviewcurf.f0000644000175000017500000000750412620254305020115 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' include 'iooffset.h' integer errs, ierr, size, rank integer fh, comm, status(MPI_STATUS_SIZE) integer buf(1024) errs = 0 call MTest_Init( ierr ) C This test reads a header then sets the view to every "size" int, C using set view and current displacement. The file is first written C using a combination of collective and ordered writes comm = MPI_COMM_WORLD call MPI_File_open( comm, "test.ord", MPI_MODE_WRONLY + $ MPI_MODE_CREATE, MPI_INFO_NULL, fh, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Open(1)", ierr ) endif call MPI_Comm_size( comm, size, ierr ) call MPI_Comm_rank( comm, rank, ierr ) if (size .gt. 1024) then if (rank .eq. 0) then print *, $"This program must be run with no more than 1024 processes" call MPI_Abort( MPI_COMM_WORLD, 1, ierr ) endif endif buf(1) = size call MPI_File_write_all( fh, buf, 1, MPI_INTEGER, status, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Write_all", ierr ) endif call MPI_File_get_position( fh, offset, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Get_position", ierr ) endif call MPI_File_seek_shared( fh, offset, MPI_SEEK_SET, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Seek_shared", ierr ) endif buf(1) = rank call MPI_File_write_ordered( fh, buf, 1, MPI_INTEGER, status,ierr) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Write_ordered", ierr ) endif call MPI_File_close( fh, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Close(1)", ierr ) endif C Reopen the file as sequential call MPI_File_open( comm, "test.ord", MPI_MODE_RDONLY + $ MPI_MODE_SEQUENTIAL + MPI_MODE_DELETE_ON_CLOSE, $ MPI_INFO_NULL, fh, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Open(Read)", ierr ) endif if (rank .eq. 0) then call MPI_File_read_shared( fh, buf, 1, MPI_INTEGER, status, $ ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Read_all", ierr ) endif if (buf(1) .ne. size) then errs = errs + 1 print *, "Unexpected value for the header = ", buf(1), $ ", should be ", size endif endif call MPI_Barrier( comm, ierr ) C All processes must provide the same file view for MODE_SEQUENTIAL call MPI_File_set_view( fh, MPI_DISPLACEMENT_CURRENT, MPI_INTEGER $ ,MPI_INTEGER, "native", MPI_INFO_NULL, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Set_view", ierr ) endif buf(1) = -1 call MPI_File_read_ordered( fh, buf, 1, MPI_INTEGER, status, ierr $ ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Read_all", ierr ) endif if (buf(1) .ne. rank) then errs = errs + 1 print *, rank, ": buf(1) = ", buf(1) endif call MPI_File_close( fh, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Close(2)", ierr ) endif call MTest_Finalize( errs ) call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/io/shpositionf.f0000644000175000017500000000435312620254305020113 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer comm, fh, r, s, i integer fileintsize integer errs, err, ierr character *(100) filename include 'iooffset.h' include 'ioaint.h' errs = 0 call MTest_Init( ierr ) filename = "iotest.txt" comm = MPI_COMM_WORLD call mpi_comm_size( comm, s, ierr ) call mpi_comm_rank( comm, r, ierr ) C Try writing the file, then check it call mpi_file_open( comm, filename, MPI_MODE_RDWR + & MPI_MODE_CREATE, MPI_INFO_NULL, fh, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 if (errs .le. 10) then call MTestPrintError( ierr ) endif endif C C Get the size of an INTEGER in the file call mpi_file_get_type_extent( fh, MPI_INTEGER, aint, ierr ) fileintsize = aint C C We let each process write in turn, getting the position after each C write do i=1, s if (i .eq. r + 1) then call mpi_file_write_shared( fh, i, 1, MPI_INTEGER, & MPI_STATUS_IGNORE, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 if (errs .le. 10) then call MTestPrintError( ierr ) endif endif endif call mpi_barrier( comm, ierr ) call mpi_file_get_position_shared( fh, offset, ierr ) if (offset .ne. fileintsize * i) then errs = errs + 1 print *, r, ' Shared position is ', offset,' should be ', & fileintsize * i endif call mpi_barrier( comm, ierr ) enddo call mpi_file_close( fh, ierr ) if (r .eq. 0) then call mpi_file_delete( filename, MPI_INFO_NULL, ierr ) endif if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 if (errs .le. 10) then call MTestPrintError( ierr ) endif endif c call MTest_Finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/io/fileinfof.f0000644000175000017500000000421312620254305017502 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer ierr, errs integer fh, info1, info2, rank logical flag character*(50) filename character*(MPI_MAX_INFO_KEY) mykey character*(MPI_MAX_INFO_VAL) myvalue errs = 0 call mtest_init( ierr ) call mpi_comm_rank( MPI_COMM_WORLD, rank, ierr ) C C Open a simple file ierr = -1 filename = "iotest.txt" call mpi_file_open( MPI_COMM_WORLD, filename, MPI_MODE_RDWR + & MPI_MODE_CREATE, MPI_INFO_NULL, fh, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintError( ierr ) endif C C Try to set one of the available info hints call mpi_info_create( info1, ierr ) call mpi_info_set( info1, "access_style", & "read_once,write_once", ierr ) ierr = -1 call mpi_file_set_info( fh, info1, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintError( ierr ) endif call mpi_info_free( info1, ierr ) ierr = -1 call mpi_file_get_info( fh, info2, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintError( ierr ) endif call mpi_info_get( info2, "filename", MPI_MAX_INFO_VAL, & myvalue, flag, ierr ) C C An implementation isn't required to provide the filename (though C a high-quality implementation should) if (flag) then C If we find it, we must have the correct name if (myvalue(1:10) .ne. filename(1:10) .or. & myvalue(11:11) .ne. ' ') then errs = errs + 1 print *, ' Returned wrong value for the filename' endif endif call mpi_info_free( info2, ierr ) C call mpi_file_close( fh, ierr ) call mpi_barrier( MPI_COMM_WORLD, ierr ) if (rank .eq. 0) then call mpi_file_delete( filename, MPI_INFO_NULL, ierr ) endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/io/iodisp.h.in0000644000175000017500000000022512620254305017436 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C @F77_MPI_OFFSET@ disp mpi-testsuite-3.2+dfsg/f77/rma/0000755000175000017500000000000012621010234015532 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f77/rma/winattr2f.f0000644000175000017500000000526612620254305017642 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C This is a modified version of winattrf.f that uses two of the C default functions C program main implicit none include 'mpif.h' integer errs, ierr include 'attraints.h' integer comm, win, buf(10) integer keyval logical flag C C The only difference between the MPI-2 and MPI-1 attribute caching C routines in Fortran is that the take an address-sized integer C instead of a simple integer. These still are not pointers, C so the values are still just integers. C errs = 0 call mtest_init( ierr ) call mpi_comm_dup( MPI_COMM_WORLD, comm, ierr ) C Create a new window; use val for an address-sized int val = 10 call mpi_win_create( buf, val, 1, & MPI_INFO_NULL, comm, win, ierr ) C extrastate = 1001 call mpi_win_create_keyval( MPI_WIN_DUP_FN, & MPI_WIN_NULL_DELETE_FN, keyval, & extrastate, ierr ) flag = .true. call mpi_win_get_attr( win, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' get attr returned true when no attr set' endif valin = 2003 call mpi_win_set_attr( win, keyval, valin, ierr ) flag = .false. valout = -1 call mpi_win_get_attr( win, keyval, valout, flag, ierr ) if (valout .ne. 2003) then errs = errs + 1 print *, 'Unexpected value (should be 2003)', valout, & ' from attr' endif valin = 2001 call mpi_win_set_attr( win, keyval, valin, ierr ) flag = .false. valout = -1 call mpi_win_get_attr( win, keyval, valout, flag, ierr ) if (valout .ne. 2001) then errs = errs + 1 print *, 'Unexpected value (should be 2001)', valout, & ' from attr' endif C C Test the attr delete function call mpi_win_delete_attr( win, keyval, ierr ) flag = .true. call mpi_win_get_attr( win, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' Delete_attr did not delete attribute' endif C Test the delete function on window free valin = 2001 call mpi_win_set_attr( win, keyval, valin, ierr ) call mpi_win_free( win, ierr ) call mpi_comm_free( comm, ierr ) ierr = -1 call mpi_win_free_keyval( keyval, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call mtestprinterror( ierr ) endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/rma/winattrf.f0000644000175000017500000001334212620254305017552 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer errs, ierr include 'attraints.h' integer comm, win, buf(10) integer curcount, keyval logical flag external mycopyfn, mydelfn integer callcount, delcount common /myattr/ callcount, delcount C C The only difference between the MPI-2 and MPI-1 attribute caching C routines in Fortran is that the take an address-sized integer C instead of a simple integer. These still are not pointers, C so the values are still just integers. C errs = 0 callcount = 0 delcount = 0 call mtest_init( ierr ) call mpi_comm_dup( MPI_COMM_WORLD, comm, ierr ) C Create a new window; use val for an address-sized int val = 10 call mpi_win_create( buf, val, 1, & MPI_INFO_NULL, comm, win, ierr ) C extrastate = 1001 call mpi_win_create_keyval( mycopyfn, mydelfn, keyval, & extrastate, ierr ) flag = .true. call mpi_win_get_attr( win, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' get attr returned true when no attr set' endif valin = 2003 call mpi_win_set_attr( win, keyval, valin, ierr ) flag = .false. valout = -1 call mpi_win_get_attr( win, keyval, valout, flag, ierr ) if (valout .ne. 2003) then errs = errs + 1 print *, 'Unexpected value (should be 2003)', valout, & ' from attr' endif valin = 2001 call mpi_win_set_attr( win, keyval, valin, ierr ) flag = .false. valout = -1 call mpi_win_get_attr( win, keyval, valout, flag, ierr ) if (valout .ne. 2001) then errs = errs + 1 print *, 'Unexpected value (should be 2001)', valout, & ' from attr' endif C C Test the attr delete function delcount = 0 call mpi_win_delete_attr( win, keyval, ierr ) if (delcount .ne. 1) then errs = errs + 1 print *, ' Delete_attr did not call delete function' endif flag = .true. call mpi_win_get_attr( win, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' Delete_attr did not delete attribute' endif C Test the delete function on window free valin = 2001 call mpi_win_set_attr( win, keyval, valin, ierr ) curcount = delcount call mpi_win_free( win, ierr ) if (delcount .ne. curcount + 1) then errs = errs + 1 print *, ' did not get expected value of delcount ', & delcount, curcount + 1 endif ierr = -1 call mpi_win_free_keyval( keyval, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call mtestprinterror( ierr ) endif C C The MPI standard defines null copy and duplicate functions. C However, are only used when an object is duplicated. Since C MPI_Win objects cannot be duplicated, so under normal circumstances, C these will not be called. Since they are defined, they should behave C as defined. To test them, we simply call them here flag = .false. valin = 7001 valout = -1 ierr = -1 call MPI_WIN_DUP_FN( win, keyval, extrastate, valin, valout, $ flag, ierr ) if (.not. flag) then errs = errs + 1 print *, " Flag was false after MPI_WIN_DUP_FN" else if (valout .ne. 7001) then errs = errs + 1 if (valout .eq. -1 ) then print *, " output attr value was not copied in MPI_WIN_DUP_FN" endif print *, " value was ", valout, " but expected 7001" else if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 print *, " MPI_WIN_DUP_FN did not return MPI_SUCCESS" endif flag = .true. valin = 7001 valout = -1 ierr = -1 call MPI_WIN_NULL_COPY_FN( win, keyval, extrastate, valin, valout $ ,flag, ierr ) if (flag) then errs = errs + 1 print *, " Flag was true after MPI_WIN_NULL_COPY_FN" else if (valout .ne. -1) then errs = errs + 1 print *, $ " output attr value was copied in MPI_WIN_NULL_COPY_FN" else if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 print *, " MPI_WIN_NULL_COPY_FN did not return MPI_SUCCESS" endif C call mpi_comm_free( comm, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end C C Note that the copyfn is unused for MPI windows, since there is C (and because of alias rules, can be) no MPI_Win_dup function subroutine mycopyfn( oldwin, keyval, extrastate, valin, valout, & flag, ierr ) implicit none include 'mpif.h' integer oldwin, keyval, ierr include 'attraints.h' logical flag integer callcount, delcount common /myattr/ callcount, delcount C increment the attribute by 2 valout = valin + 2 callcount = callcount + 1 C C Since we should *never* call this, indicate an error print *, ' Unexpected use of mycopyfn' flag = .false. ierr = MPI_ERR_OTHER end C subroutine mydelfn( win, keyval, val, extrastate, ierr ) implicit none include 'mpif.h' integer win, keyval, ierr include 'attraints.h' integer callcount, delcount common /myattr/ callcount, delcount delcount = delcount + 1 if (extrastate .eq. 1001) then ierr = MPI_SUCCESS else print *, ' Unexpected value of extrastate = ', extrastate ierr = MPI_ERR_OTHER endif end mpi-testsuite-3.2+dfsg/f77/rma/wingroupf.f0000644000175000017500000000227212620254305017734 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer ierr, errs integer buf(10) integer comm, group1, group2, result, win, intsize logical mtestGetIntraComm include 'addsize.h' errs = 0 call mtest_init( ierr ) call mpi_type_size( MPI_INTEGER, intsize, ierr ) do while( mtestGetIntraComm( comm, 2, .false. ) ) asize = 10 call mpi_win_create( buf, asize, intsize, & MPI_INFO_NULL, comm, win, ierr ) call mpi_comm_group( comm, group1, ierr ) call mpi_win_get_group( win, group2, ierr ) call mpi_group_compare( group1, group2, result, ierr ) if (result .ne. MPI_IDENT) then errs = errs + 1 print *, ' Did not get the ident groups' endif call mpi_group_free( group1, ierr ) call mpi_group_free( group2, ierr ) call mpi_win_free( win, ierr ) call mtestFreeComm( comm ) enddo C call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/rma/Makefile.in0000644000175000017500000006235012621010234017605 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = winscale1f$(EXEEXT) winscale2f$(EXEEXT) \ winfencef$(EXEEXT) wingetf$(EXEEXT) winerrf$(EXEEXT) \ winnamef$(EXEEXT) wingroupf$(EXEEXT) winaccf$(EXEEXT) \ winaccf$(EXEEXT) c2f2cwinf$(EXEEXT) baseattrwinf$(EXEEXT) \ winattrf$(EXEEXT) winattr2f$(EXEEXT) $(am__EXEEXT_1) @BUILD_MPIX_TESTS_TRUE@am__append_1 = aintf subdir = f77/rma ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = addsize.h testlist CONFIG_CLEAN_VPATH_FILES = @BUILD_MPIX_TESTS_TRUE@am__EXEEXT_1 = aintf$(EXEEXT) PROGRAMS = $(noinst_PROGRAMS) aintf_SOURCES = aintf.f aintf_OBJECTS = aintf.$(OBJEXT) aintf_LDADD = $(LDADD) aintf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o baseattrwinf_SOURCES = baseattrwinf.f baseattrwinf_OBJECTS = baseattrwinf.$(OBJEXT) baseattrwinf_LDADD = $(LDADD) baseattrwinf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o am_c2f2cwinf_OBJECTS = c2f2cwin.$(OBJEXT) c2f2cwinf.$(OBJEXT) c2f2cwinf_OBJECTS = $(am_c2f2cwinf_OBJECTS) c2f2cwinf_LDADD = $(LDADD) c2f2cwinf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o winaccf_SOURCES = winaccf.f winaccf_OBJECTS = winaccf.$(OBJEXT) winaccf_LDADD = $(LDADD) winaccf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o winattr2f_SOURCES = winattr2f.f winattr2f_OBJECTS = winattr2f.$(OBJEXT) winattr2f_LDADD = $(LDADD) winattr2f_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o winattrf_SOURCES = winattrf.f winattrf_OBJECTS = winattrf.$(OBJEXT) winattrf_LDADD = $(LDADD) winattrf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o winerrf_SOURCES = winerrf.f winerrf_OBJECTS = winerrf.$(OBJEXT) winerrf_LDADD = $(LDADD) winerrf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o winfencef_SOURCES = winfencef.f winfencef_OBJECTS = winfencef.$(OBJEXT) winfencef_LDADD = $(LDADD) winfencef_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o wingetf_SOURCES = wingetf.f wingetf_OBJECTS = wingetf.$(OBJEXT) wingetf_LDADD = $(LDADD) wingetf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o wingroupf_SOURCES = wingroupf.f wingroupf_OBJECTS = wingroupf.$(OBJEXT) wingroupf_LDADD = $(LDADD) wingroupf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o winnamef_SOURCES = winnamef.f winnamef_OBJECTS = winnamef.$(OBJEXT) winnamef_LDADD = $(LDADD) winnamef_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o winscale1f_SOURCES = winscale1f.f winscale1f_OBJECTS = winscale1f.$(OBJEXT) winscale1f_LDADD = $(LDADD) winscale1f_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o winscale2f_SOURCES = winscale2f.f winscale2f_OBJECTS = winscale2f.$(OBJEXT) winscale2f_LDADD = $(LDADD) winscale2f_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = F77COMPILE = $(F77) $(AM_FFLAGS) $(FFLAGS) AM_V_F77 = $(am__v_F77_@AM_V@) am__v_F77_ = $(am__v_F77_@AM_DEFAULT_V@) am__v_F77_0 = @echo " F77 " $@; am__v_F77_1 = F77LD = $(F77) F77LINK = $(F77LD) $(AM_FFLAGS) $(FFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_F77LD = $(am__v_F77LD_@AM_V@) am__v_F77LD_ = $(am__v_F77LD_@AM_DEFAULT_V@) am__v_F77LD_0 = @echo " F77LD " $@; am__v_F77LD_1 = SOURCES = aintf.f baseattrwinf.f $(c2f2cwinf_SOURCES) winaccf.f \ winattr2f.f winattrf.f winerrf.f winfencef.f wingetf.f \ wingroupf.f winnamef.f winscale1f.f winscale2f.f DIST_SOURCES = aintf.f baseattrwinf.f $(c2f2cwinf_SOURCES) winaccf.f \ winattr2f.f winattrf.f winerrf.f winfencef.f wingetf.f \ wingroupf.f winnamef.f winscale1f.f winscale2f.f am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/addsize.h.in \ $(srcdir)/testlist.in $(top_srcdir)/Makefile_f77.mtest \ $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F77 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. # see include note in Makefile_f77.mtest AM_FFLAGS = -I. -I../attr LDADD = $(top_builddir)/f77/util/mtestf.o CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist.in # avoid having to write many "foo_SOURCES = foo.f" lines AM_DEFAULT_SOURCE_EXT = .f c2f2cwinf_SOURCES = c2f2cwin.c c2f2cwinf.f # bindir may be used in MPIEXEC, so make sure it is defined BINDIR = ${bindir} all: all-am .SUFFIXES: .SUFFIXES: .c .f .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f77.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f77/rma/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f77/rma/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f77.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): addsize.h: $(top_builddir)/config.status $(srcdir)/addsize.h.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ testlist: $(top_builddir)/config.status $(srcdir)/testlist.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) aintf$(EXEEXT): $(aintf_OBJECTS) $(aintf_DEPENDENCIES) $(EXTRA_aintf_DEPENDENCIES) @rm -f aintf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(aintf_OBJECTS) $(aintf_LDADD) $(LIBS) baseattrwinf$(EXEEXT): $(baseattrwinf_OBJECTS) $(baseattrwinf_DEPENDENCIES) $(EXTRA_baseattrwinf_DEPENDENCIES) @rm -f baseattrwinf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(baseattrwinf_OBJECTS) $(baseattrwinf_LDADD) $(LIBS) c2f2cwinf$(EXEEXT): $(c2f2cwinf_OBJECTS) $(c2f2cwinf_DEPENDENCIES) $(EXTRA_c2f2cwinf_DEPENDENCIES) @rm -f c2f2cwinf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(c2f2cwinf_OBJECTS) $(c2f2cwinf_LDADD) $(LIBS) winaccf$(EXEEXT): $(winaccf_OBJECTS) $(winaccf_DEPENDENCIES) $(EXTRA_winaccf_DEPENDENCIES) @rm -f winaccf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(winaccf_OBJECTS) $(winaccf_LDADD) $(LIBS) winattr2f$(EXEEXT): $(winattr2f_OBJECTS) $(winattr2f_DEPENDENCIES) $(EXTRA_winattr2f_DEPENDENCIES) @rm -f winattr2f$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(winattr2f_OBJECTS) $(winattr2f_LDADD) $(LIBS) winattrf$(EXEEXT): $(winattrf_OBJECTS) $(winattrf_DEPENDENCIES) $(EXTRA_winattrf_DEPENDENCIES) @rm -f winattrf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(winattrf_OBJECTS) $(winattrf_LDADD) $(LIBS) winerrf$(EXEEXT): $(winerrf_OBJECTS) $(winerrf_DEPENDENCIES) $(EXTRA_winerrf_DEPENDENCIES) @rm -f winerrf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(winerrf_OBJECTS) $(winerrf_LDADD) $(LIBS) winfencef$(EXEEXT): $(winfencef_OBJECTS) $(winfencef_DEPENDENCIES) $(EXTRA_winfencef_DEPENDENCIES) @rm -f winfencef$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(winfencef_OBJECTS) $(winfencef_LDADD) $(LIBS) wingetf$(EXEEXT): $(wingetf_OBJECTS) $(wingetf_DEPENDENCIES) $(EXTRA_wingetf_DEPENDENCIES) @rm -f wingetf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(wingetf_OBJECTS) $(wingetf_LDADD) $(LIBS) wingroupf$(EXEEXT): $(wingroupf_OBJECTS) $(wingroupf_DEPENDENCIES) $(EXTRA_wingroupf_DEPENDENCIES) @rm -f wingroupf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(wingroupf_OBJECTS) $(wingroupf_LDADD) $(LIBS) winnamef$(EXEEXT): $(winnamef_OBJECTS) $(winnamef_DEPENDENCIES) $(EXTRA_winnamef_DEPENDENCIES) @rm -f winnamef$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(winnamef_OBJECTS) $(winnamef_LDADD) $(LIBS) winscale1f$(EXEEXT): $(winscale1f_OBJECTS) $(winscale1f_DEPENDENCIES) $(EXTRA_winscale1f_DEPENDENCIES) @rm -f winscale1f$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(winscale1f_OBJECTS) $(winscale1f_LDADD) $(LIBS) winscale2f$(EXEEXT): $(winscale2f_OBJECTS) $(winscale2f_DEPENDENCIES) $(EXTRA_winscale2f_DEPENDENCIES) @rm -f winscale2f$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(winscale2f_OBJECTS) $(winscale2f_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c2f2cwin.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .f.o: $(AM_V_F77)$(F77COMPILE) -c -o $@ $< .f.obj: $(AM_V_F77)$(F77COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f77/util/mtestf.o: $(top_srcdir)/f77/util/mtestf.f (cd $(top_builddir)/f77/util && $(MAKE) mtestf.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # ensure that dependent tests will be rebuilt when addsize.h is updated baseattrwinf.$(OBJEXT): addsize.h c2f2cwinf.$(OBJEXT): addsize.h winaccf.$(OBJEXT): addsize.h winerrf.$(OBJEXT): addsize.h winfencef.$(OBJEXT): addsize.h wingetf.$(OBJEXT): addsize.h wingroupf.$(OBJEXT): addsize.h winnamef.$(OBJEXT): addsize.h winscale1f.$(OBJEXT): addsize.h winscale2f.$(OBJEXT): addsize.h # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f77/rma/winfencef.f0000644000175000017500000000574112620254305017664 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer ierr, errs integer win, intsize integer left, right, rank, size integer nrows, ncols parameter (nrows=25,ncols=10) integer buf(1:nrows,0:ncols+1) integer comm, ans integer i, j logical mtestGetIntraComm C Include addsize defines asize as an address-sized integer include 'addsize.h' errs = 0 call mtest_init( ierr ) call mpi_type_size( MPI_INTEGER, intsize, ierr ) do while( mtestGetIntraComm( comm, 2, .false. ) ) asize = nrows * (ncols + 2) * intsize call mpi_win_create( buf, asize, intsize * nrows, & MPI_INFO_NULL, comm, win, ierr ) call mpi_comm_size( comm, size, ierr ) call mpi_comm_rank( comm, rank, ierr ) left = rank - 1 if (left .lt. 0) then left = MPI_PROC_NULL endif right = rank + 1 if (right .ge. size) then right = MPI_PROC_NULL endif C C Initialize the buffer do i=1,nrows buf(i,0) = -1 buf(i,ncols+1) = -1 enddo do j=1,ncols do i=1,nrows buf(i,j) = rank * (ncols * nrows) + i + (j-1) * nrows enddo enddo call mpi_win_fence( MPI_MODE_NOPRECEDE, win, ierr ) C asize = ncols+1 call mpi_put( buf(1,1), nrows, MPI_INTEGER, left, asize, & nrows, MPI_INTEGER, win, ierr ) asize = 0 call mpi_put( buf(1,ncols), nrows, MPI_INTEGER, right, asize, & nrows, MPI_INTEGER, win, ierr ) C call mpi_win_fence( MPI_MODE_NOSTORE + MPI_MODE_NOPUT + & MPI_MODE_NOSUCCEED, win, ierr ) C C Check the results if (left .ne. MPI_PROC_NULL) then do i=1, nrows ans = rank * (ncols * nrows) - nrows + i if (buf(i,0) .ne. ans) then errs = errs + 1 if (errs .le. 10) then print *, rank, ' buf(',i,',0) = ', buf(i,0), & ' expected', ans endif endif enddo endif if (right .ne. MPI_PROC_NULL) then do i=1, nrows ans = (rank + 1)* (ncols * nrows) + i if (buf(i,ncols+1) .ne. ans) then errs = errs + 1 if (errs .le. 10) then print *, rank, ' buf(',i,',',ncols+1,') = ', & buf(i,ncols+1), ' expected ', ans endif endif enddo endif call mpi_win_free( win, ierr ) call mtestFreeComm( comm ) enddo call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/rma/Makefile.am0000644000175000017500000000266612620254305017610 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f77.mtest EXTRA_DIST = testlist.in # avoid having to write many "foo_SOURCES = foo.f" lines AM_DEFAULT_SOURCE_EXT = .f noinst_PROGRAMS = \ winscale1f \ winscale2f \ winfencef \ wingetf \ winerrf \ winnamef \ wingroupf \ winaccf \ winaccf \ c2f2cwinf \ baseattrwinf \ winattrf \ winattr2f if BUILD_MPIX_TESTS noinst_PROGRAMS += aintf endif ## this test was commented out in the simplemake version... ## allocmem c2f2cwinf_SOURCES = c2f2cwin.c c2f2cwinf.f # see include note in Makefile_f77.mtest AM_FFLAGS += -I../attr ## addsize.h will be distributed because it's listed in AC_CONFIG_FILES/AC_OUTPUT # ensure that dependent tests will be rebuilt when addsize.h is updated baseattrwinf.$(OBJEXT): addsize.h c2f2cwinf.$(OBJEXT): addsize.h winaccf.$(OBJEXT): addsize.h winerrf.$(OBJEXT): addsize.h winfencef.$(OBJEXT): addsize.h wingetf.$(OBJEXT): addsize.h wingroupf.$(OBJEXT): addsize.h winnamef.$(OBJEXT): addsize.h winscale1f.$(OBJEXT): addsize.h winscale2f.$(OBJEXT): addsize.h ## DJG: the following comment+code was present in the simplemake version... I'm ## not sure how accurate it is. # bindir may be used in MPIEXEC, so make sure it is defined BINDIR=${bindir} mpi-testsuite-3.2+dfsg/f77/rma/winaccf.f0000644000175000017500000000573112620254305017331 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer ierr, errs integer win, intsize integer left, right, rank, size integer nrows, ncols parameter (nrows=25,ncols=10) integer buf(1:nrows,0:ncols+1) integer comm, ans integer i, j logical mtestGetIntraComm C Include addsize defines asize as an address-sized integer include 'addsize.h' errs = 0 call mtest_init( ierr ) call mpi_type_size( MPI_INTEGER, intsize, ierr ) do while( mtestGetIntraComm( comm, 2, .false. ) ) asize = nrows * (ncols + 2) * intsize call mpi_win_create( buf, asize, intsize * nrows, & MPI_INFO_NULL, comm, win, ierr ) call mpi_comm_size( comm, size, ierr ) call mpi_comm_rank( comm, rank, ierr ) left = rank - 1 if (left .lt. 0) then left = MPI_PROC_NULL endif right = rank + 1 if (right .ge. size) then right = MPI_PROC_NULL endif C C Initialize the buffer do i=1,nrows buf(i,0) = -1 buf(i,ncols+1) = -1 enddo do j=1,ncols do i=1,nrows buf(i,j) = rank * (ncols * nrows) + i + (j-1) * nrows enddo enddo call mpi_win_fence( MPI_MODE_NOPRECEDE, win, ierr ) C asize = ncols + 1 call mpi_accumulate( buf(1,1), nrows, MPI_INTEGER, & left, asize, & nrows, MPI_INTEGER, MPI_SUM, win, ierr ) asize = 0 call mpi_accumulate( buf(1,ncols), nrows, MPI_INTEGER, right, & asize, nrows, MPI_INTEGER, MPI_SUM, win, ierr ) C call mpi_win_fence( MPI_MODE_NOSTORE + MPI_MODE_NOPUT + & MPI_MODE_NOSUCCEED, win, ierr ) C C Check the results if (left .ne. MPI_PROC_NULL) then do i=1, nrows ans = rank * (ncols * nrows) - nrows + i - 1 if (buf(i,0) .ne. ans) then errs = errs + 1 if (errs .le. 10) then print *, ' buf(',i,',0) = ', buf(i,0) endif endif enddo endif if (right .ne. MPI_PROC_NULL) then do i=1, nrows ans = (rank + 1) * (ncols * nrows) + i - 1 if (buf(i,ncols+1) .ne. ans) then errs = errs + 1 if (errs .le. 10) then print *, ' buf(',i,',',ncols+1,') = ', & buf(i,ncols+1) endif endif enddo endif call mpi_win_free( win, ierr ) call mtestFreeComm( comm ) enddo call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/rma/baseattrwinf.f0000644000175000017500000000466012620254305020410 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' include 'attraints.h' logical flag integer ierr, errs integer base(1024) integer disp integer win integer commsize C Include addsize defines asize as an address-sized integer include 'addsize.h' errs = 0 call mtest_init( ierr ) call mpi_comm_size( MPI_COMM_WORLD, commsize, ierr ) C Create a window; then extract the values asize = 1024 disp = 4 call MPI_Win_create( base, asize, disp, MPI_INFO_NULL, & MPI_COMM_WORLD, win, ierr ) C C In order to check the base, we need an address-of function. C We use MPI_Get_address, even though that isn't strictly correct call MPI_Win_get_attr( win, MPI_WIN_BASE, valout, flag, ierr ) if (.not. flag) then errs = errs + 1 print *, "Could not get WIN_BASE" C C There is no easy way to get the actual value of base to compare C against. MPI_Address gives a value relative to MPI_BOTTOM, which C is different from 0 in Fortran (unless you can define MPI_BOTTOM C as something like %pointer(0)). C else C CC For this Fortran 77 version, we use the older MPI_Address function C call MPI_Address( base, baseadd, ierr ) C if (valout .ne. baseadd) then C errs = errs + 1 C print *, "Got incorrect value for WIN_BASE (", valout, C & ", should be ", baseadd, ")" C endif endif call MPI_Win_get_attr( win, MPI_WIN_SIZE, valout, flag, ierr ) if (.not. flag) then errs = errs + 1 print *, "Could not get WIN_SIZE" else if (valout .ne. asize) then errs = errs + 1 print *, "Got incorrect value for WIN_SIZE (", valout, & ", should be ", asize, ")" endif endif call MPI_Win_get_attr( win, MPI_WIN_DISP_UNIT, valout, flag, ierr) if (.not. flag) then errs = errs + 1 print *, "Could not get WIN_DISP_UNIT" else if (valout .ne. disp) then errs = errs + 1 print *, "Got wrong value for WIN_DISP_UNIT (", valout, & ", should be ", disp, ")" endif endif call MPI_Win_free( win, ierr ) call mtest_finalize( errs ) call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/rma/testlist.in0000644000175000017500000000024612620254305017747 0ustar mbanckmbanckwinscale1f 4 winfencef 4 wingetf 5 winscale2f 4 winerrf 1 winnamef 1 wingroupf 4 winaccf 4 c2f2cwinf 1 baseattrwinf 1 winattrf 1 winattr2f 1 aintf 2 mpiversion=3.1 mpi-testsuite-3.2+dfsg/f77/rma/winscale2f.f0000644000175000017500000000701512620254305017751 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer ierr, errs integer win, intsize integer left, right, rank, size integer nrows, ncols parameter (nrows=25,ncols=10) integer buf(1:nrows,0:ncols+1) integer comm, group, group2, ans integer nneighbors, nbrs(2), i, j logical mtestGetIntraComm logical flag C Include addsize defines asize as an address-sized integer include 'addsize.h' errs = 0 call mtest_init( ierr ) call mpi_type_size( MPI_INTEGER, intsize, ierr ) do while( mtestGetIntraComm( comm, 2, .false. ) ) asize = nrows * (ncols + 2) * intsize call mpi_win_create( buf, asize, intsize * nrows, & MPI_INFO_NULL, comm, win, ierr ) C Create the group for the neighbors call mpi_comm_size( comm, size, ierr ) call mpi_comm_rank( comm, rank, ierr ) nneighbors = 0 left = rank - 1 if (left .lt. 0) then left = MPI_PROC_NULL else nneighbors = nneighbors + 1 nbrs(nneighbors) = left endif right = rank + 1 if (right .ge. size) then right = MPI_PROC_NULL else nneighbors = nneighbors + 1 nbrs(nneighbors) = right endif call mpi_comm_group( comm, group, ierr ) call mpi_group_incl( group, nneighbors, nbrs, group2, ierr ) call mpi_group_free( group, ierr ) C C Initialize the buffer do i=1,nrows buf(i,0) = -1 buf(i,ncols+1) = -1 enddo do j=1,ncols do i=1,nrows buf(i,j) = rank * (ncols * nrows) + i + (j-1) * nrows enddo enddo call mpi_win_post( group2, 0, win, ierr ) call mpi_win_start( group2, 0, win, ierr ) C asize = ncols+1 call mpi_put( buf(1,1), nrows, MPI_INTEGER, left, asize, & nrows, MPI_INTEGER, win, ierr ) asize = 0 call mpi_put( buf(1,ncols), nrows, MPI_INTEGER, right, asize, & nrows, MPI_INTEGER, win, ierr ) C call mpi_win_complete( win, ierr ) flag = .false. do while (.not. flag) call mpi_win_test( win, flag, ierr ) enddo C C Check the results if (left .ne. MPI_PROC_NULL) then do i=1, nrows ans = rank * (ncols * nrows) - nrows + i if (buf(i,0) .ne. ans) then errs = errs + 1 if (errs .le. 10) then print *, ' buf(',i,',0) = ', buf(i,0), & 'expected ', ans endif endif enddo endif if (right .ne. MPI_PROC_NULL) then do i=1, nrows ans = (rank+1) * (ncols * nrows) + i if (buf(i,ncols+1) .ne. ans) then errs = errs + 1 if (errs .le. 10) then print *, ' buf(',i,',',ncols+1,') = ', & buf(i,ncols+1), ' expected ', ans endif endif enddo endif call mpi_group_free( group2, ierr ) call mpi_win_free( win, ierr ) call mtestFreeComm( comm ) enddo call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/rma/winnamef.f0000644000175000017500000000435212620254305017521 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer errs, ierr integer win, rlen, ln character*(MPI_MAX_OBJECT_NAME) cname integer buf(10) integer intsize C Include addsize defines asize as an address-sized integer include 'addsize.h' logical found C errs = 0 call mtest_init( ierr ) C C Create a window and get, set the names on it C call mpi_type_size( MPI_INTEGER, intsize, ierr ) asize = 10 call mpi_win_create( buf, asize, intsize, & MPI_INFO_NULL, MPI_COMM_WORLD, win, ierr ) C C Check that there is no name yet cname = 'XXXXXX' rlen = -1 call mpi_win_get_name( win, cname, rlen, ierr ) if (rlen .ne. 0) then errs = errs + 1 print *, ' Did not get empty name from new window' else if (cname(1:6) .ne. 'XXXXXX') then found = .false. do ln=MPI_MAX_OBJECT_NAME,1,-1 if (cname(ln:ln) .ne. ' ') then found = .true. endif enddo if (found) then errs = errs + 1 print *, ' Found a non-empty name' endif endif C C Now, set a name and check it call mpi_win_set_name( win, 'MyName', ierr ) cname = 'XXXXXX' rlen = -1 call mpi_win_get_name( win, cname, rlen, ierr ) if (rlen .ne. 6) then errs = errs + 1 print *, ' Expected 6, got ', rlen, ' for rlen' if (rlen .gt. 0 .and. rlen .lt. MPI_MAX_OBJECT_NAME) then print *, ' Cname = ', cname(1:rlen) endif else if (cname(1:6) .ne. 'MyName') then errs = errs + 1 print *, ' Expected MyName, got ', cname(1:6) else found = .false. do ln=MPI_MAX_OBJECT_NAME,7,-1 if (cname(ln:ln) .ne. ' ') then found = .true. endif enddo if (found) then errs = errs + 1 print *, ' window name is not blank padded' endif endif C call mpi_win_free( win, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/rma/wingetf.f0000644000175000017500000000573512620254305017366 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer ierr, errs integer win, intsize integer left, right, rank, size integer nrows, ncols parameter (nrows=25,ncols=10) integer buf(1:nrows,0:ncols+1) integer comm, ans integer i, j logical mtestGetIntraComm C Include addsize defines asize as an address-sized integer include 'addsize.h' errs = 0 call mtest_init( ierr ) call mpi_type_size( MPI_INTEGER, intsize, ierr ) do while( mtestGetIntraComm( comm, 2, .false. ) ) asize = nrows * (ncols + 2) * intsize call mpi_win_create( buf, asize, intsize * nrows, & MPI_INFO_NULL, comm, win, ierr ) call mpi_comm_size( comm, size, ierr ) call mpi_comm_rank( comm, rank, ierr ) left = rank - 1 if (left .lt. 0) then left = MPI_PROC_NULL endif right = rank + 1 if (right .ge. size) then right = MPI_PROC_NULL endif C C Initialize the buffer do i=1,nrows buf(i,0) = -1 buf(i,ncols+1) = -1 enddo do j=1,ncols do i=1,nrows buf(i,j) = rank * (ncols * nrows) + i + (j-1) * nrows enddo enddo call mpi_win_fence( MPI_MODE_NOPRECEDE, win, ierr ) C asize = 1 call mpi_get( buf(1,ncols+1), nrows, MPI_INTEGER, right, & asize, nrows, MPI_INTEGER, win, ierr ) asize = ncols call mpi_get( buf(1,0), nrows, MPI_INTEGER, left, & asize, nrows, MPI_INTEGER, win, ierr ) C call mpi_win_fence( MPI_MODE_NOSTORE + MPI_MODE_NOPUT + & MPI_MODE_NOSUCCEED, win, ierr ) C C Check the results if (left .ne. MPI_PROC_NULL) then do i=1, nrows ans = rank * (ncols * nrows) - nrows + i if (buf(i,0) .ne. ans) then errs = errs + 1 if (errs .le. 10) then print *, rank, ' buf(',i,',0) = ', buf(i,0), & ' expected', ans endif endif enddo endif if (right .ne. MPI_PROC_NULL) then do i=1, nrows ans = (rank + 1)* (ncols * nrows) + i if (buf(i,ncols+1) .ne. ans) then errs = errs + 1 if (errs .le. 10) then print *, rank, ' buf(',i,',',ncols+1,') = ', & buf(i,ncols+1), ' expected ', ans endif endif enddo endif call mpi_win_free( win, ierr ) call mtestFreeComm( comm ) enddo call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/rma/winerrf.f0000644000175000017500000001145412620254305017372 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer errs, ierr, code(2), newerrclass, eclass character*(MPI_MAX_ERROR_STRING) errstring integer comm, rlen, intsize integer buf(10) integer win external myerrhanfunc CF90 INTERFACE CF90 SUBROUTINE myerrhanfunc(vv0,vv1) CF90 INTEGER vv0,vv1 CF90 END SUBROUTINE CF90 END INTERFACE integer myerrhan, qerr include 'addsize.h' integer callcount, codesSeen(3) common /myerrhan/ callcount, codesSeen errs = 0 callcount = 0 call mtest_init( ierr ) C C Setup some new codes and classes call mpi_add_error_class( newerrclass, ierr ) call mpi_add_error_code( newerrclass, code(1), ierr ) call mpi_add_error_code( newerrclass, code(2), ierr ) call mpi_add_error_string( newerrclass, "New Class", ierr ) call mpi_add_error_string( code(1), "First new code", ierr ) call mpi_add_error_string( code(2), "Second new code", ierr ) C call mpi_win_create_errhandler( myerrhanfunc, myerrhan, ierr ) C C Create a new communicator so that we can leave the default errors-abort C on MPI_COMM_WORLD. Use this comm for win_create, just to leave a little C more separation from comm_world C call mpi_comm_dup( MPI_COMM_WORLD, comm, ierr ) call mpi_type_size( MPI_INTEGER, intsize, ierr ) asize = 10 * intsize call mpi_win_create( buf, asize, intsize, MPI_INFO_NULL, & comm, win, ierr ) C call mpi_win_set_errhandler( win, myerrhan, ierr ) call mpi_win_get_errhandler( win, qerr, ierr ) if (qerr .ne. myerrhan) then errs = errs + 1 print *, ' Did not get expected error handler' endif call mpi_errhandler_free( qerr, ierr ) C We can free our error handler now call mpi_errhandler_free( myerrhan, ierr ) call mpi_win_call_errhandler( win, newerrclass, ierr ) call mpi_win_call_errhandler( win, code(1), ierr ) call mpi_win_call_errhandler( win, code(2), ierr ) if (callcount .ne. 3) then errs = errs + 1 print *, ' Expected 3 calls to error handler, found ', & callcount else if (codesSeen(1) .ne. newerrclass) then errs = errs + 1 print *, 'Expected class ', newerrclass, ' got ', & codesSeen(1) endif if (codesSeen(2) .ne. code(1)) then errs = errs + 1 print *, 'Expected code ', code(1), ' got ', & codesSeen(2) endif if (codesSeen(3) .ne. code(2)) then errs = errs + 1 print *, 'Expected code ', code(2), ' got ', & codesSeen(3) endif endif call mpi_win_free( win, ierr ) call mpi_comm_free( comm, ierr ) C C Check error strings while here here... call mpi_error_string( newerrclass, errstring, rlen, ierr ) if (errstring(1:rlen) .ne. "New Class") then errs = errs + 1 print *, ' Wrong string for error class: ', errstring(1:rlen) endif call mpi_error_class( code(1), eclass, ierr ) if (eclass .ne. newerrclass) then errs = errs + 1 print *, ' Class for new code is not correct' endif call mpi_error_string( code(1), errstring, rlen, ierr ) if (errstring(1:rlen) .ne. "First new code") then errs = errs + 1 print *, ' Wrong string for error code: ', errstring(1:rlen) endif call mpi_error_class( code(2), eclass, ierr ) if (eclass .ne. newerrclass) then errs = errs + 1 print *, ' Class for new code is not correct' endif call mpi_error_string( code(2), errstring, rlen, ierr ) if (errstring(1:rlen) .ne. "Second new code") then errs = errs + 1 print *, ' Wrong string for error code: ', errstring(1:rlen) endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end C subroutine myerrhanfunc( win, errcode ) implicit none include 'mpif.h' integer win, errcode integer rlen, ierr integer callcount, codesSeen(3) character*(MPI_MAX_ERROR_STRING) errstring common /myerrhan/ callcount, codesSeen callcount = callcount + 1 C Remember the code we've seen if (callcount .le. 3) then codesSeen(callcount) = errcode endif call mpi_error_string( errcode, errstring, rlen, ierr ) if (ierr .ne. MPI_SUCCESS) then print *, ' Panic! could not get error string' call mpi_abort( MPI_COMM_WORLD, 1, ierr ) endif end mpi-testsuite-3.2+dfsg/f77/rma/aintf.f0000644000175000017500000000501312620254305017011 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! This program tests MPI_Aint_add/diff in MPI-3.1. ! The two functions are often used in RMA code. ! See https://svn.mpi-forum.org/trac/mpi-forum-web/ticket/349 program main implicit none include 'mpif.h' integer :: rank, nproc integer :: ierr, errs integer :: array(0:1023) integer :: val, target_rank; integer(kind=MPI_ADDRESS_KIND) :: bases(0:1), disp, offset integer(kind=MPI_ADDRESS_KIND) :: winsize integer :: win integer :: intsize integer(kind=MPI_ADDRESS_KIND), external :: MPI_Aint_add !F77ONLY integer(kind=MPI_ADDRESS_KIND), external :: MPI_Aint_diff !F77ONLY errs = 0 call mtest_init(ierr); call MPI_Comm_rank(MPI_COMM_WORLD, rank, ierr) call MPI_Comm_size(MPI_COMM_WORLD, nproc, ierr) if (rank == 0 .and. nproc /= 2) then print *, 'Must run with 2 ranks' call MPI_Abort(MPI_COMM_WORLD, 1, ierr) endif ! Get the base address in the middle of the array if (rank == 0) then target_rank = 1 array(0) = 1234 call MPI_Get_address(array(512), bases(0), ierr) else if (rank == 1) then target_rank = 0 array(1023) = 1234 call MPI_Get_address(array(512), bases(1), ierr) endif ! Exchange bases call MPI_Type_size(MPI_INTEGER, intsize, ierr); call MPI_Allgather(MPI_IN_PLACE, 0, MPI_DATATYPE_NULL, bases, & 1, MPI_AINT, MPI_COMM_WORLD, ierr) call MPI_Win_create_dynamic(MPI_INFO_NULL, & MPI_COMM_WORLD, win, ierr) winsize = intsize*1024 call MPI_Win_attach(win, array, winsize, ierr) ! Do MPI_Aint addressing arithmetic if (rank == 0) then disp = intsize*511 offset = MPI_Aint_add(bases(1), disp) else if (rank == 1) then disp = intsize*512 offset = MPI_Aint_diff(bases(0), disp) endif ! Get value and verify it call MPI_Win_fence(MPI_MODE_NOPRECEDE, win, ierr) call MPI_Get(val, 1, MPI_INTEGER, target_rank, & offset, 1, MPI_INTEGER, win, ierr) call MPI_Win_fence(MPI_MODE_NOSUCCEED, win, ierr) if (val /= 1234) then errs = errs + 1 print *, rank, ' -- Got', val, 'expected 1234' endif call MPI_Win_detach(win, array, ierr) call MPI_Win_free(win, ierr) call MTest_Finalize(errs) call MPI_Finalize(ierr); end mpi-testsuite-3.2+dfsg/f77/rma/winscale1f.f0000644000175000017500000000657412620254305017761 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' integer ierr, errs integer win, intsize integer left, right, rank, size integer nrows, ncols parameter (nrows=25,ncols=10) integer buf(1:nrows,0:ncols+1) integer comm, group, group2, ans integer nneighbors, nbrs(2), i, j logical mtestGetIntraComm C Include addsize defines asize as an address-sized integer include 'addsize.h' errs = 0 call mtest_init( ierr ) call mpi_type_size( MPI_INTEGER, intsize, ierr ) do while( mtestGetIntraComm( comm, 2, .false. ) ) asize = nrows * (ncols + 2) * intsize call mpi_win_create( buf, asize, intsize * nrows, & MPI_INFO_NULL, comm, win, ierr ) C Create the group for the neighbors call mpi_comm_size( comm, size, ierr ) call mpi_comm_rank( comm, rank, ierr ) nneighbors = 0 left = rank - 1 if (left .lt. 0) then left = MPI_PROC_NULL else nneighbors = nneighbors + 1 nbrs(nneighbors) = left endif right = rank + 1 if (right .ge. size) then right = MPI_PROC_NULL else nneighbors = nneighbors + 1 nbrs(nneighbors) = right endif call mpi_comm_group( comm, group, ierr ) call mpi_group_incl( group, nneighbors, nbrs, group2, ierr ) call mpi_group_free( group, ierr ) C C Initialize the buffer do i=1,nrows buf(i,0) = -1 buf(i,ncols+1) = -1 enddo do j=1,ncols do i=1,nrows buf(i,j) = rank * (ncols * nrows) + i + (j-1) * nrows enddo enddo call mpi_win_post( group2, 0, win, ierr ) call mpi_win_start( group2, 0, win, ierr ) C asize = ncols+1 call mpi_put( buf(1,1), nrows, MPI_INTEGER, left, asize, & nrows, MPI_INTEGER, win, ierr ) asize = 0 call mpi_put( buf(1,ncols), nrows, MPI_INTEGER, right, asize, & nrows, MPI_INTEGER, win, ierr ) C call mpi_win_complete( win, ierr ) call mpi_win_wait( win, ierr ) C C Check the results if (left .ne. MPI_PROC_NULL) then do i=1, nrows ans = rank * (ncols * nrows) - nrows + i if (buf(i,0) .ne. ans) then errs = errs + 1 if (errs .le. 10) then print *, ' buf(',i,'0) = ', buf(i,0) endif endif enddo endif if (right .ne. MPI_PROC_NULL) then do i=1, nrows ans = (rank+1) * (ncols * nrows) + i if (buf(i,ncols+1) .ne. ans) then errs = errs + 1 if (errs .le. 10) then print *, ' buf(',i,',',ncols+1,') = ', & buf(i,ncols+1) endif endif enddo endif call mpi_group_free( group2, ierr ) call mpi_win_free( win, ierr ) call mtestFreeComm( comm ) enddo call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/rma/c2f2cwin.c0000644000175000017500000000473112620254305017330 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * This file contains the C routines used in testing the c2f and f2c * handle conversion functions for MPI_Win * * The tests follow this pattern: * * Fortran main program * calls c routine with each handle type, with a prepared * and valid handle (often requires constructing an object) * * C routine uses xxx_f2c routine to get C handle, checks some * properties (i.e., size and rank of communicator, contents of datatype) * * Then the Fortran main program calls a C routine that provides * a handle, and the Fortran program performs similar checks. * * We also assume that a C int is a Fortran integer. If this is not the * case, these tests must be modified. */ /* style: allow:fprintf:1 sig:0 */ #include #include "mpi.h" #include "../../include/mpitestconf.h" #include /* Name mapping. All routines are created with names that are lower case with a single trailing underscore. This matches many compilers. We use #define to change the name for Fortran compilers that do not use the lowercase/underscore pattern */ #ifdef F77_NAME_UPPER #define c2fwin_ C2FWIN #define f2cwin_ F2CWIN #elif defined(F77_NAME_LOWER) || defined(F77_NAME_MIXED) /* Mixed is ok because we use lowercase in all uses */ #define c2fwin_ c2fwin #define f2cwin_ f2cwin #elif defined(F77_NAME_LOWER_2USCORE) || defined(F77_NAME_LOWER_USCORE) || \ defined(F77_NAME_MIXED_USCORE) /* Else leave name alone (routines have no underscore, so both of these map to a lowercase, single underscore) */ #else #error 'Unrecognized Fortran name mapping' #endif /* Prototypes to keep compilers happy */ int c2fwin_(int *); void f2cwin_(int *); int c2fwin_(int *win) { MPI_Win cWin = MPI_Win_f2c(*win); MPI_Group group, wgroup; int result; MPI_Win_get_group(cWin, &group); MPI_Comm_group(MPI_COMM_WORLD, &wgroup); MPI_Group_compare(group, wgroup, &result); if (result != MPI_IDENT) { fprintf(stderr, "Win: did not get expected group\n"); return 1; } MPI_Group_free(&group); MPI_Group_free(&wgroup); return 0; } /* * The following routines provide handles to the calling Fortran program */ void f2cwin_(int *win) { MPI_Win cWin; MPI_Win_create(0, 0, 1, MPI_INFO_NULL, MPI_COMM_WORLD, &cWin); *win = MPI_Win_c2f(cWin); } mpi-testsuite-3.2+dfsg/f77/rma/addsize.h.in0000644000175000017500000000022712620254305017744 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C @F77_MPI_ADDRESS@ asize mpi-testsuite-3.2+dfsg/f77/rma/c2f2cwinf.f0000644000175000017500000000247012620254305017477 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C C Test just MPI-RMA C program main implicit none include 'mpif.h' integer errs, toterrs, ierr integer wrank, wsize integer wgroup, info, req, win integer result integer c2fwin C The integer asize must be of ADDRESS_KIND size include 'addsize.h' errs = 0 call mpi_init( ierr ) C C Test passing a Fortran MPI object to C call mpi_comm_rank( MPI_COMM_WORLD, wrank, ierr ) asize = 0 call mpi_win_create( 0, asize, 1, MPI_INFO_NULL, $ MPI_COMM_WORLD, win, ierr ) errs = errs + c2fwin( win ) call mpi_win_free( win, ierr ) C C Test using a C routine to provide the Fortran handle call f2cwin( win ) C no info, in comm world, created with no memory (base address 0, C displacement unit 1 call mpi_win_free( win, ierr ) C C Summarize the errors C call mpi_allreduce( errs, toterrs, 1, MPI_INTEGER, MPI_SUM, $ MPI_COMM_WORLD, ierr ) if (wrank .eq. 0) then if (toterrs .eq. 0) then print *, ' No Errors' else print *, ' Found ', toterrs, ' errors' endif endif call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/topo/0000755000175000017500000000000012621010234015734 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f77/topo/dgraph_wgtf.f0000644000175000017500000001515412620254305020415 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2011 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C C This program is Fortran version of dgraph_unwgt.c C Specify a distributed graph of a bidirectional ring of the MPI_COMM_WORLD, C i.e. everyone only talks to left and right neighbors. logical function validate_dgraph(dgraph_comm) implicit none include 'mpif.h' integer dgraph_comm integer comm_topo integer src_sz, dest_sz integer ierr; logical wgt_flag; integer srcs(2), dests(2) integer src_wgts(2), dest_wgts(2) integer world_rank, world_size; integer idx, nbr_sep comm_topo = MPI_UNDEFINED call MPI_Topo_test(dgraph_comm, comm_topo, ierr); if (comm_topo .ne. MPI_DIST_GRAPH) then validate_dgraph = .false. write(6,*) "dgraph_comm is NOT of type MPI_DIST_GRAPH." return endif call MPI_Dist_graph_neighbors_count(dgraph_comm, & src_sz, dest_sz, wgt_flag, & ierr) if (ierr .ne. MPI_SUCCESS) then validate_dgraph = .false. write(6,*) "MPI_Dist_graph_neighbors_count() fails!" return endif if (.not. wgt_flag) then validate_dgraph = .false. write(6,*) "dgraph_comm is created with MPI_UNWEIGHTED!" return endif if (src_sz .ne. 2 .or. dest_sz .ne. 2) then validate_dgraph = .false. write(6,*) "source or destination edge array is not size 2." write(6,"('src_sz = ',I3,', dest_sz = ',I3)") src_sz, dest_sz return endif call MPI_Dist_graph_neighbors(dgraph_comm, & src_sz, srcs, src_wgts, & dest_sz, dests, dest_wgts, & ierr) if (ierr .ne. MPI_SUCCESS) then validate_dgraph = .false. write(6,*) "MPI_Dist_graph_neighbors() fails!" return endif C Check if the neighbors returned from MPI are really C the nearest neighbors that within a ring. call MPI_Comm_rank(MPI_COMM_WORLD, world_rank, ierr) call MPI_Comm_size(MPI_COMM_WORLD, world_size, ierr) do idx = 1, src_sz nbr_sep = iabs(srcs(idx) - world_rank) if (nbr_sep .ne. 1 .and. nbr_sep .ne. (world_size-1)) then validate_dgraph = .false. write(6,"('srcs[',I3,']=',I3, & ' is NOT a neighbor of my rank',I3)") & idx, srcs(idx), world_rank return endif enddo if (src_wgts(1) .ne. src_wgts(2)) then validate_dgraph = .false. write(6,"('src_wgts = [',I3,',',I3,']')") & src_wgts(1), src_wgts(2) return endif do idx = 1, dest_sz nbr_sep = iabs(dests(idx) - world_rank) if (nbr_sep .ne. 1 .and. nbr_sep .ne. (world_size-1)) then validate_dgraph = .false. write(6,"('dests[',I3,']=',I3, & ' is NOT a neighbor of my rank',I3)") & idx, dests(idx), world_rank return endif enddo if (dest_wgts(1) .ne. dest_wgts(2)) then validate_dgraph = .false. write(6,"('dest_wgts = [',I3,',',I3,']')") & dest_wgts(1), dest_wgts(2) return endif validate_dgraph = .true. return end integer function ring_rank(world_size, in_rank) implicit none integer world_size, in_rank if (in_rank .ge. 0 .and. in_rank .lt. world_size) then ring_rank = in_rank return endif if (in_rank .lt. 0 ) then ring_rank = in_rank + world_size return endif if (in_rank .ge. world_size) then ring_rank = in_rank - world_size return endif ring_rank = -99999 return end program dgraph_unwgt implicit none include 'mpif.h' integer ring_rank external ring_rank logical validate_dgraph external validate_dgraph integer errs, ierr integer dgraph_comm integer world_size, world_rank integer src_sz, dest_sz integer degs(1) integer srcs(2), dests(2) integer src_wgts(2), dest_wgts(2) errs = 0 call MTEST_Init(ierr) call MPI_Comm_rank(MPI_COMM_WORLD, world_rank, ierr) call MPI_Comm_size(MPI_COMM_WORLD, world_size, ierr) srcs(1) = world_rank degs(1) = 2; dests(1) = ring_rank(world_size, world_rank-1) dests(2) = ring_rank(world_size, world_rank+1) dest_wgts(1) = 1 dest_wgts(2) = 1 call MPI_Dist_graph_create(MPI_COMM_WORLD, 1, srcs, degs, dests, & dest_wgts, MPI_INFO_NULL, & .true., dgraph_comm, ierr) if (ierr .ne. MPI_SUCCESS) then write(6,*) "MPI_Dist_graph_create() fails!" call MPI_Abort(MPI_COMM_WORLD, 1, ierr) stop endif if (.not. validate_dgraph(dgraph_comm)) then write(6,*) "MPI_Dist_graph_create() does not create " & //"a bidirectional ring graph!" call MPI_Abort(MPI_COMM_WORLD, 1, ierr) stop endif call MPI_Comm_free(dgraph_comm, ierr) src_sz = 2 srcs(1) = ring_rank(world_size, world_rank-1) srcs(2) = ring_rank(world_size, world_rank+1) src_wgts(1) = 1 src_wgts(2) = 1 dest_sz = 2 dests(1) = ring_rank(world_size, world_rank-1) dests(2) = ring_rank(world_size, world_rank+1) dest_wgts(1) = 1 dest_wgts(2) = 1 call MPI_Dist_graph_create_adjacent(MPI_COMM_WORLD, & src_sz, srcs, src_wgts, & dest_sz, dests, dest_wgts, & MPI_INFO_NULL, .true., & dgraph_comm, ierr) if (ierr .ne. MPI_SUCCESS) then write(6,*) "MPI_Dist_graph_create_adjacent() fails!" call MPI_Abort(MPI_COMM_WORLD, 1, ierr) stop endif if (.not. validate_dgraph(dgraph_comm)) then write(6,*) "MPI_Dist_graph_create_adjacent() does not create " & //"a bidirectional ring graph!" call MPI_Abort(MPI_COMM_WORLD, 1, ierr) stop endif call MPI_Comm_free(dgraph_comm, ierr) call MTEST_Finalize(errs) call MPI_Finalize(ierr) end mpi-testsuite-3.2+dfsg/f77/topo/testlist0000644000175000017500000000010612620254305017537 0ustar mbanckmbanckcartcrf 4 dgraph_wgtf 4 mpiversion=2.2 dgraph_unwgtf 4 mpiversion=3.0 mpi-testsuite-3.2+dfsg/f77/topo/Makefile.in0000644000175000017500000004543412621010234020013 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = cartcrf$(EXEEXT) dgraph_wgtf$(EXEEXT) \ dgraph_unwgtf$(EXEEXT) subdir = f77/topo ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) cartcrf_SOURCES = cartcrf.f cartcrf_OBJECTS = cartcrf.$(OBJEXT) cartcrf_LDADD = $(LDADD) cartcrf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o dgraph_unwgtf_SOURCES = dgraph_unwgtf.f dgraph_unwgtf_OBJECTS = dgraph_unwgtf.$(OBJEXT) dgraph_unwgtf_LDADD = $(LDADD) dgraph_unwgtf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o dgraph_wgtf_SOURCES = dgraph_wgtf.f dgraph_wgtf_OBJECTS = dgraph_wgtf.$(OBJEXT) dgraph_wgtf_LDADD = $(LDADD) dgraph_wgtf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include F77COMPILE = $(F77) $(AM_FFLAGS) $(FFLAGS) AM_V_F77 = $(am__v_F77_@AM_V@) am__v_F77_ = $(am__v_F77_@AM_DEFAULT_V@) am__v_F77_0 = @echo " F77 " $@; am__v_F77_1 = F77LD = $(F77) F77LINK = $(F77LD) $(AM_FFLAGS) $(FFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_F77LD = $(am__v_F77LD_@AM_V@) am__v_F77LD_ = $(am__v_F77LD_@AM_DEFAULT_V@) am__v_F77LD_0 = @echo " F77LD " $@; am__v_F77LD_1 = SOURCES = cartcrf.f dgraph_unwgtf.f dgraph_wgtf.f DIST_SOURCES = cartcrf.f dgraph_unwgtf.f dgraph_wgtf.f am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_f77.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F77 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. LDADD = $(top_builddir)/f77/util/mtestf.o CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f" lines AM_DEFAULT_SOURCE_EXT = .f all: all-am .SUFFIXES: .SUFFIXES: .f .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f77.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f77/topo/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f77/topo/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f77.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) cartcrf$(EXEEXT): $(cartcrf_OBJECTS) $(cartcrf_DEPENDENCIES) $(EXTRA_cartcrf_DEPENDENCIES) @rm -f cartcrf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(cartcrf_OBJECTS) $(cartcrf_LDADD) $(LIBS) dgraph_unwgtf$(EXEEXT): $(dgraph_unwgtf_OBJECTS) $(dgraph_unwgtf_DEPENDENCIES) $(EXTRA_dgraph_unwgtf_DEPENDENCIES) @rm -f dgraph_unwgtf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(dgraph_unwgtf_OBJECTS) $(dgraph_unwgtf_LDADD) $(LIBS) dgraph_wgtf$(EXEEXT): $(dgraph_wgtf_OBJECTS) $(dgraph_wgtf_DEPENDENCIES) $(EXTRA_dgraph_wgtf_DEPENDENCIES) @rm -f dgraph_wgtf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(dgraph_wgtf_OBJECTS) $(dgraph_wgtf_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .f.o: $(AM_V_F77)$(F77COMPILE) -c -o $@ $< .f.obj: $(AM_V_F77)$(F77COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f77/util/mtestf.o: $(top_srcdir)/f77/util/mtestf.f (cd $(top_builddir)/f77/util && $(MAKE) mtestf.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f77/topo/Makefile.am0000644000175000017500000000053212620254305020000 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f77.mtest EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f" lines AM_DEFAULT_SOURCE_EXT = .f noinst_PROGRAMS = cartcrf dgraph_wgtf dgraph_unwgtf mpi-testsuite-3.2+dfsg/f77/topo/cartcrf.f0000644000175000017500000000672312620254305017547 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2004 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C C Test various combinations of periodic and non-periodic Cartesian C communicators C program main implicit none include 'mpif.h' integer errs, ierr integer ndims, nperiods, i, size integer comm, source, dest, newcomm integer maxdims parameter (maxdims=7) logical periods(maxdims), outperiods(maxdims) integer dims(maxdims), outdims(maxdims) integer outcoords(maxdims) errs = 0 call mtest_init( ierr ) C C For upto 6 dimensions, test with periodicity in 0 through all C dimensions. The test is computed by both: C get info about the created communicator C apply cart shift C Note that a dimension can have size one, so that these tests C can work with small numbers (even 1) of processes C comm = MPI_COMM_WORLD call mpi_comm_size( comm, size, ierr ) do ndims = 1, 6 do nperiods = 0, ndims do i=1,ndims periods(i) = .false. dims(i) = 0 enddo do i=1,nperiods periods(i) = .true. enddo call mpi_dims_create( size, ndims, dims, ierr ) call mpi_cart_create( comm, ndims, dims, periods, .false., $ newcomm, ierr ) if (newcomm .ne. MPI_COMM_NULL) then call mpi_cart_get( newcomm, maxdims, outdims, outperiods, $ outcoords, ierr ) C print *, 'Coords = ' do i=1, ndims C print *, i, '(', outcoords(i), ')' if (periods(i) .neqv. outperiods(i)) then errs = errs + 1 print *, ' Wrong value for periods ', i print *, ' ndims = ', ndims endif enddo do i=1, ndims call mpi_cart_shift( newcomm, i-1, 1, source, dest, $ ierr ) if (outcoords(i) .eq. outdims(i)-1) then if (periods(i)) then if (dest .eq. MPI_PROC_NULL) then errs = errs + 1 print *, 'Expected rank, got proc_null' endif else if (dest .ne. MPI_PROC_NULL) then errs = errs + 1 print *, 'Expected procnull, got ', dest endif endif endif call mpi_cart_shift( newcomm, i-1, -1, source, dest, $ ierr ) if (outcoords(i) .eq. 0) then if (periods(i)) then if (dest .eq. MPI_PROC_NULL) then errs = errs + 1 print *, 'Expected rank, got proc_null' endif else if (dest .ne. MPI_PROC_NULL) then errs = errs + 1 print *, 'Expected procnull, got ', dest endif endif endif enddo call mpi_comm_free( newcomm, ierr ) endif enddo enddo call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f77/topo/dgraph_unwgtf.f0000644000175000017500000001664612620254305020767 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2011 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C C This program is Fortran version of dgraph_unwgt.c C Specify a distributed graph of a bidirectional ring of the MPI_COMM_WORLD, C i.e. everyone only talks to left and right neighbors. logical function validate_dgraph(dgraph_comm) implicit none include 'mpif.h' integer dgraph_comm integer comm_topo integer src_sz, dest_sz integer ierr; logical wgt_flag; integer srcs(2), dests(2) integer world_rank, world_size; integer idx, nbr_sep comm_topo = MPI_UNDEFINED call MPI_Topo_test(dgraph_comm, comm_topo, ierr); if (comm_topo .ne. MPI_DIST_GRAPH) then validate_dgraph = .false. write(6,*) "dgraph_comm is NOT of type MPI_DIST_GRAPH." return endif call MPI_Dist_graph_neighbors_count(dgraph_comm, & src_sz, dest_sz, wgt_flag, & ierr) if (ierr .ne. MPI_SUCCESS) then validate_dgraph = .false. write(6,*) "MPI_Dist_graph_neighbors_count() fails!" return endif if (wgt_flag) then validate_dgraph = .false. write(6,*) "dgraph_comm is NOT created with MPI_UNWEIGHTED." return endif if (src_sz .ne. 2 .or. dest_sz .ne. 2) then validate_dgraph = .false. write(6,*) "source or destination edge array is not size 2." write(6,"('src_sz = ',I3,', dest_sz = ',I3)") src_sz, dest_sz return endif call MPI_Dist_graph_neighbors(dgraph_comm, & src_sz, srcs, MPI_UNWEIGHTED, & dest_sz, dests, MPI_UNWEIGHTED, & ierr) if (ierr .ne. MPI_SUCCESS) then validate_dgraph = .false. write(6,*) "MPI_Dist_graph_neighbors() fails!" return endif C Check if the neighbors returned from MPI are really C the nearest neighbors that within a ring. call MPI_Comm_rank(MPI_COMM_WORLD, world_rank, ierr) call MPI_Comm_size(MPI_COMM_WORLD, world_size, ierr) do idx = 1, src_sz nbr_sep = iabs(srcs(idx) - world_rank) if (nbr_sep .ne. 1 .and. nbr_sep .ne. (world_size-1)) then validate_dgraph = .false. write(6,"('srcs[',I3,']=',I3, & ' is NOT a neighbor of my rank',I3)") & idx, srcs(idx), world_rank return endif enddo do idx = 1, dest_sz nbr_sep = iabs(dests(idx) - world_rank) if (nbr_sep .ne. 1 .and. nbr_sep .ne. (world_size-1)) then validate_dgraph = .false. write(6,"('dests[',I3,']=',I3, & ' is NOT a neighbor of my rank',I3)") & idx, dests(idx), world_rank return endif enddo validate_dgraph = .true. return end integer function ring_rank(world_size, in_rank) implicit none integer world_size, in_rank if (in_rank .ge. 0 .and. in_rank .lt. world_size) then ring_rank = in_rank return endif if (in_rank .lt. 0 ) then ring_rank = in_rank + world_size return endif if (in_rank .ge. world_size) then ring_rank = in_rank - world_size return endif ring_rank = -99999 return end program dgraph_unwgt implicit none include 'mpif.h' integer ring_rank external ring_rank logical validate_dgraph external validate_dgraph integer errs, ierr integer dgraph_comm integer world_size, world_rank integer src_sz, dest_sz integer degs(1) integer srcs(2), dests(2) errs = 0 call MTEST_Init(ierr) call MPI_Comm_rank(MPI_COMM_WORLD, world_rank, ierr) call MPI_Comm_size(MPI_COMM_WORLD, world_size, ierr) srcs(1) = world_rank degs(1) = 2; dests(1) = ring_rank(world_size, world_rank-1) dests(2) = ring_rank(world_size, world_rank+1) call MPI_Dist_graph_create(MPI_COMM_WORLD, 1, srcs, degs, dests, & MPI_UNWEIGHTED, MPI_INFO_NULL, & .true., dgraph_comm, ierr) if (ierr .ne. MPI_SUCCESS) then write(6,*) "MPI_Dist_graph_create() fails!" call MPI_Abort(MPI_COMM_WORLD, 1, ierr) stop endif if (.not. validate_dgraph(dgraph_comm)) then write(6,*) "MPI_Dist_graph_create() does not create" & //"a bidirectional ring graph!" call MPI_Abort(MPI_COMM_WORLD, 1, ierr) stop endif call MPI_Comm_free(dgraph_comm, ierr) C now create one with MPI_WEIGHTS_EMPTY C NOTE that MPI_WEIGHTS_EMPTY was added in MPI-3 and does not C appear before then. Incluing this test means that this test cannot C be compiled if the MPI version is less than 3 (see the testlist file) degs(1) = 0; call MPI_Dist_graph_create(MPI_COMM_WORLD, 1, srcs, degs, dests, & MPI_WEIGHTS_EMPTY, MPI_INFO_NULL, & .true., dgraph_comm, ierr) if (ierr .ne. MPI_SUCCESS) then write(6,*) "MPI_Dist_graph_create() fails!" call MPI_Abort(MPI_COMM_WORLD, 1, ierr) stop endif call MPI_Comm_free(dgraph_comm, ierr) src_sz = 2 srcs(1) = ring_rank(world_size, world_rank-1) srcs(2) = ring_rank(world_size, world_rank+1) dest_sz = 2 dests(1) = ring_rank(world_size, world_rank-1) dests(2) = ring_rank(world_size, world_rank+1) call MPI_Dist_graph_create_adjacent(MPI_COMM_WORLD, & src_sz, srcs, & MPI_UNWEIGHTED, & dest_sz, dests, & MPI_UNWEIGHTED, & MPI_INFO_NULL, .true., & dgraph_comm, ierr) if (ierr .ne. MPI_SUCCESS) then write(6,*) "MPI_Dist_graph_create_adjacent() fails!" call MPI_Abort(MPI_COMM_WORLD, 1, ierr) stop endif if (.not. validate_dgraph(dgraph_comm)) then write(6,*) "MPI_Dist_graph_create_adjacent() does not create" & //"a bidirectional ring graph!" call MPI_Abort(MPI_COMM_WORLD, 1, ierr) stop endif call MPI_Comm_free(dgraph_comm, ierr) C now create one with MPI_WEIGHTS_EMPTY src_sz = 0 dest_sz = 0 call MPI_Dist_graph_create_adjacent(MPI_COMM_WORLD, & src_sz, srcs, & MPI_WEIGHTS_EMPTY, & dest_sz, dests, & MPI_WEIGHTS_EMPTY, & MPI_INFO_NULL, .true., & dgraph_comm, ierr) if (ierr .ne. MPI_SUCCESS) then write(6,*) "MPI_Dist_graph_create_adjacent() fails!" call MPI_Abort(MPI_COMM_WORLD, 1, ierr) stop endif call MPI_Comm_free(dgraph_comm, ierr) call MTEST_Finalize(errs) call MPI_Finalize(ierr) end mpi-testsuite-3.2+dfsg/spawn/0000755000175000017500000000000012621010236015502 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/spawn/spawn1.c0000644000175000017500000000764412620254305017100 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitest.h" #include #include #ifdef HAVE_STRINGS_H #include #endif #ifdef HAVE_STRING_H #include #endif /* static char MTEST_Descrip[] = "A simple test of Comm_spawn"; */ int main(int argc, char *argv[]) { int errs = 0, err; int rank, size, rsize, i; int np = 2; int errcodes[2]; MPI_Comm parentcomm, intercomm; MPI_Status status; int can_spawn; MTest_Init(&argc, &argv); errs += MTestSpawnPossible(&can_spawn); if (can_spawn) { MPI_Comm_get_parent(&parentcomm); if (parentcomm == MPI_COMM_NULL) { /* Create 2 more processes */ MPI_Comm_spawn((char *) "./spawn1", MPI_ARGV_NULL, np, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &intercomm, errcodes); } else intercomm = parentcomm; /* We now have a valid intercomm */ MPI_Comm_remote_size(intercomm, &rsize); MPI_Comm_size(intercomm, &size); MPI_Comm_rank(intercomm, &rank); if (parentcomm == MPI_COMM_NULL) { /* Master */ if (rsize != np) { errs++; printf("Did not create %d processes (got %d)\n", np, rsize); } if (rank == 0) { for (i = 0; i < rsize; i++) { MPI_Send(&i, 1, MPI_INT, i, 0, intercomm); } /* We could use intercomm reduce to get the errors from the * children, but we'll use a simpler loop to make sure that * we get valid data */ for (i = 0; i < rsize; i++) { MPI_Recv(&err, 1, MPI_INT, i, 1, intercomm, MPI_STATUS_IGNORE); errs += err; } } } else { /* Child */ char cname[MPI_MAX_OBJECT_NAME]; int rlen; if (size != np) { errs++; printf("(Child) Did not create %d processes (got %d)\n", np, size); } /* Check the name of the parent */ cname[0] = 0; MPI_Comm_get_name(intercomm, cname, &rlen); /* MPI-2 section 8.4 requires that the parent have this * default name */ if (strcmp(cname, "MPI_COMM_PARENT") != 0) { errs++; printf("Name of parent is not correct\n"); if (rlen > 0 && cname[0]) { printf(" Got %s but expected MPI_COMM_PARENT\n", cname); } else { printf(" Expected MPI_COMM_PARENT but no name set\n"); } } MPI_Recv(&i, 1, MPI_INT, 0, 0, intercomm, &status); if (i != rank) { errs++; printf("Unexpected rank on child %d (%d)\n", rank, i); } /* Send the errs back to the master process */ MPI_Ssend(&errs, 1, MPI_INT, 0, 1, intercomm); } /* It isn't necessary to free the intercomm, but it should not hurt */ /* Using Comm_disconnect instead of free should provide a stronger * test, as a high-quality MPI implementation will be able to * recover some resources that it should hold on to in the case * of MPI_Comm_free */ /* MPI_Comm_free(&intercomm); */ MPI_Comm_disconnect(&intercomm); /* Note that the MTest_Finalize get errs only over COMM_WORLD */ /* Note also that both the parent and child will generate "No Errors" * if both call MTest_Finalize */ if (parentcomm == MPI_COMM_NULL) { MTest_Finalize(errs); } } else { MTest_Finalize(errs); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/spawn/spawnminfo1.c0000644000175000017500000001315012620254305020116 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2005 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitest.h" #include #include #ifdef HAVE_STRINGS_H #include #endif #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_UNISTD_H /* Needed for getcwd */ #include #endif /* static char MTEST_Descrip[] = "A simple test of Comm_spawn_multiple with info"; */ int main(int argc, char *argv[]) { int errs = 0, err; int rank, size, rsize, i; int np[2] = { 1, 1 }, sumnp = 2; int errcodes[2]; MPI_Comm parentcomm, intercomm; MPI_Status status; MPI_Info spawninfos[2]; char curdir[1024], wd[1024], childwd[1024]; char *commands[2] = { (char *) "spawnminfo1", (char *) "spawnminfo1" }; char *cerr; int can_spawn; MTest_Init(&argc, &argv); errs += MTestSpawnPossible(&can_spawn); if (can_spawn) { cerr = getcwd(curdir, sizeof(curdir)); MPI_Comm_get_parent(&parentcomm); if (parentcomm == MPI_COMM_NULL) { char *p; /* Create 2 more processes. Make the working directory the * directory above the current running directory */ strncpy(wd, curdir, sizeof(wd)); /* Lop off the last element of the directory */ p = wd + strlen(wd) - 1; while (p > wd && *p != '/' && *p != '\\') p--; *p = 0; MPI_Info_create(&spawninfos[0]); MPI_Info_set(spawninfos[0], (char *) "path", curdir); MPI_Info_set(spawninfos[0], (char *) "wdir", wd); MPI_Info_create(&spawninfos[1]); MPI_Info_set(spawninfos[1], (char *) "path", curdir); MPI_Info_set(spawninfos[1], (char *) "wdir", curdir); MPI_Comm_spawn_multiple(2, commands, MPI_ARGVS_NULL, np, spawninfos, 0, MPI_COMM_WORLD, &intercomm, errcodes); MPI_Info_free(&spawninfos[0]); MPI_Info_free(&spawninfos[1]); } else intercomm = parentcomm; /* We now have a valid intercomm */ MPI_Comm_remote_size(intercomm, &rsize); MPI_Comm_size(intercomm, &size); MPI_Comm_rank(intercomm, &rank); if (parentcomm == MPI_COMM_NULL) { /* Master */ if (rsize != sumnp) { errs++; printf("Did not create %d processes (got %d)\n", sumnp, rsize); } if (rank == 0) { for (i = 0; i < rsize; i++) { MPI_Send(&i, 1, MPI_INT, i, 0, intercomm); } /* We could use intercomm reduce to get the errors from the * children, but we'll use a simpler loop to make sure that * we get valid data */ for (i = 0; i < rsize; i++) { MPI_Recv(&err, 1, MPI_INT, i, 1, intercomm, MPI_STATUS_IGNORE); errs += err; } for (i = 0; i < rsize; i++) { char *expected = 0; MPI_Recv(childwd, sizeof(childwd), MPI_CHAR, i, 2, intercomm, MPI_STATUS_IGNORE); /* The first set uses wd the second set curdir */ if (i < np[0]) expected = wd; else expected = curdir; if (strcmp(childwd, expected) != 0) { printf ("Expected a working dir of %s but child is in %s for child rank %d\n", expected, childwd, i); errs++; } } } } else { /* Child */ char cname[MPI_MAX_OBJECT_NAME]; int rlen; if (size != sumnp) { errs++; printf("(Child) Did not create %d processes (got %d)\n", sumnp, size); } /* Check the name of the parent */ cname[0] = 0; MPI_Comm_get_name(intercomm, cname, &rlen); /* MPI-2 section 8.4 requires that the parent have this * default name */ if (strcmp(cname, "MPI_COMM_PARENT") != 0) { errs++; printf("Name of parent is not correct\n"); if (rlen > 0 && cname[0]) { printf(" Got %s but expected MPI_COMM_PARENT\n", cname); } else { printf(" Expected MPI_COMM_PARENT but no name set\n"); } } MPI_Recv(&i, 1, MPI_INT, 0, 0, intercomm, &status); if (i != rank) { errs++; printf("Unexpected rank on child %d (%d)\n", rank, i); } /* Send our notion of the current directory to the parent */ MPI_Send(curdir, strlen(curdir) + 1, MPI_CHAR, 0, 2, intercomm); /* Send the errs back to the master process */ MPI_Ssend(&errs, 1, MPI_INT, 0, 1, intercomm); } /* It isn't necessary to free the intercomm, but it should not hurt */ MPI_Comm_free(&intercomm); /* Note that the MTest_Finalize get errs only over COMM_WORLD */ /* Note also that both the parent and child will generate "No Errors" * if both call MTest_Finalize */ if (parentcomm == MPI_COMM_NULL) { MTest_Finalize(errs); } } else { MTest_Finalize(errs); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/spawn/disconnect2.c0000644000175000017500000001034712620254305020074 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitest.h" #include #include #ifdef HAVE_STRINGS_H #include #endif #ifdef HAVE_STRING_H #include #endif #define IF_VERBOSE(a) if (verbose) { printf a ; fflush(stdout); } #define DATA_VALUE 123 #define DATA_TAG 100 #define SENDER_RANK 0 #define RECEIVER_RANK 1 /* static char MTEST_Descrip[] = "A simple test of Comm_disconnect"; */ int main(int argc, char *argv[]) { int errs = 0; int rank, size, rsize, i, data = -1; int np = 3; MPI_Comm parentcomm, intercomm; MPI_Status status; int verbose = 0; char *env; int can_spawn; env = getenv("MPITEST_VERBOSE"); if (env) { if (*env != '0') verbose = 1; } MTest_Init(&argc, &argv); errs += MTestSpawnPossible(&can_spawn); if (can_spawn) { MPI_Comm_get_parent(&parentcomm); if (parentcomm == MPI_COMM_NULL) { IF_VERBOSE(("spawning %d processes\n", np)); /* Create 3 more processes */ MPI_Comm_spawn((char *) "./disconnect2", MPI_ARGV_NULL, np, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &intercomm, MPI_ERRCODES_IGNORE); } else { intercomm = parentcomm; } /* We now have a valid intercomm */ MPI_Comm_remote_size(intercomm, &rsize); MPI_Comm_size(intercomm, &size); MPI_Comm_rank(intercomm, &rank); if (parentcomm == MPI_COMM_NULL) { IF_VERBOSE(("parent rank %d alive.\n", rank)); /* Parent */ if (rsize != np) { errs++; printf("Did not create %d processes (got %d)\n", np, rsize); fflush(stdout); } if (rank == SENDER_RANK) { IF_VERBOSE(("sending int\n")); i = DATA_VALUE; MPI_Send(&i, 1, MPI_INT, RECEIVER_RANK, DATA_TAG, intercomm); MPI_Recv(&data, 1, MPI_INT, RECEIVER_RANK, DATA_TAG, intercomm, &status); if (data != i) { errs++; } } IF_VERBOSE(("disconnecting child communicator\n")); MPI_Comm_disconnect(&intercomm); /* Errors cannot be sent back to the parent because there is no * communicator connected to the children * for (i=0; i * May, 2011 * * In this test, processes create an intracommunicator and creation is * collective only on the members of the new communicator, not on the parent * communicator. This is accomplished by building up and merging * intercommunicators starting with MPI_COMM_SELF for each process involved. */ #include #include #include #include #define INTERCOMM_TAG 0 const int verbose = 0; void pgroup_create(int grp_size, int *pid_list, MPI_Comm * group_out); void pgroup_free(MPI_Comm * group); /** Free the group */ void pgroup_free(MPI_Comm * group) { /* Note: It's ok to compare predefined handles */ if (*group == MPI_COMM_NULL || *group == MPI_COMM_SELF) return; MPI_Comm_free((MPI_Comm *) group); } /* Create a processor group containing the processes in pid_list. * * NOTE: pid_list list must be identical and sorted on all processes */ void pgroup_create(int grp_size, int *pid_list, MPI_Comm * group_out) { int i, grp_me, me, nproc, merge_size; MPI_Comm pgroup, inter_pgroup; MPI_Comm_rank(MPI_COMM_WORLD, &me); MPI_Comm_size(MPI_COMM_WORLD, &nproc); /* CASE: Group size 0 */ if (grp_size == 0) { *group_out = MPI_COMM_NULL; return; } /* CASE: Group size 1 */ else if (grp_size == 1 && pid_list[0] == me) { *group_out = MPI_COMM_SELF; return; } /* CHECK: If I'm not a member, return COMM_NULL */ grp_me = -1; for (i = 0; i < grp_size; i++) { if (pid_list[i] == me) { grp_me = i; break; } } if (grp_me < 0) { *group_out = MPI_COMM_NULL; return; } pgroup = MPI_COMM_SELF; for (merge_size = 1; merge_size < grp_size; merge_size *= 2) { int gid = grp_me / merge_size; MPI_Comm pgroup_old = pgroup; if (gid % 2 == 0) { /* Check if right partner doesn't exist */ if ((gid + 1) * merge_size >= grp_size) continue; MPI_Intercomm_create(pgroup, 0, MPI_COMM_WORLD, pid_list[(gid + 1) * merge_size], INTERCOMM_TAG, &inter_pgroup); MPI_Intercomm_merge(inter_pgroup, 0 /* LOW */ , &pgroup); } else { MPI_Intercomm_create(pgroup, 0, MPI_COMM_WORLD, pid_list[(gid - 1) * merge_size], INTERCOMM_TAG, &inter_pgroup); MPI_Intercomm_merge(inter_pgroup, 1 /* HIGH */ , &pgroup); } MPI_Comm_free(&inter_pgroup); if (pgroup_old != MPI_COMM_SELF) MPI_Comm_free(&pgroup_old); } *group_out = pgroup; } int main(int argc, char **argv) { int me, nproc, i; int gsize, *glist; MPI_Comm group; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &me); MPI_Comm_size(MPI_COMM_WORLD, &nproc); gsize = nproc / 2 + (nproc % 2); glist = malloc(gsize * sizeof(int)); for (i = 0; i < nproc; i += 2) glist[i / 2] = i; MPI_Barrier(MPI_COMM_WORLD); if (me % 2 == 0) { int gme, gnproc; double t1, t2; t1 = MPI_Wtime(); pgroup_create(gsize, glist, &group); t2 = MPI_Wtime(); MPI_Barrier(group); MPI_Comm_rank(group, &gme); MPI_Comm_size(group, &gnproc); if (verbose) printf("[%d] Group rank = %d, size = %d time = %f sec\n", me, gme, gnproc, t2 - t1); pgroup_free(&group); } free(glist); if (me == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/spawn/Makefile.in0000644000175000017500000010673412621010236017562 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = namepub$(EXEEXT) spawn1$(EXEEXT) spawninfo1$(EXEEXT) \ spawnminfo1$(EXEEXT) spawn2$(EXEEXT) spawnintra$(EXEEXT) \ spawnargv$(EXEEXT) spawnmanyarg$(EXEEXT) spaconacc$(EXEEXT) \ spaconacc2$(EXEEXT) selfconacc$(EXEEXT) spawnmult2$(EXEEXT) \ taskmaster$(EXEEXT) join$(EXEEXT) \ disconnect_reconnect$(EXEEXT) disconnect_reconnect2$(EXEEXT) \ disconnect_reconnect3$(EXEEXT) multiple_ports$(EXEEXT) \ multiple_ports2$(EXEEXT) spaiccreate$(EXEEXT) \ spaiccreate2$(EXEEXT) disconnect$(EXEEXT) disconnect2$(EXEEXT) \ disconnect3$(EXEEXT) pgroup_connect_test$(EXEEXT) \ pgroup_intercomm_test$(EXEEXT) concurrent_spawns$(EXEEXT) \ spawn-rootargs$(EXEEXT) subdir = spawn ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = testlist CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) concurrent_spawns_SOURCES = concurrent_spawns.c concurrent_spawns_OBJECTS = concurrent_spawns.$(OBJEXT) concurrent_spawns_LDADD = $(LDADD) concurrent_spawns_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o disconnect_SOURCES = disconnect.c disconnect_OBJECTS = disconnect.$(OBJEXT) disconnect_LDADD = $(LDADD) disconnect_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o disconnect2_SOURCES = disconnect2.c disconnect2_OBJECTS = disconnect2.$(OBJEXT) disconnect2_LDADD = $(LDADD) disconnect2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o disconnect3_SOURCES = disconnect3.c disconnect3_OBJECTS = disconnect3.$(OBJEXT) disconnect3_LDADD = $(LDADD) disconnect3_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o disconnect_reconnect_SOURCES = disconnect_reconnect.c disconnect_reconnect_OBJECTS = disconnect_reconnect.$(OBJEXT) disconnect_reconnect_LDADD = $(LDADD) disconnect_reconnect_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o disconnect_reconnect2_SOURCES = disconnect_reconnect2.c disconnect_reconnect2_OBJECTS = disconnect_reconnect2.$(OBJEXT) disconnect_reconnect2_LDADD = $(LDADD) disconnect_reconnect2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o disconnect_reconnect3_SOURCES = disconnect_reconnect3.c disconnect_reconnect3_OBJECTS = disconnect_reconnect3.$(OBJEXT) disconnect_reconnect3_LDADD = $(LDADD) disconnect_reconnect3_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o join_SOURCES = join.c join_OBJECTS = join.$(OBJEXT) join_DEPENDENCIES = $(LDADD) multiple_ports_SOURCES = multiple_ports.c multiple_ports_OBJECTS = multiple_ports.$(OBJEXT) multiple_ports_LDADD = $(LDADD) multiple_ports_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o multiple_ports2_SOURCES = multiple_ports2.c multiple_ports2_OBJECTS = multiple_ports2.$(OBJEXT) multiple_ports2_LDADD = $(LDADD) multiple_ports2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o namepub_SOURCES = namepub.c namepub_OBJECTS = namepub.$(OBJEXT) namepub_LDADD = $(LDADD) namepub_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o pgroup_connect_test_SOURCES = pgroup_connect_test.c pgroup_connect_test_OBJECTS = pgroup_connect_test.$(OBJEXT) pgroup_connect_test_LDADD = $(LDADD) pgroup_connect_test_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o pgroup_intercomm_test_SOURCES = pgroup_intercomm_test.c pgroup_intercomm_test_OBJECTS = pgroup_intercomm_test.$(OBJEXT) pgroup_intercomm_test_LDADD = $(LDADD) pgroup_intercomm_test_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o selfconacc_SOURCES = selfconacc.c selfconacc_OBJECTS = selfconacc.$(OBJEXT) selfconacc_LDADD = $(LDADD) selfconacc_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o spaconacc_SOURCES = spaconacc.c spaconacc_OBJECTS = spaconacc.$(OBJEXT) spaconacc_LDADD = $(LDADD) spaconacc_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o spaconacc2_SOURCES = spaconacc2.c spaconacc2_OBJECTS = spaconacc2.$(OBJEXT) spaconacc2_LDADD = $(LDADD) spaconacc2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o spaiccreate_SOURCES = spaiccreate.c spaiccreate_OBJECTS = spaiccreate.$(OBJEXT) spaiccreate_LDADD = $(LDADD) spaiccreate_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o spaiccreate2_SOURCES = spaiccreate2.c spaiccreate2_OBJECTS = spaiccreate2.$(OBJEXT) spaiccreate2_LDADD = $(LDADD) spaiccreate2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o spawn_rootargs_SOURCES = spawn-rootargs.c spawn_rootargs_OBJECTS = spawn-rootargs.$(OBJEXT) spawn_rootargs_LDADD = $(LDADD) spawn_rootargs_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o spawn1_SOURCES = spawn1.c spawn1_OBJECTS = spawn1.$(OBJEXT) spawn1_LDADD = $(LDADD) spawn1_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o spawn2_SOURCES = spawn2.c spawn2_OBJECTS = spawn2.$(OBJEXT) spawn2_LDADD = $(LDADD) spawn2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o spawnargv_SOURCES = spawnargv.c spawnargv_OBJECTS = spawnargv.$(OBJEXT) spawnargv_LDADD = $(LDADD) spawnargv_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o spawninfo1_SOURCES = spawninfo1.c spawninfo1_OBJECTS = spawninfo1.$(OBJEXT) spawninfo1_LDADD = $(LDADD) spawninfo1_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o spawnintra_SOURCES = spawnintra.c spawnintra_OBJECTS = spawnintra.$(OBJEXT) spawnintra_LDADD = $(LDADD) spawnintra_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o spawnmanyarg_SOURCES = spawnmanyarg.c spawnmanyarg_OBJECTS = spawnmanyarg.$(OBJEXT) spawnmanyarg_LDADD = $(LDADD) spawnmanyarg_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o spawnminfo1_SOURCES = spawnminfo1.c spawnminfo1_OBJECTS = spawnminfo1.$(OBJEXT) spawnminfo1_LDADD = $(LDADD) spawnminfo1_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o spawnmult2_SOURCES = spawnmult2.c spawnmult2_OBJECTS = spawnmult2.$(OBJEXT) spawnmult2_LDADD = $(LDADD) spawnmult2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o taskmaster_SOURCES = taskmaster.c taskmaster_OBJECTS = taskmaster.$(OBJEXT) taskmaster_LDADD = $(LDADD) taskmaster_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = concurrent_spawns.c disconnect.c disconnect2.c disconnect3.c \ disconnect_reconnect.c disconnect_reconnect2.c \ disconnect_reconnect3.c join.c multiple_ports.c \ multiple_ports2.c namepub.c pgroup_connect_test.c \ pgroup_intercomm_test.c selfconacc.c spaconacc.c spaconacc2.c \ spaiccreate.c spaiccreate2.c spawn-rootargs.c spawn1.c \ spawn2.c spawnargv.c spawninfo1.c spawnintra.c spawnmanyarg.c \ spawnminfo1.c spawnmult2.c taskmaster.c DIST_SOURCES = concurrent_spawns.c disconnect.c disconnect2.c \ disconnect3.c disconnect_reconnect.c disconnect_reconnect2.c \ disconnect_reconnect3.c join.c multiple_ports.c \ multiple_ports2.c namepub.c pgroup_connect_test.c \ pgroup_intercomm_test.c selfconacc.c spaconacc.c spaconacc2.c \ spaiccreate.c spaiccreate2.c spawn-rootargs.c spawn1.c \ spawn2.c spawnargv.c spawninfo1.c spawnintra.c spawnmanyarg.c \ spawnminfo1.c spawnmult2.c taskmaster.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/testlist.in \ $(top_srcdir)/Makefile.mtest $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist join_LDADD = $(LDADD) @socklib@ @nslib@ all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign spawn/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign spawn/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): testlist: $(top_builddir)/config.status $(srcdir)/testlist.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) concurrent_spawns$(EXEEXT): $(concurrent_spawns_OBJECTS) $(concurrent_spawns_DEPENDENCIES) $(EXTRA_concurrent_spawns_DEPENDENCIES) @rm -f concurrent_spawns$(EXEEXT) $(AM_V_CCLD)$(LINK) $(concurrent_spawns_OBJECTS) $(concurrent_spawns_LDADD) $(LIBS) disconnect$(EXEEXT): $(disconnect_OBJECTS) $(disconnect_DEPENDENCIES) $(EXTRA_disconnect_DEPENDENCIES) @rm -f disconnect$(EXEEXT) $(AM_V_CCLD)$(LINK) $(disconnect_OBJECTS) $(disconnect_LDADD) $(LIBS) disconnect2$(EXEEXT): $(disconnect2_OBJECTS) $(disconnect2_DEPENDENCIES) $(EXTRA_disconnect2_DEPENDENCIES) @rm -f disconnect2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(disconnect2_OBJECTS) $(disconnect2_LDADD) $(LIBS) disconnect3$(EXEEXT): $(disconnect3_OBJECTS) $(disconnect3_DEPENDENCIES) $(EXTRA_disconnect3_DEPENDENCIES) @rm -f disconnect3$(EXEEXT) $(AM_V_CCLD)$(LINK) $(disconnect3_OBJECTS) $(disconnect3_LDADD) $(LIBS) disconnect_reconnect$(EXEEXT): $(disconnect_reconnect_OBJECTS) $(disconnect_reconnect_DEPENDENCIES) $(EXTRA_disconnect_reconnect_DEPENDENCIES) @rm -f disconnect_reconnect$(EXEEXT) $(AM_V_CCLD)$(LINK) $(disconnect_reconnect_OBJECTS) $(disconnect_reconnect_LDADD) $(LIBS) disconnect_reconnect2$(EXEEXT): $(disconnect_reconnect2_OBJECTS) $(disconnect_reconnect2_DEPENDENCIES) $(EXTRA_disconnect_reconnect2_DEPENDENCIES) @rm -f disconnect_reconnect2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(disconnect_reconnect2_OBJECTS) $(disconnect_reconnect2_LDADD) $(LIBS) disconnect_reconnect3$(EXEEXT): $(disconnect_reconnect3_OBJECTS) $(disconnect_reconnect3_DEPENDENCIES) $(EXTRA_disconnect_reconnect3_DEPENDENCIES) @rm -f disconnect_reconnect3$(EXEEXT) $(AM_V_CCLD)$(LINK) $(disconnect_reconnect3_OBJECTS) $(disconnect_reconnect3_LDADD) $(LIBS) join$(EXEEXT): $(join_OBJECTS) $(join_DEPENDENCIES) $(EXTRA_join_DEPENDENCIES) @rm -f join$(EXEEXT) $(AM_V_CCLD)$(LINK) $(join_OBJECTS) $(join_LDADD) $(LIBS) multiple_ports$(EXEEXT): $(multiple_ports_OBJECTS) $(multiple_ports_DEPENDENCIES) $(EXTRA_multiple_ports_DEPENDENCIES) @rm -f multiple_ports$(EXEEXT) $(AM_V_CCLD)$(LINK) $(multiple_ports_OBJECTS) $(multiple_ports_LDADD) $(LIBS) multiple_ports2$(EXEEXT): $(multiple_ports2_OBJECTS) $(multiple_ports2_DEPENDENCIES) $(EXTRA_multiple_ports2_DEPENDENCIES) @rm -f multiple_ports2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(multiple_ports2_OBJECTS) $(multiple_ports2_LDADD) $(LIBS) namepub$(EXEEXT): $(namepub_OBJECTS) $(namepub_DEPENDENCIES) $(EXTRA_namepub_DEPENDENCIES) @rm -f namepub$(EXEEXT) $(AM_V_CCLD)$(LINK) $(namepub_OBJECTS) $(namepub_LDADD) $(LIBS) pgroup_connect_test$(EXEEXT): $(pgroup_connect_test_OBJECTS) $(pgroup_connect_test_DEPENDENCIES) $(EXTRA_pgroup_connect_test_DEPENDENCIES) @rm -f pgroup_connect_test$(EXEEXT) $(AM_V_CCLD)$(LINK) $(pgroup_connect_test_OBJECTS) $(pgroup_connect_test_LDADD) $(LIBS) pgroup_intercomm_test$(EXEEXT): $(pgroup_intercomm_test_OBJECTS) $(pgroup_intercomm_test_DEPENDENCIES) $(EXTRA_pgroup_intercomm_test_DEPENDENCIES) @rm -f pgroup_intercomm_test$(EXEEXT) $(AM_V_CCLD)$(LINK) $(pgroup_intercomm_test_OBJECTS) $(pgroup_intercomm_test_LDADD) $(LIBS) selfconacc$(EXEEXT): $(selfconacc_OBJECTS) $(selfconacc_DEPENDENCIES) $(EXTRA_selfconacc_DEPENDENCIES) @rm -f selfconacc$(EXEEXT) $(AM_V_CCLD)$(LINK) $(selfconacc_OBJECTS) $(selfconacc_LDADD) $(LIBS) spaconacc$(EXEEXT): $(spaconacc_OBJECTS) $(spaconacc_DEPENDENCIES) $(EXTRA_spaconacc_DEPENDENCIES) @rm -f spaconacc$(EXEEXT) $(AM_V_CCLD)$(LINK) $(spaconacc_OBJECTS) $(spaconacc_LDADD) $(LIBS) spaconacc2$(EXEEXT): $(spaconacc2_OBJECTS) $(spaconacc2_DEPENDENCIES) $(EXTRA_spaconacc2_DEPENDENCIES) @rm -f spaconacc2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(spaconacc2_OBJECTS) $(spaconacc2_LDADD) $(LIBS) spaiccreate$(EXEEXT): $(spaiccreate_OBJECTS) $(spaiccreate_DEPENDENCIES) $(EXTRA_spaiccreate_DEPENDENCIES) @rm -f spaiccreate$(EXEEXT) $(AM_V_CCLD)$(LINK) $(spaiccreate_OBJECTS) $(spaiccreate_LDADD) $(LIBS) spaiccreate2$(EXEEXT): $(spaiccreate2_OBJECTS) $(spaiccreate2_DEPENDENCIES) $(EXTRA_spaiccreate2_DEPENDENCIES) @rm -f spaiccreate2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(spaiccreate2_OBJECTS) $(spaiccreate2_LDADD) $(LIBS) spawn-rootargs$(EXEEXT): $(spawn_rootargs_OBJECTS) $(spawn_rootargs_DEPENDENCIES) $(EXTRA_spawn_rootargs_DEPENDENCIES) @rm -f spawn-rootargs$(EXEEXT) $(AM_V_CCLD)$(LINK) $(spawn_rootargs_OBJECTS) $(spawn_rootargs_LDADD) $(LIBS) spawn1$(EXEEXT): $(spawn1_OBJECTS) $(spawn1_DEPENDENCIES) $(EXTRA_spawn1_DEPENDENCIES) @rm -f spawn1$(EXEEXT) $(AM_V_CCLD)$(LINK) $(spawn1_OBJECTS) $(spawn1_LDADD) $(LIBS) spawn2$(EXEEXT): $(spawn2_OBJECTS) $(spawn2_DEPENDENCIES) $(EXTRA_spawn2_DEPENDENCIES) @rm -f spawn2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(spawn2_OBJECTS) $(spawn2_LDADD) $(LIBS) spawnargv$(EXEEXT): $(spawnargv_OBJECTS) $(spawnargv_DEPENDENCIES) $(EXTRA_spawnargv_DEPENDENCIES) @rm -f spawnargv$(EXEEXT) $(AM_V_CCLD)$(LINK) $(spawnargv_OBJECTS) $(spawnargv_LDADD) $(LIBS) spawninfo1$(EXEEXT): $(spawninfo1_OBJECTS) $(spawninfo1_DEPENDENCIES) $(EXTRA_spawninfo1_DEPENDENCIES) @rm -f spawninfo1$(EXEEXT) $(AM_V_CCLD)$(LINK) $(spawninfo1_OBJECTS) $(spawninfo1_LDADD) $(LIBS) spawnintra$(EXEEXT): $(spawnintra_OBJECTS) $(spawnintra_DEPENDENCIES) $(EXTRA_spawnintra_DEPENDENCIES) @rm -f spawnintra$(EXEEXT) $(AM_V_CCLD)$(LINK) $(spawnintra_OBJECTS) $(spawnintra_LDADD) $(LIBS) spawnmanyarg$(EXEEXT): $(spawnmanyarg_OBJECTS) $(spawnmanyarg_DEPENDENCIES) $(EXTRA_spawnmanyarg_DEPENDENCIES) @rm -f spawnmanyarg$(EXEEXT) $(AM_V_CCLD)$(LINK) $(spawnmanyarg_OBJECTS) $(spawnmanyarg_LDADD) $(LIBS) spawnminfo1$(EXEEXT): $(spawnminfo1_OBJECTS) $(spawnminfo1_DEPENDENCIES) $(EXTRA_spawnminfo1_DEPENDENCIES) @rm -f spawnminfo1$(EXEEXT) $(AM_V_CCLD)$(LINK) $(spawnminfo1_OBJECTS) $(spawnminfo1_LDADD) $(LIBS) spawnmult2$(EXEEXT): $(spawnmult2_OBJECTS) $(spawnmult2_DEPENDENCIES) $(EXTRA_spawnmult2_DEPENDENCIES) @rm -f spawnmult2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(spawnmult2_OBJECTS) $(spawnmult2_LDADD) $(LIBS) taskmaster$(EXEEXT): $(taskmaster_OBJECTS) $(taskmaster_DEPENDENCIES) $(EXTRA_taskmaster_DEPENDENCIES) @rm -f taskmaster$(EXEEXT) $(AM_V_CCLD)$(LINK) $(taskmaster_OBJECTS) $(taskmaster_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/concurrent_spawns.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/disconnect.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/disconnect2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/disconnect3.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/disconnect_reconnect.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/disconnect_reconnect2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/disconnect_reconnect3.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/join.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multiple_ports.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multiple_ports2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/namepub.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pgroup_connect_test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pgroup_intercomm_test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/selfconacc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spaconacc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spaconacc2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spaiccreate.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spaiccreate2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spawn-rootargs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spawn1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spawn2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spawnargv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spawninfo1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spawnintra.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spawnmanyarg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spawnminfo1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spawnmult2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/taskmaster.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/spawn/spawn-rootargs.c0000644000175000017500000000207512620254305020646 0ustar mbanckmbanck#include #include /* Derived from mpi4py test case. This test that tries to follow what the MPI * standard says about spawning processes with arguments that should be * relevant only at the root process. See * https://bitbucket.org/mpi4py/mpi4py/issues/19/unit-tests-fail-with-mpich-master#comment-19261971 * and * https://trac.mpich.org/projects/mpich/ticket/2282 */ int main(int argc, char *argv[]) { char *args[] = { "a", "b", "c", (char *) 0 }; int rank; MPI_Comm master, worker; MPI_Init(&argc, &argv); MPI_Comm_get_parent(&master); if (master == MPI_COMM_NULL) { MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_spawn("./spawn-nullargs", args, /*MPI_ARGV_NULL, */ 5, MPI_INFO_NULL, 0, MPI_COMM_SELF, &worker, MPI_ERRCODES_IGNORE); MPI_Barrier(worker); MPI_Comm_disconnect(&worker); if (!rank) printf(" No Errors\n"); } else { MPI_Barrier(master); MPI_Comm_disconnect(&master); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/spawn/disconnect_reconnect2.c0000644000175000017500000002171212620254305022132 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include #include "mpitest.h" /* Note: In this program, the return codes from the MPI routines are checked. Since the error handlers for the communicators are not set to MPI_ERRORS_RETURN, any error should cause an abort rather than a return. The test on the return value is an extra safety check; note that a return value of other than MPI_SUCCESS in these routines indicates an error in the error handling by the MPI implementation */ #define IF_VERBOSE(a) if (verbose) { printf a ; fflush(stdout); } void check_error(int, const char *); void check_error(int error, const char *fcname) { char err_string[MPI_MAX_ERROR_STRING] = ""; int length; if (error != MPI_SUCCESS) { MPI_Error_string(error, err_string, &length); printf("%s failed: %s\n", fcname, err_string); fflush(stdout); MPI_Abort(MPI_COMM_WORLD, error); } } /* This test spawns two child jobs and has them open a port and connect to * each other. * The two children repeatedly connect, accept, and disconnect from each other. */ int main(int argc, char *argv[]) { int error; int rank, size; int numprocs = 3; char *argv1[2] = { (char *) "connector", NULL }; char *argv2[2] = { (char *) "acceptor", NULL }; MPI_Comm comm_connector, comm_acceptor, comm_parent, comm; char port[MPI_MAX_PORT_NAME] = { 0 }; MPI_Status status; MPI_Info spawn_path = MPI_INFO_NULL; int i, num_loops = 100; int data; int verbose = 0; int can_spawn, errs = 0; if (getenv("MPITEST_VERBOSE")) { verbose = 1; } IF_VERBOSE(("init.\n")); error = MPI_Init(&argc, &argv); check_error(error, "MPI_Init"); errs += MTestSpawnPossible(&can_spawn); if (!can_spawn) { if (errs) printf(" Found %d errors\n", errs); else printf(" No Errors\n"); fflush(stdout); } else { IF_VERBOSE(("size.\n")); error = MPI_Comm_size(MPI_COMM_WORLD, &size); check_error(error, "MPI_Comm_size"); IF_VERBOSE(("rank.\n")); error = MPI_Comm_rank(MPI_COMM_WORLD, &rank); check_error(error, "MPI_Comm_rank"); if (argc == 1) { /* Make sure that the current directory is in the path. * Not all implementations may honor or understand this, but * it is highly recommended as it gives users a clean way * to specify the location of the executable without * specifying a particular directory format (e.g., this * should work with both Windows and Unix implementations) */ MPI_Info_create(&spawn_path); MPI_Info_set(spawn_path, (char *) "path", (char *) "."); IF_VERBOSE(("spawn connector.\n")); error = MPI_Comm_spawn((char *) "disconnect_reconnect2", argv1, numprocs, spawn_path, 0, MPI_COMM_WORLD, &comm_connector, MPI_ERRCODES_IGNORE); check_error(error, "MPI_Comm_spawn"); IF_VERBOSE(("spawn acceptor.\n")); error = MPI_Comm_spawn((char *) "disconnect_reconnect2", argv2, numprocs, spawn_path, 0, MPI_COMM_WORLD, &comm_acceptor, MPI_ERRCODES_IGNORE); check_error(error, "MPI_Comm_spawn"); MPI_Info_free(&spawn_path); if (rank == 0) { IF_VERBOSE(("recv port.\n")); error = MPI_Recv(port, MPI_MAX_PORT_NAME, MPI_CHAR, 0, 0, comm_acceptor, &status); check_error(error, "MPI_Recv"); IF_VERBOSE(("send port.\n")); error = MPI_Send(port, MPI_MAX_PORT_NAME, MPI_CHAR, 0, 0, comm_connector); check_error(error, "MPI_Send"); } IF_VERBOSE(("barrier acceptor.\n")); error = MPI_Barrier(comm_acceptor); check_error(error, "MPI_Barrier"); IF_VERBOSE(("barrier connector.\n")); error = MPI_Barrier(comm_connector); check_error(error, "MPI_Barrier"); error = MPI_Comm_free(&comm_acceptor); check_error(error, "MPI_Comm_free"); error = MPI_Comm_free(&comm_connector); check_error(error, "MPI_Comm_free"); if (rank == 0) { printf(" No Errors\n"); fflush(stdout); } } else if ((argc == 2) && (strcmp(argv[1], "acceptor") == 0)) { IF_VERBOSE(("get_parent.\n")); error = MPI_Comm_get_parent(&comm_parent); check_error(error, "MPI_Comm_get_parent"); if (comm_parent == MPI_COMM_NULL) { printf("acceptor's parent is NULL.\n"); fflush(stdout); MPI_Abort(MPI_COMM_WORLD, -1); } if (rank == 0) { IF_VERBOSE(("open_port.\n")); error = MPI_Open_port(MPI_INFO_NULL, port); check_error(error, "MPI_Open_port"); IF_VERBOSE(("0: opened port: <%s>\n", port)); IF_VERBOSE(("send.\n")); error = MPI_Send(port, MPI_MAX_PORT_NAME, MPI_CHAR, 0, 0, comm_parent); check_error(error, "MPI_Send"); } for (i = 0; i < num_loops; i++) { IF_VERBOSE(("accept.\n")); error = MPI_Comm_accept(port, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &comm); check_error(error, "MPI_Comm_accept"); if (rank == 0) { data = i; error = MPI_Send(&data, 1, MPI_INT, 0, 0, comm); check_error(error, "MPI_Send"); error = MPI_Recv(&data, 1, MPI_INT, 0, 0, comm, &status); check_error(error, "MPI_Recv"); if (data != i) { printf("expected %d but received %d\n", i, data); fflush(stdout); MPI_Abort(MPI_COMM_WORLD, 1); } } IF_VERBOSE(("disconnect.\n")); error = MPI_Comm_disconnect(&comm); check_error(error, "MPI_Comm_disconnect"); } if (rank == 0) { IF_VERBOSE(("close_port.\n")); error = MPI_Close_port(port); check_error(error, "MPI_Close_port"); } IF_VERBOSE(("barrier.\n")); error = MPI_Barrier(comm_parent); check_error(error, "MPI_Barrier"); MPI_Comm_free(&comm_parent); } else if ((argc == 2) && (strcmp(argv[1], "connector") == 0)) { IF_VERBOSE(("get_parent.\n")); error = MPI_Comm_get_parent(&comm_parent); check_error(error, "MPI_Comm_get_parent"); if (comm_parent == MPI_COMM_NULL) { printf("acceptor's parent is NULL.\n"); fflush(stdout); MPI_Abort(MPI_COMM_WORLD, -1); } if (rank == 0) { IF_VERBOSE(("recv.\n")); error = MPI_Recv(port, MPI_MAX_PORT_NAME, MPI_CHAR, 0, 0, comm_parent, &status); check_error(error, "MPI_Recv"); IF_VERBOSE(("1: received port: <%s>\n", port)); } for (i = 0; i < num_loops; i++) { IF_VERBOSE(("connect.\n")); error = MPI_Comm_connect(port, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &comm); check_error(error, "MPI_Comm_connect"); if (rank == 0) { data = -1; error = MPI_Recv(&data, 1, MPI_INT, 0, 0, comm, &status); check_error(error, "MPI_Recv"); if (data != i) { printf("expected %d but received %d\n", i, data); fflush(stdout); MPI_Abort(MPI_COMM_WORLD, 1); } error = MPI_Send(&data, 1, MPI_INT, 0, 0, comm); check_error(error, "MPI_Send"); } IF_VERBOSE(("disconnect.\n")); error = MPI_Comm_disconnect(&comm); check_error(error, "MPI_Comm_disconnect"); } IF_VERBOSE(("barrier.\n")); error = MPI_Barrier(comm_parent); check_error(error, "MPI_Barrier"); MPI_Comm_free(&comm_parent); } else { printf("invalid command line.\n"); fflush(stdout); { int ii; for (ii = 0; ii < argc; ii++) { printf("argv[%d] = <%s>\n", ii, argv[ii]); } } fflush(stdout); MPI_Abort(MPI_COMM_WORLD, -2); } } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/spawn/disconnect.c0000644000175000017500000000633012620254305020007 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitest.h" #include #include #ifdef HAVE_STRINGS_H #include #endif #ifdef HAVE_STRING_H #include #endif #define IF_VERBOSE(a) if (verbose) { printf a ; fflush(stdout); } /* static char MTEST_Descrip[] = "A simple test of Comm_disconnect"; */ int main(int argc, char *argv[]) { int errs = 0; int rank, size, rsize; int np = 3; MPI_Comm parentcomm, intercomm; int verbose = 0; char *env; int can_spawn; env = getenv("MPITEST_VERBOSE"); if (env) { if (*env != '0') verbose = 1; } MTest_Init(&argc, &argv); errs += MTestSpawnPossible(&can_spawn); if (can_spawn) { MPI_Comm_get_parent(&parentcomm); if (parentcomm == MPI_COMM_NULL) { IF_VERBOSE(("spawning %d processes\n", np)); /* Create 3 more processes */ MPI_Comm_spawn((char *) "./disconnect", MPI_ARGV_NULL, np, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &intercomm, MPI_ERRCODES_IGNORE); } else { intercomm = parentcomm; } /* We now have a valid intercomm */ MPI_Comm_remote_size(intercomm, &rsize); MPI_Comm_size(intercomm, &size); MPI_Comm_rank(intercomm, &rank); if (parentcomm == MPI_COMM_NULL) { IF_VERBOSE(("parent rank %d alive.\n", rank)); /* Parent */ if (rsize != np) { errs++; printf("Did not create %d processes (got %d)\n", np, rsize); fflush(stdout); } IF_VERBOSE(("disconnecting child communicator\n")); MPI_Comm_disconnect(&intercomm); /* Errors cannot be sent back to the parent because there is no * communicator connected to the children * for (i=0; i #include #ifdef HAVE_STRINGS_H #include #endif #ifdef HAVE_STRING_H #include #endif /* #include */ /* This test tests the ability to handle multiple simultaneous calls to * MPI_Comm_spawn. * The first process spawns MAX_NUM_SPAWNS processes and tells them to spawn * MAX_NUM_SPAWNS -1 processes. * This repeats until no processes are spawned. For MAX_NUM_SPAWNS = 4 this * results in 64 processes * created. Hopefully this will result in concurrent handling of * MPI_Comm_spawn calls from multiple processes. */ #define IF_VERBOSE(a) if (verbose) { printf a ; fflush(stdout); } /* static char MTEST_Descrip[] = "A test of concurrent MPI_Comm_spawn calls"; */ #define MAX_NUM_SPAWNS 4 int main(int argc, char *argv[]) { int errs = 0; int child_errs = 0; int size, rsize, i, num_spawns = 0; char description[100]; char child_spawns[10]; char *argv1[3] = { child_spawns, description, NULL }; MPI_Comm parentcomm, intercomm[MAX_NUM_SPAWNS]; MPI_Status status; int verbose = 0; char *env; int can_spawn; env = getenv("MPITEST_VERBOSE"); if (env) { if (*env != '0') verbose = 1; } MTest_Init(&argc, &argv); errs += MTestSpawnPossible(&can_spawn); if (can_spawn) { /* Set the num_spawns for the first process to MAX_NUM_SPAWNS */ MPI_Comm_get_parent(&parentcomm); if (parentcomm == MPI_COMM_NULL) { num_spawns = MAX_NUM_SPAWNS; } /* If an argument is passed in use it for num_spawns */ /* This is the case for all spawned processes and optionally the first * process as well */ if (argc > 1) { num_spawns = atoi(argv[1]); if (num_spawns < 0) num_spawns = 0; if (num_spawns > MAX_NUM_SPAWNS) num_spawns = MAX_NUM_SPAWNS; } /* Send num_spawns - 1 on the command line to the spawned children */ sprintf(child_spawns, "%d", num_spawns - 1 > 0 ? num_spawns - 1 : 0); /* Spawn the children */ IF_VERBOSE(("spawning %d\n", num_spawns)); for (i = 0; i < num_spawns; i++) { if (argc > 2) { sprintf(description, "%s:%d", argv[2], i); } else { sprintf(description, "%d", i); } IF_VERBOSE(("spawning %s\n", description)); MPI_Comm_spawn((char *) "./concurrent_spawns", argv1, 1, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &intercomm[i], MPI_ERRCODES_IGNORE); MPI_Comm_remote_size(intercomm[i], &rsize); MPI_Comm_size(intercomm[i], &size); if (rsize != 1) { errs++; printf("Did not create 1 process (got %d)\n", rsize); fflush(stdout); } } /* Receive the error count from each of your children and add it to your * error count */ for (i = 0; i < num_spawns; i++) { MPI_Recv(&child_errs, 1, MPI_INT, 0, 0, intercomm[i], &status); errs += child_errs; MPI_Comm_disconnect(&intercomm[i]); } /* If you are a spawned process send your errors to your parent */ if (parentcomm != MPI_COMM_NULL) { MPI_Send(&errs, 1, MPI_INT, 0, 0, parentcomm); MPI_Comm_disconnect(&parentcomm); } else { /* Note that the MTest_Finalize get errs only over COMM_WORLD */ /* Note also that both the parent and child will generate "No Errors" * if both call MTest_Finalize */ MTest_Finalize(errs); } } else { MTest_Finalize(errs); } IF_VERBOSE(("calling finalize\n")); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/spawn/disconnect_reconnect3.c0000644000175000017500000001746312620254305022143 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitest.h" #include #include #ifdef HAVE_STRINGS_H #include #endif #ifdef HAVE_STRING_H #include #endif #include /* * This test tests the disconnect code for processes that span process groups. * * This test spawns a group of processes and then merges them into a single * communicator. * Then the single communicator is split into two communicators, one containing * the even ranks and the other the odd ranks. * Then the two new communicators do MPI_Comm_accept/connect/disconnect calls * in a loop. * The even group does the accepting while the odd group does the connecting. * */ #define IF_VERBOSE(a) if (verbose) { printf a ; fflush(stdout); } /* static char MTEST_Descrip[] = "A simple test of Comm_connect/accept/disconnect"; */ /* * Reverse the order of the ranks in a communicator * * Thanks to Edric Ellis for contributing this portion of the test program. */ void checkReverseMergedComm(MPI_Comm comm); void checkReverseMergedComm(MPI_Comm comm) { MPI_Group origGroup; MPI_Group newGroup; MPI_Comm newComm; int buf = 5; int *newGroupRanks = NULL; int ii; int merged_size; assert(comm != MPI_COMM_NULL); /* try a bcast as a weak sanity check that the communicator works */ MPI_Bcast(&buf, 1, MPI_INT, 0, comm); MPI_Comm_size(comm, &merged_size); newGroupRanks = calloc(merged_size, sizeof(int)); for (ii = 0; ii < merged_size; ++ii) { newGroupRanks[ii] = merged_size - ii - 1; } MPI_Comm_group(comm, &origGroup); MPI_Group_incl(origGroup, merged_size, newGroupRanks, &newGroup); free(newGroupRanks); MPI_Comm_create(comm, newGroup, &newComm); assert(newComm != MPI_COMM_NULL); /* try a bcast as a weak sanity check that the communicator works */ MPI_Bcast(&buf, 1, MPI_INT, 0, newComm); MPI_Group_free(&origGroup); MPI_Group_free(&newGroup); MPI_Comm_free(&newComm); } int main(int argc, char *argv[]) { int errs = 0; int rank, rsize, i, j, data, num_loops = 100; int np = 4; MPI_Comm parentcomm, intercomm, intracomm, comm; MPI_Status status; char port[MPI_MAX_PORT_NAME] = { 0 }; int even_odd; int verbose = 0; int do_messages = 1; char *env; int can_spawn; env = getenv("MPITEST_VERBOSE"); if (env) { if (*env != '0') verbose = 1; } MTest_Init(&argc, &argv); errs += MTestSpawnPossible(&can_spawn); if (can_spawn) { /* command line arguments can change the number of loop iterations and * whether or not messages are sent over the new communicators */ if (argc > 1) { num_loops = atoi(argv[1]); if (num_loops < 0) num_loops = 0; if (num_loops > 100) num_loops = 100; } if (argc > 2) { do_messages = atoi(argv[2]); } /* Spawn the child processes and merge them into a single communicator */ MPI_Comm_get_parent(&parentcomm); if (parentcomm == MPI_COMM_NULL) { IF_VERBOSE(("spawning %d processes\n", np)); /* Create 4 more processes */ MPI_Comm_spawn((char *) "./disconnect_reconnect3", /*MPI_ARGV_NULL */ &argv[1], np, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &intercomm, MPI_ERRCODES_IGNORE); MPI_Intercomm_merge(intercomm, 0, &intracomm); } else { intercomm = parentcomm; MPI_Intercomm_merge(intercomm, 1, &intracomm); } checkReverseMergedComm(intracomm); /* We now have a valid intracomm containing all processes */ MPI_Comm_rank(intracomm, &rank); /* Split the communicator so that the even ranks are in one communicator * and the odd ranks are in another */ even_odd = rank % 2; MPI_Comm_split(intracomm, even_odd, rank, &comm); /* Open a port on rank zero of the even communicator */ /* rank 0 on intracomm == rank 0 on even communicator */ if (rank == 0) { MPI_Open_port(MPI_INFO_NULL, port); IF_VERBOSE(("port = %s\n", port)); } /* Broadcast the port to everyone. This makes the logic easier than * trying to figure out which process in the odd communicator to send it * to */ MPI_Bcast(port, MPI_MAX_PORT_NAME, MPI_CHAR, 0, intracomm); IF_VERBOSE(("disconnecting parent/child communicator\n")); MPI_Comm_disconnect(&intercomm); MPI_Comm_disconnect(&intracomm); MPI_Comm_rank(comm, &rank); if (!even_odd) { /* The even group does the accepting */ for (i = 0; i < num_loops; i++) { IF_VERBOSE(("accepting connection\n")); MPI_Comm_accept(port, MPI_INFO_NULL, 0, comm, &intercomm); MPI_Comm_remote_size(intercomm, &rsize); if (do_messages && (rank == 0)) { j = 0; for (j = 0; j < rsize; j++) { data = i; IF_VERBOSE(("sending int to odd_communicator process %d\n", j)); MPI_Send(&data, 1, MPI_INT, j, 100, intercomm); IF_VERBOSE(("receiving int from odd_communicator process %d\n", j)); data = i - 1; MPI_Recv(&data, 1, MPI_INT, j, 100, intercomm, &status); if (data != i) { errs++; } } } IF_VERBOSE(("disconnecting communicator\n")); MPI_Comm_disconnect(&intercomm); } /* Errors cannot be sent back to the parent because there is no * communicator connected to the children * for (i=0; i #include #include "mpitest.h" #include "mpitestconf.h" #ifdef HAVE_STRING_H #include #endif /* static char MTEST_Descrip[] = "A simple test of Comm_spawn, with many arguments"; */ #define MAX_ARGV 1024 int worker(int argc, char *argv[], MPI_Comm intercomm, char *outargv[], int np); int main(int argc, char *argv[]) { int errs = 0, err; int rank, size, rsize, i; int np = 2; int errcodes[2]; MPI_Comm parentcomm, intercomm; char *inargv[MAX_ARGV]; char *outargv[MAX_ARGV]; int narg = 40; char *saveArgp = 0; int can_spawn; MTest_Init(&argc, &argv); errs += MTestSpawnPossible(&can_spawn); if (can_spawn) { /* Initialize the argument vectors */ for (i = 0; i < MAX_ARGV; i++) { char *p; p = (char *) malloc(9); if (!p) { fprintf(stderr, "Unable to allocated memory\n"); MPI_Abort(MPI_COMM_WORLD, 1); } strcpy(p, "01234567"); inargv[i] = p; p = (char *) malloc(9); if (!p) { fprintf(stderr, "Unable to allocated memory\n"); MPI_Abort(MPI_COMM_WORLD, 1); } strcpy(p, "01234567"); outargv[i] = p; } MPI_Comm_get_parent(&parentcomm); if (parentcomm == MPI_COMM_NULL) { for (narg = 16; narg < 512; narg += narg) { /* Create 2 more processes */ /* Set a null at argument length narg */ saveArgp = inargv[narg]; inargv[narg] = 0; /* ./ is unix specific . * The more generic approach would be to specify "spawnmanyarg" as * the executable and pass an info with ("path", ".") */ MPI_Comm_spawn((char *) "./spawnmanyarg", inargv, np, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &intercomm, errcodes); inargv[narg] = saveArgp; /* We now have a valid intercomm */ /* Master */ MPI_Comm_remote_size(intercomm, &rsize); MPI_Comm_size(intercomm, &size); MPI_Comm_rank(intercomm, &rank); if (rsize != np) { errs++; printf("Did not create %d processes (got %d)\n", np, rsize); } /* Send the expected rank */ for (i = 0; i < rsize; i++) { MPI_Send(&i, 1, MPI_INT, i, 0, intercomm); } /* Send the number of arguments */ for (i = 0; i < rsize; i++) { MPI_Send(&narg, 1, MPI_INT, i, 0, intercomm); } /* We could use intercomm reduce to get the errors from the * children, but we'll use a simpler loop to make sure that * we get valid data */ for (i = 0; i < rsize; i++) { MPI_Recv(&err, 1, MPI_INT, i, 1, intercomm, MPI_STATUS_IGNORE); errs += err; } /* Free the intercomm before the next round of spawns */ MPI_Comm_free(&intercomm); } } else { /* Note that worker also send errs to the parent */ errs += worker(argc, argv, parentcomm, outargv, np); MPI_Comm_free(&parentcomm); MPI_Finalize(); return 0; } /* Note that the MTest_Finalize get errs only over COMM_WORLD */ if (parentcomm == MPI_COMM_NULL) { MTest_Finalize(errs); } } else { MTest_Finalize(errs); } MPI_Finalize(); return 0; } /* Call this routine if this process is the spawned child */ int worker(int argc, char *argv[], MPI_Comm intercomm, char *outargv[], int np) { int i, narg; int rsize, size, rank; int errs = 0; char *saveoutArgp = 0; MPI_Status status; MPI_Comm_remote_size(intercomm, &rsize); MPI_Comm_size(intercomm, &size); MPI_Comm_rank(intercomm, &rank); /* Child */ /* FIXME: This assumes that stdout is handled for the children * (the error count will still be reported to the parent) */ if (size != np) { errs++; printf("(Child) Did not create %d processes (got %d)\n", np, size); } MPI_Recv(&i, 1, MPI_INT, 0, 0, intercomm, &status); if (i != rank) { errs++; printf("Unexpected rank on child %d (%d)\n", rank, i); } MPI_Recv(&narg, 1, MPI_INT, 0, 0, intercomm, MPI_STATUS_IGNORE); saveoutArgp = outargv[narg]; outargv[narg] = 0; /* Check the command line */ for (i = 1; i < argc; i++) { if (!outargv[i - 1]) { errs++; printf("Wrong number of arguments (%d)\n", argc); break; } if (strcmp(argv[i], outargv[i - 1]) != 0) { errs++; printf("Found arg %s but expected %s\n", argv[i], outargv[i - 1]); } } if (outargv[i - 1]) { /* We had too few args in the spawned command */ errs++; printf("Too few arguments to spawned command (only %d)\n", i); } /* Restore the argument vector (not necessary in this case, since the * worker will exit) */ outargv[narg] = saveoutArgp; /* Send the errs back to the master process */ MPI_Ssend(&errs, 1, MPI_INT, 0, 1, intercomm); return errs; } mpi-testsuite-3.2+dfsg/spawn/Makefile.am0000644000175000017500000000227512620254305017552 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile.mtest EXTRA_DIST = testlist ## for all programs that are just built from the single corresponding source ## file, we don't need per-target _SOURCES rules, automake will infer them ## correctly noinst_PROGRAMS = \ namepub \ spawn1 \ spawninfo1 \ spawnminfo1 \ spawn2 \ spawnintra \ spawnargv \ spawnmanyarg \ spaconacc \ spaconacc2 \ selfconacc \ spawnmult2 \ taskmaster \ join \ disconnect_reconnect \ disconnect_reconnect2 \ disconnect_reconnect3 \ multiple_ports \ multiple_ports2 \ spaiccreate \ spaiccreate2 \ disconnect \ disconnect2 \ disconnect3 \ pgroup_connect_test \ pgroup_intercomm_test \ concurrent_spawns \ spawn-rootargs join_LDADD = $(LDADD) @socklib@ @nslib@ mpi-testsuite-3.2+dfsg/spawn/spawnintra.c0000644000175000017500000001474412620254305020054 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = "A simple test of Comm_spawn, followed by intercomm merge"; */ int main(int argc, char *argv[]) { int errs = 0, err; int rank, size, rsize, i; int np = 2; int errcodes[2]; MPI_Comm parentcomm, intercomm, intracomm, intracomm2, intracomm3; int isChild = 0; MPI_Status status; int can_spawn; MTest_Init(&argc, &argv); errs += MTestSpawnPossible(&can_spawn); if (can_spawn) { MPI_Comm_get_parent(&parentcomm); if (parentcomm == MPI_COMM_NULL) { /* Create 2 more processes */ MPI_Comm_spawn((char *) "./spawnintra", MPI_ARGV_NULL, np, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &intercomm, errcodes); } else intercomm = parentcomm; /* We now have a valid intercomm */ MPI_Comm_remote_size(intercomm, &rsize); MPI_Comm_size(intercomm, &size); MPI_Comm_rank(intercomm, &rank); if (parentcomm == MPI_COMM_NULL) { /* Master */ if (rsize != np) { errs++; printf("Did not create %d processes (got %d)\n", np, rsize); } if (rank == 0) { for (i = 0; i < rsize; i++) { MPI_Send(&i, 1, MPI_INT, i, 0, intercomm); } } } else { /* Child */ isChild = 1; if (size != np) { errs++; printf("(Child) Did not create %d processes (got %d)\n", np, size); } MPI_Recv(&i, 1, MPI_INT, 0, 0, intercomm, &status); if (i != rank) { errs++; printf("Unexpected rank on child %d (%d)\n", rank, i); } } /* At this point, try to form the intracommunicator */ MPI_Intercomm_merge(intercomm, isChild, &intracomm); /* Check on the intra comm */ { int icsize, icrank, wrank; MPI_Comm_size(intracomm, &icsize); MPI_Comm_rank(intracomm, &icrank); MPI_Comm_rank(MPI_COMM_WORLD, &wrank); if (icsize != rsize + size) { errs++; printf("Intracomm rank %d thinks size is %d, not %d\n", icrank, icsize, rsize + size); } /* Make sure that the processes are ordered correctly */ if (isChild) { int psize; MPI_Comm_remote_size(parentcomm, &psize); if (icrank != psize + wrank) { errs++; printf("Intracomm rank %d (from child) should have rank %d\n", icrank, psize + wrank); } } else { if (icrank != wrank) { errs++; printf("Intracomm rank %d (from parent) should have rank %d\n", icrank, wrank); } } } /* At this point, try to form the intracommunicator, with the other * processes first */ MPI_Intercomm_merge(intercomm, !isChild, &intracomm2); /* Check on the intra comm */ { int icsize, icrank, wrank; MPI_Comm_size(intracomm2, &icsize); MPI_Comm_rank(intracomm2, &icrank); MPI_Comm_rank(MPI_COMM_WORLD, &wrank); if (icsize != rsize + size) { errs++; printf("(2)Intracomm rank %d thinks size is %d, not %d\n", icrank, icsize, rsize + size); } /* Make sure that the processes are ordered correctly */ if (isChild) { if (icrank != wrank) { errs++; printf("(2)Intracomm rank %d (from child) should have rank %d\n", icrank, wrank); } } else { int csize; MPI_Comm_remote_size(intercomm, &csize); if (icrank != wrank + csize) { errs++; printf("(2)Intracomm rank %d (from parent) should have rank %d\n", icrank, wrank + csize); } } } /* At this point, try to form the intracommunicator, with an * arbitrary choice for the first group of processes */ MPI_Intercomm_merge(intercomm, 0, &intracomm3); /* Check on the intra comm */ { int icsize, icrank, wrank; MPI_Comm_size(intracomm3, &icsize); MPI_Comm_rank(intracomm3, &icrank); MPI_Comm_rank(MPI_COMM_WORLD, &wrank); if (icsize != rsize + size) { errs++; printf("(3)Intracomm rank %d thinks size is %d, not %d\n", icrank, icsize, rsize + size); } /* Eventually, we should test that the processes are ordered * correctly, by groups (must be one of the two cases above) */ } /* Update error count */ if (isChild) { /* Send the errs back to the master process */ MPI_Ssend(&errs, 1, MPI_INT, 0, 1, intercomm); } else { if (rank == 0) { /* We could use intercomm reduce to get the errors from the * children, but we'll use a simpler loop to make sure that * we get valid data */ for (i = 0; i < rsize; i++) { MPI_Recv(&err, 1, MPI_INT, i, 1, intercomm, MPI_STATUS_IGNORE); errs += err; } } } /* It isn't necessary to free the intracomms, but it should not hurt */ MPI_Comm_free(&intracomm); MPI_Comm_free(&intracomm2); MPI_Comm_free(&intracomm3); /* It isn't necessary to free the intercomm, but it should not hurt */ MPI_Comm_free(&intercomm); /* Note that the MTest_Finalize get errs only over COMM_WORLD */ /* Note also that both the parent and child will generate "No Errors" * if both call MTest_Finalize */ if (parentcomm == MPI_COMM_NULL) { MTest_Finalize(errs); } } else { MTest_Finalize(errs); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/spawn/spawninfo1.c0000644000175000017500000001164112620254305017744 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2005 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitest.h" #include #include #ifdef HAVE_STRINGS_H #include #endif #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_UNISTD_H /* Needed for getcwd */ #include #endif /* static char MTEST_Descrip[] = "A simple test of Comm_spawn with info"; */ int main(int argc, char *argv[]) { int errs = 0, err; int rank, size, rsize, i; int np = 2; int errcodes[2]; MPI_Comm parentcomm, intercomm; MPI_Status status; MPI_Info spawninfo; char curdir[1024], wd[1024], childwd[1024]; char *cerr; int can_spawn; MTest_Init(&argc, &argv); errs += MTestSpawnPossible(&can_spawn); if (can_spawn) { cerr = getcwd(curdir, sizeof(curdir)); MPI_Comm_get_parent(&parentcomm); if (parentcomm == MPI_COMM_NULL) { char *p; /* Create 2 more processes. Make the working directory the * directory above the current running directory */ strncpy(wd, curdir, sizeof(wd)); /* Lop off the last element of the directory */ p = wd + strlen(wd) - 1; while (p > wd && *p != '/' && *p != '\\') p--; *p = 0; MPI_Info_create(&spawninfo); MPI_Info_set(spawninfo, (char *) "path", curdir); MPI_Info_set(spawninfo, (char *) "wdir", wd); MPI_Comm_spawn((char *) "spawninfo1", MPI_ARGV_NULL, np, spawninfo, 0, MPI_COMM_WORLD, &intercomm, errcodes); MPI_Info_free(&spawninfo); } else intercomm = parentcomm; /* We now have a valid intercomm */ MPI_Comm_remote_size(intercomm, &rsize); MPI_Comm_size(intercomm, &size); MPI_Comm_rank(intercomm, &rank); if (parentcomm == MPI_COMM_NULL) { /* Master */ if (rsize != np) { errs++; printf("Did not create %d processes (got %d)\n", np, rsize); } if (rank == 0) { for (i = 0; i < rsize; i++) { MPI_Send(&i, 1, MPI_INT, i, 0, intercomm); } /* We could use intercomm reduce to get the errors from the * children, but we'll use a simpler loop to make sure that * we get valid data */ for (i = 0; i < rsize; i++) { MPI_Recv(&err, 1, MPI_INT, i, 1, intercomm, MPI_STATUS_IGNORE); errs += err; } for (i = 0; i < rsize; i++) { MPI_Recv(childwd, sizeof(childwd), MPI_CHAR, i, 2, intercomm, MPI_STATUS_IGNORE); if (strcmp(childwd, wd) != 0) { printf("Expected a working dir of %s but child is in %s\n", wd, childwd); errs++; } } } } else { /* Child */ char cname[MPI_MAX_OBJECT_NAME]; int rlen; if (size != np) { errs++; printf("(Child) Did not create %d processes (got %d)\n", np, size); } /* Check the name of the parent */ cname[0] = 0; MPI_Comm_get_name(intercomm, cname, &rlen); /* MPI-2 section 8.4 requires that the parent have this * default name */ if (strcmp(cname, "MPI_COMM_PARENT") != 0) { errs++; printf("Name of parent is not correct\n"); if (rlen > 0 && cname[0]) { printf(" Got %s but expected MPI_COMM_PARENT\n", cname); } else { printf(" Expected MPI_COMM_PARENT but no name set\n"); } } MPI_Recv(&i, 1, MPI_INT, 0, 0, intercomm, &status); if (i != rank) { errs++; printf("Unexpected rank on child %d (%d)\n", rank, i); } /* Send our notion of the current directory to the parent */ MPI_Send(curdir, strlen(curdir) + 1, MPI_CHAR, 0, 2, intercomm); /* Send the errs back to the master process */ MPI_Ssend(&errs, 1, MPI_INT, 0, 1, intercomm); } /* It isn't necessary to free the intercomm, but it should not hurt */ MPI_Comm_free(&intercomm); /* Note that the MTest_Finalize get errs only over COMM_WORLD */ /* Note also that both the parent and child will generate "No Errors" * if both call MTest_Finalize */ if (parentcomm == MPI_COMM_NULL) { MTest_Finalize(errs); } } else { MTest_Finalize(errs); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/spawn/selfconacc.c0000644000175000017500000000741312620254305017761 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include void check_error(int, const char *); void check_error(int error, const char *fcname) { char err_string[MPI_MAX_ERROR_STRING] = ""; int length; if (error != MPI_SUCCESS) { MPI_Error_string(error, err_string, &length); printf("%s failed: %s\n", fcname, err_string); fflush(stdout); MPI_Abort(MPI_COMM_WORLD, error); } } int main(int argc, char *argv[]) { int error; int rank, size; char port[MPI_MAX_PORT_NAME]; MPI_Status status; MPI_Comm comm; int verbose = 0; if (getenv("MPITEST_VERBOSE")) { verbose = 1; } if (verbose) { printf("init.\n"); fflush(stdout); } error = MPI_Init(&argc, &argv); check_error(error, "MPI_Init"); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); MPI_Comm_set_errhandler(MPI_COMM_SELF, MPI_ERRORS_RETURN); if (verbose) { printf("size.\n"); fflush(stdout); } error = MPI_Comm_size(MPI_COMM_WORLD, &size); check_error(error, "MPI_Comm_size"); if (verbose) { printf("rank.\n"); fflush(stdout); } error = MPI_Comm_rank(MPI_COMM_WORLD, &rank); check_error(error, "MPI_Comm_rank"); if (size < 2) { printf("Two processes needed.\n"); MPI_Finalize(); return 0; } if (rank == 0) { if (verbose) { printf("open_port.\n"); fflush(stdout); } error = MPI_Open_port(MPI_INFO_NULL, port); check_error(error, "MPI_Open_port"); if (verbose) { printf("0: opened port: <%s>\n", port); fflush(stdout); } if (verbose) { printf("send.\n"); fflush(stdout); } error = MPI_Send(port, MPI_MAX_PORT_NAME, MPI_CHAR, 1, 0, MPI_COMM_WORLD); check_error(error, "MPI_Send"); if (verbose) { printf("accept.\n"); fflush(stdout); } error = MPI_Comm_accept(port, MPI_INFO_NULL, 0, MPI_COMM_SELF, &comm); check_error(error, "MPI_Comm_accept"); if (verbose) { printf("close_port.\n"); fflush(stdout); } error = MPI_Close_port(port); check_error(error, "MPI_Close_port"); if (verbose) { printf("disconnect.\n"); fflush(stdout); } error = MPI_Comm_disconnect(&comm); check_error(error, "MPI_Comm_disconnect"); } else if (rank == 1) { if (verbose) { printf("recv.\n"); fflush(stdout); } error = MPI_Recv(port, MPI_MAX_PORT_NAME, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &status); check_error(error, "MPI_Recv"); if (verbose) { printf("1: received port: <%s>\n", port); fflush(stdout); } if (verbose) { printf("connect.\n"); fflush(stdout); } error = MPI_Comm_connect(port, MPI_INFO_NULL, 0, MPI_COMM_SELF, &comm); check_error(error, "MPI_Comm_connect"); MPI_Comm_set_errhandler(comm, MPI_ERRORS_RETURN); if (verbose) { printf("disconnect.\n"); fflush(stdout); } error = MPI_Comm_disconnect(&comm); check_error(error, "MPI_Comm_disconnect"); } error = MPI_Barrier(MPI_COMM_WORLD); check_error(error, "MPI_Barrier"); if (rank == 0) { printf(" No Errors\n"); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/spawn/testlist.in0000644000175000017500000000076212620254305017720 0ustar mbanckmbanck@namepub_tests@namepub 2 spawn1 1 spawn2 1 spawninfo1 1 spawnminfo1 1 spawnintra 1 spawnintra 2 spawnargv 1 spawnmanyarg 1 spawnmult2 2 spaconacc 1 spaconacc2 1 selfconacc 2 spaiccreate 2 taskmaster 1 timeLimit=600 taskmaster 2 timeLimit=600 join 2 disconnect_reconnect 3 disconnect_reconnect2 3 disconnect_reconnect3 3 multiple_ports 3 multiple_ports2 4 disconnect 3 disconnect2 3 disconnect3 3 concurrent_spawns 1 pgroup_connect_test 4 pgroup_intercomm_test 4 spawn-rootargs 10 xfail=ticket2282 mpi-testsuite-3.2+dfsg/spawn/namepub.c0000644000175000017500000000515712620254305017313 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" int main(int argc, char *argv[]) { int errs = 0; char port_name[MPI_MAX_PORT_NAME], port_name_out[MPI_MAX_PORT_NAME]; char serv_name[256]; int merr, mclass; char errmsg[MPI_MAX_ERROR_STRING]; int msglen; int rank; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); /* Note that according to the MPI standard, port_name must * have been created by MPI_Open_port. For current testing * purposes, we'll use a fake name. This test should eventually use * a valid name from Open_port */ strcpy(port_name, "otherhost:122"); strcpy(serv_name, "MyTest"); MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); if (rank == 0) { merr = MPI_Publish_name(serv_name, MPI_INFO_NULL, port_name); if (merr) { errs++; MPI_Error_string(merr, errmsg, &msglen); printf("Error in Publish_name: \"%s\"\n", errmsg); } MPI_Barrier(MPI_COMM_WORLD); MPI_Barrier(MPI_COMM_WORLD); merr = MPI_Unpublish_name(serv_name, MPI_INFO_NULL, port_name); if (merr) { errs++; MPI_Error_string(merr, errmsg, &msglen); printf("Error in Unpublish name: \"%s\"\n", errmsg); } } else { MPI_Barrier(MPI_COMM_WORLD); merr = MPI_Lookup_name(serv_name, MPI_INFO_NULL, port_name_out); if (merr) { errs++; MPI_Error_string(merr, errmsg, &msglen); printf("Error in Lookup name: \"%s\"\n", errmsg); } else { if (strcmp(port_name, port_name_out)) { errs++; printf("Lookup name returned the wrong value (%s)\n", port_name_out); } } MPI_Barrier(MPI_COMM_WORLD); } MPI_Barrier(MPI_COMM_WORLD); merr = MPI_Lookup_name(serv_name, MPI_INFO_NULL, port_name_out); if (!merr) { errs++; printf("Lookup name returned name after it was unpublished\n"); } else { /* Must be class MPI_ERR_NAME */ MPI_Error_class(merr, &mclass); if (mclass != MPI_ERR_NAME) { errs++; MPI_Error_string(merr, errmsg, &msglen); printf("Lookup name returned the wrong error class (%d), msg: \"%s\"\n", mclass, errmsg); } } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/spawn/spaiccreate.c0000644000175000017500000000607612620254305020150 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2005 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Use Spawn to create an intercomm, then create a new intercomm that includes processes not in the initial spawn intercomm"; */ /* * This test ensures that spawned processes are able to communicate with * processes that were not in the communicator from which they were spawned. */ int main(int argc, char *argv[]) { int errs = 0; int wrank, wsize; int np = 2; int errcodes[2]; MPI_Comm parentcomm, intercomm, intercomm2; int can_spawn; MTest_Init(&argc, &argv); errs += MTestSpawnPossible(&can_spawn); if (can_spawn) { MPI_Comm_rank(MPI_COMM_WORLD, &wrank); MPI_Comm_size(MPI_COMM_WORLD, &wsize); MPI_Comm_get_parent(&parentcomm); if (parentcomm == MPI_COMM_NULL) { /* Create 2 more processes, from process 0 in the original * comm world */ if (wrank == 0) { MPI_Comm_spawn((char *) "./spaiccreate", MPI_ARGV_NULL, np, MPI_INFO_NULL, 0, MPI_COMM_SELF, &intercomm, errcodes); } else { intercomm = MPI_COMM_NULL; } } else intercomm = parentcomm; /* We now have a valid intercomm. Use it to create a NEW intercomm * that includes all processes */ MPI_Intercomm_create(MPI_COMM_WORLD, 0, intercomm, 0, 123, &intercomm2); /* Have the spawned processes send to rank 1 in the comm world of the * parent */ if (parentcomm == MPI_COMM_NULL) { MPI_Send(&wrank, 1, MPI_INT, 1, wrank, intercomm2); } else { if (wrank == 1) { int i, rsize, rrank; MPI_Status status; MPI_Comm_remote_size(intercomm2, &rsize); for (i = 0; i < rsize; i++) { MPI_Recv(&rrank, 1, MPI_INT, i, i, intercomm2, &status); if (rrank != i) { errs++; printf("Received %d from %d; expected %d\n", rrank, i, i); } } } } /* printf("%sAbout to barrier on intercomm2\n", * (parentcomm == MPI_COMM_NULL) ? "" : ""); * fflush(stdout); */ MPI_Barrier(intercomm2); /* It isn't necessary to free the intercomms, but it should not hurt */ if (intercomm != MPI_COMM_NULL) MPI_Comm_free(&intercomm); MPI_Comm_free(&intercomm2); /* Note that the MTest_Finalize get errs only over COMM_WORLD */ /* Note also that both the parent and child will generate "No Errors" * if both call MTest_Finalize */ if (parentcomm == MPI_COMM_NULL) { MTest_Finalize(errs); } } else { MTest_Finalize(errs); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/spawn/spawnmult2.c0000644000175000017500000001004412620254305017767 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitest.h" #include #include /* * This tests spawn_mult by using the same executable and no command-line * options. The attribute MPI_APPNUM is used to determine which * executable is running. */ int main(int argc, char *argv[]) { MPI_Comm parentcomm, intercomm; int i, size, rsize, rank; int err, errs = 0; MPI_Status status; int flag; static int np[2] = { 1, 1 }; int *appnum_ptr; int can_spawn; MTest_Init(&argc, &argv); MTestSpawnPossible(&can_spawn); if (can_spawn) { MPI_Comm_get_parent(&parentcomm); if (parentcomm == MPI_COMM_NULL) { /* Create 2 more processes */ static char *cmds[2] = { (char *) "./spawnmult2", (char *) "./spawnmult2" }; static MPI_Info infos[2] = { MPI_INFO_NULL, MPI_INFO_NULL }; int errcodes[2]; MPI_Comm_spawn_multiple(2, cmds, MPI_ARGVS_NULL, np, infos, 0, MPI_COMM_WORLD, &intercomm, errcodes); } else { intercomm = parentcomm; } /* We now have a valid intercomm */ MPI_Comm_remote_size(intercomm, &rsize); MPI_Comm_size(intercomm, &size); MPI_Comm_rank(intercomm, &rank); if (parentcomm == MPI_COMM_NULL) { /* This is the master process */ if (rsize != np[0] + np[1]) { errs++; printf("Did not create %d processes (got %d)\n", np[0] + np[1], rsize); } if (rank == 0) { /* Tell each child process what rank we think they are */ for (i = 0; i < rsize; i++) { MPI_Send(&i, 1, MPI_INT, i, 0, intercomm); } /* We could use intercomm reduce to get the errors from the * children, but we'll use a simpler loop to make sure that * we get valid data */ for (i = 0; i < rsize; i++) { MPI_Recv(&err, 1, MPI_INT, i, 1, intercomm, MPI_STATUS_IGNORE); errs += err; } } } else { /* Child process */ /* FIXME: This assumes that stdout is handled for the children * (the error count will still be reported to the parent) */ if (size != 2) { int wsize; errs++; printf("(Child) Did not create 2 processes (got %d)\n", size); MPI_Comm_size(MPI_COMM_WORLD, &wsize); if (wsize == 2) { errs++; printf("(Child) world size is 2 but local intercomm size is not 2\n"); } } MPI_Recv(&i, 1, MPI_INT, 0, 0, intercomm, &status); if (i != rank) { errs++; printf("Unexpected rank on child %d (%d)\n", rank, i); } /* Check for correct APPNUM */ MPI_Comm_get_attr(MPI_COMM_WORLD, MPI_APPNUM, &appnum_ptr, &flag); /* My appnum should be my rank in comm world */ if (flag) { if (*appnum_ptr != rank) { errs++; printf("appnum is %d but should be %d\n", *appnum_ptr, rank); } } else { errs++; printf("appnum was not set\n"); } /* Send the errs back to the master process */ MPI_Ssend(&errs, 1, MPI_INT, 0, 1, intercomm); } /* It isn't necessary to free the intercomm, but it should not hurt */ MPI_Comm_free(&intercomm); /* Note that the MTest_Finalize get errs only over COMM_WORLD */ if (parentcomm == MPI_COMM_NULL) { MTest_Finalize(errs); } } else { MTest_Finalize(errs); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/spawn/spaconacc2.c0000644000175000017500000001723612620254305017701 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include #include "mpitest.h" /* Note: In this program, the return codes from the MPI routines are checked. Since the error handlers for the communicators are not set to MPI_ERRORS_RETURN, any error should cause an abort rather than a return. The test on the return value is an extra safety check; note that a return value of other than MPI_SUCCESS in these routines indicates an error in the error handling by the MPI implementation */ #define IF_VERBOSE(a) if (verbose) { printf a ; fflush(stdout); } void check_error(int error, const char *fcname); void check_error(int error, const char *fcname) { char err_string[MPI_MAX_ERROR_STRING] = ""; int length; if (error != MPI_SUCCESS) { MPI_Error_string(error, err_string, &length); printf("%s failed: %s\n", fcname, err_string); fflush(stdout); MPI_Abort(MPI_COMM_WORLD, error); } } int main(int argc, char *argv[]) { int error; int rank, size, i; char *argv1[2] = { (char *) "connector", NULL }; char *argv2[2] = { (char *) "acceptor", NULL }; MPI_Comm comm_connector, comm_acceptor, comm_parent, comm; char port[MPI_MAX_PORT_NAME]; MPI_Status status; MPI_Info spawn_path = MPI_INFO_NULL; int verbose = 0; int can_spawn, errs = 0; if (getenv("MPITEST_VERBOSE")) { verbose = 1; } IF_VERBOSE(("init.\n")); error = MPI_Init(&argc, &argv); check_error(error, "MPI_Init"); errs += MTestSpawnPossible(&can_spawn); if (!can_spawn) { if (errs) printf(" Found %d errors\n", errs); else printf(" No Errors\n"); fflush(stdout); } else { IF_VERBOSE(("size.\n")); error = MPI_Comm_size(MPI_COMM_WORLD, &size); check_error(error, "MPI_Comm_size"); IF_VERBOSE(("rank.\n")); error = MPI_Comm_rank(MPI_COMM_WORLD, &rank); check_error(error, "MPI_Comm_rank"); if (argc == 1) { /* Make sure that the current directory is in the path. * Not all implementations may honor or understand this, but * it is highly recommended as it gives users a clean way * to specify the location of the executable without * specifying a particular directory format (e.g., this * should work with both Windows and Unix implementations) */ MPI_Info_create(&spawn_path); MPI_Info_set(spawn_path, (char *) "path", (char *) "."); IF_VERBOSE(("spawn connector.\n")); error = MPI_Comm_spawn((char *) "spaconacc2", argv1, 1, spawn_path, 0, MPI_COMM_SELF, &comm_connector, MPI_ERRCODES_IGNORE); check_error(error, "MPI_Comm_spawn"); IF_VERBOSE(("spawn acceptor.\n")); error = MPI_Comm_spawn((char *) "spaconacc2", argv2, 1, spawn_path, 0, MPI_COMM_SELF, &comm_acceptor, MPI_ERRCODES_IGNORE); check_error(error, "MPI_Comm_spawn"); MPI_Info_free(&spawn_path); IF_VERBOSE(("recv port.\n")); error = MPI_Recv(port, MPI_MAX_PORT_NAME, MPI_CHAR, 0, 0, comm_acceptor, &status); check_error(error, "MPI_Recv"); IF_VERBOSE(("send port.\n")); error = MPI_Send(port, MPI_MAX_PORT_NAME, MPI_CHAR, 0, 0, comm_connector); check_error(error, "MPI_Send"); IF_VERBOSE(("barrier acceptor.\n")); error = MPI_Barrier(comm_acceptor); check_error(error, "MPI_Barrier"); IF_VERBOSE(("barrier connector.\n")); error = MPI_Barrier(comm_connector); check_error(error, "MPI_Barrier"); error = MPI_Comm_free(&comm_acceptor); check_error(error, "MPI_Comm_free"); error = MPI_Comm_free(&comm_connector); check_error(error, "MPI_Comm_free"); printf(" No Errors\n"); } else if ((argc == 2) && (strcmp(argv[1], "acceptor") == 0)) { IF_VERBOSE(("get_parent.\n")); error = MPI_Comm_get_parent(&comm_parent); check_error(error, "MPI_Comm_get_parent"); if (comm_parent == MPI_COMM_NULL) { printf("acceptor's parent is NULL.\n"); fflush(stdout); MPI_Abort(MPI_COMM_WORLD, -1); } IF_VERBOSE(("open_port.\n")); error = MPI_Open_port(MPI_INFO_NULL, port); check_error(error, "MPI_Open_port"); IF_VERBOSE(("0: opened port: <%s>\n", port)); IF_VERBOSE(("send.\n")); error = MPI_Send(port, MPI_MAX_PORT_NAME, MPI_CHAR, 0, 0, comm_parent); check_error(error, "MPI_Send"); IF_VERBOSE(("accept.\n")); error = MPI_Comm_accept(port, MPI_INFO_NULL, 0, MPI_COMM_SELF, &comm); check_error(error, "MPI_Comm_accept"); IF_VERBOSE(("close_port.\n")); error = MPI_Close_port(port); check_error(error, "MPI_Close_port"); /* Send some data before disconnecting */ IF_VERBOSE(("sending int.\n")); i = 123; error = MPI_Send(&i, 1, MPI_INT, 0, 0, comm); check_error(error, "MPI_Send"); IF_VERBOSE(("disconnect.\n")); error = MPI_Comm_disconnect(&comm); check_error(error, "MPI_Comm_disconnect"); IF_VERBOSE(("barrier.\n")); error = MPI_Barrier(comm_parent); check_error(error, "MPI_Barrier"); MPI_Comm_free(&comm_parent); } else if ((argc == 2) && (strcmp(argv[1], "connector") == 0)) { IF_VERBOSE(("get_parent.\n")); error = MPI_Comm_get_parent(&comm_parent); check_error(error, "MPI_Comm_get_parent"); if (comm_parent == MPI_COMM_NULL) { printf("acceptor's parent is NULL.\n"); fflush(stdout); MPI_Abort(MPI_COMM_WORLD, -1); } IF_VERBOSE(("recv.\n")); error = MPI_Recv(port, MPI_MAX_PORT_NAME, MPI_CHAR, 0, 0, comm_parent, &status); check_error(error, "MPI_Recv"); IF_VERBOSE(("1: received port: <%s>\n", port)); IF_VERBOSE(("connect.\n")); error = MPI_Comm_connect(port, MPI_INFO_NULL, 0, MPI_COMM_SELF, &comm); check_error(error, "MPI_Comm_connect"); /* Receive some data before disconnecting */ IF_VERBOSE(("receiving int\n")); i = -1; error = MPI_Recv(&i, 1, MPI_INT, 0, 0, comm, &status); check_error(error, "MPI_Recv"); if (i != 123) { printf("expected 123 but received %d\n", i); fflush(stdout); MPI_Abort(MPI_COMM_WORLD, 1); } IF_VERBOSE(("disconnect.\n")); error = MPI_Comm_disconnect(&comm); check_error(error, "MPI_Comm_disconnect"); IF_VERBOSE(("barrier.\n")); error = MPI_Barrier(comm_parent); check_error(error, "MPI_Barrier"); MPI_Comm_free(&comm_parent); } else { printf("invalid command line.\n"); fflush(stdout); { int ii; for (ii = 0; ii < argc; ii++) { printf("argv[%d] = <%s>\n", ii, argv[ii]); } } fflush(stdout); MPI_Abort(MPI_COMM_WORLD, -2); } } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/spawn/join.c0000644000175000017500000001141712620254305016617 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitest.h" #include #ifdef HAVE_WINDOWS_H #include #include /* socklen_t */ #else #include #include #include #include #include #include #endif #include /* static char MTEST_Descrip[] = "A simple test of Comm_join"; */ #define COUNT 1024 int main(int argc, char *argv[]) { int sendbuf[COUNT], recvbuf[COUNT], i; int err = 0, rank, nprocs, errs = 0; MPI_Comm intercomm; int listenfd, connfd, port, namelen; struct sockaddr_in cliaddr, servaddr; struct hostent *h; char hostname[MPI_MAX_PROCESSOR_NAME]; socklen_t len, clilen; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (nprocs != 2) { printf("Run this program with 2 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } if (rank == 1) { /* server */ listenfd = socket(AF_INET, SOCK_STREAM, 0); if (listenfd < 0) { printf("server cannot open socket\n"); MPI_Abort(MPI_COMM_WORLD, 1); } memset(&servaddr, 0, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = 0; err = bind(listenfd, (struct sockaddr *) &servaddr, sizeof(servaddr)); if (err < 0) { errs++; printf("bind failed\n"); MPI_Abort(MPI_COMM_WORLD, 1); } len = sizeof(servaddr); err = getsockname(listenfd, (struct sockaddr *) &servaddr, &len); if (err < 0) { errs++; printf("getsockname failed\n"); MPI_Abort(MPI_COMM_WORLD, 1); } port = ntohs(servaddr.sin_port); MPI_Get_processor_name(hostname, &namelen); err = listen(listenfd, 5); if (err < 0) { errs++; printf("listen failed\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Send(hostname, namelen + 1, MPI_CHAR, 0, 0, MPI_COMM_WORLD); MPI_Send(&port, 1, MPI_INT, 0, 1, MPI_COMM_WORLD); clilen = sizeof(cliaddr); connfd = accept(listenfd, (struct sockaddr *) &cliaddr, &clilen); if (connfd < 0) { printf("accept failed\n"); MPI_Abort(MPI_COMM_WORLD, 1); } } else { /* client */ MPI_Recv(hostname, MPI_MAX_PROCESSOR_NAME, MPI_CHAR, 1, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); MPI_Recv(&port, 1, MPI_INT, 1, 1, MPI_COMM_WORLD, MPI_STATUS_IGNORE); h = gethostbyname(hostname); if (h == NULL) { printf("gethostbyname failed\n"); MPI_Abort(MPI_COMM_WORLD, 1); } servaddr.sin_family = h->h_addrtype; memcpy((char *) &servaddr.sin_addr.s_addr, h->h_addr_list[0], h->h_length); servaddr.sin_port = htons(port); /* create socket */ connfd = socket(AF_INET, SOCK_STREAM, 0); if (connfd < 0) { printf("client cannot open socket\n"); MPI_Abort(MPI_COMM_WORLD, 1); } /* connect to server */ err = connect(connfd, (struct sockaddr *) &servaddr, sizeof(servaddr)); if (err < 0) { errs++; printf("client cannot connect\n"); MPI_Abort(MPI_COMM_WORLD, 1); } } MPI_Barrier(MPI_COMM_WORLD); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); err = MPI_Comm_join(connfd, &intercomm); if (err) { errs++; printf("Error in MPI_Comm_join %d\n", err); } /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(intercomm, MPI_ERRORS_RETURN); for (i = 0; i < COUNT; i++) { recvbuf[i] = -1; sendbuf[i] = i + COUNT * rank; } err = MPI_Sendrecv(sendbuf, COUNT, MPI_INT, 0, 0, recvbuf, COUNT, MPI_INT, 0, 0, intercomm, MPI_STATUS_IGNORE); if (err != MPI_SUCCESS) { errs++; printf("Error in MPI_Sendrecv on new communicator\n"); } for (i = 0; i < COUNT; i++) { if (recvbuf[i] != ((rank + 1) % 2) * COUNT + i) errs++; } MPI_Barrier(MPI_COMM_WORLD); err = MPI_Comm_disconnect(&intercomm); if (err != MPI_SUCCESS) { errs++; printf("Error in MPI_Comm_disconnect\n"); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/spawn/pgroup_connect_test.c0000644000175000017500000000753712620254305021754 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /** PGROUP Creation (Connect/Accept Method) * James Dinan * May, 2011 * * In this test, processes create an intracommunicator and creation is * collective only on the members of the new communicator, not on the parent * communicator. This is accomplished by building up and merging * intercommunicators using Connect/Accept to merge with a master/controller * process. */ #include #include #include #include const int verbose = 0; void PGroup_create(int count, int members[], MPI_Comm * group); void PGroup_create(int count, int members[], MPI_Comm * group) { int i, me, nproc, is_member; char *port; MPI_Comm pgroup; MPI_Comm_rank(MPI_COMM_WORLD, &me); MPI_Comm_size(MPI_COMM_WORLD, &nproc); if (count == 0) { *group = MPI_COMM_NULL; return; } else if (count == 1 && members[0] == me) { *group = MPI_COMM_SELF; return; } for (i = 0, is_member = 0; i < count; i++) { if (members[i] == me) { is_member = 1; break; } } if (!is_member) { *group = MPI_COMM_NULL; return; } port = malloc(MPI_MAX_PORT_NAME); /* NOTE: Assume members list is identical and sorted on all processes */ /* I am the leader */ if (me == members[0]) { MPI_Comm pgroup_new; pgroup = MPI_COMM_SELF; MPI_Open_port(MPI_INFO_NULL, port); for (i = 1; i < count; i++) { MPI_Comm pgroup_old = pgroup; MPI_Send(port, MPI_MAX_PORT_NAME, MPI_CHAR, members[i], 0, MPI_COMM_WORLD); MPI_Comm_accept(port, MPI_INFO_NULL, 0, pgroup, &pgroup_new); MPI_Intercomm_merge(pgroup_new, 0 /* LOW */ , &pgroup); MPI_Comm_free(&pgroup_new); if (pgroup_old != MPI_COMM_SELF) MPI_Comm_free(&pgroup_old); } MPI_Close_port(port); } /* I am not the leader */ else { int merged = 0; MPI_Comm pgroup_new; for (i = 0; i < count; i++) { if (members[i] == me) { MPI_Recv(port, MPI_MAX_PORT_NAME, MPI_CHAR, members[0], 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); MPI_Comm_connect(port, MPI_INFO_NULL, 0, MPI_COMM_SELF, &pgroup_new); MPI_Intercomm_merge(pgroup_new, 1 /* HIGH */ , &pgroup); MPI_Comm_free(&pgroup_new); merged = 1; } else if (merged) { MPI_Comm pgroup_old = pgroup; MPI_Comm_connect(port, MPI_INFO_NULL, 0, pgroup, &pgroup_new); MPI_Intercomm_merge(pgroup_new, 0 /* HIGH */ , &pgroup); MPI_Comm_free(&pgroup_new); MPI_Comm_free(&pgroup_old); } /* else => !merged */ } } free(port); *group = pgroup; } int main(int argc, char **argv) { int me, nproc, i; int gsize, *glist; MPI_Comm group; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &me); MPI_Comm_size(MPI_COMM_WORLD, &nproc); gsize = nproc / 2 + (nproc % 2); glist = malloc(gsize * sizeof(int)); for (i = 0; i < nproc; i += 2) glist[i / 2] = i; if (me % 2 == 0) { int gme, gnproc; PGroup_create(gsize, glist, &group); MPI_Barrier(group); MPI_Comm_rank(group, &gme); MPI_Comm_size(group, &gnproc); if (verbose) printf("[%d] Group rank = %d, size = %d\n", me, gme, gnproc); if (group != MPI_COMM_SELF) MPI_Comm_free(&group); } free(glist); MPI_Finalize(); if (me == 0) printf(" No Errors\n"); return 0; } mpi-testsuite-3.2+dfsg/spawn/spaconacc.c0000644000175000017500000001655112620254305017616 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include #include "mpitest.h" #define IF_VERBOSE(a) if (verbose) { printf a ; fflush(stdout); } void check_error(int, const char *); void check_error(int error, const char *fcname) { char err_string[MPI_MAX_ERROR_STRING] = ""; int length; if (error != MPI_SUCCESS) { MPI_Error_string(error, err_string, &length); printf("%s failed: %s\n", fcname, err_string); fflush(stdout); MPI_Abort(MPI_COMM_WORLD, error); } } int main(int argc, char *argv[]) { int error; int rank, size; char *argv1[2] = { (char *) "connector", NULL }; char *argv2[2] = { (char *) "acceptor", NULL }; MPI_Comm comm_connector, comm_acceptor, comm_parent, comm; char port[MPI_MAX_PORT_NAME]; MPI_Status status; MPI_Info spawn_path = MPI_INFO_NULL; int verbose = 0; int can_spawn, errs = 0; if (getenv("MPITEST_VERBOSE")) { verbose = 1; } IF_VERBOSE(("init.\n")); error = MPI_Init(&argc, &argv); check_error(error, "MPI_Init"); errs += MTestSpawnPossible(&can_spawn); if (!can_spawn) { if (errs) printf(" Found %d errors\n", errs); else printf(" No Errors\n"); fflush(stdout); } else { /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); MPI_Comm_set_errhandler(MPI_COMM_SELF, MPI_ERRORS_RETURN); IF_VERBOSE(("size.\n")); error = MPI_Comm_size(MPI_COMM_WORLD, &size); check_error(error, "MPI_Comm_size"); IF_VERBOSE(("rank.\n")); error = MPI_Comm_rank(MPI_COMM_WORLD, &rank); check_error(error, "MPI_Comm_rank"); if (argc == 1) { /* Make sure that the current directory is in the path. * Not all implementations may honor or understand this, but * it is highly recommended as it gives users a clean way * to specify the location of the executable without * specifying a particular directory format (e.g., this * should work with both Windows and Unix implementations) */ error = MPI_Info_create(&spawn_path); check_error(error, "MPI_Info_create"); error = MPI_Info_set(spawn_path, (char *) "path", (char *) "."); check_error(error, "MPI_Info_set"); IF_VERBOSE(("spawn connector.\n")); error = MPI_Comm_spawn((char *) "spaconacc", argv1, 1, spawn_path, 0, MPI_COMM_SELF, &comm_connector, MPI_ERRCODES_IGNORE); check_error(error, "MPI_Comm_spawn"); IF_VERBOSE(("spawn acceptor.\n")); error = MPI_Comm_spawn((char *) "spaconacc", argv2, 1, spawn_path, 0, MPI_COMM_SELF, &comm_acceptor, MPI_ERRCODES_IGNORE); check_error(error, "MPI_Comm_spawn"); error = MPI_Info_free(&spawn_path); check_error(error, "MPI_Info_free"); MPI_Comm_set_errhandler(comm_connector, MPI_ERRORS_RETURN); MPI_Comm_set_errhandler(comm_acceptor, MPI_ERRORS_RETURN); IF_VERBOSE(("recv port.\n")); error = MPI_Recv(port, MPI_MAX_PORT_NAME, MPI_CHAR, 0, 0, comm_acceptor, &status); check_error(error, "MPI_Recv"); IF_VERBOSE(("send port.\n")); error = MPI_Send(port, MPI_MAX_PORT_NAME, MPI_CHAR, 0, 0, comm_connector); check_error(error, "MPI_Send"); IF_VERBOSE(("barrier acceptor.\n")); error = MPI_Barrier(comm_acceptor); check_error(error, "MPI_Barrier"); IF_VERBOSE(("barrier connector.\n")); error = MPI_Barrier(comm_connector); check_error(error, "MPI_Barrier"); error = MPI_Comm_free(&comm_acceptor); check_error(error, "MPI_Comm_free"); error = MPI_Comm_free(&comm_connector); check_error(error, "MPI_Comm_free"); printf(" No Errors\n"); } else if ((argc == 2) && (strcmp(argv[1], "acceptor") == 0)) { IF_VERBOSE(("get_parent.\n")); error = MPI_Comm_get_parent(&comm_parent); check_error(error, "MPI_Comm_get_parent"); if (comm_parent == MPI_COMM_NULL) { printf("acceptor's parent is NULL.\n"); fflush(stdout); MPI_Abort(MPI_COMM_WORLD, -1); } IF_VERBOSE(("open_port.\n")); error = MPI_Open_port(MPI_INFO_NULL, port); check_error(error, "MPI_Open_port"); MPI_Comm_set_errhandler(comm_parent, MPI_ERRORS_RETURN); IF_VERBOSE(("0: opened port: <%s>\n", port)); IF_VERBOSE(("send.\n")); error = MPI_Send(port, MPI_MAX_PORT_NAME, MPI_CHAR, 0, 0, comm_parent); check_error(error, "MPI_Send"); IF_VERBOSE(("accept.\n")); error = MPI_Comm_accept(port, MPI_INFO_NULL, 0, MPI_COMM_SELF, &comm); check_error(error, "MPI_Comm_accept"); IF_VERBOSE(("close_port.\n")); error = MPI_Close_port(port); check_error(error, "MPI_Close_port"); IF_VERBOSE(("disconnect.\n")); error = MPI_Comm_disconnect(&comm); check_error(error, "MPI_Comm_disconnect"); IF_VERBOSE(("barrier.\n")); error = MPI_Barrier(comm_parent); check_error(error, "MPI_Barrier"); MPI_Comm_free(&comm_parent); } else if ((argc == 2) && (strcmp(argv[1], "connector") == 0)) { IF_VERBOSE(("get_parent.\n")); error = MPI_Comm_get_parent(&comm_parent); check_error(error, "MPI_Comm_get_parent"); if (comm_parent == MPI_COMM_NULL) { printf("acceptor's parent is NULL.\n"); fflush(stdout); MPI_Abort(MPI_COMM_WORLD, -1); } MPI_Comm_set_errhandler(comm_parent, MPI_ERRORS_RETURN); IF_VERBOSE(("recv.\n")); error = MPI_Recv(port, MPI_MAX_PORT_NAME, MPI_CHAR, 0, 0, comm_parent, &status); check_error(error, "MPI_Recv"); IF_VERBOSE(("1: received port: <%s>\n", port)); IF_VERBOSE(("connect.\n")); error = MPI_Comm_connect(port, MPI_INFO_NULL, 0, MPI_COMM_SELF, &comm); check_error(error, "MPI_Comm_connect"); MPI_Comm_set_errhandler(comm, MPI_ERRORS_RETURN); IF_VERBOSE(("disconnect.\n")); error = MPI_Comm_disconnect(&comm); check_error(error, "MPI_Comm_disconnect"); IF_VERBOSE(("barrier.\n")); error = MPI_Barrier(comm_parent); check_error(error, "MPI_Barrier"); MPI_Comm_free(&comm_parent); } else { printf("invalid command line.\n"); fflush(stdout); { int i; for (i = 0; i < argc; i++) { printf("argv[%d] = <%s>\n", i, argv[i]); } } fflush(stdout); MPI_Abort(MPI_COMM_WORLD, -2); } } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/spawn/multiple_ports.c0000644000175000017500000001061112620254305020735 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include #include "mpitest.h" #define IF_VERBOSE(a) if (verbose) { printf a ; fflush(stdout); } /* This test checks to make sure that two MPI_Comm_connects to two different MPI * ports match their corresponding MPI_Comm_accepts. The root process opens two * MPI ports and sends the first port to process 1 and the second to process 2. * Then the root process accepts a connection from the second port followed by * the first port. Processes 1 and 2 both connect back to the root but process * 2 first sleeps for three seconds to give process 1 time to attempt to connect * to the root. The root should wait until process 2 connects before accepting * the connection from process 1. */ int main(int argc, char *argv[]) { int num_errors = 0, total_num_errors = 0; int rank, size; char port1[MPI_MAX_PORT_NAME]; char port2[MPI_MAX_PORT_NAME]; MPI_Status status; MPI_Comm comm1, comm2; int verbose = 0; int data = 0; if (getenv("MPITEST_VERBOSE")) { verbose = 1; } MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (size < 3) { printf("Three processes needed to run this test.\n"); MPI_Finalize(); return 0; } if (rank == 0) { IF_VERBOSE(("0: opening ports.\n")); MPI_Open_port(MPI_INFO_NULL, port1); MPI_Open_port(MPI_INFO_NULL, port2); IF_VERBOSE(("0: opened port1: <%s>\n", port1)); IF_VERBOSE(("0: opened port2: <%s>\n", port2)); IF_VERBOSE(("0: sending ports.\n")); MPI_Send(port1, MPI_MAX_PORT_NAME, MPI_CHAR, 1, 0, MPI_COMM_WORLD); MPI_Send(port2, MPI_MAX_PORT_NAME, MPI_CHAR, 2, 0, MPI_COMM_WORLD); IF_VERBOSE(("0: accepting port2.\n")); MPI_Comm_accept(port2, MPI_INFO_NULL, 0, MPI_COMM_SELF, &comm2); IF_VERBOSE(("0: accepting port1.\n")); MPI_Comm_accept(port1, MPI_INFO_NULL, 0, MPI_COMM_SELF, &comm1); IF_VERBOSE(("0: closing ports.\n")); MPI_Close_port(port1); MPI_Close_port(port2); IF_VERBOSE(("0: sending 1 to process 1.\n")); data = 1; MPI_Send(&data, 1, MPI_INT, 0, 0, comm1); IF_VERBOSE(("0: sending 2 to process 2.\n")); data = 2; MPI_Send(&data, 1, MPI_INT, 0, 0, comm2); IF_VERBOSE(("0: disconnecting.\n")); MPI_Comm_disconnect(&comm1); MPI_Comm_disconnect(&comm2); } else if (rank == 1) { IF_VERBOSE(("1: receiving port.\n")); MPI_Recv(port1, MPI_MAX_PORT_NAME, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &status); IF_VERBOSE(("1: received port1: <%s>\n", port1)); IF_VERBOSE(("1: connecting.\n")); MPI_Comm_connect(port1, MPI_INFO_NULL, 0, MPI_COMM_SELF, &comm1); MPI_Recv(&data, 1, MPI_INT, 0, 0, comm1, &status); if (data != 1) { printf("Received %d from root when expecting 1\n", data); fflush(stdout); num_errors++; } IF_VERBOSE(("1: disconnecting.\n")); MPI_Comm_disconnect(&comm1); } else if (rank == 2) { IF_VERBOSE(("2: receiving port.\n")); MPI_Recv(port2, MPI_MAX_PORT_NAME, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &status); IF_VERBOSE(("2: received port2: <%s>\n", port2)); /* make sure process 1 has time to do the connect before this process * attempts to connect */ MTestSleep(3); IF_VERBOSE(("2: connecting.\n")); MPI_Comm_connect(port2, MPI_INFO_NULL, 0, MPI_COMM_SELF, &comm2); MPI_Recv(&data, 1, MPI_INT, 0, 0, comm2, &status); if (data != 2) { printf("Received %d from root when expecting 2\n", data); fflush(stdout); num_errors++; } IF_VERBOSE(("2: disconnecting.\n")); MPI_Comm_disconnect(&comm2); } MPI_Barrier(MPI_COMM_WORLD); MPI_Reduce(&num_errors, &total_num_errors, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (rank == 0) { if (total_num_errors) { printf(" Found %d errors\n", total_num_errors); } else { printf(" No Errors\n"); } fflush(stdout); } MPI_Finalize(); return total_num_errors; } mpi-testsuite-3.2+dfsg/spawn/spaiccreate2.c0000644000175000017500000000543112620254305020224 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2005 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Use Spawn to create an intercomm, then create a new intercomm between processes from mixed worlds."; */ /* * This test is a regression test for ticket#114 based on a bug reported by Brad * Penoff. The specific bug only occurred when MPI_Intercomm_create was called * with a local communicator argument that contained one or more processes from * a different MPI_COMM_WORLD. */ int main(int argc, char *argv[]) { int errs = 0; int wrank, wsize, mrank, msize, inter_rank; int np = 2; int errcodes[2]; int rrank = -1; MPI_Comm parentcomm, intercomm, intercomm2, even_odd_comm, merged_world; int can_spawn; MTest_Init(&argc, &argv); errs += MTestSpawnPossible(&can_spawn); if (can_spawn) { MPI_Comm_rank(MPI_COMM_WORLD, &wrank); MPI_Comm_size(MPI_COMM_WORLD, &wsize); if (wsize != 2) { printf("world size != 2, this test will not work correctly\n"); errs++; } MPI_Comm_get_parent(&parentcomm); if (parentcomm == MPI_COMM_NULL) { MPI_Comm_spawn((char *) "./spaiccreate2", MPI_ARGV_NULL, np, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &intercomm, errcodes); } else { intercomm = parentcomm; } MPI_Intercomm_merge(intercomm, (parentcomm == MPI_COMM_NULL ? 0 : 1), &merged_world); MPI_Comm_rank(merged_world, &mrank); MPI_Comm_size(merged_world, &msize); MPI_Comm_split(merged_world, mrank % 2, wrank, &even_odd_comm); MPI_Intercomm_create(even_odd_comm, 0, merged_world, (mrank + 1) % 2, 123, &intercomm2); MPI_Comm_rank(intercomm2, &inter_rank); /* odds receive from evens */ MPI_Sendrecv(&inter_rank, 1, MPI_INT, inter_rank, 456, &rrank, 1, MPI_INT, inter_rank, 456, intercomm2, MPI_STATUS_IGNORE); if (rrank != inter_rank) { printf("Received %d from %d; expected %d\n", rrank, inter_rank, inter_rank); errs++; } MPI_Barrier(intercomm2); MPI_Comm_free(&intercomm); MPI_Comm_free(&intercomm2); MPI_Comm_free(&merged_world); MPI_Comm_free(&even_odd_comm); /* Note that the MTest_Finalize get errs only over COMM_WORLD */ /* Note also that both the parent and child will generate "No Errors" * if both call MTest_Finalize */ if (parentcomm == MPI_COMM_NULL) { MTest_Finalize(errs); } } else { MTest_Finalize(errs); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/spawn/spawnargv.c0000644000175000017500000000767212620254305017700 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include "mpitestconf.h" #ifdef HAVE_STRING_H #include #endif /* static char MTEST_Descrip[] = "A simple test of Comm_spawn, with complex arguments"; */ int main(int argc, char *argv[]) { int errs = 0, err; int rank, size, rsize, i; int np = 2; int errcodes[2]; MPI_Comm parentcomm, intercomm; MPI_Status status; char *inargv[] = { (char *) "a", (char *) "b=c", (char *) "d e", (char *) "-pf", (char *) " Ss", 0 }; char *outargv[] = { (char *) "a", (char *) "b=c", (char *) "d e", (char *) "-pf", (char *) " Ss", 0 }; int can_spawn; MTest_Init(&argc, &argv); errs += MTestSpawnPossible(&can_spawn); if (can_spawn) { MPI_Comm_get_parent(&parentcomm); if (parentcomm == MPI_COMM_NULL) { /* Create 2 more processes */ /* ./ is unix specific . * The more generic approach would be to specify "spawnargv" as the * executable and pass an info with ("path", ".") */ MPI_Comm_spawn((char *) "./spawnargv", inargv, np, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &intercomm, errcodes); } else intercomm = parentcomm; /* We now have a valid intercomm */ MPI_Comm_remote_size(intercomm, &rsize); MPI_Comm_size(intercomm, &size); MPI_Comm_rank(intercomm, &rank); if (parentcomm == MPI_COMM_NULL) { /* Master */ if (rsize != np) { errs++; printf("Did not create %d processes (got %d)\n", np, rsize); } for (i = 0; i < rsize; i++) { MPI_Send(&i, 1, MPI_INT, i, 0, intercomm); } /* We could use intercomm reduce to get the errors from the * children, but we'll use a simpler loop to make sure that * we get valid data */ for (i = 0; i < rsize; i++) { MPI_Recv(&err, 1, MPI_INT, i, 1, intercomm, MPI_STATUS_IGNORE); errs += err; } } else { /* Child */ /* FIXME: This assumes that stdout is handled for the children * (the error count will still be reported to the parent) */ if (size != np) { errs++; printf("(Child) Did not create %d processes (got %d)\n", np, size); } MPI_Recv(&i, 1, MPI_INT, 0, 0, intercomm, &status); if (i != rank) { errs++; printf("Unexpected rank on child %d (%d)\n", rank, i); } /* Check the command line */ for (i = 1; i < argc; i++) { if (!outargv[i - 1]) { errs++; printf("Wrong number of arguments (%d)\n", argc); break; } if (strcmp(argv[i], outargv[i - 1]) != 0) { errs++; printf("Found arg %s but expected %s\n", argv[i], outargv[i - 1]); } } if (outargv[i - 1]) { /* We had too few args in the spawned command */ errs++; printf("Too few arguments to spawned command\n"); } /* Send the errs back to the master process */ MPI_Ssend(&errs, 1, MPI_INT, 0, 1, intercomm); } /* It isn't necessary to free the intercomm, but it should not hurt */ MPI_Comm_free(&intercomm); /* Note that the MTest_Finalize get errs only over COMM_WORLD */ if (parentcomm == MPI_COMM_NULL) { MTest_Finalize(errs); } } else { MTest_Finalize(errs); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/spawn/multiple_ports2.c0000644000175000017500000001327212620254305021025 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include #include "mpitest.h" #define IF_VERBOSE(a) if (verbose) { printf a ; fflush(stdout); } /* This test checks to make sure that two MPI_Comm_connects to two different * MPI ports * match their corresponding MPI_Comm_accepts. The root process opens two * MPI ports and * sends the first port to process 1 and the second to process 2. Then the * root process * accepts a connection from the second port followed by the first port. ' * Processes 1 and * 2 both connect back to the root but process 2 first sleeps for three * seconds to give * process 1 time to attempt to connect to the root. The root should wait * until * process 2 connects before accepting the connection from process 1. */ int main(int argc, char *argv[]) { int num_errors = 0, total_num_errors = 0; int rank, size; char port1[MPI_MAX_PORT_NAME]; char port2[MPI_MAX_PORT_NAME]; char port3[MPI_MAX_PORT_NAME]; MPI_Status status; MPI_Comm comm1, comm2, comm3; int verbose = 0; int data = 0; if (getenv("MPITEST_VERBOSE")) { verbose = 1; } MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (size < 4) { printf("Four processes needed to run this test.\n"); MPI_Finalize(); return 0; } if (rank == 0) { IF_VERBOSE(("0: opening ports.\n")); MPI_Open_port(MPI_INFO_NULL, port1); MPI_Open_port(MPI_INFO_NULL, port2); MPI_Open_port(MPI_INFO_NULL, port3); IF_VERBOSE(("0: opened port1: <%s>\n", port1)); IF_VERBOSE(("0: opened port2: <%s>\n", port2)); IF_VERBOSE(("0: opened port3: <%s>\n", port3)); IF_VERBOSE(("0: sending ports.\n")); MPI_Send(port1, MPI_MAX_PORT_NAME, MPI_CHAR, 1, 0, MPI_COMM_WORLD); MPI_Send(port2, MPI_MAX_PORT_NAME, MPI_CHAR, 2, 0, MPI_COMM_WORLD); MPI_Send(port3, MPI_MAX_PORT_NAME, MPI_CHAR, 3, 0, MPI_COMM_WORLD); IF_VERBOSE(("0: accepting port3.\n")); MPI_Comm_accept(port3, MPI_INFO_NULL, 0, MPI_COMM_SELF, &comm3); IF_VERBOSE(("0: accepting port2.\n")); MPI_Comm_accept(port2, MPI_INFO_NULL, 0, MPI_COMM_SELF, &comm2); IF_VERBOSE(("0: accepting port1.\n")); MPI_Comm_accept(port1, MPI_INFO_NULL, 0, MPI_COMM_SELF, &comm1); IF_VERBOSE(("0: closing ports.\n")); MPI_Close_port(port1); MPI_Close_port(port2); MPI_Close_port(port3); IF_VERBOSE(("0: sending 1 to process 1.\n")); data = 1; MPI_Send(&data, 1, MPI_INT, 0, 0, comm1); IF_VERBOSE(("0: sending 2 to process 2.\n")); data = 2; MPI_Send(&data, 1, MPI_INT, 0, 0, comm2); IF_VERBOSE(("0: sending 3 to process 3.\n")); data = 3; MPI_Send(&data, 1, MPI_INT, 0, 0, comm3); IF_VERBOSE(("0: disconnecting.\n")); MPI_Comm_disconnect(&comm1); MPI_Comm_disconnect(&comm2); MPI_Comm_disconnect(&comm3); } else if (rank == 1) { IF_VERBOSE(("1: receiving port.\n")); MPI_Recv(port1, MPI_MAX_PORT_NAME, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &status); IF_VERBOSE(("1: received port1: <%s>\n", port1)); IF_VERBOSE(("1: connecting.\n")); MPI_Comm_connect(port1, MPI_INFO_NULL, 0, MPI_COMM_SELF, &comm1); MPI_Recv(&data, 1, MPI_INT, 0, 0, comm1, &status); if (data != 1) { printf("Received %d from root when expecting 1\n", data); fflush(stdout); num_errors++; } IF_VERBOSE(("1: disconnecting.\n")); MPI_Comm_disconnect(&comm1); } else if (rank == 2) { IF_VERBOSE(("2: receiving port.\n")); MPI_Recv(port2, MPI_MAX_PORT_NAME, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &status); IF_VERBOSE(("2: received port2: <%s>\n", port2)); /* make sure process 1 has time to do the connect before this process * attempts to connect */ MTestSleep(2); IF_VERBOSE(("2: connecting.\n")); MPI_Comm_connect(port2, MPI_INFO_NULL, 0, MPI_COMM_SELF, &comm2); MPI_Recv(&data, 1, MPI_INT, 0, 0, comm2, &status); if (data != 2) { printf("Received %d from root when expecting 2\n", data); fflush(stdout); num_errors++; } IF_VERBOSE(("2: disconnecting.\n")); MPI_Comm_disconnect(&comm2); } else if (rank == 3) { IF_VERBOSE(("3: receiving port.\n")); MPI_Recv(port3, MPI_MAX_PORT_NAME, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &status); IF_VERBOSE(("2: received port2: <%s>\n", port2)); /* make sure process 1 and 2 have time to do the connect before this * process attempts to connect */ MTestSleep(4); IF_VERBOSE(("3: connecting.\n")); MPI_Comm_connect(port3, MPI_INFO_NULL, 0, MPI_COMM_SELF, &comm3); MPI_Recv(&data, 1, MPI_INT, 0, 0, comm3, &status); if (data != 3) { printf("Received %d from root when expecting 3\n", data); fflush(stdout); num_errors++; } IF_VERBOSE(("3: disconnecting.\n")); MPI_Comm_disconnect(&comm3); } MPI_Barrier(MPI_COMM_WORLD); MPI_Reduce(&num_errors, &total_num_errors, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (rank == 0) { if (total_num_errors) { printf(" Found %d errors\n", total_num_errors); } else { printf(" No Errors\n"); } fflush(stdout); } MPI_Finalize(); return total_num_errors; } mpi-testsuite-3.2+dfsg/spawn/disconnect_reconnect.c0000644000175000017500000001441612620254305022053 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitest.h" #include #include #ifdef HAVE_STRINGS_H #include #endif #ifdef HAVE_STRING_H #include #endif #define IF_VERBOSE(a) if (verbose) { printf a ; fflush(stdout); } /* static char MTEST_Descrip[] = "A simple test of Comm_connect/accept/disconnect"; */ int main(int argc, char *argv[]) { int errs = 0; int rank, size, rsize, i, j, data, num_loops = 100; int np = 3; MPI_Comm parentcomm, intercomm; MPI_Status status; char port[MPI_MAX_PORT_NAME] = { 0 }; int verbose = 0; int do_messages = 1; char *env; int can_spawn; env = getenv("MPITEST_VERBOSE"); if (env) { if (*env != '0') verbose = 1; } MTest_Init(&argc, &argv); errs += MTestSpawnPossible(&can_spawn); if (can_spawn) { /* FIXME: Document arguments */ if (argc > 1) { num_loops = atoi(argv[1]); if (num_loops < 0) num_loops = 0; if (num_loops > 100) num_loops = 100; } if (argc > 2) { do_messages = atoi(argv[2]); } MPI_Comm_get_parent(&parentcomm); if (parentcomm == MPI_COMM_NULL) { MPI_Comm_rank(MPI_COMM_WORLD, &rank); /* Get rank for verbose msg */ IF_VERBOSE(("[%d] spawning %d processes\n", rank, np)); /* Create 3 more processes */ MPI_Comm_spawn((char *) "./disconnect_reconnect", /*MPI_ARGV_NULL */ &argv[1], np, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &intercomm, MPI_ERRCODES_IGNORE); } else { intercomm = parentcomm; } /* We now have a valid intercomm */ MPI_Comm_remote_size(intercomm, &rsize); MPI_Comm_size(intercomm, &size); MPI_Comm_rank(intercomm, &rank); if (parentcomm == MPI_COMM_NULL) { IF_VERBOSE(("[%d] parent rank %d alive.\n", rank, rank)); /* Parent */ if (rsize != np) { errs++; printf("Did not create %d processes (got %d)\n", np, rsize); fflush(stdout); } if (rank == 0 && num_loops > 0) { MPI_Open_port(MPI_INFO_NULL, port); IF_VERBOSE(("[%d] port = %s\n", rank, port)); MPI_Send(port, MPI_MAX_PORT_NAME, MPI_CHAR, 0, 0, intercomm); } IF_VERBOSE(("[%d] disconnecting child communicator\n", rank)); MPI_Comm_disconnect(&intercomm); for (i = 0; i < num_loops; i++) { IF_VERBOSE(("[%d] accepting connection\n", rank)); MPI_Comm_accept(port, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &intercomm); MPI_Comm_remote_size(intercomm, &rsize); if (do_messages && (rank == 0)) { j = 0; for (j = 0; j < rsize; j++) { data = i; IF_VERBOSE(("[%d]sending int to child process %d\n", rank, j)); MPI_Send(&data, 1, MPI_INT, j, 100, intercomm); IF_VERBOSE(("[%d] receiving int from child process %d\n", rank, j)); data = i - 1; MPI_Recv(&data, 1, MPI_INT, j, 100, intercomm, &status); if (data != i) { errs++; } } } IF_VERBOSE(("[%d] disconnecting communicator\n", rank)); MPI_Comm_disconnect(&intercomm); } /* Errors cannot be sent back to the parent because there is no * communicator connected to the children * for (i=0; i 0) { IF_VERBOSE(("[%d] receiving port\n", rank)); MPI_Recv(port, MPI_MAX_PORT_NAME, MPI_CHAR, 0, 0, intercomm, &status); } IF_VERBOSE(("[%d] disconnecting communicator\n", rank)); MPI_Comm_disconnect(&intercomm); for (i = 0; i < num_loops; i++) { IF_VERBOSE(("[%d] connecting to port (loop %d)\n", rank, i)); MPI_Comm_connect(port, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &intercomm); if (do_messages) { IF_VERBOSE(("[%d] receiving int from parent process 0\n", rank)); MPI_Recv(&data, 1, MPI_INT, 0, 100, intercomm, &status); if (data != i) { printf("expected %d but received %d\n", i, data); fflush(stdout); MPI_Abort(MPI_COMM_WORLD, 1); } IF_VERBOSE(("[%d] sending int back to parent process 1\n", rank)); MPI_Send(&data, 1, MPI_INT, 0, 100, intercomm); } IF_VERBOSE(("[%d] disconnecting communicator\n", rank)); MPI_Comm_disconnect(&intercomm); } /* Send the errs back to the master process */ /* Errors cannot be sent back to the parent because there is no * communicator connected to the parent */ /*MPI_Ssend(&errs, 1, MPI_INT, 0, 1, intercomm); */ } /* Note that the MTest_Finalize get errs only over COMM_WORLD */ /* Note also that both the parent and child will generate "No Errors" * if both call MTest_Finalize */ if (parentcomm == MPI_COMM_NULL) { MTest_Finalize(errs); } } else { MTest_Finalize(errs); } IF_VERBOSE(("[%d] calling finalize\n", rank)); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/spawn/spawn2.c0000644000175000017500000001300212620254305017062 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "A simple test of Comm_spawn, called twice"; */ /* * One bug report indicated that two calls to Spawn failed, even when * one succeeded. This test makes sure that an MPI program can make * multiple calls to spawn. */ int main(int argc, char *argv[]) { int errs = 0, err; int rank, size, rsize, i; int np = 2; int errcodes[2]; MPI_Comm parentcomm, intercomm, intercomm2; MPI_Status status; int can_spawn; MTest_Init(&argc, &argv); errs += MTestSpawnPossible(&can_spawn); if (can_spawn) { MPI_Comm_get_parent(&parentcomm); if (parentcomm == MPI_COMM_NULL) { /* Create 2 more processes */ /* This uses a Unix name for the program; * Windows applications may need to use just spawn2 or * spawn2.exe. We can't rely on using info to place . in the * path, since info is not required to be followed. */ MPI_Comm_spawn((char *) "./spawn2", MPI_ARGV_NULL, np, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &intercomm, errcodes); } else intercomm = parentcomm; /* We now have a valid intercomm */ MPI_Comm_remote_size(intercomm, &rsize); MPI_Comm_size(intercomm, &size); MPI_Comm_rank(intercomm, &rank); if (parentcomm == MPI_COMM_NULL) { /* Master */ if (rsize != np) { errs++; printf("Did not create %d processes (got %d)\n", np, rsize); } if (rank == 0) { for (i = 0; i < rsize; i++) { MPI_Send(&i, 1, MPI_INT, i, 0, intercomm); } /* We could use intercomm reduce to get the errors from the * children, but we'll use a simpler loop to make sure that * we get valid data */ for (i = 0; i < rsize; i++) { MPI_Recv(&err, 1, MPI_INT, i, 1, intercomm, MPI_STATUS_IGNORE); errs += err; } } } else { /* Child */ char cname[MPI_MAX_OBJECT_NAME]; int rlen; if (size != np) { errs++; printf("(Child) Did not create %d processes (got %d)\n", np, size); } /* Check the name of the parent */ cname[0] = 0; MPI_Comm_get_name(intercomm, cname, &rlen); /* MPI-2 section 8.4 requires that the parent have this * default name */ if (strcmp(cname, "MPI_COMM_PARENT") != 0) { errs++; printf("Name of parent is not correct\n"); if (rlen > 0 && cname[0]) { printf(" Got %s but expected MPI_COMM_PARENT\n", cname); } else { printf(" Expected MPI_COMM_PARENT but no name set\n"); } } MPI_Recv(&i, 1, MPI_INT, 0, 0, intercomm, &status); if (i != rank) { errs++; printf("Unexpected rank on child %d (%d)\n", rank, i); } /* Send the errs back to the master process */ MPI_Ssend(&errs, 1, MPI_INT, 0, 1, intercomm); } if (parentcomm == MPI_COMM_NULL) { /* Create 2 more processes */ /* This uses a Unix name for the program; * Windows applications may need to use just spawn2 or * spawn2.exe. We can't rely on using info to place . in the * path, since info is not required to be followed. */ MPI_Comm_spawn((char *) "./spawn2", MPI_ARGV_NULL, np, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &intercomm2, MPI_ERRCODES_IGNORE); } else intercomm2 = parentcomm; /* We now have a valid intercomm */ MPI_Comm_remote_size(intercomm2, &rsize); MPI_Comm_size(intercomm2, &size); MPI_Comm_rank(intercomm2, &rank); if (parentcomm == MPI_COMM_NULL) { /* Master */ if (rsize != np) { errs++; printf("Did not create %d processes (got %d)\n", np, rsize); } if (rank == 0) { for (i = 0; i < rsize; i++) { MPI_Send(&i, 1, MPI_INT, i, 0, intercomm2); } /* We could use intercomm2 reduce to get the errors from the * children, but we'll use a simpler loop to make sure that * we get valid data */ for (i = 0; i < rsize; i++) { MPI_Recv(&err, 1, MPI_INT, i, 1, intercomm2, MPI_STATUS_IGNORE); errs += err; } } MPI_Comm_free(&intercomm2); } /* It isn't necessary to free the intercomm, but it should not hurt */ MPI_Comm_free(&intercomm); /* Note that the MTest_Finalize get errs only over COMM_WORLD */ /* Note also that both the parent and child will generate "No Errors" * if both call MTest_Finalize */ if (parentcomm == MPI_COMM_NULL) { MTest_Finalize(errs); } } else { MTest_Finalize(errs); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/spawn/taskmaster.c0000644000175000017500000001126312620254305020035 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include #include "mpitest.h" #define DEFAULT_TASKS 128 #define DEFAULT_TASK_WINDOW 2 /* #define USE_THREADS */ int comm_world_rank; int comm_world_size; #define CHECK_SUCCESS(status) \ { \ if (status != MPI_SUCCESS) { \ fprintf(stderr, "Routine on line %d returned with error status\n", __LINE__); \ MPI_Abort(MPI_COMM_WORLD, -1); \ } \ } void process_spawn(MPI_Comm * comm, int thread_id); void process_spawn(MPI_Comm * comm, int thread_id) { CHECK_SUCCESS(MPI_Comm_spawn((char *) "./taskmaster", (char **) NULL, 1, MPI_INFO_NULL, 0, MPI_COMM_WORLD, comm, NULL)); } void process_disconnect(MPI_Comm * comm, int thread_id); void process_disconnect(MPI_Comm * comm, int thread_id) { if (comm_world_rank == 0) { CHECK_SUCCESS(MPI_Recv(NULL, 0, MPI_CHAR, 0, 1, *comm, MPI_STATUS_IGNORE)); CHECK_SUCCESS(MPI_Send(NULL, 0, MPI_CHAR, 0, 1, *comm)); } CHECK_SUCCESS(MPI_Comm_disconnect(comm)); } #ifdef USE_THREADS static void *main_thread(void *arg) { MPI_Comm child_comm; int thread_id = *((int *) arg); process_spawn(&child_comm, thread_id); CHECK_SUCCESS(MPI_Comm_set_errhandler(child_comm, MPI_ERRORS_RETURN)); process_disconnect(&child_comm, thread_id); return NULL; } #endif /* USE_THREADS */ int main(int argc, char *argv[]) { int tasks = 0, i, j; MPI_Comm parent; #ifdef USE_THREADS int provided; pthread_t *threads = NULL; #else MPI_Comm *child; #endif /* USE_THREADS */ int can_spawn, errs = 0; #ifdef USE_THREADS CHECK_SUCCESS(MPI_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &provided)); if (provided != MPI_THREAD_MULTIPLE) { fprintf(stderr, "MPI does not provide THREAD_MULTIPLE support\n"); MPI_Abort(MPI_COMM_WORLD, -1); } #else CHECK_SUCCESS(MPI_Init(&argc, &argv)); #endif errs += MTestSpawnPossible(&can_spawn); if (!can_spawn) { if (errs) printf(" Found %d errors\n", errs); else printf(" No Errors\n"); fflush(stdout); goto fn_exit; } CHECK_SUCCESS(MPI_Comm_get_parent(&parent)); if (parent == MPI_COMM_NULL) { /* Parent communicator */ if (argc == 2) { tasks = atoi(argv[1]); } else if (argc == 1) { tasks = DEFAULT_TASKS; } else { fprintf(stderr, "Usage: %s {number_of_tasks}\n", argv[0]); MPI_Abort(MPI_COMM_WORLD, -1); } CHECK_SUCCESS(MPI_Comm_rank(MPI_COMM_WORLD, &comm_world_rank)); CHECK_SUCCESS(MPI_Comm_size(MPI_COMM_WORLD, &comm_world_size)); #ifdef USE_THREADS threads = (pthread_t *) malloc(tasks * sizeof(pthread_t)); if (!threads) { fprintf(stderr, "Unable to allocate memory for threads\n"); MPI_Abort(MPI_COMM_WORLD, -1); } #else child = (MPI_Comm *) malloc(tasks * sizeof(MPI_Comm)); if (!child) { fprintf(stderr, "Unable to allocate memory for child communicators\n"); MPI_Abort(MPI_COMM_WORLD, -1); } #endif /* USE_THREADS */ #ifdef USE_THREADS /* Create a thread for each task. Each thread will spawn a * child process to perform its task. */ for (i = 0; i < tasks;) { for (j = 0; j < DEFAULT_TASK_WINDOW; j++) pthread_create(&threads[j], NULL, main_thread, &j); for (j = 0; j < DEFAULT_TASK_WINDOW; j++) pthread_join(threads[j], NULL); i += DEFAULT_TASK_WINDOW; } #else /* Directly spawn a child process to perform each task */ for (i = 0; i < tasks;) { for (j = 0; j < DEFAULT_TASK_WINDOW; j++) process_spawn(&child[j], -1); for (j = 0; j < DEFAULT_TASK_WINDOW; j++) process_disconnect(&child[j], -1); i += DEFAULT_TASK_WINDOW; } #endif /* USE_THREADS */ CHECK_SUCCESS(MPI_Barrier(MPI_COMM_WORLD)); if (comm_world_rank == 0) printf(" No Errors\n"); } else { /* Child communicator */ /* Do some work here and send a message to the root process in * the parent communicator. */ CHECK_SUCCESS(MPI_Send(NULL, 0, MPI_CHAR, 0, 1, parent)); CHECK_SUCCESS(MPI_Recv(NULL, 0, MPI_CHAR, 0, 1, parent, MPI_STATUS_IGNORE)); CHECK_SUCCESS(MPI_Comm_disconnect(&parent)); } fn_exit: #ifdef USE_THREADS if (threads) free(threads); #endif MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/spawn/disconnect3.c0000644000175000017500000001034712620254305020075 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitest.h" #include #include #ifdef HAVE_STRINGS_H #include #endif #ifdef HAVE_STRING_H #include #endif #define IF_VERBOSE(a) if (verbose) { printf a ; fflush(stdout); } #define DATA_VALUE 123 #define DATA_TAG 100 #define SENDER_RANK 1 #define RECEIVER_RANK 2 /* static char MTEST_Descrip[] = "A simple test of Comm_disconnect"; */ int main(int argc, char *argv[]) { int errs = 0; int rank, size, rsize, i, data = -1; int np = 3; MPI_Comm parentcomm, intercomm; MPI_Status status; int verbose = 0; char *env; int can_spawn; env = getenv("MPITEST_VERBOSE"); if (env) { if (*env != '0') verbose = 1; } MTest_Init(&argc, &argv); errs += MTestSpawnPossible(&can_spawn); if (can_spawn) { MPI_Comm_get_parent(&parentcomm); if (parentcomm == MPI_COMM_NULL) { IF_VERBOSE(("spawning %d processes\n", np)); /* Create 3 more processes */ MPI_Comm_spawn((char *) "./disconnect3", MPI_ARGV_NULL, np, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &intercomm, MPI_ERRCODES_IGNORE); } else { intercomm = parentcomm; } /* We now have a valid intercomm */ MPI_Comm_remote_size(intercomm, &rsize); MPI_Comm_size(intercomm, &size); MPI_Comm_rank(intercomm, &rank); if (parentcomm == MPI_COMM_NULL) { IF_VERBOSE(("parent rank %d alive.\n", rank)); /* Parent */ if (rsize != np) { errs++; printf("Did not create %d processes (got %d)\n", np, rsize); fflush(stdout); } if (rank == SENDER_RANK) { IF_VERBOSE(("sending int\n")); i = DATA_VALUE; MPI_Send(&i, 1, MPI_INT, RECEIVER_RANK, DATA_TAG, intercomm); MPI_Recv(&data, 1, MPI_INT, RECEIVER_RANK, DATA_TAG, intercomm, &status); if (data != i) { errs++; } } IF_VERBOSE(("disconnecting child communicator\n")); MPI_Comm_disconnect(&intercomm); /* Errors cannot be sent back to the parent because there is no * communicator connected to the children * for (i=0; i #include "mpi.h" #include "mpitest.h" /* Allgather a two-field struct datatype. This test may trigger bugs such as when the implementation does not handle well misaligned types.*/ typedef struct { int first; long second; } int_long_t; int main(int argc, char **argv) { MPI_Comm comm; int minsize = 2; int i, errs = 0; int rank, size; int_long_t object; MPI_Datatype type; MPI_Aint begin; MPI_Aint displacements[2]; MPI_Datatype types[] = { MPI_INT, MPI_LONG }; int blocklength[2] = { 1, 1 }; int_long_t* gathered_objects; MTest_Init(&argc, &argv); while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; /* Determine the sender and receiver */ MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); gathered_objects = (int_long_t*) malloc (size*sizeof(int_long_t)); /* Local object */ object.first = rank; object.second = rank * 10; /* Datatype creation */ MPI_Get_address(&object, &begin); MPI_Get_address(&object.first, &displacements[0]); MPI_Get_address(&object.second, &displacements[1]); for (i = 0; i != 2; ++i) displacements[i] -= begin; MPI_Type_create_struct(2, &blocklength[0], &displacements[0], &types[0], &type); MPI_Type_commit(&type); MPI_Allgather(&object, 1, type, gathered_objects, 1, type, comm); for (i = 0; i < size; i++) { if (gathered_objects[i].first != i || gathered_objects[i].second != i * 10) errs++; } MPI_Type_free(&type); MTestFreeComm(&comm); free(gathered_objects); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/icreduce.c0000644000175000017500000000560312620254305017244 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include "mpicolltest.h" /* static char MTEST_Descrip[] = "Simple intercomm reduce test"; */ int main(int argc, char *argv[]) { int errs = 0, err; int *sendbuf = 0, *recvbuf = 0; int leftGroup, i, count, rank, rsize; MPI_Comm comm; MPI_Datatype datatype; MTest_Init(&argc, &argv); datatype = MPI_INT; /* Get an intercommunicator */ while (MTestGetIntercomm(&comm, &leftGroup, 4)) { if (comm == MPI_COMM_NULL) continue; MPI_Comm_rank(comm, &rank); MPI_Comm_remote_size(comm, &rsize); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(comm, MPI_ERRORS_RETURN); for (count = 1; count < 65000; count = 2 * count) { sendbuf = (int *) malloc(count * sizeof(int)); recvbuf = (int *) malloc(count * sizeof(int)); for (i = 0; i < count; i++) { sendbuf[i] = -1; recvbuf[i] = -1; } if (leftGroup) { err = MTest_Reduce(sendbuf, recvbuf, count, datatype, MPI_SUM, (rank == 0) ? MPI_ROOT : MPI_PROC_NULL, comm); if (err) { errs++; MTestPrintError(err); } /* Test that no other process in this group received the * broadcast, and that we got the right answers */ if (rank == 0) { for (i = 0; i < count; i++) { if (recvbuf[i] != i * rsize) { errs++; } } } else { for (i = 0; i < count; i++) { if (recvbuf[i] != -1) { errs++; } } } } else { /* In the right group */ for (i = 0; i < count; i++) sendbuf[i] = i; err = MTest_Reduce(sendbuf, recvbuf, count, datatype, MPI_SUM, 0, comm); if (err) { errs++; MTestPrintError(err); } /* Check that we have received no data */ for (i = 0; i < count; i++) { if (recvbuf[i] != -1) { errs++; } } } free(sendbuf); free(recvbuf); } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/nonblocking2.c0000644000175000017500000003567012620254305020055 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2011 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* A basic test of all 17 nonblocking collective operations specified by the * MPI-3 standard. It only exercises the intracommunicator functionality, * does not use MPI_IN_PLACE, and only transmits/receives simple integer types * with relatively small counts. It does check a few fancier issues, such as * ensuring that "premature user releases" of MPI_Op and MPI_Datatype objects * does not result in an error or segfault. */ #include "mpi.h" #include #include #define COUNT (10) #define PRIME (17) #define my_assert(cond_) \ do { \ if (!(cond_)) { \ fprintf(stderr, "assertion (%s) failed, aborting\n", #cond_); \ MPI_Abort(MPI_COMM_WORLD, 1); \ } \ } while (0) static void sum_fn(void *invec, void *inoutvec, int *len, MPI_Datatype * datatype) { int i; int *in = invec; int *inout = inoutvec; for (i = 0; i < *len; ++i) { inout[i] = in[i] + inout[i]; } } int main(int argc, char **argv) { int i, j; int rank, size; int *buf = NULL; int *recvbuf = NULL; int *sendcounts = NULL; int *recvcounts = NULL; int *sdispls = NULL; int *rdispls = NULL; int *sendtypes = NULL; int *recvtypes = NULL; signed char *buf_alias = NULL; MPI_Request req; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); buf = malloc(COUNT * size * sizeof(int)); recvbuf = malloc(COUNT * size * sizeof(int)); sendcounts = malloc(size * sizeof(int)); recvcounts = malloc(size * sizeof(int)); sdispls = malloc(size * sizeof(int)); rdispls = malloc(size * sizeof(int)); sendtypes = malloc(size * sizeof(MPI_Datatype)); recvtypes = malloc(size * sizeof(MPI_Datatype)); /* MPI_Ibcast */ for (i = 0; i < COUNT; ++i) { if (rank == 0) { buf[i] = i; } else { buf[i] = 0xdeadbeef; } } MPI_Ibcast(buf, COUNT, MPI_INT, 0, MPI_COMM_WORLD, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); for (i = 0; i < COUNT; ++i) { if (buf[i] != i) printf("buf[%d]=%d i=%d\n", i, buf[i], i); my_assert(buf[i] == i); } /* MPI_Ibcast (again, but designed to stress scatter/allgather impls) */ buf_alias = (signed char *) buf; my_assert(COUNT * size * sizeof(int) > PRIME); /* sanity */ for (i = 0; i < PRIME; ++i) { if (rank == 0) buf_alias[i] = i; else buf_alias[i] = 0xdb; } for (i = PRIME; i < COUNT * size * sizeof(int); ++i) { buf_alias[i] = 0xbf; } MPI_Ibcast(buf_alias, PRIME, MPI_SIGNED_CHAR, 0, MPI_COMM_WORLD, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); for (i = 0; i < PRIME; ++i) { if (buf_alias[i] != i) printf("buf_alias[%d]=%d i=%d\n", i, buf_alias[i], i); my_assert(buf_alias[i] == i); } /* MPI_Ibarrier */ MPI_Ibarrier(MPI_COMM_WORLD, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); /* MPI_Ireduce */ for (i = 0; i < COUNT; ++i) { buf[i] = rank + i; recvbuf[i] = 0xdeadbeef; } MPI_Ireduce(buf, recvbuf, COUNT, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); if (rank == 0) { for (i = 0; i < COUNT; ++i) { if (recvbuf[i] != ((size * (size - 1) / 2) + (i * size))) printf("got recvbuf[%d]=%d, expected %d\n", i, recvbuf[i], ((size * (size - 1) / 2) + (i * size))); my_assert(recvbuf[i] == ((size * (size - 1) / 2) + (i * size))); } } /* same again, use a user op and free it before the wait */ { MPI_Op op = MPI_OP_NULL; MPI_Op_create(sum_fn, /*commute= */ 1, &op); for (i = 0; i < COUNT; ++i) { buf[i] = rank + i; recvbuf[i] = 0xdeadbeef; } MPI_Ireduce(buf, recvbuf, COUNT, MPI_INT, op, 0, MPI_COMM_WORLD, &req); MPI_Op_free(&op); MPI_Wait(&req, MPI_STATUS_IGNORE); if (rank == 0) { for (i = 0; i < COUNT; ++i) { if (recvbuf[i] != ((size * (size - 1) / 2) + (i * size))) printf("got recvbuf[%d]=%d, expected %d\n", i, recvbuf[i], ((size * (size - 1) / 2) + (i * size))); my_assert(recvbuf[i] == ((size * (size - 1) / 2) + (i * size))); } } } /* MPI_Iallreduce */ for (i = 0; i < COUNT; ++i) { buf[i] = rank + i; recvbuf[i] = 0xdeadbeef; } MPI_Iallreduce(buf, recvbuf, COUNT, MPI_INT, MPI_SUM, MPI_COMM_WORLD, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); for (i = 0; i < COUNT; ++i) { if (recvbuf[i] != ((size * (size - 1) / 2) + (i * size))) printf("got recvbuf[%d]=%d, expected %d\n", i, recvbuf[i], ((size * (size - 1) / 2) + (i * size))); my_assert(recvbuf[i] == ((size * (size - 1) / 2) + (i * size))); } /* MPI_Ialltoallv (a weak test, neither irregular nor sparse) */ for (i = 0; i < size; ++i) { sendcounts[i] = COUNT; recvcounts[i] = COUNT; sdispls[i] = COUNT * i; rdispls[i] = COUNT * i; for (j = 0; j < COUNT; ++j) { buf[i * COUNT + j] = rank + (i * j); recvbuf[i * COUNT + j] = 0xdeadbeef; } } MPI_Ialltoallv(buf, sendcounts, sdispls, MPI_INT, recvbuf, recvcounts, rdispls, MPI_INT, MPI_COMM_WORLD, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); for (i = 0; i < size; ++i) { for (j = 0; j < COUNT; ++j) { /*printf("recvbuf[%d*COUNT+%d]=%d, expecting %d\n", i, j, recvbuf[i*COUNT+j], (i + (rank * j))); */ my_assert(recvbuf[i * COUNT + j] == (i + (rank * j))); } } /* MPI_Igather */ for (i = 0; i < size * COUNT; ++i) { buf[i] = rank + i; recvbuf[i] = 0xdeadbeef; } MPI_Igather(buf, COUNT, MPI_INT, recvbuf, COUNT, MPI_INT, 0, MPI_COMM_WORLD, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); if (rank == 0) { for (i = 0; i < size; ++i) { for (j = 0; j < COUNT; ++j) { my_assert(recvbuf[i * COUNT + j] == i + j); } } } else { for (i = 0; i < size * COUNT; ++i) { my_assert(recvbuf[i] == 0xdeadbeef); } } /* same test again, just use a dup'ed datatype and free it before the wait */ { MPI_Datatype type = MPI_DATATYPE_NULL; MPI_Type_dup(MPI_INT, &type); for (i = 0; i < size * COUNT; ++i) { buf[i] = rank + i; recvbuf[i] = 0xdeadbeef; } MPI_Igather(buf, COUNT, MPI_INT, recvbuf, COUNT, type, 0, MPI_COMM_WORLD, &req); MPI_Type_free(&type); /* should cause implementations that don't refcount * correctly to blow up or hang in the wait */ MPI_Wait(&req, MPI_STATUS_IGNORE); if (rank == 0) { for (i = 0; i < size; ++i) { for (j = 0; j < COUNT; ++j) { my_assert(recvbuf[i * COUNT + j] == i + j); } } } else { for (i = 0; i < size * COUNT; ++i) { my_assert(recvbuf[i] == 0xdeadbeef); } } } /* MPI_Iscatter */ for (i = 0; i < size; ++i) { for (j = 0; j < COUNT; ++j) { if (rank == 0) buf[i * COUNT + j] = i + j; else buf[i * COUNT + j] = 0xdeadbeef; recvbuf[i * COUNT + j] = 0xdeadbeef; } } MPI_Iscatter(buf, COUNT, MPI_INT, recvbuf, COUNT, MPI_INT, 0, MPI_COMM_WORLD, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); for (j = 0; j < COUNT; ++j) { my_assert(recvbuf[j] == rank + j); } if (rank != 0) { for (i = 0; i < size * COUNT; ++i) { /* check we didn't corrupt the sendbuf somehow */ my_assert(buf[i] == 0xdeadbeef); } } /* MPI_Iscatterv */ for (i = 0; i < size; ++i) { /* weak test, just test the regular case where all counts are equal */ sendcounts[i] = COUNT; sdispls[i] = i * COUNT; for (j = 0; j < COUNT; ++j) { if (rank == 0) buf[i * COUNT + j] = i + j; else buf[i * COUNT + j] = 0xdeadbeef; recvbuf[i * COUNT + j] = 0xdeadbeef; } } MPI_Iscatterv(buf, sendcounts, sdispls, MPI_INT, recvbuf, COUNT, MPI_INT, 0, MPI_COMM_WORLD, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); for (j = 0; j < COUNT; ++j) { my_assert(recvbuf[j] == rank + j); } if (rank != 0) { for (i = 0; i < size * COUNT; ++i) { /* check we didn't corrupt the sendbuf somehow */ my_assert(buf[i] == 0xdeadbeef); } } for (i = 1; i < size; ++i) { for (j = 0; j < COUNT; ++j) { /* check we didn't corrupt the rest of the recvbuf */ my_assert(recvbuf[i * COUNT + j] == 0xdeadbeef); } } /* MPI_Ireduce_scatter */ for (i = 0; i < size; ++i) { recvcounts[i] = COUNT; for (j = 0; j < COUNT; ++j) { buf[i * COUNT + j] = rank + i; recvbuf[i * COUNT + j] = 0xdeadbeef; } } MPI_Ireduce_scatter(buf, recvbuf, recvcounts, MPI_INT, MPI_SUM, MPI_COMM_WORLD, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); for (j = 0; j < COUNT; ++j) { my_assert(recvbuf[j] == (size * rank + ((size - 1) * size) / 2)); } for (i = 1; i < size; ++i) { for (j = 0; j < COUNT; ++j) { /* check we didn't corrupt the rest of the recvbuf */ my_assert(recvbuf[i * COUNT + j] == 0xdeadbeef); } } /* MPI_Ireduce_scatter_block */ for (i = 0; i < size; ++i) { for (j = 0; j < COUNT; ++j) { buf[i * COUNT + j] = rank + i; recvbuf[i * COUNT + j] = 0xdeadbeef; } } MPI_Ireduce_scatter_block(buf, recvbuf, COUNT, MPI_INT, MPI_SUM, MPI_COMM_WORLD, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); for (j = 0; j < COUNT; ++j) { my_assert(recvbuf[j] == (size * rank + ((size - 1) * size) / 2)); } for (i = 1; i < size; ++i) { for (j = 0; j < COUNT; ++j) { /* check we didn't corrupt the rest of the recvbuf */ my_assert(recvbuf[i * COUNT + j] == 0xdeadbeef); } } /* MPI_Igatherv */ for (i = 0; i < size * COUNT; ++i) { buf[i] = 0xdeadbeef; recvbuf[i] = 0xdeadbeef; } for (i = 0; i < COUNT; ++i) { buf[i] = rank + i; } for (i = 0; i < size; ++i) { recvcounts[i] = COUNT; rdispls[i] = i * COUNT; } MPI_Igatherv(buf, COUNT, MPI_INT, recvbuf, recvcounts, rdispls, MPI_INT, 0, MPI_COMM_WORLD, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); if (rank == 0) { for (i = 0; i < size; ++i) { for (j = 0; j < COUNT; ++j) { my_assert(recvbuf[i * COUNT + j] == i + j); } } } else { for (i = 0; i < size * COUNT; ++i) { my_assert(recvbuf[i] == 0xdeadbeef); } } /* MPI_Ialltoall */ for (i = 0; i < size; ++i) { for (j = 0; j < COUNT; ++j) { buf[i * COUNT + j] = rank + (i * j); recvbuf[i * COUNT + j] = 0xdeadbeef; } } MPI_Ialltoall(buf, COUNT, MPI_INT, recvbuf, COUNT, MPI_INT, MPI_COMM_WORLD, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); for (i = 0; i < size; ++i) { for (j = 0; j < COUNT; ++j) { /*printf("recvbuf[%d*COUNT+%d]=%d, expecting %d\n", i, j, recvbuf[i*COUNT+j], (i + (i * j))); */ my_assert(recvbuf[i * COUNT + j] == (i + (rank * j))); } } /* MPI_Iallgather */ for (i = 0; i < size * COUNT; ++i) { buf[i] = rank + i; recvbuf[i] = 0xdeadbeef; } MPI_Iallgather(buf, COUNT, MPI_INT, recvbuf, COUNT, MPI_INT, MPI_COMM_WORLD, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); for (i = 0; i < size; ++i) { for (j = 0; j < COUNT; ++j) { my_assert(recvbuf[i * COUNT + j] == i + j); } } /* MPI_Iallgatherv */ for (i = 0; i < size; ++i) { for (j = 0; j < COUNT; ++j) { recvbuf[i * COUNT + j] = 0xdeadbeef; } recvcounts[i] = COUNT; rdispls[i] = i * COUNT; } for (i = 0; i < COUNT; ++i) buf[i] = rank + i; MPI_Iallgatherv(buf, COUNT, MPI_INT, recvbuf, recvcounts, rdispls, MPI_INT, MPI_COMM_WORLD, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); for (i = 0; i < size; ++i) { for (j = 0; j < COUNT; ++j) { my_assert(recvbuf[i * COUNT + j] == i + j); } } /* MPI_Iscan */ for (i = 0; i < COUNT; ++i) { buf[i] = rank + i; recvbuf[i] = 0xdeadbeef; } MPI_Iscan(buf, recvbuf, COUNT, MPI_INT, MPI_SUM, MPI_COMM_WORLD, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); for (i = 0; i < COUNT; ++i) { my_assert(recvbuf[i] == ((rank * (rank + 1) / 2) + (i * (rank + 1)))); } /* MPI_Iexscan */ for (i = 0; i < COUNT; ++i) { buf[i] = rank + i; recvbuf[i] = 0xdeadbeef; } MPI_Iexscan(buf, recvbuf, COUNT, MPI_INT, MPI_SUM, MPI_COMM_WORLD, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); for (i = 0; i < COUNT; ++i) { if (rank == 0) my_assert(recvbuf[i] == 0xdeadbeef); else my_assert(recvbuf[i] == ((rank * (rank + 1) / 2) + (i * (rank + 1)) - (rank + i))); } /* MPI_Ialltoallw (a weak test, neither irregular nor sparse) */ for (i = 0; i < size; ++i) { sendcounts[i] = COUNT; recvcounts[i] = COUNT; sdispls[i] = COUNT * i * sizeof(int); rdispls[i] = COUNT * i * sizeof(int); sendtypes[i] = MPI_INT; recvtypes[i] = MPI_INT; for (j = 0; j < COUNT; ++j) { buf[i * COUNT + j] = rank + (i * j); recvbuf[i * COUNT + j] = 0xdeadbeef; } } MPI_Ialltoallw(buf, sendcounts, sdispls, sendtypes, recvbuf, recvcounts, rdispls, recvtypes, MPI_COMM_WORLD, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); for (i = 0; i < size; ++i) { for (j = 0; j < COUNT; ++j) { /*printf("recvbuf[%d*COUNT+%d]=%d, expecting %d\n", i, j, recvbuf[i*COUNT+j], (i + (rank * j))); */ my_assert(recvbuf[i * COUNT + j] == (i + (rank * j))); } } if (rank == 0) printf(" No Errors\n"); MPI_Finalize(); free(buf); free(recvbuf); free(sendcounts); free(recvcounts); free(rdispls); free(sdispls); free(recvtypes); free(sendtypes); return 0; } mpi-testsuite-3.2+dfsg/coll/reduce_local.c0000644000175000017500000000460112620254305020077 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2009 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "A simple test of MPI_Reduce_local"; */ #define MAX_BUF_ELEMENTS (65000) static int uop_errs = 0; /* prototype to keep the compiler happy */ static void user_op(void *invec, void *inoutvec, int *len, MPI_Datatype * datatype); static void user_op(void *invec, void *inoutvec, int *len, MPI_Datatype * datatype) { int i; int *invec_int = (int *) invec; int *inoutvec_int = (int *) inoutvec; if (*datatype != MPI_INT) { ++uop_errs; printf("invalid datatype passed to user_op"); return; } for (i = 0; i < *len; ++i) { inoutvec_int[i] = invec_int[i] * 2 + inoutvec_int[i]; } } int main(int argc, char *argv[]) { int errs = 0; int i; int *inbuf = NULL; int *inoutbuf = NULL; int count = -1; MPI_Op uop = MPI_OP_NULL; MTest_Init(&argc, &argv); #if MTEST_HAVE_MIN_MPI_VERSION(2,2) /* this function was added in MPI-2.2 */ inbuf = malloc(sizeof(int) * MAX_BUF_ELEMENTS); inoutbuf = malloc(sizeof(int) * MAX_BUF_ELEMENTS); for (count = 0; count < MAX_BUF_ELEMENTS; count > 0 ? count *= 2 : count++) { for (i = 0; i < count; ++i) { inbuf[i] = i; inoutbuf[i] = i; } MPI_Reduce_local(inbuf, inoutbuf, count, MPI_INT, MPI_SUM); for (i = 0; i < count; ++i) if (inbuf[i] != i) { ++errs; if (inoutbuf[i] != (2 * i)) ++errs; } } /* make sure that user-define ops work too */ MPI_Op_create(&user_op, 0 /*!commute */ , &uop); for (count = 0; count < MAX_BUF_ELEMENTS; count > 0 ? count *= 2 : count++) { for (i = 0; i < count; ++i) { inbuf[i] = i; inoutbuf[i] = i; } MPI_Reduce_local(inbuf, inoutbuf, count, MPI_INT, uop); errs += uop_errs; for (i = 0; i < count; ++i) if (inbuf[i] != i) { ++errs; if (inoutbuf[i] != (3 * i)) ++errs; } } MPI_Op_free(&uop); free(inbuf); free(inoutbuf); #endif MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/allgatherv4.c0000644000175000017500000001652212620254305017700 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitest.h" #include #include #ifdef HAVE_SYS_TIME_H #include #endif #include #include #include /* FIXME: What is this test supposed to accomplish? */ #define START_BUF (1) #define LARGE_BUF (256 * 1024) /* FIXME: MAX_BUF is too large */ #define MAX_BUF (128 * 1024 * 1024) #define LOOPS 10 char *sbuf, *rbuf; int *recvcounts, *displs; int errs = 0; /* #define dprintf printf */ #define dprintf(...) typedef enum { REGULAR, BCAST, SPIKE, HALF_FULL, LINEAR_DECREASE, BELL_CURVE } test_t; void comm_tests(MPI_Comm comm); double run_test(long long msg_size, MPI_Comm comm, test_t test_type, double *max_time); int main(int argc, char **argv) { int comm_size, comm_rank; MPI_Comm comm; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &comm_size); MPI_Comm_rank(MPI_COMM_WORLD, &comm_rank); if (LARGE_BUF * comm_size > MAX_BUF) goto fn_exit; sbuf = (void *) calloc(MAX_BUF, 1); rbuf = (void *) calloc(MAX_BUF, 1); srand(time(NULL)); recvcounts = (void *) malloc(comm_size * sizeof(int)); displs = (void *) malloc(comm_size * sizeof(int)); if (!recvcounts || !displs || !sbuf || !rbuf) { fprintf(stderr, "Unable to allocate memory:\n"); if (!sbuf) fprintf(stderr, "\tsbuf of %d bytes\n", MAX_BUF); if (!rbuf) fprintf(stderr, "\trbuf of %d bytes\n", MAX_BUF); if (!recvcounts) fprintf(stderr, "\trecvcounts of %zd bytes\n", comm_size * sizeof(int)); if (!displs) fprintf(stderr, "\tdispls of %zd bytes\n", comm_size * sizeof(int)); fflush(stderr); MPI_Abort(MPI_COMM_WORLD, -1); } if (!comm_rank) { dprintf("Message Range: (%d, %d); System size: %d\n", START_BUF, LARGE_BUF, comm_size); fflush(stdout); } /* COMM_WORLD tests */ if (!comm_rank) { dprintf("\n\n==========================================================\n"); dprintf(" MPI_COMM_WORLD\n"); dprintf("==========================================================\n"); } comm_tests(MPI_COMM_WORLD); /* non-COMM_WORLD tests */ if (!comm_rank) { dprintf("\n\n==========================================================\n"); dprintf(" non-COMM_WORLD\n"); dprintf("==========================================================\n"); } MPI_Comm_split(MPI_COMM_WORLD, (comm_rank == comm_size - 1) ? 0 : 1, 0, &comm); if (comm_rank < comm_size - 1) comm_tests(comm); MPI_Comm_free(&comm); /* Randomized communicator tests */ if (!comm_rank) { dprintf("\n\n==========================================================\n"); dprintf(" Randomized Communicator\n"); dprintf("==========================================================\n"); } MPI_Comm_split(MPI_COMM_WORLD, 0, rand(), &comm); comm_tests(comm); MPI_Comm_free(&comm); free(sbuf); free(rbuf); free(recvcounts); free(displs); fn_exit: MTest_Finalize(errs); MPI_Finalize(); return 0; } void comm_tests(MPI_Comm comm) { int comm_size, comm_rank; double rtime, max_time; long long msg_size; MPI_Comm_size(comm, &comm_size); MPI_Comm_rank(comm, &comm_rank); for (msg_size = START_BUF; msg_size <= LARGE_BUF; msg_size *= 2) { if (!comm_rank) { dprintf("\n====> MSG_SIZE: %d\n", (int) msg_size); fflush(stdout); } rtime = run_test(msg_size, comm, REGULAR, &max_time); if (!comm_rank) { dprintf("REGULAR:\tAVG: %.3f\tMAX: %.3f\n", rtime, max_time); fflush(stdout); } rtime = run_test(msg_size, comm, BCAST, &max_time); if (!comm_rank) { dprintf("BCAST:\tAVG: %.3f\tMAX: %.3f\n", rtime, max_time); fflush(stdout); } rtime = run_test(msg_size, comm, SPIKE, &max_time); if (!comm_rank) { dprintf("SPIKE:\tAVG: %.3f\tMAX: %.3f\n", rtime, max_time); fflush(stdout); } rtime = run_test(msg_size, comm, HALF_FULL, &max_time); if (!comm_rank) { dprintf("HALF_FULL:\tAVG: %.3f\tMAX: %.3f\n", rtime, max_time); fflush(stdout); } rtime = run_test(msg_size, comm, LINEAR_DECREASE, &max_time); if (!comm_rank) { dprintf("LINEAR_DECREASE:\tAVG: %.3f\tMAX: %.3f\n", rtime, max_time); fflush(stdout); } rtime = run_test(msg_size, comm, BELL_CURVE, &max_time); if (!comm_rank) { dprintf("BELL_CURVE:\tAVG: %.3f\tMAX: %.3f\n", rtime, max_time); fflush(stdout); } } } double run_test(long long msg_size, MPI_Comm comm, test_t test_type, double *max_time) { int i, j; int comm_size, comm_rank; double start, end; double total_time, avg_time; MPI_Aint tmp; MPI_Comm_size(comm, &comm_size); MPI_Comm_rank(comm, &comm_rank); displs[0] = 0; for (i = 0; i < comm_size; i++) { if (test_type == REGULAR) recvcounts[i] = msg_size; else if (test_type == BCAST) recvcounts[i] = (!i) ? msg_size : 0; else if (test_type == SPIKE) recvcounts[i] = (!i) ? (msg_size / 2) : (msg_size / (2 * (comm_size - 1))); else if (test_type == HALF_FULL) recvcounts[i] = (i < (comm_size / 2)) ? (2 * msg_size) : 0; else if (test_type == LINEAR_DECREASE) { tmp = 2 * msg_size * (comm_size - 1 - i) / (comm_size - 1); if (tmp != (int) tmp) { fprintf(stderr, "Integer overflow in variable tmp\n"); MPI_Abort(MPI_COMM_WORLD, 1); } recvcounts[i] = (int) tmp; /* If the maximum message size is too large, don't run */ if (tmp > MAX_BUF) return 0; } else if (test_type == BELL_CURVE) { for (j = 0; j < i; j++) { if (i - 1 + j >= comm_size) continue; tmp = msg_size * comm_size / (log(comm_size) * i); recvcounts[i - 1 + j] = (int) tmp; displs[i - 1 + j] = 0; /* If the maximum message size is too large, don't run */ if (tmp > MAX_BUF) return 0; } } if (i < comm_size - 1) displs[i + 1] = displs[i] + recvcounts[i]; } /* Test that: * 1: sbuf is large enough * 2: rbuf is large enough * 3: There were no failures (e.g., tmp nowhere > rbuf size */ MPI_Barrier(comm); start = MPI_Wtime(); for (i = 0; i < LOOPS; i++) { MPI_Allgatherv(sbuf, recvcounts[comm_rank], MPI_CHAR, rbuf, recvcounts, displs, MPI_CHAR, comm); } end = MPI_Wtime(); MPI_Barrier(comm); /* Convert to microseconds (why?) */ total_time = 1.0e6 * (end - start); MPI_Reduce(&total_time, &avg_time, 1, MPI_DOUBLE, MPI_SUM, 0, comm); MPI_Reduce(&total_time, max_time, 1, MPI_DOUBLE, MPI_MAX, 0, comm); return (avg_time / (LOOPS * comm_size)); } mpi-testsuite-3.2+dfsg/coll/longuser.c0000644000175000017500000000425312620254305017317 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include int add(double *, double *, int *, MPI_Datatype *); /* * User-defined operation on a long value (tests proper handling of * possible pipelining in the implementation of reductions with user-defined * operations). */ int add(double *invec, double *inoutvec, int *len, MPI_Datatype * dtype) { int i, n = *len; for (i = 0; i < n; i++) { inoutvec[i] = invec[i] + inoutvec[i]; } return 0; } int main(int argc, char **argv) { MPI_Op op; int i, rank, size, bufsize, errcnt = 0, toterr; double *inbuf, *outbuf, value; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Op_create((MPI_User_function *) add, 1, &op); bufsize = 1; while (bufsize < 100000) { inbuf = (double *) malloc(bufsize * sizeof(double)); outbuf = (double *) malloc(bufsize * sizeof(double)); if (!inbuf || !outbuf) { fprintf(stderr, "Could not allocate buffers for size %d\n", bufsize); errcnt++; break; } value = (rank & 0x1) ? 1.0 : -1.0; for (i = 0; i < bufsize; i++) { inbuf[i] = value; outbuf[i] = 100.0; } MPI_Allreduce(inbuf, outbuf, bufsize, MPI_DOUBLE, op, MPI_COMM_WORLD); /* Check values */ value = (size & 0x1) ? -1.0 : 0.0; for (i = 0; i < bufsize; i++) { if (outbuf[i] != value) { if (errcnt < 10) printf("outbuf[%d] = %f, should = %f\n", i, outbuf[i], value); errcnt++; } } free(inbuf); free(outbuf); bufsize *= 2; } MPI_Allreduce(&errcnt, &toterr, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (rank == 0) { if (toterr == 0) printf(" No Errors\n"); else printf("*! %d errors!\n", toterr); } MPI_Op_free(&op); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/reduce.c0000644000175000017500000000317212620254305016727 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "A simple test of Reduce with all choices of root process"; */ int main(int argc, char *argv[]) { int errs = 0; int rank, size, root; int *sendbuf, *recvbuf, i; int minsize = 2, count; MPI_Comm comm; MTest_Init(&argc, &argv); while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; /* Determine the sender and receiver */ MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); for (count = 1; count < 130000; count = count * 2) { sendbuf = (int *) malloc(count * sizeof(int)); recvbuf = (int *) malloc(count * sizeof(int)); for (root = 0; root < size; root++) { for (i = 0; i < count; i++) sendbuf[i] = i; for (i = 0; i < count; i++) recvbuf[i] = -1; MPI_Reduce(sendbuf, recvbuf, count, MPI_INT, MPI_SUM, root, comm); if (rank == root) { for (i = 0; i < count; i++) { if (recvbuf[i] != i * size) { errs++; } } } } free(sendbuf); free(recvbuf); } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/coll12.c0000644000175000017500000000415512620254305016556 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include "mpi.h" #include "mpitest.h" #define TABLE_SIZE 2 int main(int argc, char **argv) { int rank, size; double a[TABLE_SIZE]; struct { double a; int b; } in[TABLE_SIZE], out[TABLE_SIZE]; int i; int errors = 0, toterrors; /* Initialize the environment and some variables */ MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); /* Initialize the maxloc data */ for (i = 0; i < TABLE_SIZE; i++) a[i] = 0; for (i = rank; i < TABLE_SIZE; i++) a[i] = (double) rank + 1.0; /* Copy data to the "in" buffer */ for (i = 0; i < TABLE_SIZE; i++) { in[i].a = a[i]; in[i].b = rank; } /* Reduce it! */ MPI_Reduce(in, out, TABLE_SIZE, MPI_DOUBLE_INT, MPI_MAXLOC, 0, MPI_COMM_WORLD); MPI_Bcast(out, TABLE_SIZE, MPI_DOUBLE_INT, 0, MPI_COMM_WORLD); /* Check to see that we got the right answers */ for (i = 0; i < TABLE_SIZE; i++) if (i % size == rank) if (out[i].b != rank) { printf("MAX (ranks[%d] = %d != %d\n", i, out[i].b, rank); errors++; } /* Initialize the minloc data */ for (i = 0; i < TABLE_SIZE; i++) a[i] = 0; for (i = rank; i < TABLE_SIZE; i++) a[i] = -(double) rank - 1.0; /* Copy data to the "in" buffer */ for (i = 0; i < TABLE_SIZE; i++) { in[i].a = a[i]; in[i].b = rank; } /* Reduce it! */ MPI_Allreduce(in, out, TABLE_SIZE, MPI_DOUBLE_INT, MPI_MINLOC, MPI_COMM_WORLD); /* Check to see that we got the right answers */ for (i = 0; i < TABLE_SIZE; i++) if (i % size == rank) if (out[i].b != rank) { printf("MIN (ranks[%d] = %d != %d\n", i, out[i].b, rank); errors++; } /* Finish up! */ MTest_Finalize(errors); MPI_Finalize(); return MTestReturnValue(errors); } mpi-testsuite-3.2+dfsg/coll/icbcast.c0000644000175000017500000000506312620254305017071 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include "mpicolltest.h" /* static char MTEST_Descrip[] = "Simple intercomm broadcast test"; */ int main(int argc, char *argv[]) { int errs = 0, err; int *buf = 0; int leftGroup, i, count, rank; MPI_Comm comm; MPI_Datatype datatype; MTest_Init(&argc, &argv); datatype = MPI_INT; /* Get an intercommunicator */ while (MTestGetIntercomm(&comm, &leftGroup, 4)) { if (comm == MPI_COMM_NULL) continue; MPI_Comm_rank(comm, &rank); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(comm, MPI_ERRORS_RETURN); for (count = 1; count < 65000; count = 2 * count) { buf = (int *) malloc(count * sizeof(int)); if (leftGroup) { if (rank == 0) { for (i = 0; i < count; i++) buf[i] = i; } else { for (i = 0; i < count; i++) buf[i] = -1; } err = MTest_Bcast(buf, count, datatype, (rank == 0) ? MPI_ROOT : MPI_PROC_NULL, comm); if (err) { errs++; MTestPrintError(err); } /* Test that no other process in this group received the * broadcast */ if (rank != 0) { for (i = 0; i < count; i++) { if (buf[i] != -1) { errs++; } } } } else { /* In the right group */ for (i = 0; i < count; i++) buf[i] = -1; err = MTest_Bcast(buf, count, datatype, 0, comm); if (err) { errs++; MTestPrintError(err); } /* Check that we have received the correct data */ for (i = 0; i < count; i++) { if (buf[i] != i) { errs++; } } } free(buf); } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/red_scat_block.c0000644000175000017500000000416512620254305020421 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2009 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * Test of reduce scatter block. * * Each process contributes its rank + the index to the reduction, * then receives the ith sum * * Can be called with any number of processes. */ #include "mpi.h" #include "mpitest.h" #include #include int main(int argc, char **argv) { int err = 0; int toterr, size, rank, i, sumval; int *sendbuf; int *recvbuf; MPI_Comm comm; MPI_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_Comm_size(comm, &size); MPI_Comm_rank(comm, &rank); #if MTEST_HAVE_MIN_MPI_VERSION(2,2) /* MPI_Reduce_scatter block was added in MPI-2.2 */ sendbuf = (int *) malloc(size * sizeof(int)); recvbuf = (int *) malloc(size * sizeof(int)); if (!sendbuf || !recvbuf) { err++; fprintf(stderr, "unable to allocate send/recv buffers, aborting"); MPI_Abort(MPI_COMM_WORLD, 1); } for (i = 0; i < size; i++) sendbuf[i] = rank + i; MPI_Reduce_scatter_block(sendbuf, recvbuf, 1, MPI_INT, MPI_SUM, comm); sumval = size * rank + ((size - 1) * size) / 2; if (recvbuf[0] != sumval) { err++; fprintf(stdout, "Did not get expected value for reduce scatter block\n"); fprintf(stdout, "[%d] Got %d expected %d\n", rank, recvbuf[0], sumval); } free(sendbuf); /* let's try it again with MPI_IN_PLACE this time */ for (i = 0; i < size; i++) recvbuf[i] = rank + i; MPI_Reduce_scatter_block(MPI_IN_PLACE, recvbuf, 1, MPI_INT, MPI_SUM, comm); sumval = size * rank + ((size - 1) * size) / 2; if (recvbuf[0] != sumval) { err++; fprintf(stdout, "Did not get expected value for reduce scatter block\n"); fprintf(stdout, "[%d] Got %d expected %d\n", rank, recvbuf[0], sumval); } free(recvbuf); #endif MPI_Allreduce(&err, &toterr, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD); if (rank == 0 && toterr == 0) { printf(" No Errors\n"); } MPI_Finalize(); return toterr; } mpi-testsuite-3.2+dfsg/coll/scantst.c0000644000175000017500000000571312620254305017142 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" void addem(int *, int *, int *, MPI_Datatype *); void assoc(int *, int *, int *, MPI_Datatype *); void addem(int *invec, int *inoutvec, int *len, MPI_Datatype * dtype) { int i; for (i = 0; i < *len; i++) inoutvec[i] += invec[i]; } #define BAD_ANSWER 100000 /* The operation is inoutvec[i] = invec[i] op inoutvec[i] (see 4.9.4). The order is important. Note that the computation is in process rank (in the communicator) order, independant of the root. */ void assoc(int *invec, int *inoutvec, int *len, MPI_Datatype * dtype) { int i; for (i = 0; i < *len; i++) { if (inoutvec[i] <= invec[i]) { int rank; MPI_Comm_rank(MPI_COMM_WORLD, &rank); fprintf(stderr, "[%d] inout[0] = %d, in[0] = %d\n", rank, inoutvec[0], invec[0]); inoutvec[i] = BAD_ANSWER; } else inoutvec[i] = invec[i]; } } int main(int argc, char **argv) { int rank, size, i; int data; int errors = 0; int result = -100; int correct_result; MPI_Op op_assoc, op_addem; MPI_Comm comm = MPI_COMM_WORLD; MPI_Init(&argc, &argv); MPI_Op_create((MPI_User_function *) assoc, 0, &op_assoc); MPI_Op_create((MPI_User_function *) addem, 1, &op_addem); /* Run this for a variety of communicator sizes */ MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); data = rank; correct_result = 0; for (i = 0; i <= rank; i++) correct_result += i; MPI_Scan(&data, &result, 1, MPI_INT, MPI_SUM, comm); if (result != correct_result) { fprintf(stderr, "[%d] Error suming ints with scan\n", rank); errors++; } MPI_Scan(&data, &result, 1, MPI_INT, MPI_SUM, comm); if (result != correct_result) { fprintf(stderr, "[%d] Error summing ints with scan (2)\n", rank); errors++; } data = rank; result = -100; MPI_Scan(&data, &result, 1, MPI_INT, op_addem, comm); if (result != correct_result) { fprintf(stderr, "[%d] Error summing ints with scan (userop)\n", rank); errors++; } MPI_Scan(&data, &result, 1, MPI_INT, op_addem, comm); if (result != correct_result) { fprintf(stderr, "[%d] Error summing ints with scan (userop2)\n", rank); errors++; } result = -100; data = rank; MPI_Scan(&data, &result, 1, MPI_INT, op_assoc, comm); if (result == BAD_ANSWER) { fprintf(stderr, "[%d] Error scanning with non-commutative op\n", rank); errors++; } MPI_Op_free(&op_assoc); MPI_Op_free(&op_addem); MPI_Finalize(); if (errors) printf("[%d] done with ERRORS(%d)!\n", rank, errors); else { if (rank == 0) printf(" No Errors\n"); } return errors; } mpi-testsuite-3.2+dfsg/coll/redscatbkinter.c0000644000175000017500000000577112620254305020473 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2011 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * Test of reduce scatter block with large data on an intercommunicator * (needed in MPICH to trigger the long-data algorithm) * * Each processor contributes its rank + the index to the reduction, * then receives the ith sum * * Can be called with any number of processors. */ #include "mpi.h" #include #include #include "mpitest.h" int main(int argc, char **argv) { int err = 0; int size, rsize, rank, i; int recvcount, /* Each process receives this much data */ sendcount, /* Each process contributes this much data */ basecount; /* Unit of elements - basecount *rsize is recvcount, * etc. */ int isLeftGroup; long long *sendbuf, *recvbuf; long long sumval; MPI_Comm comm; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; basecount = 1024; while (MTestGetIntercomm(&comm, &isLeftGroup, 2)) { if (comm == MPI_COMM_NULL) continue; MPI_Comm_remote_size(comm, &rsize); MPI_Comm_size(comm, &size); MPI_Comm_rank(comm, &rank); if (0) { printf("[%d] %s (%d,%d) remote %d\n", rank, isLeftGroup ? "L" : "R", rank, size, rsize); } recvcount = basecount * rsize; sendcount = basecount * rsize * size; sendbuf = (long long *) malloc(sendcount * sizeof(long long)); if (!sendbuf) { fprintf(stderr, "Could not allocate %d ints for sendbuf\n", sendcount); MPI_Abort(MPI_COMM_WORLD, 1); } for (i = 0; i < sendcount; i++) { sendbuf[i] = (long long) (rank * sendcount + i); } recvbuf = (long long *) malloc(recvcount * sizeof(long long)); if (!recvbuf) { fprintf(stderr, "Could not allocate %d ints for recvbuf\n", recvcount); MPI_Abort(MPI_COMM_WORLD, 1); } for (i = 0; i < recvcount; i++) { recvbuf[i] = (long long) (-i); } MPI_Reduce_scatter_block(sendbuf, recvbuf, recvcount, MPI_LONG_LONG, MPI_SUM, comm); /* Check received data */ for (i = 0; i < recvcount; i++) { sumval = (long long) (sendcount) * (long long) ((rsize * (rsize - 1)) / 2) + (long long) (i + rank * rsize * basecount) * (long long) rsize; if (recvbuf[i] != sumval) { err++; if (err < 4) { fprintf(stdout, "Did not get expected value for reduce scatter\n"); fprintf(stdout, "[%d] %s recvbuf[%d] = %lld, expected %lld\n", rank, isLeftGroup ? "L" : "R", i, recvbuf[i], sumval); } } } free(sendbuf); free(recvbuf); MTestFreeComm(&comm); } MTest_Finalize(err); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/redscatinter.c0000644000175000017500000000653412620254305020154 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2011 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * Test of reduce scatter with large data on an intercommunicator * (needed in MPICH to trigger the long-data algorithm) * * Each processor contributes its rank + the index to the reduction, * then receives the ith sum * * Can be called with any number of processors. */ #include "mpi.h" #include #include #include "mpitest.h" #include "mpicolltest.h" int main(int argc, char **argv) { int err = 0; int *recvcounts; int size, rsize, rank, i; int recvcount, /* Each process receives this much data */ sendcount, /* Each process contributes this much data */ basecount; /* Unit of elements - basecount *rsize is recvcount, * etc. */ int isLeftGroup; long long *sendbuf, *recvbuf; long long sumval; MPI_Comm comm; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; basecount = 1024; while (MTestGetIntercomm(&comm, &isLeftGroup, 2)) { if (comm == MPI_COMM_NULL) continue; MPI_Comm_remote_size(comm, &rsize); MPI_Comm_size(comm, &size); MPI_Comm_rank(comm, &rank); if (0) { printf("[%d] %s (%d,%d) remote %d\n", rank, isLeftGroup ? "L" : "R", rank, size, rsize); } recvcount = basecount * rsize; sendcount = basecount * rsize * size; recvcounts = (int *) malloc(size * sizeof(int)); if (!recvcounts) { fprintf(stderr, "Could not allocate %d int for recvcounts\n", size); MPI_Abort(MPI_COMM_WORLD, 1); } for (i = 0; i < size; i++) recvcounts[i] = recvcount; sendbuf = (long long *) malloc(sendcount * sizeof(long long)); if (!sendbuf) { fprintf(stderr, "Could not allocate %d ints for sendbuf\n", sendcount); MPI_Abort(MPI_COMM_WORLD, 1); } for (i = 0; i < sendcount; i++) { sendbuf[i] = (long long) (rank * sendcount + i); } recvbuf = (long long *) malloc(recvcount * sizeof(long long)); if (!recvbuf) { fprintf(stderr, "Could not allocate %d ints for recvbuf\n", recvcount); MPI_Abort(MPI_COMM_WORLD, 1); } for (i = 0; i < recvcount; i++) { recvbuf[i] = (long long) (-i); } MTest_Reduce_scatter(sendbuf, recvbuf, recvcounts, MPI_LONG_LONG, MPI_SUM, comm); /* Check received data */ for (i = 0; i < recvcount; i++) { sumval = (long long) (sendcount) * (long long) ((rsize * (rsize - 1)) / 2) + (long long) (i + rank * rsize * basecount) * (long long) rsize; if (recvbuf[i] != sumval) { err++; if (err < 4) { fprintf(stdout, "Did not get expected value for reduce scatter\n"); fprintf(stdout, "[%d] %s recvbuf[%d] = %lld, expected %lld\n", rank, isLeftGroup ? "L" : "R", i, recvbuf[i], sumval); } } } free(sendbuf); free(recvbuf); free(recvcounts); MTestFreeComm(&comm); } MTest_Finalize(err); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/oplor.c0000644000175000017500000001776612620254305016631 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test MPI_LOR operations on optional datatypes dupported by MPICH"; */ /* * This test looks at the handling of logical and for types that are not * integers or are not required integers (e.g., long long). MPICH allows * these as well. A strict MPI test should not include this test. */ int main(int argc, char *argv[]) { int errs = 0, err; int rank, size; MPI_Comm comm; char cinbuf[3], coutbuf[3]; signed char scinbuf[3], scoutbuf[3]; unsigned char ucinbuf[3], ucoutbuf[3]; float finbuf[3], foutbuf[3]; double dinbuf[3], doutbuf[3]; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); /* Some MPI implementations do not implement all of the required * (datatype,operations) combinations, and further, they do not * always provide clear and specific error messages. By catching * the error, we can provide a higher quality, more specific message. */ MPI_Comm_set_errhandler(comm, MPI_ERRORS_RETURN); #ifndef USE_STRICT_MPI /* char */ MTestPrintfMsg(10, "Reduce of MPI_CHAR\n"); cinbuf[0] = 1; cinbuf[1] = 0; cinbuf[2] = (rank > 0); coutbuf[0] = 0; coutbuf[1] = 1; coutbuf[2] = 1; err = MPI_Reduce(cinbuf, coutbuf, 3, MPI_CHAR, MPI_LOR, 0, comm); if (err) { errs++; MTestPrintErrorMsg("MPI_LOR and MPI_CHAR", err); } else { if (rank == 0) { if (!coutbuf[0]) { errs++; fprintf(stderr, "char OR(1) test failed\n"); } if (coutbuf[1]) { errs++; fprintf(stderr, "char OR(0) test failed\n"); } if (!coutbuf[2] && size > 1) { errs++; fprintf(stderr, "char OR(>) test failed\n"); } } } #endif /* USE_STRICT_MPI */ /* signed char */ MTestPrintfMsg(10, "Reduce of MPI_SIGNED_CHAR\n"); scinbuf[0] = 1; scinbuf[1] = 0; scinbuf[2] = (rank > 0); scoutbuf[0] = 0; scoutbuf[1] = 1; scoutbuf[2] = 1; err = MPI_Reduce(scinbuf, scoutbuf, 3, MPI_SIGNED_CHAR, MPI_LOR, 0, comm); if (err) { errs++; MTestPrintErrorMsg("MPI_LOR and MPI_SIGNED_CHAR", err); } else { if (rank == 0) { if (!scoutbuf[0]) { errs++; fprintf(stderr, "signed char OR(1) test failed\n"); } if (scoutbuf[1]) { errs++; fprintf(stderr, "signed char OR(0) test failed\n"); } if (!scoutbuf[2] && size > 1) { errs++; fprintf(stderr, "signed char OR(>) test failed\n"); } } } /* unsigned char */ MTestPrintfMsg(10, "Reduce of MPI_UNSIGNED_CHAR\n"); ucinbuf[0] = 1; ucinbuf[1] = 0; ucinbuf[2] = (rank > 0); ucoutbuf[0] = 0; ucoutbuf[1] = 1; ucoutbuf[2] = 1; err = MPI_Reduce(ucinbuf, ucoutbuf, 3, MPI_UNSIGNED_CHAR, MPI_LOR, 0, comm); if (err) { errs++; MTestPrintErrorMsg("MPI_LOR and MPI_UNSIGNED_CHAR", err); } else { if (rank == 0) { if (!ucoutbuf[0]) { errs++; fprintf(stderr, "unsigned char OR(1) test failed\n"); } if (ucoutbuf[1]) { errs++; fprintf(stderr, "unsigned char OR(0) test failed\n"); } if (!ucoutbuf[2] && size > 1) { errs++; fprintf(stderr, "unsigned char OR(>) test failed\n"); } } } #ifndef USE_STRICT_MPI /* float */ MTestPrintfMsg(10, "Reduce of MPI_FLOAT\n"); finbuf[0] = 1; finbuf[1] = 0; finbuf[2] = (rank > 0); foutbuf[0] = 0; foutbuf[1] = 1; foutbuf[2] = 1; err = MPI_Reduce(finbuf, foutbuf, 3, MPI_FLOAT, MPI_LOR, 0, comm); if (err) { errs++; MTestPrintErrorMsg("MPI_LOR and MPI_FLOAT", err); } else { if (rank == 0) { if (!foutbuf[0]) { errs++; fprintf(stderr, "float OR(1) test failed\n"); } if (foutbuf[1]) { errs++; fprintf(stderr, "float OR(0) test failed\n"); } if (!foutbuf[2] && size > 1) { errs++; fprintf(stderr, "float OR(>) test failed\n"); } } } /* double */ MTestPrintfMsg(10, "Reduce of MPI_DOUBLE\n"); dinbuf[0] = 1; dinbuf[1] = 0; dinbuf[2] = (rank > 0); doutbuf[0] = 0; doutbuf[1] = 1; doutbuf[2] = 1; err = MPI_Reduce(dinbuf, doutbuf, 3, MPI_DOUBLE, MPI_LOR, 0, comm); if (err) { errs++; MTestPrintErrorMsg("MPI_LOR and MPI_DOUBLE", err); } else { if (rank == 0) { if (!doutbuf[0]) { errs++; fprintf(stderr, "double OR(1) test failed\n"); } if (doutbuf[1]) { errs++; fprintf(stderr, "double OR(0) test failed\n"); } if (!doutbuf[2] && size > 1) { errs++; fprintf(stderr, "double OR(>) test failed\n"); } } } #ifdef HAVE_LONG_DOUBLE { long double ldinbuf[3], ldoutbuf[3]; /* long double */ ldinbuf[0] = 1; ldinbuf[1] = 0; ldinbuf[2] = (rank > 0); ldoutbuf[0] = 0; ldoutbuf[1] = 1; ldoutbuf[2] = 1; if (MPI_LONG_DOUBLE != MPI_DATATYPE_NULL) { MTestPrintfMsg(10, "Reduce of MPI_LONG_DOUBLE\n"); err = MPI_Reduce(ldinbuf, ldoutbuf, 3, MPI_LONG_DOUBLE, MPI_LOR, 0, comm); if (err) { errs++; MTestPrintErrorMsg("MPI_LOR and MPI_LONG_DOUBLE", err); } else { if (rank == 0) { if (!ldoutbuf[0]) { errs++; fprintf(stderr, "long double OR(1) test failed\n"); } if (ldoutbuf[1]) { errs++; fprintf(stderr, "long double OR(0) test failed\n"); } if (!ldoutbuf[2] && size > 1) { errs++; fprintf(stderr, "long double OR(>) test failed\n"); } } } } } #endif /* HAVE_LONG_DOUBLE */ #endif /* USE_STRICT_MPI */ #ifdef HAVE_LONG_LONG { long long llinbuf[3], lloutbuf[3]; /* long long */ llinbuf[0] = 1; llinbuf[1] = 0; llinbuf[2] = (rank > 0); lloutbuf[0] = 0; lloutbuf[1] = 1; lloutbuf[2] = 1; if (MPI_LONG_LONG != MPI_DATATYPE_NULL) { MTestPrintfMsg(10, "Reduce of MPI_LONG_LONG\n"); err = MPI_Reduce(llinbuf, lloutbuf, 3, MPI_LONG_LONG, MPI_LOR, 0, comm); if (err) { errs++; MTestPrintErrorMsg("MPI_LOR and MPI_LONG_LONG", err); } else { if (rank == 0) { if (!lloutbuf[0]) { errs++; fprintf(stderr, "long long OR(1) test failed\n"); } if (lloutbuf[1]) { errs++; fprintf(stderr, "long long OR(0) test failed\n"); } if (!lloutbuf[2] && size > 1) { errs++; fprintf(stderr, "long long OR(>) test failed\n"); } } } } } #endif MPI_Errhandler_set(comm, MPI_ERRORS_ARE_FATAL); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/scatterv.c0000644000175000017500000001347612620254305017323 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include /* Prototypes for picky compilers */ void SetData(double *, double *, int, int, int, int, int, int); int CheckData(double *, int, int, int, int, int, int); /* This is an example of using scatterv to send a matrix from one process to all others, with the matrix stored in Fortran order. Note the use of an explicit UB to enable the sources to overlap. This tests scatterv to make sure that it uses the datatype size and extent correctly. It requires number of processors that can be split with MPI_Dims_create. */ void SetData(double *sendbuf, double *recvbuf, int nx, int ny, int myrow, int mycol, int nrow, int ncol) { int coldim, i, j, m, k; double *p; if (myrow == 0 && mycol == 0) { coldim = nx * nrow; for (j = 0; j < ncol; j++) { for (i = 0; i < nrow; i++) { p = sendbuf + i * nx + j * (ny * coldim); for (m = 0; m < ny; m++) { for (k = 0; k < nx; k++) { p[k] = 1000 * j + 100 * i + m * nx + k; } p += coldim; } } } } for (i = 0; i < nx * ny; i++) recvbuf[i] = -1.0; } int CheckData(double *recvbuf, int nx, int ny, int myrow, int mycol, int nrow, int expect_no_value) { int coldim, m, k; double *p, val; int errs = 0; coldim = nx; p = recvbuf; for (m = 0; m < ny; m++) { for (k = 0; k < nx; k++) { /* If expect_no_value is true then we assume that the pre-scatterv * value should remain in the recvbuf for our portion of the array. * This is the case for the root process when using MPI_IN_PLACE. */ if (expect_no_value) val = -1.0; else val = 1000 * mycol + 100 * myrow + m * nx + k; if (p[k] != val) { errs++; if (errs < 10) { printf("Error in (%d,%d) [%d,%d] location, got %f expected %f\n", m, k, myrow, mycol, p[k], val); } else if (errs == 10) { printf("Too many errors; suppressing printing\n"); } } } p += coldim; } return errs; } int main(int argc, char **argv) { int rank, size, myrow, mycol, nx, ny, stride, cnt, i, j, errs, errs_in_place, tot_errs; double *sendbuf, *recvbuf; MPI_Datatype vec, block, types[2]; MPI_Aint displs[2]; int *scdispls; int blens[2]; MPI_Comm comm2d; int dims[2], periods[2], coords[2], lcoords[2]; int *sendcounts; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); /* Get a 2-d decomposition of the processes */ dims[0] = 0; dims[1] = 0; MPI_Dims_create(size, 2, dims); periods[0] = 0; periods[1] = 0; MPI_Cart_create(MPI_COMM_WORLD, 2, dims, periods, 0, &comm2d); MPI_Cart_get(comm2d, 2, dims, periods, coords); myrow = coords[0]; mycol = coords[1]; /* if (rank == 0) printf("Decomposition is [%d x %d]\n", dims[0], dims[1]); */ /* Get the size of the matrix */ nx = 10; ny = 8; stride = nx * dims[0]; recvbuf = (double *) malloc(nx * ny * sizeof(double)); if (!recvbuf) { MPI_Abort(MPI_COMM_WORLD, 1); } sendbuf = 0; if (myrow == 0 && mycol == 0) { sendbuf = (double *) malloc(nx * ny * size * sizeof(double)); if (!sendbuf) { MPI_Abort(MPI_COMM_WORLD, 1); } } sendcounts = (int *) malloc(size * sizeof(int)); scdispls = (int *) malloc(size * sizeof(int)); MPI_Type_vector(ny, nx, stride, MPI_DOUBLE, &vec); blens[0] = 1; blens[1] = 1; types[0] = vec; types[1] = MPI_UB; displs[0] = 0; displs[1] = nx * sizeof(double); MPI_Type_struct(2, blens, displs, types, &block); MPI_Type_free(&vec); MPI_Type_commit(&block); /* Set up the transfer */ cnt = 0; for (i = 0; i < dims[1]; i++) { for (j = 0; j < dims[0]; j++) { sendcounts[cnt] = 1; /* Using Cart_coords makes sure that ranks (used by * sendrecv) matches the cartesian coordinates (used to * set data in the matrix) */ MPI_Cart_coords(comm2d, cnt, 2, lcoords); scdispls[cnt++] = lcoords[0] + lcoords[1] * (dims[0] * ny); } } SetData(sendbuf, recvbuf, nx, ny, myrow, mycol, dims[0], dims[1]); MPI_Scatterv(sendbuf, sendcounts, scdispls, block, recvbuf, nx * ny, MPI_DOUBLE, 0, comm2d); if ((errs = CheckData(recvbuf, nx, ny, myrow, mycol, dims[0], 0))) { fprintf(stdout, "Failed to transfer data\n"); } /* once more, but this time passing MPI_IN_PLACE for the root */ SetData(sendbuf, recvbuf, nx, ny, myrow, mycol, dims[0], dims[1]); MPI_Scatterv(sendbuf, sendcounts, scdispls, block, (rank == 0 ? MPI_IN_PLACE : recvbuf), nx * ny, MPI_DOUBLE, 0, comm2d); errs_in_place = CheckData(recvbuf, nx, ny, myrow, mycol, dims[0], (rank == 0)); if (errs_in_place) { fprintf(stdout, "Failed to transfer data (MPI_IN_PLACE)\n"); } errs += errs_in_place; MPI_Allreduce(&errs, &tot_errs, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD); if (rank == 0) { if (tot_errs == 0) printf(" No Errors\n"); else printf("%d errors in use of MPI_SCATTERV\n", tot_errs); } if (sendbuf) free(sendbuf); free(recvbuf); free(sendcounts); free(scdispls); MPI_Type_free(&block); MPI_Comm_free(&comm2d); MPI_Finalize(); return errs; } mpi-testsuite-3.2+dfsg/coll/redscat3.c0000644000175000017500000000576212620254305017177 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2010 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * Test of reduce scatter with large data (needed in MPICH to trigger the * long-data algorithm) * * Each processor contributes its rank + the index to the reduction, * then receives the ith sum * * Can be called with any number of processors. */ #include "mpi.h" #include #include #include "mpitest.h" #include "mpicolltest.h" /* Limit the number of error reports */ #define MAX_ERRORS 10 int main(int argc, char **argv) { int err = 0; int *sendbuf, *recvbuf, *recvcounts; int size, rank, i, j, idx, mycount, sumval; MPI_Comm comm; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_Comm_size(comm, &size); MPI_Comm_rank(comm, &rank); recvcounts = (int *) malloc(size * sizeof(int)); if (!recvcounts) { fprintf(stderr, "Could not allocate %d ints for recvcounts\n", size); MPI_Abort(MPI_COMM_WORLD, 1); } mycount = (1024 * 1024) / size; for (i = 0; i < size; i++) recvcounts[i] = mycount; sendbuf = (int *) malloc(mycount * size * sizeof(int)); if (!sendbuf) { fprintf(stderr, "Could not allocate %d ints for sendbuf\n", mycount * size); MPI_Abort(MPI_COMM_WORLD, 1); } idx = 0; for (i = 0; i < size; i++) { for (j = 0; j < mycount; j++) { sendbuf[idx++] = rank + i; } } recvbuf = (int *) malloc(mycount * sizeof(int)); if (!recvbuf) { fprintf(stderr, "Could not allocate %d ints for recvbuf\n", mycount); MPI_Abort(MPI_COMM_WORLD, 1); } for (i = 0; i < mycount; i++) { recvbuf[i] = -1; } MTest_Reduce_scatter(sendbuf, recvbuf, recvcounts, MPI_INT, MPI_SUM, comm); sumval = size * rank + ((size - 1) * size) / 2; /* recvbuf should be size * (rank + i) */ for (i = 0; i < mycount; i++) { if (recvbuf[i] != sumval) { err++; if (err < MAX_ERRORS) { fprintf(stdout, "Did not get expected value for reduce scatter\n"); fprintf(stdout, "[%d] Got recvbuf[%d] = %d expected %d\n", rank, i, recvbuf[i], sumval); } } } #if MTEST_HAVE_MIN_MPI_VERSION(2,2) MTest_Reduce_scatter(MPI_IN_PLACE, sendbuf, recvcounts, MPI_INT, MPI_SUM, comm); sumval = size * rank + ((size - 1) * size) / 2; /* recv'ed values for my process should be size * (rank + i) */ for (i = 0; i < mycount; i++) { if (sendbuf[i] != sumval) { err++; if (err < MAX_ERRORS) { fprintf(stdout, "Did not get expected value for reduce scatter (in place)\n"); fprintf(stdout, "[%d] Got buf[%d] = %d expected %d\n", rank, i, sendbuf[i], sumval); } } } #endif free(sendbuf); free(recvbuf); free(recvcounts); MTest_Finalize(err); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/alltoall1.c0000644000175000017500000001000612620254305017337 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" #include #include "mpicolltest.h" /* static char MTEST_Descrip[] = ""; */ int main(int argc, char *argv[]) { int errs = 0; int rank, size; int minsize = 2, count; MPI_Comm comm; int *sendbuf, *recvbuf, *p; int sendcount, recvcount; int i, j; MPI_Datatype sendtype, recvtype; MTest_Init(&argc, &argv); /* The following illustrates the use of the routines to * run through a selection of communicators and datatypes. * Use subsets of these for tests that do not involve combinations * of communicators, datatypes, and counts of datatypes */ while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; /* Determine the sender and receiver */ MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); /* printf("Size of comm = %d\n", size); */ for (count = 1; count < 65000; count = count * 2) { /* Create a send buf and a receive buf suitable for testing * all to all. */ sendcount = count; recvcount = count; sendbuf = (int *) malloc(count * size * sizeof(int)); recvbuf = (int *) malloc(count * size * sizeof(int)); sendtype = MPI_INT; recvtype = MPI_INT; if (!sendbuf || !recvbuf) { errs++; fprintf(stderr, "Failed to allocate sendbuf and/or recvbuf\n"); MPI_Abort(MPI_COMM_WORLD, 1); } for (i = 0; i < count * size; i++) recvbuf[i] = -1; p = sendbuf; for (j = 0; j < size; j++) { for (i = 0; i < count; i++) { *p++ = j * size + rank + i; } } MTest_Alltoall(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm); p = recvbuf; for (j = 0; j < size; j++) { for (i = 0; i < count; i++) { if (*p != rank * size + j + i) { errs++; if (errs < 10) { fprintf(stderr, "Error with communicator %s and size=%d count=%d\n", MTestGetIntracommName(), size, count); fprintf(stderr, "recvbuf[%d,%d] = %d, should %d\n", j, i, *p, rank * size + j + i); } } p++; } } #if MTEST_HAVE_MIN_MPI_VERSION(2,2) /* check MPI_IN_PLACE, added in MPI-2.2 */ p = recvbuf; for (j = 0; j < size; j++) { for (i = 0; i < count; i++) { *p++ = j * size + rank + i; } } MPI_Alltoall(MPI_IN_PLACE, -1 /*ignored */ , MPI_DATATYPE_NULL /*ignored */ , recvbuf, recvcount, recvtype, comm); p = recvbuf; for (j = 0; j < size; j++) { for (i = 0; i < count; i++) { if (*p != rank * size + j + i) { errs++; if (errs < 10) { fprintf(stderr, "Error (MPI_IN_PLACE) with communicator %s and size=%d count=%d\n", MTestGetIntracommName(), size, count); fprintf(stderr, "recvbuf[%d,%d] = %d, should be %d\n", j, i, *p, rank * size + j + i); } } p++; } } #endif free(recvbuf); free(sendbuf); } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/Makefile.in0000644000175000017500000035501512621010232017355 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = allgather2$(EXEEXT) allgather3$(EXEEXT) \ allgatherv2$(EXEEXT) allgatherv3$(EXEEXT) allgatherv4$(EXEEXT) \ allgather_struct$(EXEEXT) allred$(EXEEXT) allred2$(EXEEXT) \ allred3$(EXEEXT) allred4$(EXEEXT) allred5$(EXEEXT) \ allred6$(EXEEXT) allredmany$(EXEEXT) alltoall1$(EXEEXT) \ alltoallv$(EXEEXT) alltoallv0$(EXEEXT) alltoallw1$(EXEEXT) \ alltoallw2$(EXEEXT) alltoallw_zeros$(EXEEXT) \ bcast_full$(EXEEXT) bcast_min_datatypes$(EXEEXT) \ bcast_comm_world$(EXEEXT) bcasttest$(EXEEXT) \ bcastzerotype$(EXEEXT) coll2$(EXEEXT) coll3$(EXEEXT) \ coll4$(EXEEXT) coll5$(EXEEXT) coll6$(EXEEXT) coll7$(EXEEXT) \ coll8$(EXEEXT) coll9$(EXEEXT) coll10$(EXEEXT) coll11$(EXEEXT) \ coll12$(EXEEXT) coll13$(EXEEXT) exscan$(EXEEXT) \ exscan2$(EXEEXT) gather$(EXEEXT) gather2$(EXEEXT) \ gather_big$(EXEEXT) iallred$(EXEEXT) ibarrier$(EXEEXT) \ icallgather$(EXEEXT) icallgatherv$(EXEEXT) \ icallreduce$(EXEEXT) icalltoall$(EXEEXT) icalltoallv$(EXEEXT) \ icalltoallw$(EXEEXT) icbarrier$(EXEEXT) icbcast$(EXEEXT) \ icgather$(EXEEXT) icgatherv$(EXEEXT) icreduce$(EXEEXT) \ icscatter$(EXEEXT) icscatterv$(EXEEXT) longuser$(EXEEXT) \ nonblocking$(EXEEXT) nonblocking2$(EXEEXT) \ nonblocking3$(EXEEXT) op_commutative$(EXEEXT) opband$(EXEEXT) \ opbor$(EXEEXT) opbxor$(EXEEXT) opland$(EXEEXT) oplor$(EXEEXT) \ oplxor$(EXEEXT) opmax$(EXEEXT) opmaxloc$(EXEEXT) \ opmin$(EXEEXT) opminloc$(EXEEXT) opprod$(EXEEXT) \ opsum$(EXEEXT) red3$(EXEEXT) red4$(EXEEXT) \ red_scat_block$(EXEEXT) red_scat_block2$(EXEEXT) \ redscat$(EXEEXT) redscat2$(EXEEXT) redscat3$(EXEEXT) \ redscatblk3$(EXEEXT) redscatinter$(EXEEXT) \ redscatbkinter$(EXEEXT) reduce$(EXEEXT) reduce_local$(EXEEXT) \ scantst$(EXEEXT) scatter2$(EXEEXT) scatter3$(EXEEXT) \ scattern$(EXEEXT) scatterv$(EXEEXT) uoplong$(EXEEXT) \ nballtoall1$(EXEEXT) nbredscat$(EXEEXT) nbredscat3$(EXEEXT) \ nbredscatinter$(EXEEXT) nbcoll2$(EXEEXT) nbicbarrier$(EXEEXT) \ nbicallgather$(EXEEXT) nbicallgatherv$(EXEEXT) \ nbicallreduce$(EXEEXT) nbicbcast$(EXEEXT) \ nbicalltoall$(EXEEXT) nbicalltoallw$(EXEEXT) \ nbicalltoallv$(EXEEXT) nbicgather$(EXEEXT) \ nbicgatherv$(EXEEXT) nbicreduce$(EXEEXT) nbicscatter$(EXEEXT) \ nbicscatterv$(EXEEXT) subdir = coll ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = testlist CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) allgather2_SOURCES = allgather2.c allgather2_OBJECTS = allgather2.$(OBJEXT) allgather2_LDADD = $(LDADD) allgather2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o allgather3_SOURCES = allgather3.c allgather3_OBJECTS = allgather3.$(OBJEXT) allgather3_LDADD = $(LDADD) allgather3_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o allgather_struct_SOURCES = allgather_struct.c allgather_struct_OBJECTS = allgather_struct.$(OBJEXT) allgather_struct_LDADD = $(LDADD) allgather_struct_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o allgatherv2_SOURCES = allgatherv2.c allgatherv2_OBJECTS = allgatherv2.$(OBJEXT) allgatherv2_LDADD = $(LDADD) allgatherv2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o allgatherv3_SOURCES = allgatherv3.c allgatherv3_OBJECTS = allgatherv3.$(OBJEXT) allgatherv3_LDADD = $(LDADD) allgatherv3_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o allgatherv4_SOURCES = allgatherv4.c allgatherv4_OBJECTS = allgatherv4.$(OBJEXT) allgatherv4_DEPENDENCIES = $(LDADD) allred_SOURCES = allred.c allred_OBJECTS = allred.$(OBJEXT) allred_LDADD = $(LDADD) allred_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o allred2_SOURCES = allred2.c allred2_OBJECTS = allred2.$(OBJEXT) allred2_LDADD = $(LDADD) allred2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o allred3_SOURCES = allred3.c allred3_OBJECTS = allred3.$(OBJEXT) allred3_LDADD = $(LDADD) allred3_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o allred4_SOURCES = allred4.c allred4_OBJECTS = allred4.$(OBJEXT) allred4_LDADD = $(LDADD) allred4_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o allred5_SOURCES = allred5.c allred5_OBJECTS = allred5.$(OBJEXT) allred5_LDADD = $(LDADD) allred5_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o allred6_SOURCES = allred6.c allred6_OBJECTS = allred6.$(OBJEXT) allred6_LDADD = $(LDADD) allred6_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o allredmany_SOURCES = allredmany.c allredmany_OBJECTS = allredmany.$(OBJEXT) allredmany_LDADD = $(LDADD) allredmany_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o alltoall1_SOURCES = alltoall1.c alltoall1_OBJECTS = alltoall1.$(OBJEXT) alltoall1_LDADD = $(LDADD) alltoall1_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o alltoallv_SOURCES = alltoallv.c alltoallv_OBJECTS = alltoallv.$(OBJEXT) alltoallv_LDADD = $(LDADD) alltoallv_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o alltoallv0_SOURCES = alltoallv0.c alltoallv0_OBJECTS = alltoallv0.$(OBJEXT) alltoallv0_LDADD = $(LDADD) alltoallv0_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o alltoallw1_SOURCES = alltoallw1.c alltoallw1_OBJECTS = alltoallw1.$(OBJEXT) alltoallw1_LDADD = $(LDADD) alltoallw1_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o alltoallw2_SOURCES = alltoallw2.c alltoallw2_OBJECTS = alltoallw2.$(OBJEXT) alltoallw2_LDADD = $(LDADD) alltoallw2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o alltoallw_zeros_SOURCES = alltoallw_zeros.c alltoallw_zeros_OBJECTS = alltoallw_zeros.$(OBJEXT) alltoallw_zeros_LDADD = $(LDADD) alltoallw_zeros_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_bcast_comm_world_OBJECTS = bcast_comm_world-bcast.$(OBJEXT) bcast_comm_world_OBJECTS = $(am_bcast_comm_world_OBJECTS) bcast_comm_world_LDADD = $(LDADD) bcast_comm_world_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_bcast_full_OBJECTS = bcast.$(OBJEXT) bcast_full_OBJECTS = $(am_bcast_full_OBJECTS) bcast_full_LDADD = $(LDADD) bcast_full_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_bcast_min_datatypes_OBJECTS = bcast_min_datatypes-bcast.$(OBJEXT) bcast_min_datatypes_OBJECTS = $(am_bcast_min_datatypes_OBJECTS) bcast_min_datatypes_LDADD = $(LDADD) bcast_min_datatypes_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o bcasttest_SOURCES = bcasttest.c bcasttest_OBJECTS = bcasttest.$(OBJEXT) bcasttest_LDADD = $(LDADD) bcasttest_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o bcastzerotype_SOURCES = bcastzerotype.c bcastzerotype_OBJECTS = bcastzerotype.$(OBJEXT) bcastzerotype_LDADD = $(LDADD) bcastzerotype_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o coll10_SOURCES = coll10.c coll10_OBJECTS = coll10.$(OBJEXT) coll10_LDADD = $(LDADD) coll10_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o coll11_SOURCES = coll11.c coll11_OBJECTS = coll11.$(OBJEXT) coll11_LDADD = $(LDADD) coll11_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o coll12_SOURCES = coll12.c coll12_OBJECTS = coll12.$(OBJEXT) coll12_LDADD = $(LDADD) coll12_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o coll13_SOURCES = coll13.c coll13_OBJECTS = coll13.$(OBJEXT) coll13_LDADD = $(LDADD) coll13_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o coll2_SOURCES = coll2.c coll2_OBJECTS = coll2.$(OBJEXT) coll2_LDADD = $(LDADD) coll2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o coll3_SOURCES = coll3.c coll3_OBJECTS = coll3.$(OBJEXT) coll3_LDADD = $(LDADD) coll3_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o coll4_SOURCES = coll4.c coll4_OBJECTS = coll4.$(OBJEXT) coll4_LDADD = $(LDADD) coll4_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o coll5_SOURCES = coll5.c coll5_OBJECTS = coll5.$(OBJEXT) coll5_LDADD = $(LDADD) coll5_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o coll6_SOURCES = coll6.c coll6_OBJECTS = coll6.$(OBJEXT) coll6_LDADD = $(LDADD) coll6_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o coll7_SOURCES = coll7.c coll7_OBJECTS = coll7.$(OBJEXT) coll7_LDADD = $(LDADD) coll7_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o coll8_SOURCES = coll8.c coll8_OBJECTS = coll8.$(OBJEXT) coll8_LDADD = $(LDADD) coll8_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o coll9_SOURCES = coll9.c coll9_OBJECTS = coll9.$(OBJEXT) coll9_LDADD = $(LDADD) coll9_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o exscan_SOURCES = exscan.c exscan_OBJECTS = exscan.$(OBJEXT) exscan_LDADD = $(LDADD) exscan_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o exscan2_SOURCES = exscan2.c exscan2_OBJECTS = exscan2.$(OBJEXT) exscan2_LDADD = $(LDADD) exscan2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o gather_SOURCES = gather.c gather_OBJECTS = gather.$(OBJEXT) gather_LDADD = $(LDADD) gather_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o gather2_SOURCES = gather2.c gather2_OBJECTS = gather2.$(OBJEXT) gather2_LDADD = $(LDADD) gather2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o gather_big_SOURCES = gather_big.c gather_big_OBJECTS = gather_big.$(OBJEXT) gather_big_LDADD = $(LDADD) gather_big_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o iallred_SOURCES = iallred.c iallred_OBJECTS = iallred.$(OBJEXT) iallred_LDADD = $(LDADD) iallred_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o ibarrier_SOURCES = ibarrier.c ibarrier_OBJECTS = ibarrier.$(OBJEXT) ibarrier_LDADD = $(LDADD) ibarrier_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o icallgather_SOURCES = icallgather.c icallgather_OBJECTS = icallgather.$(OBJEXT) icallgather_LDADD = $(LDADD) icallgather_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o icallgatherv_SOURCES = icallgatherv.c icallgatherv_OBJECTS = icallgatherv.$(OBJEXT) icallgatherv_LDADD = $(LDADD) icallgatherv_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o icallreduce_SOURCES = icallreduce.c icallreduce_OBJECTS = icallreduce.$(OBJEXT) icallreduce_LDADD = $(LDADD) icallreduce_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o icalltoall_SOURCES = icalltoall.c icalltoall_OBJECTS = icalltoall.$(OBJEXT) icalltoall_LDADD = $(LDADD) icalltoall_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o icalltoallv_SOURCES = icalltoallv.c icalltoallv_OBJECTS = icalltoallv.$(OBJEXT) icalltoallv_LDADD = $(LDADD) icalltoallv_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o icalltoallw_SOURCES = icalltoallw.c icalltoallw_OBJECTS = icalltoallw.$(OBJEXT) icalltoallw_LDADD = $(LDADD) icalltoallw_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o icbarrier_SOURCES = icbarrier.c icbarrier_OBJECTS = icbarrier.$(OBJEXT) icbarrier_LDADD = $(LDADD) icbarrier_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o icbcast_SOURCES = icbcast.c icbcast_OBJECTS = icbcast.$(OBJEXT) icbcast_LDADD = $(LDADD) icbcast_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o icgather_SOURCES = icgather.c icgather_OBJECTS = icgather.$(OBJEXT) icgather_LDADD = $(LDADD) icgather_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o icgatherv_SOURCES = icgatherv.c icgatherv_OBJECTS = icgatherv.$(OBJEXT) icgatherv_LDADD = $(LDADD) icgatherv_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o icreduce_SOURCES = icreduce.c icreduce_OBJECTS = icreduce.$(OBJEXT) icreduce_LDADD = $(LDADD) icreduce_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o icscatter_SOURCES = icscatter.c icscatter_OBJECTS = icscatter.$(OBJEXT) icscatter_LDADD = $(LDADD) icscatter_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o icscatterv_SOURCES = icscatterv.c icscatterv_OBJECTS = icscatterv.$(OBJEXT) icscatterv_LDADD = $(LDADD) icscatterv_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o longuser_SOURCES = longuser.c longuser_OBJECTS = longuser.$(OBJEXT) longuser_LDADD = $(LDADD) longuser_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_nballtoall1_OBJECTS = nballtoall1-alltoall1.$(OBJEXT) nballtoall1_OBJECTS = $(am_nballtoall1_OBJECTS) nballtoall1_LDADD = $(LDADD) nballtoall1_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_nbcoll2_OBJECTS = nbcoll2-coll2.$(OBJEXT) nbcoll2_OBJECTS = $(am_nbcoll2_OBJECTS) nbcoll2_LDADD = $(LDADD) nbcoll2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_nbicallgather_OBJECTS = nbicallgather-icallgather.$(OBJEXT) nbicallgather_OBJECTS = $(am_nbicallgather_OBJECTS) nbicallgather_LDADD = $(LDADD) nbicallgather_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_nbicallgatherv_OBJECTS = nbicallgatherv-icallgatherv.$(OBJEXT) nbicallgatherv_OBJECTS = $(am_nbicallgatherv_OBJECTS) nbicallgatherv_LDADD = $(LDADD) nbicallgatherv_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_nbicallreduce_OBJECTS = nbicallreduce-icallreduce.$(OBJEXT) nbicallreduce_OBJECTS = $(am_nbicallreduce_OBJECTS) nbicallreduce_LDADD = $(LDADD) nbicallreduce_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_nbicalltoall_OBJECTS = nbicalltoall-icalltoall.$(OBJEXT) nbicalltoall_OBJECTS = $(am_nbicalltoall_OBJECTS) nbicalltoall_LDADD = $(LDADD) nbicalltoall_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_nbicalltoallv_OBJECTS = nbicalltoallv-icalltoallv.$(OBJEXT) nbicalltoallv_OBJECTS = $(am_nbicalltoallv_OBJECTS) nbicalltoallv_LDADD = $(LDADD) nbicalltoallv_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_nbicalltoallw_OBJECTS = nbicalltoallw-icalltoallw.$(OBJEXT) nbicalltoallw_OBJECTS = $(am_nbicalltoallw_OBJECTS) nbicalltoallw_LDADD = $(LDADD) nbicalltoallw_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_nbicbarrier_OBJECTS = nbicbarrier-icbarrier.$(OBJEXT) nbicbarrier_OBJECTS = $(am_nbicbarrier_OBJECTS) nbicbarrier_LDADD = $(LDADD) nbicbarrier_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_nbicbcast_OBJECTS = nbicbcast-icbcast.$(OBJEXT) nbicbcast_OBJECTS = $(am_nbicbcast_OBJECTS) nbicbcast_LDADD = $(LDADD) nbicbcast_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_nbicgather_OBJECTS = nbicgather-icgather.$(OBJEXT) nbicgather_OBJECTS = $(am_nbicgather_OBJECTS) nbicgather_LDADD = $(LDADD) nbicgather_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_nbicgatherv_OBJECTS = nbicgatherv-icgatherv.$(OBJEXT) nbicgatherv_OBJECTS = $(am_nbicgatherv_OBJECTS) nbicgatherv_LDADD = $(LDADD) nbicgatherv_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_nbicreduce_OBJECTS = nbicreduce-icreduce.$(OBJEXT) nbicreduce_OBJECTS = $(am_nbicreduce_OBJECTS) nbicreduce_LDADD = $(LDADD) nbicreduce_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_nbicscatter_OBJECTS = nbicscatter-icscatter.$(OBJEXT) nbicscatter_OBJECTS = $(am_nbicscatter_OBJECTS) nbicscatter_LDADD = $(LDADD) nbicscatter_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_nbicscatterv_OBJECTS = nbicscatterv-icscatterv.$(OBJEXT) nbicscatterv_OBJECTS = $(am_nbicscatterv_OBJECTS) nbicscatterv_LDADD = $(LDADD) nbicscatterv_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_nbredscat_OBJECTS = nbredscat-redscat.$(OBJEXT) nbredscat_OBJECTS = $(am_nbredscat_OBJECTS) nbredscat_LDADD = $(LDADD) nbredscat_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_nbredscat3_OBJECTS = nbredscat3-redscat3.$(OBJEXT) nbredscat3_OBJECTS = $(am_nbredscat3_OBJECTS) nbredscat3_LDADD = $(LDADD) nbredscat3_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_nbredscatinter_OBJECTS = nbredscatinter-redscatinter.$(OBJEXT) nbredscatinter_OBJECTS = $(am_nbredscatinter_OBJECTS) nbredscatinter_LDADD = $(LDADD) nbredscatinter_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o nonblocking_SOURCES = nonblocking.c nonblocking_OBJECTS = nonblocking.$(OBJEXT) nonblocking_LDADD = $(LDADD) nonblocking_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o nonblocking2_SOURCES = nonblocking2.c nonblocking2_OBJECTS = nonblocking2.$(OBJEXT) nonblocking2_LDADD = $(LDADD) nonblocking2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o nonblocking3_SOURCES = nonblocking3.c nonblocking3_OBJECTS = nonblocking3.$(OBJEXT) nonblocking3_LDADD = $(LDADD) nonblocking3_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o op_commutative_SOURCES = op_commutative.c op_commutative_OBJECTS = op_commutative.$(OBJEXT) op_commutative_LDADD = $(LDADD) op_commutative_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o opband_SOURCES = opband.c opband_OBJECTS = opband.$(OBJEXT) opband_LDADD = $(LDADD) opband_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o opbor_SOURCES = opbor.c opbor_OBJECTS = opbor.$(OBJEXT) opbor_LDADD = $(LDADD) opbor_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o opbxor_SOURCES = opbxor.c opbxor_OBJECTS = opbxor.$(OBJEXT) opbxor_LDADD = $(LDADD) opbxor_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o opland_SOURCES = opland.c opland_OBJECTS = opland.$(OBJEXT) opland_LDADD = $(LDADD) opland_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o oplor_SOURCES = oplor.c oplor_OBJECTS = oplor.$(OBJEXT) oplor_LDADD = $(LDADD) oplor_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o oplxor_SOURCES = oplxor.c oplxor_OBJECTS = oplxor.$(OBJEXT) oplxor_LDADD = $(LDADD) oplxor_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o opmax_SOURCES = opmax.c opmax_OBJECTS = opmax.$(OBJEXT) opmax_LDADD = $(LDADD) opmax_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o opmaxloc_SOURCES = opmaxloc.c opmaxloc_OBJECTS = opmaxloc.$(OBJEXT) opmaxloc_LDADD = $(LDADD) opmaxloc_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o opmin_SOURCES = opmin.c opmin_OBJECTS = opmin.$(OBJEXT) opmin_LDADD = $(LDADD) opmin_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o opminloc_SOURCES = opminloc.c opminloc_OBJECTS = opminloc.$(OBJEXT) opminloc_LDADD = $(LDADD) opminloc_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o opprod_SOURCES = opprod.c opprod_OBJECTS = opprod.$(OBJEXT) opprod_LDADD = $(LDADD) opprod_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o opsum_SOURCES = opsum.c opsum_OBJECTS = opsum.$(OBJEXT) opsum_LDADD = $(LDADD) opsum_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o red3_SOURCES = red3.c red3_OBJECTS = red3.$(OBJEXT) red3_LDADD = $(LDADD) red3_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o red4_SOURCES = red4.c red4_OBJECTS = red4.$(OBJEXT) red4_LDADD = $(LDADD) red4_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o red_scat_block_SOURCES = red_scat_block.c red_scat_block_OBJECTS = red_scat_block.$(OBJEXT) red_scat_block_LDADD = $(LDADD) red_scat_block_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o red_scat_block2_SOURCES = red_scat_block2.c red_scat_block2_OBJECTS = red_scat_block2.$(OBJEXT) red_scat_block2_LDADD = $(LDADD) red_scat_block2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o redscat_SOURCES = redscat.c redscat_OBJECTS = redscat.$(OBJEXT) redscat_LDADD = $(LDADD) redscat_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o redscat2_SOURCES = redscat2.c redscat2_OBJECTS = redscat2.$(OBJEXT) redscat2_LDADD = $(LDADD) redscat2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o redscat3_SOURCES = redscat3.c redscat3_OBJECTS = redscat3.$(OBJEXT) redscat3_LDADD = $(LDADD) redscat3_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o redscatbkinter_SOURCES = redscatbkinter.c redscatbkinter_OBJECTS = redscatbkinter.$(OBJEXT) redscatbkinter_LDADD = $(LDADD) redscatbkinter_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o redscatblk3_SOURCES = redscatblk3.c redscatblk3_OBJECTS = redscatblk3.$(OBJEXT) redscatblk3_LDADD = $(LDADD) redscatblk3_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o redscatinter_SOURCES = redscatinter.c redscatinter_OBJECTS = redscatinter.$(OBJEXT) redscatinter_LDADD = $(LDADD) redscatinter_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o reduce_SOURCES = reduce.c reduce_OBJECTS = reduce.$(OBJEXT) reduce_LDADD = $(LDADD) reduce_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o reduce_local_SOURCES = reduce_local.c reduce_local_OBJECTS = reduce_local.$(OBJEXT) reduce_local_LDADD = $(LDADD) reduce_local_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o scantst_SOURCES = scantst.c scantst_OBJECTS = scantst.$(OBJEXT) scantst_LDADD = $(LDADD) scantst_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o scatter2_SOURCES = scatter2.c scatter2_OBJECTS = scatter2.$(OBJEXT) scatter2_LDADD = $(LDADD) scatter2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o scatter3_SOURCES = scatter3.c scatter3_OBJECTS = scatter3.$(OBJEXT) scatter3_LDADD = $(LDADD) scatter3_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o scattern_SOURCES = scattern.c scattern_OBJECTS = scattern.$(OBJEXT) scattern_LDADD = $(LDADD) scattern_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o scatterv_SOURCES = scatterv.c scatterv_OBJECTS = scatterv.$(OBJEXT) scatterv_LDADD = $(LDADD) scatterv_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o uoplong_SOURCES = uoplong.c uoplong_OBJECTS = uoplong.$(OBJEXT) uoplong_LDADD = $(LDADD) uoplong_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = allgather2.c allgather3.c allgather_struct.c allgatherv2.c \ allgatherv3.c allgatherv4.c allred.c allred2.c allred3.c \ allred4.c allred5.c allred6.c allredmany.c alltoall1.c \ alltoallv.c alltoallv0.c alltoallw1.c alltoallw2.c \ alltoallw_zeros.c $(bcast_comm_world_SOURCES) \ $(bcast_full_SOURCES) $(bcast_min_datatypes_SOURCES) \ bcasttest.c bcastzerotype.c coll10.c coll11.c coll12.c \ coll13.c coll2.c coll3.c coll4.c coll5.c coll6.c coll7.c \ coll8.c coll9.c exscan.c exscan2.c gather.c gather2.c \ gather_big.c iallred.c ibarrier.c icallgather.c icallgatherv.c \ icallreduce.c icalltoall.c icalltoallv.c icalltoallw.c \ icbarrier.c icbcast.c icgather.c icgatherv.c icreduce.c \ icscatter.c icscatterv.c longuser.c $(nballtoall1_SOURCES) \ $(nbcoll2_SOURCES) $(nbicallgather_SOURCES) \ $(nbicallgatherv_SOURCES) $(nbicallreduce_SOURCES) \ $(nbicalltoall_SOURCES) $(nbicalltoallv_SOURCES) \ $(nbicalltoallw_SOURCES) $(nbicbarrier_SOURCES) \ $(nbicbcast_SOURCES) $(nbicgather_SOURCES) \ $(nbicgatherv_SOURCES) $(nbicreduce_SOURCES) \ $(nbicscatter_SOURCES) $(nbicscatterv_SOURCES) \ $(nbredscat_SOURCES) $(nbredscat3_SOURCES) \ $(nbredscatinter_SOURCES) nonblocking.c nonblocking2.c \ nonblocking3.c op_commutative.c opband.c opbor.c opbxor.c \ opland.c oplor.c oplxor.c opmax.c opmaxloc.c opmin.c \ opminloc.c opprod.c opsum.c red3.c red4.c red_scat_block.c \ red_scat_block2.c redscat.c redscat2.c redscat3.c \ redscatbkinter.c redscatblk3.c redscatinter.c reduce.c \ reduce_local.c scantst.c scatter2.c scatter3.c scattern.c \ scatterv.c uoplong.c DIST_SOURCES = allgather2.c allgather3.c allgather_struct.c \ allgatherv2.c allgatherv3.c allgatherv4.c allred.c allred2.c \ allred3.c allred4.c allred5.c allred6.c allredmany.c \ alltoall1.c alltoallv.c alltoallv0.c alltoallw1.c alltoallw2.c \ alltoallw_zeros.c $(bcast_comm_world_SOURCES) \ $(bcast_full_SOURCES) $(bcast_min_datatypes_SOURCES) \ bcasttest.c bcastzerotype.c coll10.c coll11.c coll12.c \ coll13.c coll2.c coll3.c coll4.c coll5.c coll6.c coll7.c \ coll8.c coll9.c exscan.c exscan2.c gather.c gather2.c \ gather_big.c iallred.c ibarrier.c icallgather.c icallgatherv.c \ icallreduce.c icalltoall.c icalltoallv.c icalltoallw.c \ icbarrier.c icbcast.c icgather.c icgatherv.c icreduce.c \ icscatter.c icscatterv.c longuser.c $(nballtoall1_SOURCES) \ $(nbcoll2_SOURCES) $(nbicallgather_SOURCES) \ $(nbicallgatherv_SOURCES) $(nbicallreduce_SOURCES) \ $(nbicalltoall_SOURCES) $(nbicalltoallv_SOURCES) \ $(nbicalltoallw_SOURCES) $(nbicbarrier_SOURCES) \ $(nbicbcast_SOURCES) $(nbicgather_SOURCES) \ $(nbicgatherv_SOURCES) $(nbicreduce_SOURCES) \ $(nbicscatter_SOURCES) $(nbicscatterv_SOURCES) \ $(nbredscat_SOURCES) $(nbredscat3_SOURCES) \ $(nbredscatinter_SOURCES) nonblocking.c nonblocking2.c \ nonblocking3.c op_commutative.c opband.c opbor.c opbxor.c \ opland.c oplor.c oplxor.c opmax.c opmaxloc.c opmin.c \ opminloc.c opprod.c opsum.c red3.c red4.c red_scat_block.c \ red_scat_block2.c redscat.c redscat2.c redscat3.c \ redscatbkinter.c redscatblk3.c redscatinter.c reduce.c \ reduce_local.c scantst.c scatter2.c scatter3.c scattern.c \ scatterv.c uoplong.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/testlist.in \ $(top_srcdir)/Makefile.mtest $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist.in allgatherv4_LDADD = $(LDADD) -lm bcast_full_SOURCES = bcast.c bcast_min_datatypes_CPPFLAGS = -DBCAST_MIN_DATATYPES_ONLY $(AM_CPPFLAGS) bcast_min_datatypes_SOURCES = bcast.c bcast_comm_world_CPPFLAGS = -DBCAST_COMM_WORLD_ONLY $(AM_CPPFLAGS) bcast_comm_world_SOURCES = bcast.c # Generate tests of the nonblocking collectives by reusing the blocking tests. nballtoall1_SOURCES = alltoall1.c nballtoall1_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nbredscat_SOURCES = redscat.c nbredscat_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nbredscat3_SOURCES = redscat3.c nbredscat3_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nbredscatinter_SOURCES = redscatinter.c nbredscatinter_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nbcoll2_SOURCES = coll2.c nbcoll2_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nbicbarrier_SOURCES = icbarrier.c nbicbarrier_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nbicallgather_SOURCES = icallgather.c nbicallgather_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nbicallgatherv_SOURCES = icallgatherv.c nbicallgatherv_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nbicallreduce_SOURCES = icallreduce.c nbicallreduce_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nbicalltoall_SOURCES = icalltoall.c nbicalltoall_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nbicalltoallv_SOURCES = icalltoallv.c nbicalltoallv_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nbicalltoallw_SOURCES = icalltoallw.c nbicalltoallw_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nbicbcast_SOURCES = icbcast.c nbicbcast_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nbicgather_SOURCES = icgather.c nbicgather_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nbicgatherv_SOURCES = icgatherv.c nbicgatherv_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nbicreduce_SOURCES = icreduce.c nbicreduce_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nbicscatter_SOURCES = icscatter.c nbicscatter_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nbicscatterv_SOURCES = icscatterv.c nbicscatterv_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign coll/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign coll/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): testlist: $(top_builddir)/config.status $(srcdir)/testlist.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) allgather2$(EXEEXT): $(allgather2_OBJECTS) $(allgather2_DEPENDENCIES) $(EXTRA_allgather2_DEPENDENCIES) @rm -f allgather2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(allgather2_OBJECTS) $(allgather2_LDADD) $(LIBS) allgather3$(EXEEXT): $(allgather3_OBJECTS) $(allgather3_DEPENDENCIES) $(EXTRA_allgather3_DEPENDENCIES) @rm -f allgather3$(EXEEXT) $(AM_V_CCLD)$(LINK) $(allgather3_OBJECTS) $(allgather3_LDADD) $(LIBS) allgather_struct$(EXEEXT): $(allgather_struct_OBJECTS) $(allgather_struct_DEPENDENCIES) $(EXTRA_allgather_struct_DEPENDENCIES) @rm -f allgather_struct$(EXEEXT) $(AM_V_CCLD)$(LINK) $(allgather_struct_OBJECTS) $(allgather_struct_LDADD) $(LIBS) allgatherv2$(EXEEXT): $(allgatherv2_OBJECTS) $(allgatherv2_DEPENDENCIES) $(EXTRA_allgatherv2_DEPENDENCIES) @rm -f allgatherv2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(allgatherv2_OBJECTS) $(allgatherv2_LDADD) $(LIBS) allgatherv3$(EXEEXT): $(allgatherv3_OBJECTS) $(allgatherv3_DEPENDENCIES) $(EXTRA_allgatherv3_DEPENDENCIES) @rm -f allgatherv3$(EXEEXT) $(AM_V_CCLD)$(LINK) $(allgatherv3_OBJECTS) $(allgatherv3_LDADD) $(LIBS) allgatherv4$(EXEEXT): $(allgatherv4_OBJECTS) $(allgatherv4_DEPENDENCIES) $(EXTRA_allgatherv4_DEPENDENCIES) @rm -f allgatherv4$(EXEEXT) $(AM_V_CCLD)$(LINK) $(allgatherv4_OBJECTS) $(allgatherv4_LDADD) $(LIBS) allred$(EXEEXT): $(allred_OBJECTS) $(allred_DEPENDENCIES) $(EXTRA_allred_DEPENDENCIES) @rm -f allred$(EXEEXT) $(AM_V_CCLD)$(LINK) $(allred_OBJECTS) $(allred_LDADD) $(LIBS) allred2$(EXEEXT): $(allred2_OBJECTS) $(allred2_DEPENDENCIES) $(EXTRA_allred2_DEPENDENCIES) @rm -f allred2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(allred2_OBJECTS) $(allred2_LDADD) $(LIBS) allred3$(EXEEXT): $(allred3_OBJECTS) $(allred3_DEPENDENCIES) $(EXTRA_allred3_DEPENDENCIES) @rm -f allred3$(EXEEXT) $(AM_V_CCLD)$(LINK) $(allred3_OBJECTS) $(allred3_LDADD) $(LIBS) allred4$(EXEEXT): $(allred4_OBJECTS) $(allred4_DEPENDENCIES) $(EXTRA_allred4_DEPENDENCIES) @rm -f allred4$(EXEEXT) $(AM_V_CCLD)$(LINK) $(allred4_OBJECTS) $(allred4_LDADD) $(LIBS) allred5$(EXEEXT): $(allred5_OBJECTS) $(allred5_DEPENDENCIES) $(EXTRA_allred5_DEPENDENCIES) @rm -f allred5$(EXEEXT) $(AM_V_CCLD)$(LINK) $(allred5_OBJECTS) $(allred5_LDADD) $(LIBS) allred6$(EXEEXT): $(allred6_OBJECTS) $(allred6_DEPENDENCIES) $(EXTRA_allred6_DEPENDENCIES) @rm -f allred6$(EXEEXT) $(AM_V_CCLD)$(LINK) $(allred6_OBJECTS) $(allred6_LDADD) $(LIBS) allredmany$(EXEEXT): $(allredmany_OBJECTS) $(allredmany_DEPENDENCIES) $(EXTRA_allredmany_DEPENDENCIES) @rm -f allredmany$(EXEEXT) $(AM_V_CCLD)$(LINK) $(allredmany_OBJECTS) $(allredmany_LDADD) $(LIBS) alltoall1$(EXEEXT): $(alltoall1_OBJECTS) $(alltoall1_DEPENDENCIES) $(EXTRA_alltoall1_DEPENDENCIES) @rm -f alltoall1$(EXEEXT) $(AM_V_CCLD)$(LINK) $(alltoall1_OBJECTS) $(alltoall1_LDADD) $(LIBS) alltoallv$(EXEEXT): $(alltoallv_OBJECTS) $(alltoallv_DEPENDENCIES) $(EXTRA_alltoallv_DEPENDENCIES) @rm -f alltoallv$(EXEEXT) $(AM_V_CCLD)$(LINK) $(alltoallv_OBJECTS) $(alltoallv_LDADD) $(LIBS) alltoallv0$(EXEEXT): $(alltoallv0_OBJECTS) $(alltoallv0_DEPENDENCIES) $(EXTRA_alltoallv0_DEPENDENCIES) @rm -f alltoallv0$(EXEEXT) $(AM_V_CCLD)$(LINK) $(alltoallv0_OBJECTS) $(alltoallv0_LDADD) $(LIBS) alltoallw1$(EXEEXT): $(alltoallw1_OBJECTS) $(alltoallw1_DEPENDENCIES) $(EXTRA_alltoallw1_DEPENDENCIES) @rm -f alltoallw1$(EXEEXT) $(AM_V_CCLD)$(LINK) $(alltoallw1_OBJECTS) $(alltoallw1_LDADD) $(LIBS) alltoallw2$(EXEEXT): $(alltoallw2_OBJECTS) $(alltoallw2_DEPENDENCIES) $(EXTRA_alltoallw2_DEPENDENCIES) @rm -f alltoallw2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(alltoallw2_OBJECTS) $(alltoallw2_LDADD) $(LIBS) alltoallw_zeros$(EXEEXT): $(alltoallw_zeros_OBJECTS) $(alltoallw_zeros_DEPENDENCIES) $(EXTRA_alltoallw_zeros_DEPENDENCIES) @rm -f alltoallw_zeros$(EXEEXT) $(AM_V_CCLD)$(LINK) $(alltoallw_zeros_OBJECTS) $(alltoallw_zeros_LDADD) $(LIBS) bcast_comm_world$(EXEEXT): $(bcast_comm_world_OBJECTS) $(bcast_comm_world_DEPENDENCIES) $(EXTRA_bcast_comm_world_DEPENDENCIES) @rm -f bcast_comm_world$(EXEEXT) $(AM_V_CCLD)$(LINK) $(bcast_comm_world_OBJECTS) $(bcast_comm_world_LDADD) $(LIBS) bcast_full$(EXEEXT): $(bcast_full_OBJECTS) $(bcast_full_DEPENDENCIES) $(EXTRA_bcast_full_DEPENDENCIES) @rm -f bcast_full$(EXEEXT) $(AM_V_CCLD)$(LINK) $(bcast_full_OBJECTS) $(bcast_full_LDADD) $(LIBS) bcast_min_datatypes$(EXEEXT): $(bcast_min_datatypes_OBJECTS) $(bcast_min_datatypes_DEPENDENCIES) $(EXTRA_bcast_min_datatypes_DEPENDENCIES) @rm -f bcast_min_datatypes$(EXEEXT) $(AM_V_CCLD)$(LINK) $(bcast_min_datatypes_OBJECTS) $(bcast_min_datatypes_LDADD) $(LIBS) bcasttest$(EXEEXT): $(bcasttest_OBJECTS) $(bcasttest_DEPENDENCIES) $(EXTRA_bcasttest_DEPENDENCIES) @rm -f bcasttest$(EXEEXT) $(AM_V_CCLD)$(LINK) $(bcasttest_OBJECTS) $(bcasttest_LDADD) $(LIBS) bcastzerotype$(EXEEXT): $(bcastzerotype_OBJECTS) $(bcastzerotype_DEPENDENCIES) $(EXTRA_bcastzerotype_DEPENDENCIES) @rm -f bcastzerotype$(EXEEXT) $(AM_V_CCLD)$(LINK) $(bcastzerotype_OBJECTS) $(bcastzerotype_LDADD) $(LIBS) coll10$(EXEEXT): $(coll10_OBJECTS) $(coll10_DEPENDENCIES) $(EXTRA_coll10_DEPENDENCIES) @rm -f coll10$(EXEEXT) $(AM_V_CCLD)$(LINK) $(coll10_OBJECTS) $(coll10_LDADD) $(LIBS) coll11$(EXEEXT): $(coll11_OBJECTS) $(coll11_DEPENDENCIES) $(EXTRA_coll11_DEPENDENCIES) @rm -f coll11$(EXEEXT) $(AM_V_CCLD)$(LINK) $(coll11_OBJECTS) $(coll11_LDADD) $(LIBS) coll12$(EXEEXT): $(coll12_OBJECTS) $(coll12_DEPENDENCIES) $(EXTRA_coll12_DEPENDENCIES) @rm -f coll12$(EXEEXT) $(AM_V_CCLD)$(LINK) $(coll12_OBJECTS) $(coll12_LDADD) $(LIBS) coll13$(EXEEXT): $(coll13_OBJECTS) $(coll13_DEPENDENCIES) $(EXTRA_coll13_DEPENDENCIES) @rm -f coll13$(EXEEXT) $(AM_V_CCLD)$(LINK) $(coll13_OBJECTS) $(coll13_LDADD) $(LIBS) coll2$(EXEEXT): $(coll2_OBJECTS) $(coll2_DEPENDENCIES) $(EXTRA_coll2_DEPENDENCIES) @rm -f coll2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(coll2_OBJECTS) $(coll2_LDADD) $(LIBS) coll3$(EXEEXT): $(coll3_OBJECTS) $(coll3_DEPENDENCIES) $(EXTRA_coll3_DEPENDENCIES) @rm -f coll3$(EXEEXT) $(AM_V_CCLD)$(LINK) $(coll3_OBJECTS) $(coll3_LDADD) $(LIBS) coll4$(EXEEXT): $(coll4_OBJECTS) $(coll4_DEPENDENCIES) $(EXTRA_coll4_DEPENDENCIES) @rm -f coll4$(EXEEXT) $(AM_V_CCLD)$(LINK) $(coll4_OBJECTS) $(coll4_LDADD) $(LIBS) coll5$(EXEEXT): $(coll5_OBJECTS) $(coll5_DEPENDENCIES) $(EXTRA_coll5_DEPENDENCIES) @rm -f coll5$(EXEEXT) $(AM_V_CCLD)$(LINK) $(coll5_OBJECTS) $(coll5_LDADD) $(LIBS) coll6$(EXEEXT): $(coll6_OBJECTS) $(coll6_DEPENDENCIES) $(EXTRA_coll6_DEPENDENCIES) @rm -f coll6$(EXEEXT) $(AM_V_CCLD)$(LINK) $(coll6_OBJECTS) $(coll6_LDADD) $(LIBS) coll7$(EXEEXT): $(coll7_OBJECTS) $(coll7_DEPENDENCIES) $(EXTRA_coll7_DEPENDENCIES) @rm -f coll7$(EXEEXT) $(AM_V_CCLD)$(LINK) $(coll7_OBJECTS) $(coll7_LDADD) $(LIBS) coll8$(EXEEXT): $(coll8_OBJECTS) $(coll8_DEPENDENCIES) $(EXTRA_coll8_DEPENDENCIES) @rm -f coll8$(EXEEXT) $(AM_V_CCLD)$(LINK) $(coll8_OBJECTS) $(coll8_LDADD) $(LIBS) coll9$(EXEEXT): $(coll9_OBJECTS) $(coll9_DEPENDENCIES) $(EXTRA_coll9_DEPENDENCIES) @rm -f coll9$(EXEEXT) $(AM_V_CCLD)$(LINK) $(coll9_OBJECTS) $(coll9_LDADD) $(LIBS) exscan$(EXEEXT): $(exscan_OBJECTS) $(exscan_DEPENDENCIES) $(EXTRA_exscan_DEPENDENCIES) @rm -f exscan$(EXEEXT) $(AM_V_CCLD)$(LINK) $(exscan_OBJECTS) $(exscan_LDADD) $(LIBS) exscan2$(EXEEXT): $(exscan2_OBJECTS) $(exscan2_DEPENDENCIES) $(EXTRA_exscan2_DEPENDENCIES) @rm -f exscan2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(exscan2_OBJECTS) $(exscan2_LDADD) $(LIBS) gather$(EXEEXT): $(gather_OBJECTS) $(gather_DEPENDENCIES) $(EXTRA_gather_DEPENDENCIES) @rm -f gather$(EXEEXT) $(AM_V_CCLD)$(LINK) $(gather_OBJECTS) $(gather_LDADD) $(LIBS) gather2$(EXEEXT): $(gather2_OBJECTS) $(gather2_DEPENDENCIES) $(EXTRA_gather2_DEPENDENCIES) @rm -f gather2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(gather2_OBJECTS) $(gather2_LDADD) $(LIBS) gather_big$(EXEEXT): $(gather_big_OBJECTS) $(gather_big_DEPENDENCIES) $(EXTRA_gather_big_DEPENDENCIES) @rm -f gather_big$(EXEEXT) $(AM_V_CCLD)$(LINK) $(gather_big_OBJECTS) $(gather_big_LDADD) $(LIBS) iallred$(EXEEXT): $(iallred_OBJECTS) $(iallred_DEPENDENCIES) $(EXTRA_iallred_DEPENDENCIES) @rm -f iallred$(EXEEXT) $(AM_V_CCLD)$(LINK) $(iallred_OBJECTS) $(iallred_LDADD) $(LIBS) ibarrier$(EXEEXT): $(ibarrier_OBJECTS) $(ibarrier_DEPENDENCIES) $(EXTRA_ibarrier_DEPENDENCIES) @rm -f ibarrier$(EXEEXT) $(AM_V_CCLD)$(LINK) $(ibarrier_OBJECTS) $(ibarrier_LDADD) $(LIBS) icallgather$(EXEEXT): $(icallgather_OBJECTS) $(icallgather_DEPENDENCIES) $(EXTRA_icallgather_DEPENDENCIES) @rm -f icallgather$(EXEEXT) $(AM_V_CCLD)$(LINK) $(icallgather_OBJECTS) $(icallgather_LDADD) $(LIBS) icallgatherv$(EXEEXT): $(icallgatherv_OBJECTS) $(icallgatherv_DEPENDENCIES) $(EXTRA_icallgatherv_DEPENDENCIES) @rm -f icallgatherv$(EXEEXT) $(AM_V_CCLD)$(LINK) $(icallgatherv_OBJECTS) $(icallgatherv_LDADD) $(LIBS) icallreduce$(EXEEXT): $(icallreduce_OBJECTS) $(icallreduce_DEPENDENCIES) $(EXTRA_icallreduce_DEPENDENCIES) @rm -f icallreduce$(EXEEXT) $(AM_V_CCLD)$(LINK) $(icallreduce_OBJECTS) $(icallreduce_LDADD) $(LIBS) icalltoall$(EXEEXT): $(icalltoall_OBJECTS) $(icalltoall_DEPENDENCIES) $(EXTRA_icalltoall_DEPENDENCIES) @rm -f icalltoall$(EXEEXT) $(AM_V_CCLD)$(LINK) $(icalltoall_OBJECTS) $(icalltoall_LDADD) $(LIBS) icalltoallv$(EXEEXT): $(icalltoallv_OBJECTS) $(icalltoallv_DEPENDENCIES) $(EXTRA_icalltoallv_DEPENDENCIES) @rm -f icalltoallv$(EXEEXT) $(AM_V_CCLD)$(LINK) $(icalltoallv_OBJECTS) $(icalltoallv_LDADD) $(LIBS) icalltoallw$(EXEEXT): $(icalltoallw_OBJECTS) $(icalltoallw_DEPENDENCIES) $(EXTRA_icalltoallw_DEPENDENCIES) @rm -f icalltoallw$(EXEEXT) $(AM_V_CCLD)$(LINK) $(icalltoallw_OBJECTS) $(icalltoallw_LDADD) $(LIBS) icbarrier$(EXEEXT): $(icbarrier_OBJECTS) $(icbarrier_DEPENDENCIES) $(EXTRA_icbarrier_DEPENDENCIES) @rm -f icbarrier$(EXEEXT) $(AM_V_CCLD)$(LINK) $(icbarrier_OBJECTS) $(icbarrier_LDADD) $(LIBS) icbcast$(EXEEXT): $(icbcast_OBJECTS) $(icbcast_DEPENDENCIES) $(EXTRA_icbcast_DEPENDENCIES) @rm -f icbcast$(EXEEXT) $(AM_V_CCLD)$(LINK) $(icbcast_OBJECTS) $(icbcast_LDADD) $(LIBS) icgather$(EXEEXT): $(icgather_OBJECTS) $(icgather_DEPENDENCIES) $(EXTRA_icgather_DEPENDENCIES) @rm -f icgather$(EXEEXT) $(AM_V_CCLD)$(LINK) $(icgather_OBJECTS) $(icgather_LDADD) $(LIBS) icgatherv$(EXEEXT): $(icgatherv_OBJECTS) $(icgatherv_DEPENDENCIES) $(EXTRA_icgatherv_DEPENDENCIES) @rm -f icgatherv$(EXEEXT) $(AM_V_CCLD)$(LINK) $(icgatherv_OBJECTS) $(icgatherv_LDADD) $(LIBS) icreduce$(EXEEXT): $(icreduce_OBJECTS) $(icreduce_DEPENDENCIES) $(EXTRA_icreduce_DEPENDENCIES) @rm -f icreduce$(EXEEXT) $(AM_V_CCLD)$(LINK) $(icreduce_OBJECTS) $(icreduce_LDADD) $(LIBS) icscatter$(EXEEXT): $(icscatter_OBJECTS) $(icscatter_DEPENDENCIES) $(EXTRA_icscatter_DEPENDENCIES) @rm -f icscatter$(EXEEXT) $(AM_V_CCLD)$(LINK) $(icscatter_OBJECTS) $(icscatter_LDADD) $(LIBS) icscatterv$(EXEEXT): $(icscatterv_OBJECTS) $(icscatterv_DEPENDENCIES) $(EXTRA_icscatterv_DEPENDENCIES) @rm -f icscatterv$(EXEEXT) $(AM_V_CCLD)$(LINK) $(icscatterv_OBJECTS) $(icscatterv_LDADD) $(LIBS) longuser$(EXEEXT): $(longuser_OBJECTS) $(longuser_DEPENDENCIES) $(EXTRA_longuser_DEPENDENCIES) @rm -f longuser$(EXEEXT) $(AM_V_CCLD)$(LINK) $(longuser_OBJECTS) $(longuser_LDADD) $(LIBS) nballtoall1$(EXEEXT): $(nballtoall1_OBJECTS) $(nballtoall1_DEPENDENCIES) $(EXTRA_nballtoall1_DEPENDENCIES) @rm -f nballtoall1$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nballtoall1_OBJECTS) $(nballtoall1_LDADD) $(LIBS) nbcoll2$(EXEEXT): $(nbcoll2_OBJECTS) $(nbcoll2_DEPENDENCIES) $(EXTRA_nbcoll2_DEPENDENCIES) @rm -f nbcoll2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nbcoll2_OBJECTS) $(nbcoll2_LDADD) $(LIBS) nbicallgather$(EXEEXT): $(nbicallgather_OBJECTS) $(nbicallgather_DEPENDENCIES) $(EXTRA_nbicallgather_DEPENDENCIES) @rm -f nbicallgather$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nbicallgather_OBJECTS) $(nbicallgather_LDADD) $(LIBS) nbicallgatherv$(EXEEXT): $(nbicallgatherv_OBJECTS) $(nbicallgatherv_DEPENDENCIES) $(EXTRA_nbicallgatherv_DEPENDENCIES) @rm -f nbicallgatherv$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nbicallgatherv_OBJECTS) $(nbicallgatherv_LDADD) $(LIBS) nbicallreduce$(EXEEXT): $(nbicallreduce_OBJECTS) $(nbicallreduce_DEPENDENCIES) $(EXTRA_nbicallreduce_DEPENDENCIES) @rm -f nbicallreduce$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nbicallreduce_OBJECTS) $(nbicallreduce_LDADD) $(LIBS) nbicalltoall$(EXEEXT): $(nbicalltoall_OBJECTS) $(nbicalltoall_DEPENDENCIES) $(EXTRA_nbicalltoall_DEPENDENCIES) @rm -f nbicalltoall$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nbicalltoall_OBJECTS) $(nbicalltoall_LDADD) $(LIBS) nbicalltoallv$(EXEEXT): $(nbicalltoallv_OBJECTS) $(nbicalltoallv_DEPENDENCIES) $(EXTRA_nbicalltoallv_DEPENDENCIES) @rm -f nbicalltoallv$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nbicalltoallv_OBJECTS) $(nbicalltoallv_LDADD) $(LIBS) nbicalltoallw$(EXEEXT): $(nbicalltoallw_OBJECTS) $(nbicalltoallw_DEPENDENCIES) $(EXTRA_nbicalltoallw_DEPENDENCIES) @rm -f nbicalltoallw$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nbicalltoallw_OBJECTS) $(nbicalltoallw_LDADD) $(LIBS) nbicbarrier$(EXEEXT): $(nbicbarrier_OBJECTS) $(nbicbarrier_DEPENDENCIES) $(EXTRA_nbicbarrier_DEPENDENCIES) @rm -f nbicbarrier$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nbicbarrier_OBJECTS) $(nbicbarrier_LDADD) $(LIBS) nbicbcast$(EXEEXT): $(nbicbcast_OBJECTS) $(nbicbcast_DEPENDENCIES) $(EXTRA_nbicbcast_DEPENDENCIES) @rm -f nbicbcast$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nbicbcast_OBJECTS) $(nbicbcast_LDADD) $(LIBS) nbicgather$(EXEEXT): $(nbicgather_OBJECTS) $(nbicgather_DEPENDENCIES) $(EXTRA_nbicgather_DEPENDENCIES) @rm -f nbicgather$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nbicgather_OBJECTS) $(nbicgather_LDADD) $(LIBS) nbicgatherv$(EXEEXT): $(nbicgatherv_OBJECTS) $(nbicgatherv_DEPENDENCIES) $(EXTRA_nbicgatherv_DEPENDENCIES) @rm -f nbicgatherv$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nbicgatherv_OBJECTS) $(nbicgatherv_LDADD) $(LIBS) nbicreduce$(EXEEXT): $(nbicreduce_OBJECTS) $(nbicreduce_DEPENDENCIES) $(EXTRA_nbicreduce_DEPENDENCIES) @rm -f nbicreduce$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nbicreduce_OBJECTS) $(nbicreduce_LDADD) $(LIBS) nbicscatter$(EXEEXT): $(nbicscatter_OBJECTS) $(nbicscatter_DEPENDENCIES) $(EXTRA_nbicscatter_DEPENDENCIES) @rm -f nbicscatter$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nbicscatter_OBJECTS) $(nbicscatter_LDADD) $(LIBS) nbicscatterv$(EXEEXT): $(nbicscatterv_OBJECTS) $(nbicscatterv_DEPENDENCIES) $(EXTRA_nbicscatterv_DEPENDENCIES) @rm -f nbicscatterv$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nbicscatterv_OBJECTS) $(nbicscatterv_LDADD) $(LIBS) nbredscat$(EXEEXT): $(nbredscat_OBJECTS) $(nbredscat_DEPENDENCIES) $(EXTRA_nbredscat_DEPENDENCIES) @rm -f nbredscat$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nbredscat_OBJECTS) $(nbredscat_LDADD) $(LIBS) nbredscat3$(EXEEXT): $(nbredscat3_OBJECTS) $(nbredscat3_DEPENDENCIES) $(EXTRA_nbredscat3_DEPENDENCIES) @rm -f nbredscat3$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nbredscat3_OBJECTS) $(nbredscat3_LDADD) $(LIBS) nbredscatinter$(EXEEXT): $(nbredscatinter_OBJECTS) $(nbredscatinter_DEPENDENCIES) $(EXTRA_nbredscatinter_DEPENDENCIES) @rm -f nbredscatinter$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nbredscatinter_OBJECTS) $(nbredscatinter_LDADD) $(LIBS) nonblocking$(EXEEXT): $(nonblocking_OBJECTS) $(nonblocking_DEPENDENCIES) $(EXTRA_nonblocking_DEPENDENCIES) @rm -f nonblocking$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nonblocking_OBJECTS) $(nonblocking_LDADD) $(LIBS) nonblocking2$(EXEEXT): $(nonblocking2_OBJECTS) $(nonblocking2_DEPENDENCIES) $(EXTRA_nonblocking2_DEPENDENCIES) @rm -f nonblocking2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nonblocking2_OBJECTS) $(nonblocking2_LDADD) $(LIBS) nonblocking3$(EXEEXT): $(nonblocking3_OBJECTS) $(nonblocking3_DEPENDENCIES) $(EXTRA_nonblocking3_DEPENDENCIES) @rm -f nonblocking3$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nonblocking3_OBJECTS) $(nonblocking3_LDADD) $(LIBS) op_commutative$(EXEEXT): $(op_commutative_OBJECTS) $(op_commutative_DEPENDENCIES) $(EXTRA_op_commutative_DEPENDENCIES) @rm -f op_commutative$(EXEEXT) $(AM_V_CCLD)$(LINK) $(op_commutative_OBJECTS) $(op_commutative_LDADD) $(LIBS) opband$(EXEEXT): $(opband_OBJECTS) $(opband_DEPENDENCIES) $(EXTRA_opband_DEPENDENCIES) @rm -f opband$(EXEEXT) $(AM_V_CCLD)$(LINK) $(opband_OBJECTS) $(opband_LDADD) $(LIBS) opbor$(EXEEXT): $(opbor_OBJECTS) $(opbor_DEPENDENCIES) $(EXTRA_opbor_DEPENDENCIES) @rm -f opbor$(EXEEXT) $(AM_V_CCLD)$(LINK) $(opbor_OBJECTS) $(opbor_LDADD) $(LIBS) opbxor$(EXEEXT): $(opbxor_OBJECTS) $(opbxor_DEPENDENCIES) $(EXTRA_opbxor_DEPENDENCIES) @rm -f opbxor$(EXEEXT) $(AM_V_CCLD)$(LINK) $(opbxor_OBJECTS) $(opbxor_LDADD) $(LIBS) opland$(EXEEXT): $(opland_OBJECTS) $(opland_DEPENDENCIES) $(EXTRA_opland_DEPENDENCIES) @rm -f opland$(EXEEXT) $(AM_V_CCLD)$(LINK) $(opland_OBJECTS) $(opland_LDADD) $(LIBS) oplor$(EXEEXT): $(oplor_OBJECTS) $(oplor_DEPENDENCIES) $(EXTRA_oplor_DEPENDENCIES) @rm -f oplor$(EXEEXT) $(AM_V_CCLD)$(LINK) $(oplor_OBJECTS) $(oplor_LDADD) $(LIBS) oplxor$(EXEEXT): $(oplxor_OBJECTS) $(oplxor_DEPENDENCIES) $(EXTRA_oplxor_DEPENDENCIES) @rm -f oplxor$(EXEEXT) $(AM_V_CCLD)$(LINK) $(oplxor_OBJECTS) $(oplxor_LDADD) $(LIBS) opmax$(EXEEXT): $(opmax_OBJECTS) $(opmax_DEPENDENCIES) $(EXTRA_opmax_DEPENDENCIES) @rm -f opmax$(EXEEXT) $(AM_V_CCLD)$(LINK) $(opmax_OBJECTS) $(opmax_LDADD) $(LIBS) opmaxloc$(EXEEXT): $(opmaxloc_OBJECTS) $(opmaxloc_DEPENDENCIES) $(EXTRA_opmaxloc_DEPENDENCIES) @rm -f opmaxloc$(EXEEXT) $(AM_V_CCLD)$(LINK) $(opmaxloc_OBJECTS) $(opmaxloc_LDADD) $(LIBS) opmin$(EXEEXT): $(opmin_OBJECTS) $(opmin_DEPENDENCIES) $(EXTRA_opmin_DEPENDENCIES) @rm -f opmin$(EXEEXT) $(AM_V_CCLD)$(LINK) $(opmin_OBJECTS) $(opmin_LDADD) $(LIBS) opminloc$(EXEEXT): $(opminloc_OBJECTS) $(opminloc_DEPENDENCIES) $(EXTRA_opminloc_DEPENDENCIES) @rm -f opminloc$(EXEEXT) $(AM_V_CCLD)$(LINK) $(opminloc_OBJECTS) $(opminloc_LDADD) $(LIBS) opprod$(EXEEXT): $(opprod_OBJECTS) $(opprod_DEPENDENCIES) $(EXTRA_opprod_DEPENDENCIES) @rm -f opprod$(EXEEXT) $(AM_V_CCLD)$(LINK) $(opprod_OBJECTS) $(opprod_LDADD) $(LIBS) opsum$(EXEEXT): $(opsum_OBJECTS) $(opsum_DEPENDENCIES) $(EXTRA_opsum_DEPENDENCIES) @rm -f opsum$(EXEEXT) $(AM_V_CCLD)$(LINK) $(opsum_OBJECTS) $(opsum_LDADD) $(LIBS) red3$(EXEEXT): $(red3_OBJECTS) $(red3_DEPENDENCIES) $(EXTRA_red3_DEPENDENCIES) @rm -f red3$(EXEEXT) $(AM_V_CCLD)$(LINK) $(red3_OBJECTS) $(red3_LDADD) $(LIBS) red4$(EXEEXT): $(red4_OBJECTS) $(red4_DEPENDENCIES) $(EXTRA_red4_DEPENDENCIES) @rm -f red4$(EXEEXT) $(AM_V_CCLD)$(LINK) $(red4_OBJECTS) $(red4_LDADD) $(LIBS) red_scat_block$(EXEEXT): $(red_scat_block_OBJECTS) $(red_scat_block_DEPENDENCIES) $(EXTRA_red_scat_block_DEPENDENCIES) @rm -f red_scat_block$(EXEEXT) $(AM_V_CCLD)$(LINK) $(red_scat_block_OBJECTS) $(red_scat_block_LDADD) $(LIBS) red_scat_block2$(EXEEXT): $(red_scat_block2_OBJECTS) $(red_scat_block2_DEPENDENCIES) $(EXTRA_red_scat_block2_DEPENDENCIES) @rm -f red_scat_block2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(red_scat_block2_OBJECTS) $(red_scat_block2_LDADD) $(LIBS) redscat$(EXEEXT): $(redscat_OBJECTS) $(redscat_DEPENDENCIES) $(EXTRA_redscat_DEPENDENCIES) @rm -f redscat$(EXEEXT) $(AM_V_CCLD)$(LINK) $(redscat_OBJECTS) $(redscat_LDADD) $(LIBS) redscat2$(EXEEXT): $(redscat2_OBJECTS) $(redscat2_DEPENDENCIES) $(EXTRA_redscat2_DEPENDENCIES) @rm -f redscat2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(redscat2_OBJECTS) $(redscat2_LDADD) $(LIBS) redscat3$(EXEEXT): $(redscat3_OBJECTS) $(redscat3_DEPENDENCIES) $(EXTRA_redscat3_DEPENDENCIES) @rm -f redscat3$(EXEEXT) $(AM_V_CCLD)$(LINK) $(redscat3_OBJECTS) $(redscat3_LDADD) $(LIBS) redscatbkinter$(EXEEXT): $(redscatbkinter_OBJECTS) $(redscatbkinter_DEPENDENCIES) $(EXTRA_redscatbkinter_DEPENDENCIES) @rm -f redscatbkinter$(EXEEXT) $(AM_V_CCLD)$(LINK) $(redscatbkinter_OBJECTS) $(redscatbkinter_LDADD) $(LIBS) redscatblk3$(EXEEXT): $(redscatblk3_OBJECTS) $(redscatblk3_DEPENDENCIES) $(EXTRA_redscatblk3_DEPENDENCIES) @rm -f redscatblk3$(EXEEXT) $(AM_V_CCLD)$(LINK) $(redscatblk3_OBJECTS) $(redscatblk3_LDADD) $(LIBS) redscatinter$(EXEEXT): $(redscatinter_OBJECTS) $(redscatinter_DEPENDENCIES) $(EXTRA_redscatinter_DEPENDENCIES) @rm -f redscatinter$(EXEEXT) $(AM_V_CCLD)$(LINK) $(redscatinter_OBJECTS) $(redscatinter_LDADD) $(LIBS) reduce$(EXEEXT): $(reduce_OBJECTS) $(reduce_DEPENDENCIES) $(EXTRA_reduce_DEPENDENCIES) @rm -f reduce$(EXEEXT) $(AM_V_CCLD)$(LINK) $(reduce_OBJECTS) $(reduce_LDADD) $(LIBS) reduce_local$(EXEEXT): $(reduce_local_OBJECTS) $(reduce_local_DEPENDENCIES) $(EXTRA_reduce_local_DEPENDENCIES) @rm -f reduce_local$(EXEEXT) $(AM_V_CCLD)$(LINK) $(reduce_local_OBJECTS) $(reduce_local_LDADD) $(LIBS) scantst$(EXEEXT): $(scantst_OBJECTS) $(scantst_DEPENDENCIES) $(EXTRA_scantst_DEPENDENCIES) @rm -f scantst$(EXEEXT) $(AM_V_CCLD)$(LINK) $(scantst_OBJECTS) $(scantst_LDADD) $(LIBS) scatter2$(EXEEXT): $(scatter2_OBJECTS) $(scatter2_DEPENDENCIES) $(EXTRA_scatter2_DEPENDENCIES) @rm -f scatter2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(scatter2_OBJECTS) $(scatter2_LDADD) $(LIBS) scatter3$(EXEEXT): $(scatter3_OBJECTS) $(scatter3_DEPENDENCIES) $(EXTRA_scatter3_DEPENDENCIES) @rm -f scatter3$(EXEEXT) $(AM_V_CCLD)$(LINK) $(scatter3_OBJECTS) $(scatter3_LDADD) $(LIBS) scattern$(EXEEXT): $(scattern_OBJECTS) $(scattern_DEPENDENCIES) $(EXTRA_scattern_DEPENDENCIES) @rm -f scattern$(EXEEXT) $(AM_V_CCLD)$(LINK) $(scattern_OBJECTS) $(scattern_LDADD) $(LIBS) scatterv$(EXEEXT): $(scatterv_OBJECTS) $(scatterv_DEPENDENCIES) $(EXTRA_scatterv_DEPENDENCIES) @rm -f scatterv$(EXEEXT) $(AM_V_CCLD)$(LINK) $(scatterv_OBJECTS) $(scatterv_LDADD) $(LIBS) uoplong$(EXEEXT): $(uoplong_OBJECTS) $(uoplong_DEPENDENCIES) $(EXTRA_uoplong_DEPENDENCIES) @rm -f uoplong$(EXEEXT) $(AM_V_CCLD)$(LINK) $(uoplong_OBJECTS) $(uoplong_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/allgather2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/allgather3.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/allgather_struct.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/allgatherv2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/allgatherv3.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/allgatherv4.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/allred.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/allred2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/allred3.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/allred4.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/allred5.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/allred6.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/allredmany.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alltoall1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alltoallv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alltoallv0.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alltoallw1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alltoallw2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alltoallw_zeros.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bcast.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bcast_comm_world-bcast.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bcast_min_datatypes-bcast.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bcasttest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bcastzerotype.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coll10.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coll11.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coll12.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coll13.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coll2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coll3.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coll4.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coll5.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coll6.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coll7.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coll8.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coll9.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exscan.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exscan2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gather.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gather2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gather_big.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iallred.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibarrier.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icallgather.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icallgatherv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icallreduce.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icalltoall.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icalltoallv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icalltoallw.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icbarrier.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icbcast.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icgather.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icgatherv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icreduce.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icscatter.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icscatterv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/longuser.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nballtoall1-alltoall1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nbcoll2-coll2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nbicallgather-icallgather.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nbicallgatherv-icallgatherv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nbicallreduce-icallreduce.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nbicalltoall-icalltoall.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nbicalltoallv-icalltoallv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nbicalltoallw-icalltoallw.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nbicbarrier-icbarrier.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nbicbcast-icbcast.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nbicgather-icgather.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nbicgatherv-icgatherv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nbicreduce-icreduce.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nbicscatter-icscatter.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nbicscatterv-icscatterv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nbredscat-redscat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nbredscat3-redscat3.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nbredscatinter-redscatinter.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonblocking.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonblocking2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonblocking3.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/op_commutative.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opband.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opbor.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opbxor.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opland.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oplor.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oplxor.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opmax.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opmaxloc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opmin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opminloc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opprod.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opsum.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/red3.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/red4.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/red_scat_block.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/red_scat_block2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/redscat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/redscat2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/redscat3.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/redscatbkinter.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/redscatblk3.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/redscatinter.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reduce.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reduce_local.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scantst.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scatter2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scatter3.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scattern.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scatterv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uoplong.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` bcast_comm_world-bcast.o: bcast.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bcast_comm_world_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bcast_comm_world-bcast.o -MD -MP -MF $(DEPDIR)/bcast_comm_world-bcast.Tpo -c -o bcast_comm_world-bcast.o `test -f 'bcast.c' || echo '$(srcdir)/'`bcast.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bcast_comm_world-bcast.Tpo $(DEPDIR)/bcast_comm_world-bcast.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='bcast.c' object='bcast_comm_world-bcast.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bcast_comm_world_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bcast_comm_world-bcast.o `test -f 'bcast.c' || echo '$(srcdir)/'`bcast.c bcast_comm_world-bcast.obj: bcast.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bcast_comm_world_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bcast_comm_world-bcast.obj -MD -MP -MF $(DEPDIR)/bcast_comm_world-bcast.Tpo -c -o bcast_comm_world-bcast.obj `if test -f 'bcast.c'; then $(CYGPATH_W) 'bcast.c'; else $(CYGPATH_W) '$(srcdir)/bcast.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bcast_comm_world-bcast.Tpo $(DEPDIR)/bcast_comm_world-bcast.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='bcast.c' object='bcast_comm_world-bcast.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bcast_comm_world_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bcast_comm_world-bcast.obj `if test -f 'bcast.c'; then $(CYGPATH_W) 'bcast.c'; else $(CYGPATH_W) '$(srcdir)/bcast.c'; fi` bcast_min_datatypes-bcast.o: bcast.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bcast_min_datatypes_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bcast_min_datatypes-bcast.o -MD -MP -MF $(DEPDIR)/bcast_min_datatypes-bcast.Tpo -c -o bcast_min_datatypes-bcast.o `test -f 'bcast.c' || echo '$(srcdir)/'`bcast.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bcast_min_datatypes-bcast.Tpo $(DEPDIR)/bcast_min_datatypes-bcast.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='bcast.c' object='bcast_min_datatypes-bcast.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bcast_min_datatypes_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bcast_min_datatypes-bcast.o `test -f 'bcast.c' || echo '$(srcdir)/'`bcast.c bcast_min_datatypes-bcast.obj: bcast.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bcast_min_datatypes_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bcast_min_datatypes-bcast.obj -MD -MP -MF $(DEPDIR)/bcast_min_datatypes-bcast.Tpo -c -o bcast_min_datatypes-bcast.obj `if test -f 'bcast.c'; then $(CYGPATH_W) 'bcast.c'; else $(CYGPATH_W) '$(srcdir)/bcast.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bcast_min_datatypes-bcast.Tpo $(DEPDIR)/bcast_min_datatypes-bcast.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='bcast.c' object='bcast_min_datatypes-bcast.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bcast_min_datatypes_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bcast_min_datatypes-bcast.obj `if test -f 'bcast.c'; then $(CYGPATH_W) 'bcast.c'; else $(CYGPATH_W) '$(srcdir)/bcast.c'; fi` nballtoall1-alltoall1.o: alltoall1.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nballtoall1_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nballtoall1-alltoall1.o -MD -MP -MF $(DEPDIR)/nballtoall1-alltoall1.Tpo -c -o nballtoall1-alltoall1.o `test -f 'alltoall1.c' || echo '$(srcdir)/'`alltoall1.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nballtoall1-alltoall1.Tpo $(DEPDIR)/nballtoall1-alltoall1.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='alltoall1.c' object='nballtoall1-alltoall1.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nballtoall1_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nballtoall1-alltoall1.o `test -f 'alltoall1.c' || echo '$(srcdir)/'`alltoall1.c nballtoall1-alltoall1.obj: alltoall1.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nballtoall1_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nballtoall1-alltoall1.obj -MD -MP -MF $(DEPDIR)/nballtoall1-alltoall1.Tpo -c -o nballtoall1-alltoall1.obj `if test -f 'alltoall1.c'; then $(CYGPATH_W) 'alltoall1.c'; else $(CYGPATH_W) '$(srcdir)/alltoall1.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nballtoall1-alltoall1.Tpo $(DEPDIR)/nballtoall1-alltoall1.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='alltoall1.c' object='nballtoall1-alltoall1.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nballtoall1_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nballtoall1-alltoall1.obj `if test -f 'alltoall1.c'; then $(CYGPATH_W) 'alltoall1.c'; else $(CYGPATH_W) '$(srcdir)/alltoall1.c'; fi` nbcoll2-coll2.o: coll2.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbcoll2_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nbcoll2-coll2.o -MD -MP -MF $(DEPDIR)/nbcoll2-coll2.Tpo -c -o nbcoll2-coll2.o `test -f 'coll2.c' || echo '$(srcdir)/'`coll2.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nbcoll2-coll2.Tpo $(DEPDIR)/nbcoll2-coll2.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='coll2.c' object='nbcoll2-coll2.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbcoll2_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nbcoll2-coll2.o `test -f 'coll2.c' || echo '$(srcdir)/'`coll2.c nbcoll2-coll2.obj: coll2.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbcoll2_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nbcoll2-coll2.obj -MD -MP -MF $(DEPDIR)/nbcoll2-coll2.Tpo -c -o nbcoll2-coll2.obj `if test -f 'coll2.c'; then $(CYGPATH_W) 'coll2.c'; else $(CYGPATH_W) '$(srcdir)/coll2.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nbcoll2-coll2.Tpo $(DEPDIR)/nbcoll2-coll2.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='coll2.c' object='nbcoll2-coll2.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbcoll2_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nbcoll2-coll2.obj `if test -f 'coll2.c'; then $(CYGPATH_W) 'coll2.c'; else $(CYGPATH_W) '$(srcdir)/coll2.c'; fi` nbicallgather-icallgather.o: icallgather.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicallgather_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nbicallgather-icallgather.o -MD -MP -MF $(DEPDIR)/nbicallgather-icallgather.Tpo -c -o nbicallgather-icallgather.o `test -f 'icallgather.c' || echo '$(srcdir)/'`icallgather.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nbicallgather-icallgather.Tpo $(DEPDIR)/nbicallgather-icallgather.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='icallgather.c' object='nbicallgather-icallgather.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicallgather_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nbicallgather-icallgather.o `test -f 'icallgather.c' || echo '$(srcdir)/'`icallgather.c nbicallgather-icallgather.obj: icallgather.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicallgather_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nbicallgather-icallgather.obj -MD -MP -MF $(DEPDIR)/nbicallgather-icallgather.Tpo -c -o nbicallgather-icallgather.obj `if test -f 'icallgather.c'; then $(CYGPATH_W) 'icallgather.c'; else $(CYGPATH_W) '$(srcdir)/icallgather.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nbicallgather-icallgather.Tpo $(DEPDIR)/nbicallgather-icallgather.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='icallgather.c' object='nbicallgather-icallgather.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicallgather_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nbicallgather-icallgather.obj `if test -f 'icallgather.c'; then $(CYGPATH_W) 'icallgather.c'; else $(CYGPATH_W) '$(srcdir)/icallgather.c'; fi` nbicallgatherv-icallgatherv.o: icallgatherv.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicallgatherv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nbicallgatherv-icallgatherv.o -MD -MP -MF $(DEPDIR)/nbicallgatherv-icallgatherv.Tpo -c -o nbicallgatherv-icallgatherv.o `test -f 'icallgatherv.c' || echo '$(srcdir)/'`icallgatherv.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nbicallgatherv-icallgatherv.Tpo $(DEPDIR)/nbicallgatherv-icallgatherv.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='icallgatherv.c' object='nbicallgatherv-icallgatherv.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicallgatherv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nbicallgatherv-icallgatherv.o `test -f 'icallgatherv.c' || echo '$(srcdir)/'`icallgatherv.c nbicallgatherv-icallgatherv.obj: icallgatherv.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicallgatherv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nbicallgatherv-icallgatherv.obj -MD -MP -MF $(DEPDIR)/nbicallgatherv-icallgatherv.Tpo -c -o nbicallgatherv-icallgatherv.obj `if test -f 'icallgatherv.c'; then $(CYGPATH_W) 'icallgatherv.c'; else $(CYGPATH_W) '$(srcdir)/icallgatherv.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nbicallgatherv-icallgatherv.Tpo $(DEPDIR)/nbicallgatherv-icallgatherv.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='icallgatherv.c' object='nbicallgatherv-icallgatherv.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicallgatherv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nbicallgatherv-icallgatherv.obj `if test -f 'icallgatherv.c'; then $(CYGPATH_W) 'icallgatherv.c'; else $(CYGPATH_W) '$(srcdir)/icallgatherv.c'; fi` nbicallreduce-icallreduce.o: icallreduce.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicallreduce_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nbicallreduce-icallreduce.o -MD -MP -MF $(DEPDIR)/nbicallreduce-icallreduce.Tpo -c -o nbicallreduce-icallreduce.o `test -f 'icallreduce.c' || echo '$(srcdir)/'`icallreduce.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nbicallreduce-icallreduce.Tpo $(DEPDIR)/nbicallreduce-icallreduce.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='icallreduce.c' object='nbicallreduce-icallreduce.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicallreduce_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nbicallreduce-icallreduce.o `test -f 'icallreduce.c' || echo '$(srcdir)/'`icallreduce.c nbicallreduce-icallreduce.obj: icallreduce.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicallreduce_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nbicallreduce-icallreduce.obj -MD -MP -MF $(DEPDIR)/nbicallreduce-icallreduce.Tpo -c -o nbicallreduce-icallreduce.obj `if test -f 'icallreduce.c'; then $(CYGPATH_W) 'icallreduce.c'; else $(CYGPATH_W) '$(srcdir)/icallreduce.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nbicallreduce-icallreduce.Tpo $(DEPDIR)/nbicallreduce-icallreduce.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='icallreduce.c' object='nbicallreduce-icallreduce.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicallreduce_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nbicallreduce-icallreduce.obj `if test -f 'icallreduce.c'; then $(CYGPATH_W) 'icallreduce.c'; else $(CYGPATH_W) '$(srcdir)/icallreduce.c'; fi` nbicalltoall-icalltoall.o: icalltoall.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicalltoall_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nbicalltoall-icalltoall.o -MD -MP -MF $(DEPDIR)/nbicalltoall-icalltoall.Tpo -c -o nbicalltoall-icalltoall.o `test -f 'icalltoall.c' || echo '$(srcdir)/'`icalltoall.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nbicalltoall-icalltoall.Tpo $(DEPDIR)/nbicalltoall-icalltoall.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='icalltoall.c' object='nbicalltoall-icalltoall.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicalltoall_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nbicalltoall-icalltoall.o `test -f 'icalltoall.c' || echo '$(srcdir)/'`icalltoall.c nbicalltoall-icalltoall.obj: icalltoall.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicalltoall_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nbicalltoall-icalltoall.obj -MD -MP -MF $(DEPDIR)/nbicalltoall-icalltoall.Tpo -c -o nbicalltoall-icalltoall.obj `if test -f 'icalltoall.c'; then $(CYGPATH_W) 'icalltoall.c'; else $(CYGPATH_W) '$(srcdir)/icalltoall.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nbicalltoall-icalltoall.Tpo $(DEPDIR)/nbicalltoall-icalltoall.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='icalltoall.c' object='nbicalltoall-icalltoall.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicalltoall_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nbicalltoall-icalltoall.obj `if test -f 'icalltoall.c'; then $(CYGPATH_W) 'icalltoall.c'; else $(CYGPATH_W) '$(srcdir)/icalltoall.c'; fi` nbicalltoallv-icalltoallv.o: icalltoallv.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicalltoallv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nbicalltoallv-icalltoallv.o -MD -MP -MF $(DEPDIR)/nbicalltoallv-icalltoallv.Tpo -c -o nbicalltoallv-icalltoallv.o `test -f 'icalltoallv.c' || echo '$(srcdir)/'`icalltoallv.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nbicalltoallv-icalltoallv.Tpo $(DEPDIR)/nbicalltoallv-icalltoallv.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='icalltoallv.c' object='nbicalltoallv-icalltoallv.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicalltoallv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nbicalltoallv-icalltoallv.o `test -f 'icalltoallv.c' || echo '$(srcdir)/'`icalltoallv.c nbicalltoallv-icalltoallv.obj: icalltoallv.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicalltoallv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nbicalltoallv-icalltoallv.obj -MD -MP -MF $(DEPDIR)/nbicalltoallv-icalltoallv.Tpo -c -o nbicalltoallv-icalltoallv.obj `if test -f 'icalltoallv.c'; then $(CYGPATH_W) 'icalltoallv.c'; else $(CYGPATH_W) '$(srcdir)/icalltoallv.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nbicalltoallv-icalltoallv.Tpo $(DEPDIR)/nbicalltoallv-icalltoallv.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='icalltoallv.c' object='nbicalltoallv-icalltoallv.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicalltoallv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nbicalltoallv-icalltoallv.obj `if test -f 'icalltoallv.c'; then $(CYGPATH_W) 'icalltoallv.c'; else $(CYGPATH_W) '$(srcdir)/icalltoallv.c'; fi` nbicalltoallw-icalltoallw.o: icalltoallw.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicalltoallw_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nbicalltoallw-icalltoallw.o -MD -MP -MF $(DEPDIR)/nbicalltoallw-icalltoallw.Tpo -c -o nbicalltoallw-icalltoallw.o `test -f 'icalltoallw.c' || echo '$(srcdir)/'`icalltoallw.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nbicalltoallw-icalltoallw.Tpo $(DEPDIR)/nbicalltoallw-icalltoallw.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='icalltoallw.c' object='nbicalltoallw-icalltoallw.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicalltoallw_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nbicalltoallw-icalltoallw.o `test -f 'icalltoallw.c' || echo '$(srcdir)/'`icalltoallw.c nbicalltoallw-icalltoallw.obj: icalltoallw.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicalltoallw_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nbicalltoallw-icalltoallw.obj -MD -MP -MF $(DEPDIR)/nbicalltoallw-icalltoallw.Tpo -c -o nbicalltoallw-icalltoallw.obj `if test -f 'icalltoallw.c'; then $(CYGPATH_W) 'icalltoallw.c'; else $(CYGPATH_W) '$(srcdir)/icalltoallw.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nbicalltoallw-icalltoallw.Tpo $(DEPDIR)/nbicalltoallw-icalltoallw.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='icalltoallw.c' object='nbicalltoallw-icalltoallw.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicalltoallw_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nbicalltoallw-icalltoallw.obj `if test -f 'icalltoallw.c'; then $(CYGPATH_W) 'icalltoallw.c'; else $(CYGPATH_W) '$(srcdir)/icalltoallw.c'; fi` nbicbarrier-icbarrier.o: icbarrier.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicbarrier_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nbicbarrier-icbarrier.o -MD -MP -MF $(DEPDIR)/nbicbarrier-icbarrier.Tpo -c -o nbicbarrier-icbarrier.o `test -f 'icbarrier.c' || echo '$(srcdir)/'`icbarrier.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nbicbarrier-icbarrier.Tpo $(DEPDIR)/nbicbarrier-icbarrier.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='icbarrier.c' object='nbicbarrier-icbarrier.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicbarrier_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nbicbarrier-icbarrier.o `test -f 'icbarrier.c' || echo '$(srcdir)/'`icbarrier.c nbicbarrier-icbarrier.obj: icbarrier.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicbarrier_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nbicbarrier-icbarrier.obj -MD -MP -MF $(DEPDIR)/nbicbarrier-icbarrier.Tpo -c -o nbicbarrier-icbarrier.obj `if test -f 'icbarrier.c'; then $(CYGPATH_W) 'icbarrier.c'; else $(CYGPATH_W) '$(srcdir)/icbarrier.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nbicbarrier-icbarrier.Tpo $(DEPDIR)/nbicbarrier-icbarrier.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='icbarrier.c' object='nbicbarrier-icbarrier.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicbarrier_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nbicbarrier-icbarrier.obj `if test -f 'icbarrier.c'; then $(CYGPATH_W) 'icbarrier.c'; else $(CYGPATH_W) '$(srcdir)/icbarrier.c'; fi` nbicbcast-icbcast.o: icbcast.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicbcast_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nbicbcast-icbcast.o -MD -MP -MF $(DEPDIR)/nbicbcast-icbcast.Tpo -c -o nbicbcast-icbcast.o `test -f 'icbcast.c' || echo '$(srcdir)/'`icbcast.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nbicbcast-icbcast.Tpo $(DEPDIR)/nbicbcast-icbcast.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='icbcast.c' object='nbicbcast-icbcast.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicbcast_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nbicbcast-icbcast.o `test -f 'icbcast.c' || echo '$(srcdir)/'`icbcast.c nbicbcast-icbcast.obj: icbcast.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicbcast_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nbicbcast-icbcast.obj -MD -MP -MF $(DEPDIR)/nbicbcast-icbcast.Tpo -c -o nbicbcast-icbcast.obj `if test -f 'icbcast.c'; then $(CYGPATH_W) 'icbcast.c'; else $(CYGPATH_W) '$(srcdir)/icbcast.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nbicbcast-icbcast.Tpo $(DEPDIR)/nbicbcast-icbcast.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='icbcast.c' object='nbicbcast-icbcast.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicbcast_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nbicbcast-icbcast.obj `if test -f 'icbcast.c'; then $(CYGPATH_W) 'icbcast.c'; else $(CYGPATH_W) '$(srcdir)/icbcast.c'; fi` nbicgather-icgather.o: icgather.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicgather_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nbicgather-icgather.o -MD -MP -MF $(DEPDIR)/nbicgather-icgather.Tpo -c -o nbicgather-icgather.o `test -f 'icgather.c' || echo '$(srcdir)/'`icgather.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nbicgather-icgather.Tpo $(DEPDIR)/nbicgather-icgather.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='icgather.c' object='nbicgather-icgather.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicgather_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nbicgather-icgather.o `test -f 'icgather.c' || echo '$(srcdir)/'`icgather.c nbicgather-icgather.obj: icgather.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicgather_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nbicgather-icgather.obj -MD -MP -MF $(DEPDIR)/nbicgather-icgather.Tpo -c -o nbicgather-icgather.obj `if test -f 'icgather.c'; then $(CYGPATH_W) 'icgather.c'; else $(CYGPATH_W) '$(srcdir)/icgather.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nbicgather-icgather.Tpo $(DEPDIR)/nbicgather-icgather.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='icgather.c' object='nbicgather-icgather.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicgather_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nbicgather-icgather.obj `if test -f 'icgather.c'; then $(CYGPATH_W) 'icgather.c'; else $(CYGPATH_W) '$(srcdir)/icgather.c'; fi` nbicgatherv-icgatherv.o: icgatherv.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicgatherv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nbicgatherv-icgatherv.o -MD -MP -MF $(DEPDIR)/nbicgatherv-icgatherv.Tpo -c -o nbicgatherv-icgatherv.o `test -f 'icgatherv.c' || echo '$(srcdir)/'`icgatherv.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nbicgatherv-icgatherv.Tpo $(DEPDIR)/nbicgatherv-icgatherv.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='icgatherv.c' object='nbicgatherv-icgatherv.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicgatherv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nbicgatherv-icgatherv.o `test -f 'icgatherv.c' || echo '$(srcdir)/'`icgatherv.c nbicgatherv-icgatherv.obj: icgatherv.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicgatherv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nbicgatherv-icgatherv.obj -MD -MP -MF $(DEPDIR)/nbicgatherv-icgatherv.Tpo -c -o nbicgatherv-icgatherv.obj `if test -f 'icgatherv.c'; then $(CYGPATH_W) 'icgatherv.c'; else $(CYGPATH_W) '$(srcdir)/icgatherv.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nbicgatherv-icgatherv.Tpo $(DEPDIR)/nbicgatherv-icgatherv.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='icgatherv.c' object='nbicgatherv-icgatherv.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicgatherv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nbicgatherv-icgatherv.obj `if test -f 'icgatherv.c'; then $(CYGPATH_W) 'icgatherv.c'; else $(CYGPATH_W) '$(srcdir)/icgatherv.c'; fi` nbicreduce-icreduce.o: icreduce.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicreduce_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nbicreduce-icreduce.o -MD -MP -MF $(DEPDIR)/nbicreduce-icreduce.Tpo -c -o nbicreduce-icreduce.o `test -f 'icreduce.c' || echo '$(srcdir)/'`icreduce.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nbicreduce-icreduce.Tpo $(DEPDIR)/nbicreduce-icreduce.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='icreduce.c' object='nbicreduce-icreduce.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicreduce_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nbicreduce-icreduce.o `test -f 'icreduce.c' || echo '$(srcdir)/'`icreduce.c nbicreduce-icreduce.obj: icreduce.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicreduce_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nbicreduce-icreduce.obj -MD -MP -MF $(DEPDIR)/nbicreduce-icreduce.Tpo -c -o nbicreduce-icreduce.obj `if test -f 'icreduce.c'; then $(CYGPATH_W) 'icreduce.c'; else $(CYGPATH_W) '$(srcdir)/icreduce.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nbicreduce-icreduce.Tpo $(DEPDIR)/nbicreduce-icreduce.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='icreduce.c' object='nbicreduce-icreduce.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicreduce_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nbicreduce-icreduce.obj `if test -f 'icreduce.c'; then $(CYGPATH_W) 'icreduce.c'; else $(CYGPATH_W) '$(srcdir)/icreduce.c'; fi` nbicscatter-icscatter.o: icscatter.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicscatter_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nbicscatter-icscatter.o -MD -MP -MF $(DEPDIR)/nbicscatter-icscatter.Tpo -c -o nbicscatter-icscatter.o `test -f 'icscatter.c' || echo '$(srcdir)/'`icscatter.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nbicscatter-icscatter.Tpo $(DEPDIR)/nbicscatter-icscatter.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='icscatter.c' object='nbicscatter-icscatter.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicscatter_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nbicscatter-icscatter.o `test -f 'icscatter.c' || echo '$(srcdir)/'`icscatter.c nbicscatter-icscatter.obj: icscatter.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicscatter_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nbicscatter-icscatter.obj -MD -MP -MF $(DEPDIR)/nbicscatter-icscatter.Tpo -c -o nbicscatter-icscatter.obj `if test -f 'icscatter.c'; then $(CYGPATH_W) 'icscatter.c'; else $(CYGPATH_W) '$(srcdir)/icscatter.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nbicscatter-icscatter.Tpo $(DEPDIR)/nbicscatter-icscatter.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='icscatter.c' object='nbicscatter-icscatter.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicscatter_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nbicscatter-icscatter.obj `if test -f 'icscatter.c'; then $(CYGPATH_W) 'icscatter.c'; else $(CYGPATH_W) '$(srcdir)/icscatter.c'; fi` nbicscatterv-icscatterv.o: icscatterv.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicscatterv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nbicscatterv-icscatterv.o -MD -MP -MF $(DEPDIR)/nbicscatterv-icscatterv.Tpo -c -o nbicscatterv-icscatterv.o `test -f 'icscatterv.c' || echo '$(srcdir)/'`icscatterv.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nbicscatterv-icscatterv.Tpo $(DEPDIR)/nbicscatterv-icscatterv.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='icscatterv.c' object='nbicscatterv-icscatterv.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicscatterv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nbicscatterv-icscatterv.o `test -f 'icscatterv.c' || echo '$(srcdir)/'`icscatterv.c nbicscatterv-icscatterv.obj: icscatterv.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicscatterv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nbicscatterv-icscatterv.obj -MD -MP -MF $(DEPDIR)/nbicscatterv-icscatterv.Tpo -c -o nbicscatterv-icscatterv.obj `if test -f 'icscatterv.c'; then $(CYGPATH_W) 'icscatterv.c'; else $(CYGPATH_W) '$(srcdir)/icscatterv.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nbicscatterv-icscatterv.Tpo $(DEPDIR)/nbicscatterv-icscatterv.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='icscatterv.c' object='nbicscatterv-icscatterv.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbicscatterv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nbicscatterv-icscatterv.obj `if test -f 'icscatterv.c'; then $(CYGPATH_W) 'icscatterv.c'; else $(CYGPATH_W) '$(srcdir)/icscatterv.c'; fi` nbredscat-redscat.o: redscat.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbredscat_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nbredscat-redscat.o -MD -MP -MF $(DEPDIR)/nbredscat-redscat.Tpo -c -o nbredscat-redscat.o `test -f 'redscat.c' || echo '$(srcdir)/'`redscat.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nbredscat-redscat.Tpo $(DEPDIR)/nbredscat-redscat.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='redscat.c' object='nbredscat-redscat.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbredscat_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nbredscat-redscat.o `test -f 'redscat.c' || echo '$(srcdir)/'`redscat.c nbredscat-redscat.obj: redscat.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbredscat_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nbredscat-redscat.obj -MD -MP -MF $(DEPDIR)/nbredscat-redscat.Tpo -c -o nbredscat-redscat.obj `if test -f 'redscat.c'; then $(CYGPATH_W) 'redscat.c'; else $(CYGPATH_W) '$(srcdir)/redscat.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nbredscat-redscat.Tpo $(DEPDIR)/nbredscat-redscat.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='redscat.c' object='nbredscat-redscat.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbredscat_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nbredscat-redscat.obj `if test -f 'redscat.c'; then $(CYGPATH_W) 'redscat.c'; else $(CYGPATH_W) '$(srcdir)/redscat.c'; fi` nbredscat3-redscat3.o: redscat3.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbredscat3_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nbredscat3-redscat3.o -MD -MP -MF $(DEPDIR)/nbredscat3-redscat3.Tpo -c -o nbredscat3-redscat3.o `test -f 'redscat3.c' || echo '$(srcdir)/'`redscat3.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nbredscat3-redscat3.Tpo $(DEPDIR)/nbredscat3-redscat3.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='redscat3.c' object='nbredscat3-redscat3.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbredscat3_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nbredscat3-redscat3.o `test -f 'redscat3.c' || echo '$(srcdir)/'`redscat3.c nbredscat3-redscat3.obj: redscat3.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbredscat3_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nbredscat3-redscat3.obj -MD -MP -MF $(DEPDIR)/nbredscat3-redscat3.Tpo -c -o nbredscat3-redscat3.obj `if test -f 'redscat3.c'; then $(CYGPATH_W) 'redscat3.c'; else $(CYGPATH_W) '$(srcdir)/redscat3.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nbredscat3-redscat3.Tpo $(DEPDIR)/nbredscat3-redscat3.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='redscat3.c' object='nbredscat3-redscat3.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbredscat3_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nbredscat3-redscat3.obj `if test -f 'redscat3.c'; then $(CYGPATH_W) 'redscat3.c'; else $(CYGPATH_W) '$(srcdir)/redscat3.c'; fi` nbredscatinter-redscatinter.o: redscatinter.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbredscatinter_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nbredscatinter-redscatinter.o -MD -MP -MF $(DEPDIR)/nbredscatinter-redscatinter.Tpo -c -o nbredscatinter-redscatinter.o `test -f 'redscatinter.c' || echo '$(srcdir)/'`redscatinter.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nbredscatinter-redscatinter.Tpo $(DEPDIR)/nbredscatinter-redscatinter.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='redscatinter.c' object='nbredscatinter-redscatinter.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbredscatinter_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nbredscatinter-redscatinter.o `test -f 'redscatinter.c' || echo '$(srcdir)/'`redscatinter.c nbredscatinter-redscatinter.obj: redscatinter.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbredscatinter_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nbredscatinter-redscatinter.obj -MD -MP -MF $(DEPDIR)/nbredscatinter-redscatinter.Tpo -c -o nbredscatinter-redscatinter.obj `if test -f 'redscatinter.c'; then $(CYGPATH_W) 'redscatinter.c'; else $(CYGPATH_W) '$(srcdir)/redscatinter.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nbredscatinter-redscatinter.Tpo $(DEPDIR)/nbredscatinter-redscatinter.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='redscatinter.c' object='nbredscatinter-redscatinter.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nbredscatinter_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nbredscatinter-redscatinter.obj `if test -f 'redscatinter.c'; then $(CYGPATH_W) 'redscatinter.c'; else $(CYGPATH_W) '$(srcdir)/redscatinter.c'; fi` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/coll/coll2.c0000644000175000017500000000422412620254305016472 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" #include "mpicolltest.h" #define MAX_PROCESSES 10 int main(int argc, char **argv) { int rank, size, i, j; int table[MAX_PROCESSES][MAX_PROCESSES]; int errors = 0; int participants; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); /* A maximum of MAX_PROCESSES processes can participate */ if (size > MAX_PROCESSES) participants = MAX_PROCESSES; else participants = size; if (MAX_PROCESSES % participants) { fprintf(stderr, "Number of processors must divide %d\n", MAX_PROCESSES); MPI_Abort(MPI_COMM_WORLD, 1); } if ((rank < participants)) { /* Determine what rows are my responsibility */ int block_size = MAX_PROCESSES / participants; int begin_row = rank * block_size; int end_row = (rank + 1) * block_size; int send_count = block_size * MAX_PROCESSES; int recv_count = send_count; /* Paint my rows my color */ for (i = begin_row; i < end_row; i++) for (j = 0; j < MAX_PROCESSES; j++) table[i][j] = rank + 10; /* Gather everybody's result together - sort of like an */ /* inefficient allgather */ for (i = 0; i < participants; i++) { void *sendbuf = (i == rank ? MPI_IN_PLACE : &table[begin_row][0]); MTest_Gather(sendbuf, send_count, MPI_INT, &table[0][0], recv_count, MPI_INT, i, MPI_COMM_WORLD); } /* Everybody should have the same table now, */ /* This test does not in any way guarantee there are no errors */ /* Print out a table or devise a smart test to make sure it's correct */ for (i = 0; i < MAX_PROCESSES; i++) { if ((table[i][0] - table[i][MAX_PROCESSES - 1] != 0)) errors++; } } MTest_Finalize(errors); MPI_Finalize(); return MTestReturnValue(errors); } mpi-testsuite-3.2+dfsg/coll/bcast.c0000644000175000017500000000616712620254305016563 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test of broadcast with various roots and datatypes"; */ int main(int argc, char *argv[]) { int errs = 0, err; int rank, size, root; int minsize = 2, count; MPI_Comm comm; MTestDatatype sendtype, recvtype; MTest_Init(&argc, &argv); /* The following illustrates the use of the routines to * run through a selection of communicators and datatypes. * Use subsets of these for tests that do not involve combinations * of communicators, datatypes, and counts of datatypes */ while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; #if defined BCAST_COMM_WORLD_ONLY if (comm != MPI_COMM_WORLD) { MTestFreeComm(&comm); continue; } #endif /* BCAST_COMM_WORLD_ONLY */ /* Determine the sender and receiver */ MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Errhandler_set(comm, MPI_ERRORS_RETURN); MTEST_DATATYPE_FOR_EACH_COUNT(count) { /* To shorten test time, only run the default version of datatype tests * for comm world and run the minimum version for other communicators. */ #if defined BCAST_MIN_DATATYPES_ONLY MTestInitMinDatatypes(); #endif /* BCAST_MIN_DATATYPES_ONLY */ while (MTestGetDatatypes(&sendtype, &recvtype, count)) { for (root = 0; root < size; root++) { if (rank == root) { sendtype.InitBuf(&sendtype); err = MPI_Bcast(sendtype.buf, sendtype.count, sendtype.datatype, root, comm); if (err) { errs++; MTestPrintError(err); } } else { recvtype.InitBuf(&recvtype); err = MPI_Bcast(recvtype.buf, recvtype.count, recvtype.datatype, root, comm); if (err) { errs++; fprintf(stderr, "Error with communicator %s and datatype %s\n", MTestGetIntracommName(), MTestGetDatatypeName(&recvtype)); MTestPrintError(err); } err = MTestCheckRecv(0, &recvtype); if (err) { errs += errs; } } } MTestFreeDatatype(&recvtype); MTestFreeDatatype(&sendtype); } } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/scattern.c0000644000175000017500000000310412620254305017276 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include /* This example sends a vector and receives individual elements */ int main(int argc, char **argv) { MPI_Datatype vec; double *vecin, *vecout, ivalue; int root, i, n, stride, err = 0; int rank, size; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); n = 12; stride = 10; vecin = (double *) malloc(n * stride * size * sizeof(double)); vecout = (double *) malloc(n * sizeof(double)); MPI_Type_vector(n, 1, stride, MPI_DOUBLE, &vec); MPI_Type_commit(&vec); for (i = 0; i < n * stride * size; i++) vecin[i] = (double) i; for (root = 0; root < size; root++) { for (i = 0; i < n; i++) vecout[i] = -1.0; MPI_Scatter(vecin, 1, vec, vecout, n, MPI_DOUBLE, root, MPI_COMM_WORLD); ivalue = rank * ((n - 1) * stride + 1); for (i = 0; i < n; i++) { if (vecout[i] != ivalue) { printf("Expected %f but found %f\n", ivalue, vecout[i]); err++; } ivalue += stride; } } i = err; MPI_Allreduce(&i, &err, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD); if (rank == 0) { if (err > 0) printf("Found %d errors!\n", err); else printf(" No Errors\n"); } MPI_Type_free(&vec); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/icallgatherv.c0000644000175000017500000000764012620254305020131 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include "mpicolltest.h" /* static char MTEST_Descrip[] = "Simple intercomm allgatherv test"; */ int main(int argc, char *argv[]) { int errs = 0, err; int *rbuf = 0, *sbuf = 0; int *recvcounts, *recvdispls; int leftGroup, i, count, rank, rsize; MPI_Comm comm; MPI_Datatype datatype; MTest_Init(&argc, &argv); datatype = MPI_INT; /* Get an intercommunicator */ while (MTestGetIntercomm(&comm, &leftGroup, 4)) { if (comm == MPI_COMM_NULL) continue; MPI_Comm_rank(comm, &rank); MPI_Comm_remote_size(comm, &rsize); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Errhandler_set(comm, MPI_ERRORS_RETURN); for (count = 1; count < 65000; count = 2 * count) { /* The left group will send rank to the right group; * The right group will send -rank to the left group */ rbuf = (int *) malloc(count * rsize * sizeof(int)); sbuf = (int *) malloc(count * sizeof(int)); recvcounts = (int *) malloc(rsize * sizeof(int)); recvdispls = (int *) malloc(rsize * sizeof(int)); for (i = 0; i < count * rsize; i++) rbuf[i] = -1; for (i = 0; i < rsize; i++) { recvcounts[i] = count; recvdispls[i] = i * count; } if (leftGroup) { for (i = 0; i < count; i++) sbuf[i] = i + rank * count; } else { for (i = 0; i < count; i++) sbuf[i] = -(i + rank * count); } err = MTest_Allgatherv(sbuf, count, datatype, rbuf, recvcounts, recvdispls, datatype, comm); if (err) { errs++; MTestPrintError(err); } if (leftGroup) { for (i = 0; i < count * rsize; i++) { if (rbuf[i] != -i) { errs++; } } } else { for (i = 0; i < count * rsize; i++) { if (rbuf[i] != i) { errs++; } } } /* Use Allgather in a unidirectional way */ for (i = 0; i < count * rsize; i++) rbuf[i] = -1; if (leftGroup) { err = MTest_Allgatherv(sbuf, 0, datatype, rbuf, recvcounts, recvdispls, datatype, comm); if (err) { errs++; MTestPrintError(err); } for (i = 0; i < count * rsize; i++) { if (rbuf[i] != -i) { errs++; } } } else { for (i = 0; i < rsize; i++) { recvcounts[i] = 0; recvdispls[i] = 0; } err = MTest_Allgatherv(sbuf, count, datatype, rbuf, recvcounts, recvdispls, datatype, comm); if (err) { errs++; MTestPrintError(err); } for (i = 0; i < count * rsize; i++) { if (rbuf[i] != -1) { errs++; } } } free(rbuf); free(sbuf); free(recvcounts); free(recvdispls); } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/icscatter.c0000644000175000017500000000617112620254305017443 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include "mpicolltest.h" /* static char MTEST_Descrip[] = "Simple intercomm scatter test"; */ int main(int argc, char *argv[]) { int errs = 0, err; int *buf = 0; int leftGroup, i, count, rank, size, rsize; MPI_Comm comm; MPI_Datatype datatype; MTest_Init(&argc, &argv); datatype = MPI_INT; /* Get an intercommunicator */ while (MTestGetIntercomm(&comm, &leftGroup, 4)) { if (comm == MPI_COMM_NULL) continue; MPI_Comm_remote_size(comm, &rsize); MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(comm, MPI_ERRORS_RETURN); for (count = 1; count < 65000; count = 2 * count) { buf = 0; if (leftGroup) { buf = (int *) malloc(count * rsize * sizeof(int)); if (rank == 0) { for (i = 0; i < count * rsize; i++) buf[i] = i; } else { for (i = 0; i < count * rsize; i++) buf[i] = -1; } err = MTest_Scatter(buf, count, datatype, NULL, 0, datatype, (rank == 0) ? MPI_ROOT : MPI_PROC_NULL, comm); if (err) { errs++; MTestPrintError(err); } /* Test that no other process in this group received the * scatter */ if (rank != 0) { for (i = 0; i < count * rsize; i++) { if (buf[i] != -1) { if (errs < 10) { fprintf(stderr, "Received data on root group!\n"); } errs++; } } } } else { buf = (int *) malloc(count * sizeof(int)); /* In the right group */ for (i = 0; i < count; i++) buf[i] = -1; err = MTest_Scatter(NULL, 0, datatype, buf, count, datatype, 0, comm); if (err) { errs++; MTestPrintError(err); } /* Check that we have received the correct data */ for (i = 0; i < count; i++) { if (buf[i] != i + rank * count) { if (errs < 10) fprintf(stderr, "buf[%d] = %d on %d\n", i, buf[i], rank); errs++; } } } free(buf); } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/alltoallv.c0000644000175000017500000001016512620254305017452 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitest.h" #include #include #include /* This program tests MPI_Alltoallv by having processor i send different amounts of data to each processor. Because there are separate send and receive types to alltoallv, there need to be tests to rearrange data on the fly. Not done yet. The first test sends i items to processor i from all processors. Currently, the test uses only MPI_INT; this is adequate for testing systems that use point-to-point operations */ int main(int argc, char **argv) { MPI_Comm comm; int *sbuf, *rbuf; int rank, size; int *sendcounts, *recvcounts, *rdispls, *sdispls; int i, j, *p, err; MTest_Init(&argc, &argv); err = 0; while (MTestGetIntracommGeneral(&comm, 2, 1)) { if (comm == MPI_COMM_NULL) continue; /* Create the buffer */ MPI_Comm_size(comm, &size); MPI_Comm_rank(comm, &rank); sbuf = (int *) malloc(size * size * sizeof(int)); rbuf = (int *) malloc(size * size * sizeof(int)); if (!sbuf || !rbuf) { fprintf(stderr, "Could not allocated buffers!\n"); MPI_Abort(comm, 1); } /* Load up the buffers */ for (i = 0; i < size * size; i++) { sbuf[i] = i + 100 * rank; rbuf[i] = -i; } /* Create and load the arguments to alltoallv */ sendcounts = (int *) malloc(size * sizeof(int)); recvcounts = (int *) malloc(size * sizeof(int)); rdispls = (int *) malloc(size * sizeof(int)); sdispls = (int *) malloc(size * sizeof(int)); if (!sendcounts || !recvcounts || !rdispls || !sdispls) { fprintf(stderr, "Could not allocate arg items!\n"); MPI_Abort(comm, 1); } for (i = 0; i < size; i++) { sendcounts[i] = i; recvcounts[i] = rank; rdispls[i] = i * rank; sdispls[i] = (i * (i + 1)) / 2; } MPI_Alltoallv(sbuf, sendcounts, sdispls, MPI_INT, rbuf, recvcounts, rdispls, MPI_INT, comm); /* Check rbuf */ for (i = 0; i < size; i++) { p = rbuf + rdispls[i]; for (j = 0; j < rank; j++) { if (p[j] != i * 100 + (rank * (rank + 1)) / 2 + j) { fprintf(stderr, "[%d] got %d expected %d for %dth\n", rank, p[j], (i * (i + 1)) / 2 + j, j); err++; } } } free(sdispls); free(sendcounts); free(sbuf); #if MTEST_HAVE_MIN_MPI_VERSION(2,2) /* check MPI_IN_PLACE, added in MPI-2.2 */ free(rbuf); rbuf = (int *) malloc(size * (2 * size) * sizeof(int)); if (!rbuf) { fprintf(stderr, "Could not reallocate rbuf!\n"); MPI_Abort(comm, 1); } /* Load up the buffers */ for (i = 0; i < size; i++) { recvcounts[i] = i + rank; rdispls[i] = i * (2 * size); } memset(rbuf, -1, size * (2 * size) * sizeof(int)); for (i = 0; i < size; i++) { p = rbuf + rdispls[i]; for (j = 0; j < recvcounts[i]; ++j) { p[j] = 100 * rank + 10 * i + j; } } MPI_Alltoallv(MPI_IN_PLACE, NULL, NULL, MPI_INT, rbuf, recvcounts, rdispls, MPI_INT, comm); /* Check rbuf */ for (i = 0; i < size; i++) { p = rbuf + rdispls[i]; for (j = 0; j < recvcounts[i]; j++) { int expected = 100 * i + 10 * rank + j; if (p[j] != expected) { fprintf(stderr, "[%d] got %d expected %d for block=%d, element=%dth\n", rank, p[j], expected, i, j); ++err; } } } #endif free(rdispls); free(recvcounts); free(rbuf); MTestFreeComm(&comm); } MTest_Finalize(err); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/icgather.c0000644000175000017500000000526312620254305017251 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include "mpicolltest.h" /* static char MTEST_Descrip[] = "Simple intercomm gather test"; */ int main(int argc, char *argv[]) { int errs = 0, err; int *buf = 0; int leftGroup, i, count, rank, rsize, size; MPI_Comm comm; MPI_Datatype datatype; MTest_Init(&argc, &argv); datatype = MPI_INT; /* Get an intercommunicator */ while (MTestGetIntercomm(&comm, &leftGroup, 4)) { if (comm == MPI_COMM_NULL) continue; MPI_Comm_rank(comm, &rank); MPI_Comm_remote_size(comm, &rsize); MPI_Comm_size(comm, &size); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(comm, MPI_ERRORS_RETURN); for (count = 1; count < 65000; count = 2 * count) { if (leftGroup) { buf = (int *) malloc(count * rsize * sizeof(int)); for (i = 0; i < count * rsize; i++) buf[i] = -1; err = MTest_Gather(NULL, 0, datatype, buf, count, datatype, (rank == 0) ? MPI_ROOT : MPI_PROC_NULL, comm); if (err) { errs++; MTestPrintError(err); } /* Test that no other process in this group received the * broadcast */ if (rank != 0) { for (i = 0; i < count; i++) { if (buf[i] != -1) { errs++; } } } else { /* Check for the correct data */ for (i = 0; i < count * rsize; i++) { if (buf[i] != i) { errs++; } } } } else { /* In the right group */ buf = (int *) malloc(count * sizeof(int)); for (i = 0; i < count; i++) buf[i] = rank * count + i; err = MTest_Gather(buf, count, datatype, NULL, 0, datatype, 0, comm); if (err) { errs++; MTestPrintError(err); } } free(buf); } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/opmin.c0000644000175000017500000001167012620254305016604 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test MPI_MIN operations on optional datatypes dupported by MPICH"; */ /* * This test looks at the handling of char and types that are not required * integers (e.g., long long). MPICH allows * these as well. A strict MPI test should not include this test. */ int main(int argc, char *argv[]) { int errs = 0; int rank, size; MPI_Comm comm; char cinbuf[3], coutbuf[3]; signed char scinbuf[3], scoutbuf[3]; unsigned char ucinbuf[3], ucoutbuf[3]; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); #ifndef USE_STRICT_MPI /* char */ MTestPrintfMsg(10, "Reduce of MPI_CHAR\n"); cinbuf[0] = 1; cinbuf[1] = 0; cinbuf[2] = (rank & 0x7f); coutbuf[0] = 0; coutbuf[1] = 1; coutbuf[2] = 1; MPI_Reduce(cinbuf, coutbuf, 3, MPI_CHAR, MPI_MIN, 0, comm); if (rank == 0) { if (coutbuf[0] != 1) { errs++; fprintf(stderr, "char MIN(1) test failed\n"); } if (coutbuf[1] != 0) { errs++; fprintf(stderr, "char MIN(0) test failed\n"); } if (coutbuf[2] != 0) { errs++; fprintf(stderr, "char MIN(>) test failed\n"); } } #endif /* USE_STRICT_MPI */ /* signed char */ MTestPrintfMsg(10, "Reduce of MPI_SIGNED_CHAR\n"); scinbuf[0] = 1; scinbuf[1] = 0; scinbuf[2] = (rank & 0x7f); scoutbuf[0] = 0; scoutbuf[1] = 1; scoutbuf[2] = 1; MPI_Reduce(scinbuf, scoutbuf, 3, MPI_SIGNED_CHAR, MPI_MIN, 0, comm); if (rank == 0) { if (scoutbuf[0] != 1) { errs++; fprintf(stderr, "signed char MIN(1) test failed\n"); } if (scoutbuf[1] != 0) { errs++; fprintf(stderr, "signed char MIN(0) test failed\n"); } if (scoutbuf[2] != 0) { errs++; fprintf(stderr, "signed char MIN(>) test failed\n"); } } /* unsigned char */ MTestPrintfMsg(10, "Reduce of MPI_UNSIGNED_CHAR\n"); ucinbuf[0] = 1; ucinbuf[1] = 0; ucinbuf[2] = (rank & 0x7f); ucoutbuf[0] = 0; ucoutbuf[1] = 1; ucoutbuf[2] = 1; MPI_Reduce(ucinbuf, ucoutbuf, 3, MPI_UNSIGNED_CHAR, MPI_MIN, 0, comm); if (rank == 0) { if (ucoutbuf[0] != 1) { errs++; fprintf(stderr, "unsigned char MIN(1) test failed\n"); } if (ucoutbuf[1]) { errs++; fprintf(stderr, "unsigned char MIN(0) test failed\n"); } if (ucoutbuf[2] != 0) { errs++; fprintf(stderr, "unsigned char MIN(>) test failed\n"); } } #ifdef HAVE_LONG_DOUBLE { long double ldinbuf[3], ldoutbuf[3]; /* long double */ ldinbuf[0] = 1; ldinbuf[1] = 0; ldinbuf[2] = rank; ldoutbuf[0] = 0; ldoutbuf[1] = 1; ldoutbuf[2] = 1; if (MPI_LONG_DOUBLE != MPI_DATATYPE_NULL) { MTestPrintfMsg(10, "Reduce of MPI_LONG_DOUBLE\n"); MPI_Reduce(ldinbuf, ldoutbuf, 3, MPI_LONG_DOUBLE, MPI_MIN, 0, comm); if (rank == 0) { if (ldoutbuf[0] != 1) { errs++; fprintf(stderr, "long double MIN(1) test failed\n"); } if (ldoutbuf[1] != 0.0) { errs++; fprintf(stderr, "long double MIN(0) test failed\n"); } if (ldoutbuf[2] != 0.0) { errs++; fprintf(stderr, "long double MIN(>) test failed\n"); } } } } #endif /* HAVE_LONG_DOUBLE */ #ifdef HAVE_LONG_LONG { long long llinbuf[3], lloutbuf[3]; /* long long */ llinbuf[0] = 1; llinbuf[1] = 0; llinbuf[2] = rank; lloutbuf[0] = 0; lloutbuf[1] = 1; lloutbuf[2] = 1; if (MPI_LONG_LONG != MPI_DATATYPE_NULL) { MTestPrintfMsg(10, "Reduce of MPI_LONG_LONG\n"); MPI_Reduce(llinbuf, lloutbuf, 3, MPI_LONG_LONG, MPI_MIN, 0, comm); if (rank == 0) { if (lloutbuf[0] != 1) { errs++; fprintf(stderr, "long long MIN(1) test failed\n"); } if (lloutbuf[1] != 0) { errs++; fprintf(stderr, "long long MIN(0) test failed\n"); } if (lloutbuf[2] != 0) { errs++; fprintf(stderr, "long long MIN(>) test failed\n"); } } } } #endif /* HAVE_LONG_LONG */ MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/bcasttest.c0000644000175000017500000000502312620254305017451 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include #include "mpitest.h" #define ROOT 0 #define NUM_REPS 5 #define NUM_SIZES 4 int main(int argc, char **argv) { int *buf; int i, rank, reps, n; int bVerify = 1; int sizes[NUM_SIZES] = { 100, 64 * 1024, 128 * 1024, 1024 * 1024 }; int num_errors = 0; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (argc > 1) { if (strcmp(argv[1], "-novalidate") == 0 || strcmp(argv[1], "-noverify") == 0) bVerify = 0; } buf = (int *) malloc(sizes[NUM_SIZES - 1] * sizeof(int)); memset(buf, 0, sizes[NUM_SIZES - 1] * sizeof(int)); for (n = 0; n < NUM_SIZES; n++) { #ifdef DEBUG if (rank == ROOT) { printf("bcasting %d MPI_INTs %d times\n", sizes[n], NUM_REPS); fflush(stdout); } #endif for (reps = 0; reps < NUM_REPS; reps++) { if (bVerify) { if (rank == ROOT) { for (i = 0; i < sizes[n]; i++) { buf[i] = 1000000 * (n * NUM_REPS + reps) + i; } } else { for (i = 0; i < sizes[n]; i++) { buf[i] = -1 - (n * NUM_REPS + reps); } } } # ifdef DEBUG { printf("rank=%d, n=%d, reps=%d\n", rank, n, reps); } # endif MPI_Bcast(buf, sizes[n], MPI_INT, ROOT, MPI_COMM_WORLD); if (bVerify) { num_errors = 0; for (i = 0; i < sizes[n]; i++) { if (buf[i] != 1000000 * (n * NUM_REPS + reps) + i) { num_errors++; if (num_errors < 10) { printf("Error: Rank=%d, n=%d, reps=%d, i=%d, buf[i]=%d expected=%d\n", rank, n, reps, i, buf[i], 1000000 * (n * NUM_REPS + reps) + i); fflush(stdout); } } } if (num_errors >= 10) { printf("Error: Rank=%d, num_errors = %d\n", rank, num_errors); fflush(stdout); } } } } free(buf); MTest_Finalize(num_errors); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/icallgather.c0000644000175000017500000000640212620254305017736 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include "mpicolltest.h" /* static char MTEST_Descrip[] = "Simple intercomm allgather test"; */ int main(int argc, char *argv[]) { int errs = 0, err; int *rbuf = 0, *sbuf = 0; int leftGroup, i, count, rank, rsize; MPI_Comm comm; MPI_Datatype datatype; MTest_Init(&argc, &argv); datatype = MPI_INT; /* Get an intercommunicator */ while (MTestGetIntercomm(&comm, &leftGroup, 4)) { if (comm == MPI_COMM_NULL) continue; MPI_Comm_rank(comm, &rank); MPI_Comm_remote_size(comm, &rsize); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Errhandler_set(comm, MPI_ERRORS_RETURN); for (count = 1; count < 65000; count = 2 * count) { /* The left group will send rank to the right group; * The right group will send -rank to the left group */ rbuf = (int *) malloc(count * rsize * sizeof(int)); sbuf = (int *) malloc(count * sizeof(int)); for (i = 0; i < count * rsize; i++) rbuf[i] = -1; if (leftGroup) { for (i = 0; i < count; i++) sbuf[i] = i + rank * count; } else { for (i = 0; i < count; i++) sbuf[i] = -(i + rank * count); } err = MTest_Allgather(sbuf, count, datatype, rbuf, count, datatype, comm); if (err) { errs++; MTestPrintError(err); } if (leftGroup) { for (i = 0; i < count * rsize; i++) { if (rbuf[i] != -i) { errs++; } } } else { for (i = 0; i < count * rsize; i++) { if (rbuf[i] != i) { errs++; } } } /* Use Allgather in a unidirectional way */ for (i = 0; i < count * rsize; i++) rbuf[i] = -1; if (leftGroup) { err = MTest_Allgather(sbuf, 0, datatype, rbuf, count, datatype, comm); if (err) { errs++; MTestPrintError(err); } for (i = 0; i < count * rsize; i++) { if (rbuf[i] != -i) { errs++; } } } else { err = MTest_Allgather(sbuf, count, datatype, rbuf, 0, datatype, comm); if (err) { errs++; MTestPrintError(err); } for (i = 0; i < count * rsize; i++) { if (rbuf[i] != -1) { errs++; } } } free(rbuf); free(sbuf); } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/opminloc.c0000644000175000017500000001712112620254305017277 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test MPI_MINLOC operations on datatypes dupported by MPICH"; */ /* * This test looks at the handling of char and types that are not required * integers (e.g., long long). MPICH allows * these as well. A strict MPI test should not include this test. * * The rule on min loc is that if there is a tie in the value, the minimum * rank is used (see 4.9.3 in the MPI-1 standard) */ int main(int argc, char *argv[]) { int errs = 0; int rank, size; MPI_Comm comm; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); /* 2 int */ { struct twoint { int val; int loc; } cinbuf[3], coutbuf[3]; cinbuf[0].val = 1; cinbuf[0].loc = rank; cinbuf[1].val = 0; cinbuf[1].loc = rank; cinbuf[2].val = (rank & 0x7f); cinbuf[2].loc = rank; coutbuf[0].val = 0; coutbuf[0].loc = -1; coutbuf[1].val = 1; coutbuf[1].loc = -1; coutbuf[2].val = 1; coutbuf[2].loc = -1; MPI_Reduce(cinbuf, coutbuf, 3, MPI_2INT, MPI_MINLOC, 0, comm); if (rank == 0) { if (coutbuf[0].val != 1 && coutbuf[0].loc != -1) { errs++; fprintf(stderr, "2int MINLOC(1) test failed\n"); } if (coutbuf[1].val != 0 && coutbuf[1].loc != -1) { errs++; fprintf(stderr, "2int MINLOC(0) test failed\n"); } if (coutbuf[2].val != 0 && coutbuf[2].loc != 0) { errs++; fprintf(stderr, "2int MINLOC(>) test failed\n"); } } } /* float int */ { struct floatint { float val; int loc; } cinbuf[3], coutbuf[3]; cinbuf[0].val = 1; cinbuf[0].loc = rank; cinbuf[1].val = 0; cinbuf[1].loc = rank; cinbuf[2].val = (float) rank; cinbuf[2].loc = rank; coutbuf[0].val = 0; coutbuf[0].loc = -1; coutbuf[1].val = 1; coutbuf[1].loc = -1; coutbuf[2].val = 1; coutbuf[2].loc = -1; MPI_Reduce(cinbuf, coutbuf, 3, MPI_FLOAT_INT, MPI_MINLOC, 0, comm); if (rank == 0) { if (coutbuf[0].val != 1 && coutbuf[0].loc != -1) { errs++; fprintf(stderr, "float-int MINLOC(1) test failed\n"); } if (coutbuf[1].val != 0 && coutbuf[1].loc != -1) { errs++; fprintf(stderr, "float-int MINLOC(0) test failed\n"); } if (coutbuf[2].val != 0 && coutbuf[2].loc != 0) { errs++; fprintf(stderr, "float-int MINLOC(>) test failed\n"); } } } /* long int */ { struct longint { long val; int loc; } cinbuf[3], coutbuf[3]; cinbuf[0].val = 1; cinbuf[0].loc = rank; cinbuf[1].val = 0; cinbuf[1].loc = rank; cinbuf[2].val = rank; cinbuf[2].loc = rank; coutbuf[0].val = 0; coutbuf[0].loc = -1; coutbuf[1].val = 1; coutbuf[1].loc = -1; coutbuf[2].val = 1; coutbuf[2].loc = -1; MPI_Reduce(cinbuf, coutbuf, 3, MPI_LONG_INT, MPI_MINLOC, 0, comm); if (rank == 0) { if (coutbuf[0].val != 1 || coutbuf[0].loc != 0) { errs++; fprintf(stderr, "long-int MINLOC(1) test failed\n"); } if (coutbuf[1].val != 0 || coutbuf[1].loc != 0) { errs++; fprintf(stderr, "long-int MINLOC(0) test failed\n"); } if (coutbuf[2].val != 0 || coutbuf[2].loc != 0) { errs++; fprintf(stderr, "long-int MINLOC(>) test failed\n"); } } } /* short int */ { struct shortint { short val; int loc; } cinbuf[3], coutbuf[3]; cinbuf[0].val = 1; cinbuf[0].loc = rank; cinbuf[1].val = 0; cinbuf[1].loc = rank; cinbuf[2].val = rank; cinbuf[2].loc = rank; coutbuf[0].val = 0; coutbuf[0].loc = -1; coutbuf[1].val = 1; coutbuf[1].loc = -1; coutbuf[2].val = 1; coutbuf[2].loc = -1; MPI_Reduce(cinbuf, coutbuf, 3, MPI_SHORT_INT, MPI_MINLOC, 0, comm); if (rank == 0) { if (coutbuf[0].val != 1 || coutbuf[0].loc != 0) { errs++; fprintf(stderr, "short-int MINLOC(1) test failed\n"); } if (coutbuf[1].val != 0 || coutbuf[1].loc != 0) { errs++; fprintf(stderr, "short-int MINLOC(0) test failed\n"); } if (coutbuf[2].val != 0 || coutbuf[2].loc != 0) { errs++; fprintf(stderr, "short-int MINLOC(>) test failed\n"); } } } /* double int */ { struct doubleint { double val; int loc; } cinbuf[3], coutbuf[3]; cinbuf[0].val = 1; cinbuf[0].loc = rank; cinbuf[1].val = 0; cinbuf[1].loc = rank; cinbuf[2].val = rank; cinbuf[2].loc = rank; coutbuf[0].val = 0; coutbuf[0].loc = -1; coutbuf[1].val = 1; coutbuf[1].loc = -1; coutbuf[2].val = 1; coutbuf[2].loc = -1; MPI_Reduce(cinbuf, coutbuf, 3, MPI_DOUBLE_INT, MPI_MINLOC, 0, comm); if (rank == 0) { if (coutbuf[0].val != 1 || coutbuf[0].loc != 0) { errs++; fprintf(stderr, "double-int MINLOC(1) test failed\n"); } if (coutbuf[1].val != 0 || coutbuf[1].loc != 0) { errs++; fprintf(stderr, "double-int MINLOC(0) test failed\n"); } if (coutbuf[2].val != 0 || coutbuf[2].loc != 0) { errs++; fprintf(stderr, "double-int MINLOC(>) test failed\n"); } } } #ifdef HAVE_LONG_DOUBLE /* long double int */ { struct longdoubleint { long double val; int loc; } cinbuf[3], coutbuf[3]; cinbuf[0].val = 1; cinbuf[0].loc = rank; cinbuf[1].val = 0; cinbuf[1].loc = rank; cinbuf[2].val = rank; cinbuf[2].loc = rank; coutbuf[0].val = 0; coutbuf[0].loc = -1; coutbuf[1].val = 1; coutbuf[1].loc = -1; coutbuf[2].val = 1; coutbuf[2].loc = -1; if (MPI_LONG_DOUBLE != MPI_DATATYPE_NULL) { MPI_Reduce(cinbuf, coutbuf, 3, MPI_LONG_DOUBLE_INT, MPI_MINLOC, 0, comm); if (rank == 0) { if (coutbuf[0].val != 1 || coutbuf[0].loc != 0) { errs++; fprintf(stderr, "long double-int MINLOC(1) test failed\n"); } if (coutbuf[1].val != 0 || coutbuf[1].loc != 0) { errs++; fprintf(stderr, "long double-int MINLOC(0) test failed\n"); } if (coutbuf[2].val != 0 || coutbuf[2].loc != 0) { errs++; fprintf(stderr, "long double-int MINLOC(>) test failed\n"); } } } } #endif MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/allred2.c0000644000175000017500000000273712620254305017013 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test MPI_Allreduce with MPI_IN_PLACE"; */ int main(int argc, char *argv[]) { int errs = 0; int rank, size; int minsize = 2, count; MPI_Comm comm; int *buf, i; MTest_Init(&argc, &argv); while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; MPI_Comm_size(comm, &size); MPI_Comm_rank(comm, &rank); for (count = 1; count < 65000; count = count * 2) { /* Contiguous data */ buf = (int *) malloc(count * sizeof(int)); for (i = 0; i < count; i++) buf[i] = rank + i; MPI_Allreduce(MPI_IN_PLACE, buf, count, MPI_INT, MPI_SUM, comm); /* Check the results */ for (i = 0; i < count; i++) { int result = i * size + (size * (size - 1)) / 2; if (buf[i] != result) { errs++; if (errs < 10) { fprintf(stderr, "buf[%d] = %d expected %d\n", i, buf[i], result); } } } free(buf); } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/exscan2.c0000644000175000017500000000254112620254305017022 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test MPI_Exscan (simple test)"; */ int main(int argc, char *argv[]) { int errs = 0; int rank, size; int sendbuf[1], recvbuf[1]; MPI_Comm comm; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); sendbuf[0] = rank; recvbuf[0] = -2; MPI_Exscan(sendbuf, recvbuf, 1, MPI_INT, MPI_SUM, comm); /* Check the results. rank 0 has no data. Input is * 0 1 2 3 4 5 6 7 8 ... * Output is * - 0 1 3 6 10 15 21 28 36 * (scan, not counting the contribution from the calling process) */ if (rank > 0) { int result = (((rank) * (rank - 1)) / 2); /* printf("%d: %d\n", rank, result); */ if (recvbuf[0] != result) { errs++; fprintf(stderr, "Error in recvbuf = %d on %d, expected %d\n", recvbuf[0], rank, result); } } else if (recvbuf[0] != -2) { errs++; fprintf(stderr, "Error in recvbuf on zero, is %d\n", recvbuf[0]); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/allred4.c0000644000175000017500000001412012620254305017002 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2004 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include /* static char MTEST_Descrip[] = "Test MPI_Allreduce with non-commutative user-defined operations using matrix rotations"; */ /* This example is similar to allred3.c, but uses only 3x3 matrics with integer-valued entries. This is an associative but not commutative operation. The number of matrices is the count argument. The matrix is stored in C order, so that c(i,j) is cin[j+i*3] Three different matrices are used: I = identity matrix A = (1 0 0 B = (0 1 0 0 0 1 1 0 0 0 1 0) 0 0 1) The product I^k A I^(p-2-k-j) B I^j is (0 1 0 0 0 1 1 0 0) for all values of k, p, and j. */ void matmult(void *cinPtr, void *coutPtr, int *count, MPI_Datatype * dtype); void matmult(void *cinPtr, void *coutPtr, int *count, MPI_Datatype * dtype) { const int *cin = (const int *) cinPtr; int *cout = (int *) coutPtr; int i, j, k, nmat; int tempcol[3]; int offset1, offset2; for (nmat = 0; nmat < *count; nmat++) { for (j = 0; j < 3; j++) { for (i = 0; i < 3; i++) { tempcol[i] = 0; for (k = 0; k < 3; k++) { /* col[i] += cin(i,k) * cout(k,j) */ offset1 = k + i * 3; offset2 = j + k * 3; tempcol[i] += cin[offset1] * cout[offset2]; } } for (i = 0; i < 3; i++) { offset1 = j + i * 3; cout[offset1] = tempcol[i]; } } /* Advance to the next matrix */ cin += 9; cout += 9; } } /* Initialize the integer matrix as one of the above matrix entries, as a function of count. We guarantee that both the A and B matrices are included. */ static void initMat(int rank, int size, int nmat, int mat[]) { int i, kind; /* Zero the matrix */ for (i = 0; i < 9; i++) { mat[i] = 0; } /* Decide which matrix to create (I, A, or B) */ if (size == 2) { /* rank 0 is A, 1 is B */ kind = 1 + rank; } else { int tmpA, tmpB; /* Most ranks are identity matrices */ kind = 0; /* Make sure exactly one rank gets the A matrix * and one the B matrix */ tmpA = size / 4; tmpB = (3 * size) / 4; if (rank == tmpA) kind = 1; if (rank == tmpB) kind = 2; } switch (kind) { case 0: /* Identity */ mat[0] = 1; mat[4] = 1; mat[8] = 1; break; case 1: /* A */ mat[0] = 1; mat[5] = 1; mat[7] = 1; break; case 2: /* B */ mat[1] = 1; mat[3] = 1; mat[8] = 1; break; } } /* Compare a matrix with the known result */ static int checkResult(int nmat, int mat[], const char *msg) { int n, k, errs = 0, wrank; static int solution[9] = { 0, 1, 0, 0, 0, 1, 1, 0, 0 }; MPI_Comm_rank(MPI_COMM_WORLD, &wrank); for (n = 0; n < nmat; n++) { for (k = 0; k < 9; k++) { if (mat[k] != solution[k]) { errs++; if (errs == 1) { printf("Errors for communicators %s\n", MTestGetIntracommName()); fflush(stdout); } if (errs < 10) { printf("[%d]matrix #%d(%s): Expected mat[%d,%d] = %d, got %d\n", wrank, n, msg, k / 3, k % 3, solution[k], mat[k]); fflush(stdout); } } } /* Advance to the next matrix */ mat += 9; } return errs; } int main(int argc, char *argv[]) { int errs = 0; int size, rank; int minsize = 2, count; MPI_Comm comm; int *buf, *bufout; MPI_Op op; MPI_Datatype mattype; int i; MTest_Init(&argc, &argv); MPI_Op_create(matmult, 0, &op); /* A single rotation matrix (3x3, stored as 9 consequetive elements) */ MPI_Type_contiguous(9, MPI_INT, &mattype); MPI_Type_commit(&mattype); /* Sanity check: test that our routines work properly */ { int one = 1; buf = (int *) malloc(4 * 9 * sizeof(int)); initMat(0, 4, 0, &buf[0]); initMat(1, 4, 0, &buf[9]); initMat(2, 4, 0, &buf[18]); initMat(3, 4, 0, &buf[27]); matmult(&buf[0], &buf[9], &one, &mattype); matmult(&buf[9], &buf[18], &one, &mattype); matmult(&buf[18], &buf[27], &one, &mattype); checkResult(1, &buf[27], "Sanity Check"); free(buf); } while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; MPI_Comm_size(comm, &size); MPI_Comm_rank(comm, &rank); for (count = 1; count < size; count++) { /* Allocate the matrices */ buf = (int *) malloc(count * 9 * sizeof(int)); if (!buf) { MPI_Abort(MPI_COMM_WORLD, 1); } bufout = (int *) malloc(count * 9 * sizeof(int)); if (!bufout) { MPI_Abort(MPI_COMM_WORLD, 1); } for (i = 0; i < count; i++) { initMat(rank, size, i, &buf[i * 9]); } MPI_Allreduce(buf, bufout, count, mattype, op, comm); errs += checkResult(count, bufout, ""); /* Try the same test, but using MPI_IN_PLACE */ for (i = 0; i < count; i++) { initMat(rank, size, i, &bufout[i * 9]); } MPI_Allreduce(MPI_IN_PLACE, bufout, count, mattype, op, comm); errs += checkResult(count, bufout, "IN_PLACE"); free(buf); free(bufout); } MTestFreeComm(&comm); } MPI_Op_free(&op); MPI_Type_free(&mattype); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/coll5.c0000644000175000017500000000323412620254305016475 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" #define MAX_PROCESSES 10 int main(int argc, char **argv) { int rank, size, i, j; int table[MAX_PROCESSES][MAX_PROCESSES]; int row[MAX_PROCESSES]; int errors = 0; int participants; int displs[MAX_PROCESSES]; int send_counts[MAX_PROCESSES]; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); /* A maximum of MAX_PROCESSES processes can participate */ if (size > MAX_PROCESSES) participants = MAX_PROCESSES; else participants = size; if ((rank < participants)) { int recv_count = MAX_PROCESSES; /* If I'm the root (process 0), then fill out the big table */ /* and setup send_counts and displs arrays */ if (rank == 0) for (i = 0; i < participants; i++) { send_counts[i] = recv_count; displs[i] = i * MAX_PROCESSES; for (j = 0; j < MAX_PROCESSES; j++) table[i][j] = i + j; } /* Scatter the big table to everybody's little table */ MPI_Scatterv(&table[0][0], send_counts, displs, MPI_INT, &row[0], recv_count, MPI_INT, 0, MPI_COMM_WORLD); /* Now see if our row looks right */ for (i = 0; i < MAX_PROCESSES; i++) if (row[i] != i + rank) errors++; } MTest_Finalize(errors); MPI_Finalize(); return MTestReturnValue(errors); } mpi-testsuite-3.2+dfsg/coll/nonblocking.c0000644000175000017500000001654512620254305017773 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2010 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* This is a very weak sanity test that all nonblocking collectives specified by * MPI-3 are present in the library and take arguments as expected. This test * does not check for progress, matching issues, or sensible output buffer * values. */ #include "mpi.h" #include #include #define NUM_INTS (2) #define my_assert(cond_) \ do { \ if (!(cond_)) { \ fprintf(stderr, "assertion (%s) failed, aborting\n", #cond_); \ MPI_Abort(MPI_COMM_WORLD, 1); \ } \ } while (0) int main(int argc, char **argv) { int errs = 0; int i; int rank, size; int *sbuf = NULL; int *rbuf = NULL; int *scounts = NULL; int *rcounts = NULL; int *sdispls = NULL; int *rdispls = NULL; int *types = NULL; MPI_Comm comm; MPI_Request req; /* intentionally not using MTest_Init/MTest_Finalize in order to make it * easy to take this test and use it as an NBC sanity test outside of the * MPICH test suite */ MPI_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_Comm_size(comm, &size); MPI_Comm_rank(comm, &rank); /* enough space for every process to contribute at least NUM_INTS ints to any * collective operation */ sbuf = malloc(NUM_INTS * size * sizeof(int)); my_assert(sbuf); rbuf = malloc(NUM_INTS * size * sizeof(int)); my_assert(rbuf); scounts = malloc(size * sizeof(int)); my_assert(scounts); rcounts = malloc(size * sizeof(int)); my_assert(rcounts); sdispls = malloc(size * sizeof(int)); my_assert(sdispls); rdispls = malloc(size * sizeof(int)); my_assert(rdispls); types = malloc(size * sizeof(int)); my_assert(types); for (i = 0; i < size; ++i) { sbuf[2 * i] = i; sbuf[2 * i + 1] = i; rbuf[2 * i] = i; rbuf[2 * i + 1] = i; scounts[i] = NUM_INTS; rcounts[i] = NUM_INTS; sdispls[i] = i * NUM_INTS; rdispls[i] = i * NUM_INTS; types[i] = MPI_INT; } MPI_Ibarrier(comm, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); MPI_Ibcast(sbuf, NUM_INTS, MPI_INT, 0, comm, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); MPI_Igather(sbuf, NUM_INTS, MPI_INT, rbuf, NUM_INTS, MPI_INT, 0, comm, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); if (0 == rank) MPI_Igather(MPI_IN_PLACE, -1, MPI_DATATYPE_NULL, rbuf, NUM_INTS, MPI_INT, 0, comm, &req); else MPI_Igather(sbuf, NUM_INTS, MPI_INT, rbuf, NUM_INTS, MPI_INT, 0, comm, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); MPI_Igatherv(sbuf, NUM_INTS, MPI_INT, rbuf, rcounts, rdispls, MPI_INT, 0, comm, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); if (0 == rank) MPI_Igatherv(MPI_IN_PLACE, -1, MPI_DATATYPE_NULL, rbuf, rcounts, rdispls, MPI_INT, 0, comm, &req); else MPI_Igatherv(sbuf, NUM_INTS, MPI_INT, rbuf, rcounts, rdispls, MPI_INT, 0, comm, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); MPI_Iscatter(sbuf, NUM_INTS, MPI_INT, rbuf, NUM_INTS, MPI_INT, 0, comm, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); if (0 == rank) MPI_Iscatter(sbuf, NUM_INTS, MPI_INT, MPI_IN_PLACE, -1, MPI_DATATYPE_NULL, 0, comm, &req); else MPI_Iscatter(sbuf, NUM_INTS, MPI_INT, rbuf, NUM_INTS, MPI_INT, 0, comm, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); MPI_Iscatterv(sbuf, scounts, sdispls, MPI_INT, rbuf, NUM_INTS, MPI_INT, 0, comm, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); if (0 == rank) MPI_Iscatterv(sbuf, scounts, sdispls, MPI_INT, MPI_IN_PLACE, -1, MPI_DATATYPE_NULL, 0, comm, &req); else MPI_Iscatterv(sbuf, scounts, sdispls, MPI_INT, rbuf, NUM_INTS, MPI_INT, 0, comm, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); MPI_Iallgather(sbuf, NUM_INTS, MPI_INT, rbuf, NUM_INTS, MPI_INT, comm, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); MPI_Iallgather(MPI_IN_PLACE, -1, MPI_DATATYPE_NULL, rbuf, NUM_INTS, MPI_INT, comm, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); MPI_Iallgatherv(sbuf, NUM_INTS, MPI_INT, rbuf, rcounts, rdispls, MPI_INT, comm, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); MPI_Iallgatherv(MPI_IN_PLACE, -1, MPI_DATATYPE_NULL, rbuf, rcounts, rdispls, MPI_INT, comm, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); MPI_Ialltoall(sbuf, NUM_INTS, MPI_INT, rbuf, NUM_INTS, MPI_INT, comm, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); MPI_Ialltoall(MPI_IN_PLACE, -1, MPI_DATATYPE_NULL, rbuf, NUM_INTS, MPI_INT, comm, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); MPI_Ialltoallv(sbuf, scounts, sdispls, MPI_INT, rbuf, rcounts, rdispls, MPI_INT, comm, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); MPI_Ialltoallv(MPI_IN_PLACE, NULL, NULL, MPI_DATATYPE_NULL, rbuf, rcounts, rdispls, MPI_INT, comm, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); MPI_Ialltoallw(sbuf, scounts, sdispls, types, rbuf, rcounts, rdispls, types, comm, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); MPI_Ialltoallw(MPI_IN_PLACE, NULL, NULL, NULL, rbuf, rcounts, rdispls, types, comm, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); MPI_Ireduce(sbuf, rbuf, NUM_INTS, MPI_INT, MPI_SUM, 0, comm, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); if (0 == rank) MPI_Ireduce(MPI_IN_PLACE, rbuf, NUM_INTS, MPI_INT, MPI_SUM, 0, comm, &req); else MPI_Ireduce(sbuf, rbuf, NUM_INTS, MPI_INT, MPI_SUM, 0, comm, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); MPI_Iallreduce(sbuf, rbuf, NUM_INTS, MPI_INT, MPI_SUM, comm, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); MPI_Iallreduce(MPI_IN_PLACE, rbuf, NUM_INTS, MPI_INT, MPI_SUM, comm, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); MPI_Ireduce_scatter(sbuf, rbuf, rcounts, MPI_INT, MPI_SUM, comm, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); MPI_Ireduce_scatter(MPI_IN_PLACE, rbuf, rcounts, MPI_INT, MPI_SUM, comm, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); MPI_Ireduce_scatter_block(sbuf, rbuf, NUM_INTS, MPI_INT, MPI_SUM, comm, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); MPI_Ireduce_scatter_block(MPI_IN_PLACE, rbuf, NUM_INTS, MPI_INT, MPI_SUM, comm, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); MPI_Iscan(sbuf, rbuf, NUM_INTS, MPI_INT, MPI_SUM, comm, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); MPI_Iscan(MPI_IN_PLACE, rbuf, NUM_INTS, MPI_INT, MPI_SUM, comm, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); MPI_Iexscan(sbuf, rbuf, NUM_INTS, MPI_INT, MPI_SUM, comm, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); MPI_Iexscan(MPI_IN_PLACE, rbuf, NUM_INTS, MPI_INT, MPI_SUM, comm, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); if (sbuf) free(sbuf); if (rbuf) free(rbuf); if (scounts) free(scounts); if (rcounts) free(rcounts); if (sdispls) free(sdispls); if (rdispls) free(rdispls); if (rank == 0) { if (errs) fprintf(stderr, "Found %d errors\n", errs); else printf(" No errors\n"); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/Makefile.am0000644000175000017500000001175412620254305017355 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile.mtest EXTRA_DIST = testlist.in ## for all programs that are just built from the single corresponding source ## file, we don't need per-target _SOURCES rules, automake will infer them ## correctly noinst_PROGRAMS = \ allgather2 \ allgather3 \ allgatherv2 \ allgatherv3 \ allgatherv4 \ allgather_struct \ allred \ allred2 \ allred3 \ allred4 \ allred5 \ allred6 \ allredmany \ alltoall1 \ alltoallv \ alltoallv0 \ alltoallw1 \ alltoallw2 \ alltoallw_zeros \ bcast_full \ bcast_min_datatypes \ bcast_comm_world \ bcasttest \ bcastzerotype \ coll2 \ coll3 \ coll4 \ coll5 \ coll6 \ coll7 \ coll8 \ coll9 \ coll10 \ coll11 \ coll12 \ coll13 \ exscan \ exscan2 \ gather \ gather2 \ gather_big \ iallred \ ibarrier \ icallgather \ icallgatherv \ icallreduce \ icalltoall \ icalltoallv \ icalltoallw \ icbarrier \ icbcast \ icgather \ icgatherv \ icreduce \ icscatter \ icscatterv \ longuser \ nonblocking \ nonblocking2 \ nonblocking3 \ op_commutative \ opband \ opbor \ opbxor \ opland \ oplor \ oplxor \ opmax \ opmaxloc \ opmin \ opminloc \ opprod \ opsum \ red3 \ red4 \ red_scat_block \ red_scat_block2 \ redscat \ redscat2 \ redscat3 \ redscatblk3 \ redscatinter \ redscatbkinter \ reduce \ reduce_local \ scantst \ scatter2 \ scatter3 \ scattern \ scatterv \ uoplong \ nballtoall1 \ nbredscat \ nbredscat3 \ nbredscatinter \ nbcoll2 \ nbicbarrier \ nbicallgather \ nbicallgatherv \ nbicallreduce \ nbicbcast \ nbicalltoall \ nbicalltoallw \ nbicalltoallv \ nbicgather \ nbicgatherv \ nbicreduce \ nbicscatter \ nbicscatterv allgatherv4_LDADD = $(LDADD) -lm bcast_full_SOURCES = bcast.c bcast_min_datatypes_CPPFLAGS = -DBCAST_MIN_DATATYPES_ONLY $(AM_CPPFLAGS) bcast_min_datatypes_SOURCES = bcast.c bcast_comm_world_CPPFLAGS = -DBCAST_COMM_WORLD_ONLY $(AM_CPPFLAGS) bcast_comm_world_SOURCES = bcast.c # Generate tests of the nonblocking collectives by reusing the blocking tests. nballtoall1_SOURCES = alltoall1.c nballtoall1_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nbredscat_SOURCES = redscat.c nbredscat_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nbredscat3_SOURCES = redscat3.c nbredscat3_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nbredscatinter_SOURCES = redscatinter.c nbredscatinter_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nbcoll2_SOURCES = coll2.c nbcoll2_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nbicbarrier_SOURCES = icbarrier.c nbicbarrier_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nbicallgather_SOURCES = icallgather.c nbicallgather_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nbicallgatherv_SOURCES = icallgatherv.c nbicallgatherv_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nbicallreduce_SOURCES = icallreduce.c nbicallreduce_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nbicalltoall_SOURCES = icalltoall.c nbicalltoall_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nbicalltoallv_SOURCES = icalltoallv.c nbicalltoallv_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nbicalltoallw_SOURCES = icalltoallw.c nbicalltoallw_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nbicbcast_SOURCES = icbcast.c nbicbcast_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nbicgather_SOURCES = icgather.c nbicgather_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nbicgatherv_SOURCES = icgatherv.c nbicgatherv_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nbicreduce_SOURCES = icreduce.c nbicreduce_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nbicscatter_SOURCES = icscatter.c nbicscatter_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nbicscatterv_SOURCES = icscatterv.c nbicscatterv_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) mpi-testsuite-3.2+dfsg/coll/op_commutative.c0000644000175000017500000000507212620254305020514 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2009 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "A simple test of MPI_Op_create/commute/free"; */ static int errs = 0; /* static void comm_user_op(void *invec, void *inoutvec, int *len, MPI_Datatype *datatype) { user_op(invec, inoutvec, len, datatype); } */ /* static void noncomm_user_op(void *invec, void *inoutvec, int *len, MPI_Datatype *datatype) { user_op(invec, inoutvec, len, datatype); } */ static void user_op(void *invec, void *inoutvec, int *len, MPI_Datatype * datatype) { int i; int *invec_int = (int *) invec; int *inoutvec_int = (int *) inoutvec; if (*datatype != MPI_INT) { ++errs; printf("invalid datatype passed to user_op"); return; } for (i = 0; i < *len; ++i) { inoutvec_int[i] = invec_int[i] * 2 + inoutvec_int[i]; } } int main(int argc, char *argv[]) { MPI_Op c_uop = MPI_OP_NULL; MPI_Op nc_uop = MPI_OP_NULL; int is_commutative = 0; MTest_Init(&argc, &argv); /* make sure that user-define ops work too */ MPI_Op_create(&user_op, 1 /*commute */ , &c_uop); MPI_Op_create(&user_op, 0 /*!commute */ , &nc_uop); #if MTEST_HAVE_MIN_MPI_VERSION(2,2) /* this function was added in MPI-2.2 */ #define CHECK_COMMUTATIVE(op_) \ do { \ MPI_Op_commutative((op_), &is_commutative); \ if (!is_commutative) { ++errs; } \ } while (0) /* Check all predefined reduction operations for commutivity. * This list is from section 5.9.2 of the MPI-2.1 standard */ CHECK_COMMUTATIVE(MPI_MAX); CHECK_COMMUTATIVE(MPI_MIN); CHECK_COMMUTATIVE(MPI_SUM); CHECK_COMMUTATIVE(MPI_PROD); CHECK_COMMUTATIVE(MPI_LAND); CHECK_COMMUTATIVE(MPI_BAND); CHECK_COMMUTATIVE(MPI_LOR); CHECK_COMMUTATIVE(MPI_BOR); CHECK_COMMUTATIVE(MPI_LXOR); CHECK_COMMUTATIVE(MPI_BXOR); CHECK_COMMUTATIVE(MPI_MAXLOC); CHECK_COMMUTATIVE(MPI_MINLOC); #undef CHECK_COMMUTATIVE MPI_Op_commutative(c_uop, &is_commutative); if (!is_commutative) { ++errs; } /* also check our non-commutative user defined operation */ MPI_Op_commutative(nc_uop, &is_commutative); if (is_commutative) { ++errs; } #endif MPI_Op_free(&nc_uop); MPI_Op_free(&c_uop); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/icalltoall.c0000644000175000017500000000506212620254305017600 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include "mpicolltest.h" /* static char MTEST_Descrip[] = "Simple intercomm alltoall test"; */ int main(int argc, char *argv[]) { int errs = 0, err; int *sendbuf = 0, *recvbuf = 0; int leftGroup, i, j, idx, count, rrank, rsize; MPI_Comm comm; MPI_Datatype datatype; MTest_Init(&argc, &argv); datatype = MPI_INT; while (MTestGetIntercomm(&comm, &leftGroup, 4)) { if (comm == MPI_COMM_NULL) continue; for (count = 1; count < 66000; count = 2 * count) { /* Get an intercommunicator */ MPI_Comm_remote_size(comm, &rsize); MPI_Comm_rank(comm, &rrank); sendbuf = (int *) malloc(rsize * count * sizeof(int)); recvbuf = (int *) malloc(rsize * count * sizeof(int)); for (i = 0; i < rsize * count; i++) recvbuf[i] = -1; if (leftGroup) { idx = 0; for (j = 0; j < rsize; j++) { for (i = 0; i < count; i++) { sendbuf[idx++] = i + rrank; } } err = MTest_Alltoall(sendbuf, count, datatype, NULL, 0, datatype, comm); if (err) { errs++; MTestPrintError(err); } } else { int rank, size; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); /* In the right group */ err = MTest_Alltoall(NULL, 0, datatype, recvbuf, count, datatype, comm); if (err) { errs++; MTestPrintError(err); } /* Check that we have received the correct data */ idx = 0; for (j = 0; j < rsize; j++) { for (i = 0; i < count; i++) { if (recvbuf[idx++] != i + j) { errs++; if (errs < 10) fprintf(stderr, "buf[%d] = %d on %d\n", i, recvbuf[i], rank); } } } } free(recvbuf); free(sendbuf); } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/allred3.c0000644000175000017500000001430112620254305017002 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include /* static char MTEST_Descrip[] = "Test MPI_Allreduce with non-commutative user-defined operations"; */ /* We make the error count global so that we can easily control the output of error information (in particular, limiting it after the first 10 errors */ int errs = 0; /* This implements a simple matrix-matrix multiply. This is an associative but not commutative operation. The matrix size is set in matSize; the number of matrices is the count argument. The matrix is stored in C order, so that c(i,j) is cin[j+i*matSize] */ #define MAXCOL 256 static int matSize = 0; /* Must be < MAXCOL */ static int max_offset = 0; void uop(void *, void *, int *, MPI_Datatype *); void uop(void *cinPtr, void *coutPtr, int *count, MPI_Datatype * dtype) { const int *cin = (const int *) cinPtr; int *cout = (int *) coutPtr; int i, j, k, nmat; int tempcol[MAXCOL]; int offset1, offset2; int matsize2 = matSize * matSize; for (nmat = 0; nmat < *count; nmat++) { for (j = 0; j < matSize; j++) { for (i = 0; i < matSize; i++) { tempcol[i] = 0; for (k = 0; k < matSize; k++) { /* col[i] += cin(i,k) * cout(k,j) */ offset1 = k + i * matSize; offset2 = j + k * matSize; assert(offset1 < max_offset); assert(offset2 < max_offset); tempcol[i] += cin[offset1] * cout[offset2]; } } for (i = 0; i < matSize; i++) { offset1 = j + i * matSize; assert(offset1 < max_offset); cout[offset1] = tempcol[i]; } } cin += matsize2; cout += matsize2; } } /* Initialize the integer matrix as a permutation of rank with rank+1. If we call this matrix P_r, we know that product of P_0 P_1 ... P_{size-2} is the the matrix representing the permutation that shifts left by one. As the final matrix (in the size-1 position), we use the matrix that shifts RIGHT by one */ static void initMat(MPI_Comm comm, int mat[]) { int i, j, size, rank; int offset; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); for (i = 0; i < size * size; i++) { assert(i < max_offset); mat[i] = 0; } if (rank < size - 1) { /* Create the permutation matrix that exchanges r with r+1 */ for (i = 0; i < size; i++) { if (i == rank) { offset = ((i + 1) % size) + i * size; assert(offset < max_offset); mat[offset] = 1; } else if (i == ((rank + 1) % size)) { offset = ((i + size - 1) % size) + i * size; assert(offset < max_offset); mat[offset] = 1; } else { offset = i + i * size; assert(offset < max_offset); mat[offset] = 1; } } } else { /* Create the permutation matrix that shifts right by one */ for (i = 0; i < size; i++) { for (j = 0; j < size; j++) { offset = j + i * size; /* location of c(i,j) */ mat[offset] = 0; if (((j - i + size) % size) == 1) mat[offset] = 1; } } } } /* Compare a matrix with the identity matrix */ static int isIdentity(MPI_Comm comm, int mat[]) { int i, j, size, rank, lerrs = 0; int offset; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); for (i = 0; i < size; i++) { for (j = 0; j < size; j++) { if (i == j) { offset = j + i * size; assert(offset < max_offset); if (mat[offset] != 1) { lerrs++; if (errs + lerrs < 10) { printf("[%d] mat[%d,%d] = %d, expected 1 for comm %s\n", rank, i, j, mat[offset], MTestGetIntracommName()); } } } else { offset = j + i * size; assert(offset < max_offset); if (mat[offset] != 0) { lerrs++; if (errs + lerrs < 10) { printf("[%d] mat[%d,%d] = %d, expected 0 for comm %s\n", rank, i, j, mat[offset], MTestGetIntracommName()); } } } } } return lerrs; } int main(int argc, char *argv[]) { int size; int minsize = 2, count; MPI_Comm comm; int *buf, *bufout; MPI_Op op; MPI_Datatype mattype; MTest_Init(&argc, &argv); MPI_Op_create(uop, 0, &op); while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) { continue; } MPI_Comm_size(comm, &size); matSize = size; /* Only one matrix for now */ count = 1; /* A single matrix, the size of the communicator */ MPI_Type_contiguous(size * size, MPI_INT, &mattype); MPI_Type_commit(&mattype); max_offset = count * size * size; buf = (int *) malloc(max_offset * sizeof(int)); if (!buf) { MPI_Abort(MPI_COMM_WORLD, 1); } bufout = (int *) malloc(max_offset * sizeof(int)); if (!bufout) { MPI_Abort(MPI_COMM_WORLD, 1); } initMat(comm, buf); MPI_Allreduce(buf, bufout, count, mattype, op, comm); errs += isIdentity(comm, bufout); /* Try the same test, but using MPI_IN_PLACE */ initMat(comm, bufout); MPI_Allreduce(MPI_IN_PLACE, bufout, count, mattype, op, comm); errs += isIdentity(comm, bufout); free(buf); free(bufout); MPI_Type_free(&mattype); MTestFreeComm(&comm); } MPI_Op_free(&op); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/allredmany.c0000644000175000017500000000146012620254305017606 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include "mpi.h" /* * This example should be run with 2 processes and tests the ability of the * implementation to handle a flood of one-way messages. */ int main(int argc, char **argv) { double wscale = 10.0, scale; int numprocs, myid, i; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &numprocs); MPI_Comm_rank(MPI_COMM_WORLD, &myid); for (i = 0; i < 10000; i++) { MPI_Allreduce(&wscale, &scale, 1, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD); } if (myid == 0) { /* If we get here at all, we're ok */ printf(" No Errors\n"); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/red3.c0000644000175000017500000001274612620254305016324 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test MPI_Reduce with non-commutative user-define operations"; */ /* * This tests that the reduce operation respects the noncommutative flag. * See red4.c for a version that can distinguish between P_{root} P_{root+1} * ... P_{root-1} and P_0 ... P_{size-1} . The MPI standard clearly * specifies that the result is P_0 ... P_{size-1}, independent of the root * (see 4.9.4 in MPI-1) */ /* This implements a simple matrix-matrix multiply. This is an associative but not commutative operation. The matrix size is set in matSize; the number of matrices is the count argument. The matrix is stored in C order, so that c(i,j) is cin[j+i*matSize] */ #define MAXCOL 256 static int matSize = 0; /* Must be < MAXCOL */ void uop(void *cinPtr, void *coutPtr, int *count, MPI_Datatype * dtype); void uop(void *cinPtr, void *coutPtr, int *count, MPI_Datatype * dtype) { const int *cin = (const int *) cinPtr; int *cout = (int *) coutPtr; int i, j, k, nmat; int tempCol[MAXCOL]; for (nmat = 0; nmat < *count; nmat++) { for (j = 0; j < matSize; j++) { for (i = 0; i < matSize; i++) { tempCol[i] = 0; for (k = 0; k < matSize; k++) { /* col[i] += cin(i,k) * cout(k,j) */ tempCol[i] += cin[k + i * matSize] * cout[j + k * matSize]; } } for (i = 0; i < matSize; i++) { cout[j + i * matSize] = tempCol[i]; } } } } /* Initialize the integer matrix as a permutation of rank with rank+1. If we call this matrix P_r, we know that product of P_0 P_1 ... P_{size-2} is a left shift by 1. */ static void initMat(MPI_Comm comm, int mat[]) { int i, size, rank; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); for (i = 0; i < size * size; i++) mat[i] = 0; /* For each row */ for (i = 0; i < size; i++) { if (rank != size - 1) { if (i == rank) mat[((i + 1) % size) + i * size] = 1; else if (i == ((rank + 1) % size)) mat[((i + size - 1) % size) + i * size] = 1; else mat[i + i * size] = 1; } else { mat[i + i * size] = 1; } } } #ifdef FOO /* Compare a matrix with the identity matrix */ static int isIdentity(MPI_Comm comm, int mat[]) { int i, j, size, rank, errs = 0; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); for (i = 0; i < size; i++) { for (j = 0; j < size; j++) { if (i == j) { if (mat[j + i * size] != 1) { errs++; } } else { if (mat[j + i * size] != 0) { errs++; } } } } return errs; } #endif /* Compare a matrix with the identity matrix */ static int isShiftLeft(MPI_Comm comm, int mat[]) { int i, j, size, rank, errs = 0; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); for (i = 0; i < size; i++) { for (j = 0; j < size; j++) { if (i == ((j + 1) % size)) { if (mat[j + i * size] != 1) { errs++; } } else { if (mat[j + i * size] != 0) { errs++; } } } } return errs; } int main(int argc, char *argv[]) { int errs = 0; int rank, size, root; int minsize = 2, count; MPI_Comm comm; int *buf, *bufout; MPI_Op op; MPI_Datatype mattype; MTest_Init(&argc, &argv); MPI_Op_create(uop, 0, &op); while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; MPI_Comm_size(comm, &size); MPI_Comm_rank(comm, &rank); matSize = size; /* used by the user-defined operation */ /* Only one matrix for now */ count = 1; /* A single matrix, the size of the communicator */ MPI_Type_contiguous(size * size, MPI_INT, &mattype); MPI_Type_commit(&mattype); buf = (int *) malloc(count * size * size * sizeof(int)); if (!buf) MPI_Abort(MPI_COMM_WORLD, 1); bufout = (int *) malloc(count * size * size * sizeof(int)); if (!bufout) MPI_Abort(MPI_COMM_WORLD, 1); for (root = 0; root < size; root++) { initMat(comm, buf); MPI_Reduce(buf, bufout, count, mattype, op, root, comm); if (rank == root) { errs += isShiftLeft(comm, bufout); } /* Try the same test, but using MPI_IN_PLACE */ initMat(comm, bufout); if (rank == root) { MPI_Reduce(MPI_IN_PLACE, bufout, count, mattype, op, root, comm); } else { MPI_Reduce(bufout, NULL, count, mattype, op, root, comm); } if (rank == root) { errs += isShiftLeft(comm, bufout); } } free(buf); free(bufout); MPI_Type_free(&mattype); MTestFreeComm(&comm); } MPI_Op_free(&op); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/allgather2.c0000644000175000017500000000271412620254305017506 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitest.h" #include #include /* Gather data from a vector to contiguous. Use IN_PLACE */ int main(int argc, char **argv) { double *vecout; MPI_Comm comm; int count, minsize = 2; int i, errs = 0; int rank, size; MTest_Init(&argc, &argv); while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; /* Determine the sender and receiver */ MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); for (count = 1; count < 9000; count = count * 2) { vecout = (double *) malloc(size * count * sizeof(double)); for (i = 0; i < count; i++) { vecout[rank * count + i] = rank * count + i; } MPI_Allgather(MPI_IN_PLACE, -1, MPI_DATATYPE_NULL, vecout, count, MPI_DOUBLE, comm); for (i = 0; i < count * size; i++) { if (vecout[i] != i) { errs++; if (errs < 10) { fprintf(stderr, "vecout[%d]=%d\n", i, (int) vecout[i]); } } } free(vecout); } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/gather.c0000644000175000017500000000415112620254305016730 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitest.h" #include #include /* Gather data from a vector to contiguous */ int main(int argc, char **argv) { MPI_Datatype vec; MPI_Comm comm; double *vecin, *vecout; int minsize = 2, count; int root, i, n, stride, errs = 0; int rank, size; MTest_Init(&argc, &argv); while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; /* Determine the sender and receiver */ MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); for (root = 0; root < size; root++) { for (count = 1; count < 65000; count = count * 2) { n = 12; stride = 10; vecin = (double *) malloc(n * stride * size * sizeof(double)); vecout = (double *) malloc(size * n * sizeof(double)); MPI_Type_vector(n, 1, stride, MPI_DOUBLE, &vec); MPI_Type_commit(&vec); for (i = 0; i < n * stride; i++) vecin[i] = -2; for (i = 0; i < n; i++) vecin[i * stride] = rank * n + i; MPI_Gather(vecin, 1, vec, vecout, n, MPI_DOUBLE, root, comm); if (rank == root) { for (i = 0; i < n * size; i++) { if (vecout[i] != i) { errs++; if (errs < 10) { fprintf(stderr, "vecout[%d]=%d\n", i, (int) vecout[i]); } } } } MPI_Type_free(&vec); free(vecin); free(vecout); } } MTestFreeComm(&comm); } /* do a zero length gather */ MPI_Gather(NULL, 0, MPI_BYTE, NULL, 0, MPI_BYTE, 0, MPI_COMM_WORLD); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/alltoallw_zeros.c0000644000175000017500000000707212620254305020700 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2009 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Based on a test case contributed by Michael Hofmann. * * This test makes sure that zero counts with non-zero-sized types on the * send (recv) side match and don't cause a problem with non-zero counts and * zero-sized types on the recv (send) side when using MPI_Alltoallw and * MPI_Alltoallv. */ /* TODO test intercommunicators as well */ #include #include #include #include "mpitest.h" int main(int argc, char *argv[]) { int sendbuf, recvbuf; int *sendcounts; int *recvcounts; int *sdispls; int *rdispls; MPI_Datatype sendtype; MPI_Datatype *sendtypes; MPI_Datatype *recvtypes; int rank = -1; int size = -1; int i; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); sendtypes = malloc(size * sizeof(MPI_Datatype)); recvtypes = malloc(size * sizeof(MPI_Datatype)); sendcounts = malloc(size * sizeof(int)); recvcounts = malloc(size * sizeof(int)); sdispls = malloc(size * sizeof(int)); rdispls = malloc(size * sizeof(int)); if (!sendtypes || !recvtypes || !sendcounts || !recvcounts || !sdispls || !rdispls) { printf("error, unable to allocate memory\n"); goto fn_exit; } MPI_Type_contiguous(0, MPI_INT, &sendtype); MPI_Type_commit(&sendtype); for (i = 0; i < size; ++i) { sendtypes[i] = sendtype; sendcounts[i] = 1; sdispls[i] = 0; recvtypes[i] = MPI_INT; recvcounts[i] = 0; rdispls[i] = 0; } /* try zero-counts on both the send and recv side in case only one direction is broken for some reason */ MPI_Alltoallw(&sendbuf, sendcounts, sdispls, sendtypes, &recvbuf, recvcounts, rdispls, recvtypes, MPI_COMM_WORLD); MPI_Alltoallw(&sendbuf, recvcounts, rdispls, recvtypes, &recvbuf, sendcounts, sdispls, sendtypes, MPI_COMM_WORLD); #if MTEST_HAVE_MIN_MPI_VERSION(2,2) /* pass MPI_IN_PLACE and different but compatible types rank is even/odd */ if (rank % 2) MPI_Alltoallw(MPI_IN_PLACE, NULL, NULL, NULL, &recvbuf, recvcounts, rdispls, recvtypes, MPI_COMM_WORLD); else MPI_Alltoallw(MPI_IN_PLACE, NULL, NULL, NULL, &recvbuf, sendcounts, sdispls, sendtypes, MPI_COMM_WORLD); #endif /* now the same for Alltoallv instead of Alltoallw */ MPI_Alltoallv(&sendbuf, sendcounts, sdispls, sendtypes[0], &recvbuf, recvcounts, rdispls, recvtypes[0], MPI_COMM_WORLD); MPI_Alltoallv(&sendbuf, recvcounts, rdispls, recvtypes[0], &recvbuf, sendcounts, sdispls, sendtypes[0], MPI_COMM_WORLD); #if MTEST_HAVE_MIN_MPI_VERSION(2,2) if (rank % 2) MPI_Alltoallv(MPI_IN_PLACE, NULL, NULL, MPI_DATATYPE_NULL, &recvbuf, recvcounts, rdispls, recvtypes[0], MPI_COMM_WORLD); else MPI_Alltoallv(MPI_IN_PLACE, NULL, NULL, MPI_DATATYPE_NULL, &recvbuf, sendcounts, sdispls, sendtypes[0], MPI_COMM_WORLD); #endif MPI_Type_free(&sendtype); if (rank == 0) printf(" No Errors\n"); fn_exit: if (rdispls) free(rdispls); if (sdispls) free(sdispls); if (recvcounts) free(recvcounts); if (sendcounts) free(sendcounts); if (recvtypes) free(recvtypes); if (sendtypes) free(sendtypes); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/testlist.in0000644000175000017500000000617412620254305017524 0ustar mbanckmbanckallred 4 allred 7 allred 4 arg=100 allredmany 4 allred2 4 allred3 10 allred4 4 allred5 5 allred5 10 allred6 4 allred6 7 reduce 5 reduce 10 reduce_local 2 mpiversion=2.2 op_commutative 2 red3 10 red4 10 alltoall1 8 alltoallv 10 alltoallv0 10 alltoallw1 10 alltoallw2 10 alltoallw_zeros 1 alltoallw_zeros 2 alltoallw_zeros 5 alltoallw_zeros 8 allgather2 10 allgather3 10 allgatherv2 10 allgatherv3 10 allgatherv4 4 timeLimit=600 allgather_struct 10 bcasttest 4 bcasttest 8 bcasttest 10 bcast_full 4 timeLimit=300 # More that 8 processes are required to get bcast to switch to the long # msg algorithm (see coll definitions in mpiimpl.h) bcast_min_datatypes 10 timeLimit=1200 bcast_comm_world 10 timeLimit=1200 bcastzerotype 1 bcastzerotype 4 bcastzerotype 5 bcastzerotype 10 coll2 5 coll3 5 coll4 4 coll5 4 coll6 5 coll7 1 coll7 2 coll7 5 coll8 4 coll9 4 coll10 4 coll11 4 coll12 4 coll13 4 longuser 4 redscat 4 redscat 6 redscat2 4 redscat2 5 redscat2 10 redscat3 8 redscatinter 8 red_scat_block 4 mpiversion=2.2 red_scat_block 5 mpiversion=2.2 red_scat_block 8 mpiversion=2.2 red_scat_block2 4 mpiversion=2.2 red_scat_block2 5 mpiversion=2.2 red_scat_block2 10 mpiversion=2.2 redscatblk3 8 mpiversion=2.2 redscatblk3 10 mpiversion=2.2 redscatbkinter 8 mpiversion=2.2 redscatbkinter 10 mpiversion=2.2 scantst 4 exscan 10 exscan2 5 gather 4 gather2 4 @largetest@gather_big 8 scattern 4 scatter2 4 scatter3 4 scatterv 4 icbcast 4 icbcast 10 icallreduce 5 icallreduce 7 icreduce 5 icreduce 7 icscatter 5 icscatter 7 icgather 5 icgather 7 icallgather 5 icallgather 7 icbarrier 5 icbarrier 7 icallgatherv 5 icallgatherv 7 icgatherv 5 icgatherv 7 icscatterv 5 icscatterv 7 icalltoall 5 icalltoall 7 icalltoallv 5 icalltoallv 7 icalltoallw 5 icalltoallw 7 # the opxxx tests look at optional types, and are included for MPICH testing. # MPI implementations may instead signal errors for these types opland 4 oplor 4 oplxor 4 oplxor 5 opband 4 opbor 4 opbxor 4 opbxor 5 opprod 5 opprod 6 opsum 4 opmin 4 opminloc 4 opmax 5 opmaxloc 5 uoplong 4 uoplong 11 uoplong 16 nonblocking 4 mpiversion=3.0 nonblocking 5 mpiversion=3.0 nonblocking 10 mpiversion=3.0 nonblocking2 1 mpiversion=3.0 nonblocking2 4 mpiversion=3.0 nonblocking2 5 mpiversion=3.0 nonblocking2 10 timeLimit=420 mpiversion=3.0 nonblocking3 1 mpiversion=3.0 nonblocking3 4 mpiversion=3.0 nonblocking3 5 mpiversion=3.0 nonblocking3 10 timeLimit=600 mpiversion=3.0 iallred 2 mpiversion=3.0 # ibarrier will hang forever if it fails, but will complete quickly if it # succeeds ibarrier 2 mpiversion=3.0 timeLimit=30 # run some of the tests, relinked with the nbc_pmpi_adaptor.o file nballtoall1 8 mpiversion=3.0 nbcoll2 5 mpiversion=3.0 nbredscat 4 mpiversion=3.0 nbredscat 8 mpiversion=3.0 nbredscat3 8 mpiversion=3.0 nbredscatinter 8 mpiversion=3.0 nbicbcast 8 mpiversion=3.0 nbicallreduce 8 mpiversion=3.0 nbicreduce 8 mpiversion=3.0 nbicscatter 8 mpiversion=3.0 nbicgather 8 mpiversion=3.0 nbicallgather 8 mpiversion=3.0 nbicbarrier 8 mpiversion=3.0 nbicallgatherv 8 mpiversion=3.0 nbicgatherv 8 mpiversion=3.0 nbicscatterv 8 mpiversion=3.0 nbicalltoall 8 mpiversion=3.0 nbicalltoallv 8 mpiversion=3.0 nbicalltoallw 8 mpiversion=3.0 mpi-testsuite-3.2+dfsg/coll/opbor.c0000644000175000017500000002657512620254305016615 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test MPI_BOR operations on optional datatypes dupported by MPICH"; */ /* * This test looks at the handling of logical and for types that are not * integers or are not required integers (e.g., long long). MPICH allows * these as well. A strict MPI test should not include this test. */ int main(int argc, char *argv[]) { int errs = 0; int rc; int rank, size; MPI_Comm comm; char cinbuf[3], coutbuf[3]; signed char scinbuf[3], scoutbuf[3]; unsigned char ucinbuf[3], ucoutbuf[3]; short sinbuf[3], soutbuf[3]; unsigned short usinbuf[3], usoutbuf[3]; long linbuf[3], loutbuf[3]; unsigned long ulinbuf[3], uloutbuf[3]; unsigned uinbuf[3], uoutbuf[3]; int iinbuf[3], ioutbuf[3]; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; /* Set errors return so that we can provide better information * should a routine reject one of the operand/datatype pairs */ MPI_Errhandler_set(comm, MPI_ERRORS_RETURN); MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); #ifndef USE_STRICT_MPI /* char */ MTestPrintfMsg(10, "Reduce of MPI_CHAR\n"); cinbuf[0] = 0xff; cinbuf[1] = 0; cinbuf[2] = (rank > 0) ? 0x3c : 0xc3; coutbuf[0] = 0; coutbuf[1] = 1; coutbuf[2] = 1; rc = MPI_Reduce(cinbuf, coutbuf, 3, MPI_CHAR, MPI_BOR, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_BOR and MPI_CHAR", rc); errs++; } else { if (rank == 0) { if (coutbuf[0] != (char) 0xff) { errs++; fprintf(stderr, "char BOR(1) test failed\n"); } if (coutbuf[1]) { errs++; fprintf(stderr, "char BOR(0) test failed\n"); } if (coutbuf[2] != (char) 0xff && size > 1) { errs++; fprintf(stderr, "char BOR(>) test failed\n"); } } } #endif /* USE_STRICT_MPI */ /* signed char */ MTestPrintfMsg(10, "Reduce of MPI_SIGNED_CHAR\n"); scinbuf[0] = 0xff; scinbuf[1] = 0; scinbuf[2] = (rank > 0) ? 0x3c : 0xc3; scoutbuf[0] = 0; scoutbuf[1] = 1; scoutbuf[2] = 1; rc = MPI_Reduce(scinbuf, scoutbuf, 3, MPI_SIGNED_CHAR, MPI_BOR, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_BOR and MPI_SIGNED_CHAR", rc); errs++; } else { if (rank == 0) { if (scoutbuf[0] != (signed char) 0xff) { errs++; fprintf(stderr, "signed char BOR(1) test failed\n"); } if (scoutbuf[1]) { errs++; fprintf(stderr, "signed char BOR(0) test failed\n"); } if (scoutbuf[2] != (signed char) 0xff && size > 1) { errs++; fprintf(stderr, "signed char BOR(>) test failed\n"); } } } /* unsigned char */ MTestPrintfMsg(10, "Reduce of MPI_UNSIGNED_CHAR\n"); ucinbuf[0] = 0xff; ucinbuf[1] = 0; ucinbuf[2] = (rank > 0) ? 0x3c : 0xc3; ucoutbuf[0] = 0; ucoutbuf[1] = 1; ucoutbuf[2] = 1; rc = MPI_Reduce(ucinbuf, ucoutbuf, 3, MPI_UNSIGNED_CHAR, MPI_BOR, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_BOR and MPI_UNSIGNED_CHAR", rc); errs++; } else { if (rank == 0) { if (ucoutbuf[0] != 0xff) { errs++; fprintf(stderr, "unsigned char BOR(1) test failed\n"); } if (ucoutbuf[1]) { errs++; fprintf(stderr, "unsigned char BOR(0) test failed\n"); } if (ucoutbuf[2] != 0xff && size > 1) { errs++; fprintf(stderr, "unsigned char BOR(>) test failed\n"); } } } /* bytes */ MTestPrintfMsg(10, "Reduce of MPI_BYTE\n"); cinbuf[0] = 0xff; cinbuf[1] = 0; cinbuf[2] = (rank > 0) ? 0x3c : 0xc3; coutbuf[0] = 0; coutbuf[1] = 1; coutbuf[2] = 1; rc = MPI_Reduce(cinbuf, coutbuf, 3, MPI_BYTE, MPI_BOR, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_BOR and MPI_BYTE", rc); errs++; } else { if (rank == 0) { if (coutbuf[0] != (char) 0xff) { errs++; fprintf(stderr, "byte BOR(1) test failed\n"); } if (coutbuf[1]) { errs++; fprintf(stderr, "byte BOR(0) test failed\n"); } if (coutbuf[2] != (char) 0xff && size > 1) { errs++; fprintf(stderr, "byte BOR(>) test failed\n"); } } } /* short */ MTestPrintfMsg(10, "Reduce of MPI_SHORT\n"); sinbuf[0] = 0xffff; sinbuf[1] = 0; sinbuf[2] = (rank > 0) ? 0x3c3c : 0xc3c3; soutbuf[0] = 0; soutbuf[1] = 1; soutbuf[2] = 1; rc = MPI_Reduce(sinbuf, soutbuf, 3, MPI_SHORT, MPI_BOR, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_BOR and MPI_SHORT", rc); errs++; } else { if (rank == 0) { if (soutbuf[0] != (short) 0xffff) { errs++; fprintf(stderr, "short BOR(1) test failed\n"); } if (soutbuf[1]) { errs++; fprintf(stderr, "short BOR(0) test failed\n"); } if (soutbuf[2] != (short) 0xffff && size > 1) { errs++; fprintf(stderr, "short BOR(>) test failed\n"); } } } /* unsigned short */ MTestPrintfMsg(10, "Reduce of MPI_UNSIGNED_SHORT\n"); usinbuf[0] = 0xffff; usinbuf[1] = 0; usinbuf[2] = (rank > 0) ? 0x3c3c : 0xc3c3; usoutbuf[0] = 0; usoutbuf[1] = 1; usoutbuf[2] = 1; rc = MPI_Reduce(usinbuf, usoutbuf, 3, MPI_UNSIGNED_SHORT, MPI_BOR, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_BOR and MPI_UNSIGNED_SHORT", rc); errs++; } else { if (rank == 0) { if (usoutbuf[0] != 0xffff) { errs++; fprintf(stderr, "short BOR(1) test failed\n"); } if (usoutbuf[1]) { errs++; fprintf(stderr, "short BOR(0) test failed\n"); } if (usoutbuf[2] != 0xffff && size > 1) { errs++; fprintf(stderr, "short BOR(>) test failed\n"); } } } /* unsigned */ MTestPrintfMsg(10, "Reduce of MPI_UNSIGNED\n"); uinbuf[0] = 0xffffffff; uinbuf[1] = 0; uinbuf[2] = (rank > 0) ? 0x3c3c3c3c : 0xc3c3c3c3; uoutbuf[0] = 0; uoutbuf[1] = 1; uoutbuf[2] = 1; rc = MPI_Reduce(uinbuf, uoutbuf, 3, MPI_UNSIGNED, MPI_BOR, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_BOR and MPI_UNSIGNED", rc); errs++; } else { if (rank == 0) { if (uoutbuf[0] != 0xffffffff) { errs++; fprintf(stderr, "unsigned BOR(1) test failed\n"); } if (uoutbuf[1]) { errs++; fprintf(stderr, "unsigned BOR(0) test failed\n"); } if (uoutbuf[2] != 0xffffffff && size > 1) { errs++; fprintf(stderr, "unsigned BOR(>) test failed\n"); } } } /* int */ MTestPrintfMsg(10, "Reduce of MPI_INT\n"); iinbuf[0] = 0xffffffff; iinbuf[1] = 0; iinbuf[2] = (rank > 0) ? 0x3c3c3c3c : 0xc3c3c3c3; ioutbuf[0] = 0; ioutbuf[1] = 1; ioutbuf[2] = 1; rc = MPI_Reduce(iinbuf, ioutbuf, 3, MPI_INT, MPI_BOR, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_BOR and MPI_INT", rc); errs++; } else { if (rank == 0) { if (ioutbuf[0] != 0xffffffff) { errs++; fprintf(stderr, "int BOR(1) test failed\n"); } if (ioutbuf[1]) { errs++; fprintf(stderr, "int BOR(0) test failed\n"); } if (ioutbuf[2] != 0xffffffff && size > 1) { errs++; fprintf(stderr, "int BOR(>) test failed\n"); } } } /* long */ MTestPrintfMsg(10, "Reduce of MPI_LONG\n"); linbuf[0] = 0xffffffff; linbuf[1] = 0; linbuf[2] = (rank > 0) ? 0x3c3c3c3c : 0xc3c3c3c3; loutbuf[0] = 0; loutbuf[1] = 1; loutbuf[2] = 1; rc = MPI_Reduce(linbuf, loutbuf, 3, MPI_LONG, MPI_BOR, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_BOR and MPI_LONG", rc); errs++; } else { if (rank == 0) { if (loutbuf[0] != 0xffffffff) { errs++; fprintf(stderr, "long BOR(1) test failed\n"); } if (loutbuf[1]) { errs++; fprintf(stderr, "long BOR(0) test failed\n"); } if (loutbuf[2] != 0xffffffff && size > 1) { errs++; fprintf(stderr, "long BOR(>) test failed\n"); } } } /* unsigned long */ MTestPrintfMsg(10, "Reduce of MPI_UNSIGNED_LONG\n"); ulinbuf[0] = 0xffffffff; ulinbuf[1] = 0; ulinbuf[2] = (rank > 0) ? 0x3c3c3c3c : 0xc3c3c3c3; uloutbuf[0] = 0; uloutbuf[1] = 1; uloutbuf[2] = 1; rc = MPI_Reduce(ulinbuf, uloutbuf, 3, MPI_UNSIGNED_LONG, MPI_BOR, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_BOR and MPI_UNSIGNED_LONG", rc); errs++; } else { if (rank == 0) { if (uloutbuf[0] != 0xffffffff) { errs++; fprintf(stderr, "unsigned long BOR(1) test failed\n"); } if (uloutbuf[1]) { errs++; fprintf(stderr, "unsigned long BOR(0) test failed\n"); } if (uloutbuf[2] != 0xffffffff && size > 1) { errs++; fprintf(stderr, "unsigned long BOR(>) test failed\n"); } } } #ifdef HAVE_LONG_LONG { long long llinbuf[3], lloutbuf[3]; /* long long */ llinbuf[0] = 0xffffffff; llinbuf[1] = 0; llinbuf[2] = (rank > 0) ? 0x3c3c3c3c : 0xc3c3c3c3; lloutbuf[0] = 0; lloutbuf[1] = 1; lloutbuf[2] = 1; if (MPI_LONG_LONG != MPI_DATATYPE_NULL) { MTestPrintfMsg(10, "Reduce of MPI_LONG_LONG\n"); rc = MPI_Reduce(llinbuf, lloutbuf, 3, MPI_LONG_LONG, MPI_BOR, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_BOR and MPI_LONG_LONG", rc); errs++; } else { if (rank == 0) { if (lloutbuf[0] != 0xffffffff) { errs++; fprintf(stderr, "long long BOR(1) test failed\n"); } if (lloutbuf[1]) { errs++; fprintf(stderr, "long long BOR(0) test failed\n"); } if (lloutbuf[2] != 0xffffffff && size > 1) { errs++; fprintf(stderr, "long long BOR(>) test failed\n"); } } } } } #endif MPI_Errhandler_set(comm, MPI_ERRORS_ARE_FATAL); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/coll8.c0000644000175000017500000000224312620254305016477 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" int main(int argc, char **argv) { int rank, size, i; int data; int errors = 0; int result = -100; int correct_result; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); data = rank; MPI_Reduce(&data, &result, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); MPI_Bcast(&result, 1, MPI_INT, 0, MPI_COMM_WORLD); correct_result = 0; for (i = 0; i < size; i++) correct_result += i; if (result != correct_result) errors++; MPI_Reduce(&data, &result, 1, MPI_INT, MPI_MIN, 0, MPI_COMM_WORLD); MPI_Bcast(&result, 1, MPI_INT, 0, MPI_COMM_WORLD); if (result != 0) errors++; MPI_Reduce(&data, &result, 1, MPI_INT, MPI_MAX, 0, MPI_COMM_WORLD); MPI_Bcast(&result, 1, MPI_INT, 0, MPI_COMM_WORLD); if (result != (size - 1)) errors++; MTest_Finalize(errors); MPI_Finalize(); return MTestReturnValue(errors); } mpi-testsuite-3.2+dfsg/coll/opbxor.c0000644000175000017500000002756312620254305017003 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test MPI_BXOR operations on optional datatypes dupported by MPICH"; */ /* * This test looks at the handling of logical and for types that are not * integers or are not required integers (e.g., long long). MPICH allows * these as well. A strict MPI test should not include this test. */ int main(int argc, char *argv[]) { int errs = 0; int rc; int rank, size; MPI_Comm comm; char cinbuf[3], coutbuf[3]; signed char scinbuf[3], scoutbuf[3]; unsigned char ucinbuf[3], ucoutbuf[3]; short sinbuf[3], soutbuf[3]; unsigned short usinbuf[3], usoutbuf[3]; long linbuf[3], loutbuf[3]; unsigned long ulinbuf[3], uloutbuf[3]; unsigned uinbuf[3], uoutbuf[3]; int iinbuf[3], ioutbuf[3]; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; /* Set errors return so that we can provide better information * should a routine reject one of the operand/datatype pairs */ MPI_Errhandler_set(comm, MPI_ERRORS_RETURN); MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); #ifndef USE_STRICT_MPI /* char */ MTestPrintfMsg(10, "Reduce of MPI_CHAR\n"); cinbuf[0] = 0xff; cinbuf[1] = 0; cinbuf[2] = (rank > 0) ? 0x3c : 0xc3; coutbuf[0] = 0xf; coutbuf[1] = 1; coutbuf[2] = 1; rc = MPI_Reduce(cinbuf, coutbuf, 3, MPI_CHAR, MPI_BXOR, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_BXOR and MPI_CHAR", rc); errs++; } else { if (rank == 0) { if (coutbuf[0] != ((size % 2) ? (char) 0xff : (char) 0)) { errs++; fprintf(stderr, "char BXOR(1) test failed\n"); } if (coutbuf[1]) { errs++; fprintf(stderr, "char BXOR(0) test failed\n"); } if (coutbuf[2] != ((size % 2) ? (char) 0xc3 : (char) 0xff)) { errs++; fprintf(stderr, "char BXOR(>) test failed\n"); } } } #endif /* USE_STRICT_MPI */ /* signed char */ MTestPrintfMsg(10, "Reduce of MPI_SIGNED_CHAR\n"); scinbuf[0] = 0xff; scinbuf[1] = 0; scinbuf[2] = (rank > 0) ? 0x3c : 0xc3; scoutbuf[0] = 0xf; scoutbuf[1] = 1; scoutbuf[2] = 1; rc = MPI_Reduce(scinbuf, scoutbuf, 3, MPI_SIGNED_CHAR, MPI_BXOR, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_BXOR and MPI_SIGNED_CHAR", rc); errs++; } else { if (rank == 0) { if (scoutbuf[0] != ((size % 2) ? (signed char) 0xff : (signed char) 0)) { errs++; fprintf(stderr, "signed char BXOR(1) test failed\n"); } if (scoutbuf[1]) { errs++; fprintf(stderr, "signed char BXOR(0) test failed\n"); } if (scoutbuf[2] != ((size % 2) ? (signed char) 0xc3 : (signed char) 0xff)) { errs++; fprintf(stderr, "signed char BXOR(>) test failed\n"); } } } /* unsigned char */ MTestPrintfMsg(10, "Reduce of MPI_UNSIGNED_CHAR\n"); ucinbuf[0] = 0xff; ucinbuf[1] = 0; ucinbuf[2] = (rank > 0) ? 0x3c : 0xc3; ucoutbuf[0] = 0; ucoutbuf[1] = 1; ucoutbuf[2] = 1; rc = MPI_Reduce(ucinbuf, ucoutbuf, 3, MPI_UNSIGNED_CHAR, MPI_BXOR, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_BXOR and MPI_UNSIGNED_CHAR", rc); errs++; } else { if (rank == 0) { if (ucoutbuf[0] != ((size % 2) ? 0xff : 0)) { errs++; fprintf(stderr, "unsigned char BXOR(1) test failed\n"); } if (ucoutbuf[1]) { errs++; fprintf(stderr, "unsigned char BXOR(0) test failed\n"); } if (ucoutbuf[2] != ((size % 2) ? (unsigned char) 0xc3 : (unsigned char) 0xff)) { errs++; fprintf(stderr, "unsigned char BXOR(>) test failed\n"); } } } /* bytes */ MTestPrintfMsg(10, "Reduce of MPI_BYTE\n"); cinbuf[0] = 0xff; cinbuf[1] = 0; cinbuf[2] = (rank > 0) ? 0x3c : 0xc3; coutbuf[0] = 0; coutbuf[1] = 1; coutbuf[2] = 1; rc = MPI_Reduce(cinbuf, coutbuf, 3, MPI_BYTE, MPI_BXOR, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_BXOR and MPI_BYTE", rc); errs++; } else { if (rank == 0) { if (coutbuf[0] != ((size % 2) ? (char) 0xff : 0)) { errs++; fprintf(stderr, "byte BXOR(1) test failed\n"); } if (coutbuf[1]) { errs++; fprintf(stderr, "byte BXOR(0) test failed\n"); } if (coutbuf[2] != ((size % 2) ? (char) 0xc3 : (char) 0xff)) { errs++; fprintf(stderr, "byte BXOR(>) test failed\n"); } } } /* short */ MTestPrintfMsg(10, "Reduce of MPI_SHORT\n"); sinbuf[0] = 0xffff; sinbuf[1] = 0; sinbuf[2] = (rank > 0) ? 0x3c3c : 0xc3c3; soutbuf[0] = 0; soutbuf[1] = 1; soutbuf[2] = 1; rc = MPI_Reduce(sinbuf, soutbuf, 3, MPI_SHORT, MPI_BXOR, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_BXOR and MPI_SHORT", rc); errs++; } else { if (rank == 0) { if (soutbuf[0] != ((size % 2) ? (short) 0xffff : 0)) { errs++; fprintf(stderr, "short BXOR(1) test failed\n"); } if (soutbuf[1]) { errs++; fprintf(stderr, "short BXOR(0) test failed\n"); } if (soutbuf[2] != ((size % 2) ? (short) 0xc3c3 : (short) 0xffff)) { errs++; fprintf(stderr, "short BXOR(>) test failed\n"); } } } /* unsigned short */ MTestPrintfMsg(10, "Reduce of MPI_UNSIGNED_SHORT\n"); usinbuf[0] = 0xffff; usinbuf[1] = 0; usinbuf[2] = (rank > 0) ? 0x3c3c : 0xc3c3; usoutbuf[0] = 0; usoutbuf[1] = 1; usoutbuf[2] = 1; rc = MPI_Reduce(usinbuf, usoutbuf, 3, MPI_UNSIGNED_SHORT, MPI_BXOR, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_BXOR and MPI_UNSIGNED_SHORT", rc); errs++; } else { if (rank == 0) { if (usoutbuf[0] != ((size % 2) ? 0xffff : 0)) { errs++; fprintf(stderr, "short BXOR(1) test failed\n"); } if (usoutbuf[1]) { errs++; fprintf(stderr, "short BXOR(0) test failed\n"); } if (usoutbuf[2] != ((size % 2) ? 0xc3c3 : 0xffff)) { errs++; fprintf(stderr, "short BXOR(>) test failed\n"); } } } /* unsigned */ MTestPrintfMsg(10, "Reduce of MPI_UNSIGNED\n"); uinbuf[0] = 0xffffffff; uinbuf[1] = 0; uinbuf[2] = (rank > 0) ? 0x3c3c3c3c : 0xc3c3c3c3; uoutbuf[0] = 0; uoutbuf[1] = 1; uoutbuf[2] = 1; rc = MPI_Reduce(uinbuf, uoutbuf, 3, MPI_UNSIGNED, MPI_BXOR, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_BXOR and MPI_UNSIGNED", rc); errs++; } else { if (rank == 0) { if (uoutbuf[0] != ((size % 2) ? 0xffffffff : 0)) { errs++; fprintf(stderr, "unsigned BXOR(1) test failed\n"); } if (uoutbuf[1]) { errs++; fprintf(stderr, "unsigned BXOR(0) test failed\n"); } if (uoutbuf[2] != ((size % 2) ? 0xc3c3c3c3 : 0xffffffff)) { errs++; fprintf(stderr, "unsigned BXOR(>) test failed\n"); } } } /* int */ MTestPrintfMsg(10, "Reduce of MPI_INT\n"); iinbuf[0] = 0xffffffff; iinbuf[1] = 0; iinbuf[2] = (rank > 0) ? 0x3c3c3c3c : 0xc3c3c3c3; ioutbuf[0] = 0; ioutbuf[1] = 1; ioutbuf[2] = 1; rc = MPI_Reduce(iinbuf, ioutbuf, 3, MPI_INT, MPI_BXOR, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_BXOR and MPI_INT", rc); errs++; } else { if (rank == 0) { if (ioutbuf[0] != ((size % 2) ? 0xffffffff : 0)) { errs++; fprintf(stderr, "int BXOR(1) test failed\n"); } if (ioutbuf[1]) { errs++; fprintf(stderr, "int BXOR(0) test failed\n"); } if (ioutbuf[2] != ((size % 2) ? 0xc3c3c3c3 : 0xffffffff)) { errs++; fprintf(stderr, "int BXOR(>) test failed\n"); } } } /* long */ MTestPrintfMsg(10, "Reduce of MPI_LONG\n"); linbuf[0] = 0xffffffff; linbuf[1] = 0; linbuf[2] = (rank > 0) ? 0x3c3c3c3c : 0xc3c3c3c3; loutbuf[0] = 0; loutbuf[1] = 1; loutbuf[2] = 1; rc = MPI_Reduce(linbuf, loutbuf, 3, MPI_LONG, MPI_BXOR, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_BXOR and MPI_LONG", rc); errs++; } else { if (rank == 0) { if (loutbuf[0] != ((size % 2) ? 0xffffffff : 0)) { errs++; fprintf(stderr, "long BXOR(1) test failed\n"); } if (loutbuf[1]) { errs++; fprintf(stderr, "long BXOR(0) test failed\n"); } if (loutbuf[2] != ((size % 2) ? 0xc3c3c3c3 : 0xffffffff)) { errs++; fprintf(stderr, "long BXOR(>) test failed\n"); } } } /* unsigned long */ MTestPrintfMsg(10, "Reduce of MPI_UNSIGNED_LONG\n"); ulinbuf[0] = 0xffffffff; ulinbuf[1] = 0; ulinbuf[2] = (rank > 0) ? 0x3c3c3c3c : 0xc3c3c3c3; uloutbuf[0] = 0; uloutbuf[1] = 1; uloutbuf[2] = 1; rc = MPI_Reduce(ulinbuf, uloutbuf, 3, MPI_UNSIGNED_LONG, MPI_BXOR, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_BXOR and MPI_UNSIGNED_LONG", rc); errs++; } else { if (rank == 0) { if (uloutbuf[0] != ((size % 2) ? 0xffffffff : 0)) { errs++; fprintf(stderr, "unsigned long BXOR(1) test failed\n"); } if (uloutbuf[1]) { errs++; fprintf(stderr, "unsigned long BXOR(0) test failed\n"); } if (uloutbuf[2] != ((size % 2) ? 0xc3c3c3c3 : 0xffffffff)) { errs++; fprintf(stderr, "unsigned long BXOR(>) test failed\n"); } } } #ifdef HAVE_LONG_LONG { long long llinbuf[3], lloutbuf[3]; /* long long */ llinbuf[0] = 0xffffffff; llinbuf[1] = 0; llinbuf[2] = (rank > 0) ? 0x3c3c3c3c : 0xc3c3c3c3; lloutbuf[0] = 0; lloutbuf[1] = 1; lloutbuf[2] = 1; if (MPI_LONG_LONG != MPI_DATATYPE_NULL) { MTestPrintfMsg(10, "Reduce of MPI_LONG_LONG\n"); rc = MPI_Reduce(llinbuf, lloutbuf, 3, MPI_LONG_LONG, MPI_BXOR, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_BXOR and MPI_LONG_LONG", rc); errs++; } else { if (rank == 0) { if (lloutbuf[0] != ((size % 2) ? 0xffffffff : 0)) { errs++; fprintf(stderr, "long long BXOR(1) test failed\n"); } if (lloutbuf[1]) { errs++; fprintf(stderr, "long long BXOR(0) test failed\n"); } if (lloutbuf[2] != ((size % 2) ? 0xc3c3c3c3 : 0xffffffff)) { errs++; fprintf(stderr, "long long BXOR(>) test failed\n"); } } } } } #endif MPI_Errhandler_set(comm, MPI_ERRORS_ARE_FATAL); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/red_scat_block2.c0000644000175000017500000000645112620254305020503 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2009 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * Test of reduce_scatter_block. * * Checks that non-commutative operations are not commuted and that * all of the operations are performed. * * Can be called with any number of processors. */ #include "mpi.h" #include #include #include "mpitest.h" int err = 0; /* left(x,y) ==> x */ void left(void *a, void *b, int *count, MPI_Datatype * type); void left(void *a, void *b, int *count, MPI_Datatype * type) { int *in = a; int *inout = b; int i; for (i = 0; i < *count; ++i) { if (in[i] > inout[i]) ++err; inout[i] = in[i]; } } /* right(x,y) ==> y */ void right(void *a, void *b, int *count, MPI_Datatype * type); void right(void *a, void *b, int *count, MPI_Datatype * type) { int *in = a; int *inout = b; int i; for (i = 0; i < *count; ++i) { if (in[i] > inout[i]) ++err; inout[i] = inout[i]; } } /* Just performs a simple sum but can be marked as non-commutative to potentially tigger different logic in the implementation. */ void nc_sum(void *a, void *b, int *count, MPI_Datatype * type); void nc_sum(void *a, void *b, int *count, MPI_Datatype * type) { int *in = a; int *inout = b; int i; for (i = 0; i < *count; ++i) { inout[i] = in[i] + inout[i]; } } #define MAX_BLOCK_SIZE 256 int main(int argc, char **argv) { int *sendbuf; int block_size; int *recvbuf; int size, rank, i; MPI_Comm comm; MPI_Op left_op, right_op, nc_sum_op; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_Comm_size(comm, &size); MPI_Comm_rank(comm, &rank); #if MTEST_HAVE_MIN_MPI_VERSION(2,2) /* MPI_Reduce_scatter block was added in MPI-2.2 */ MPI_Op_create(&left, 0 /*non-commutative */ , &left_op); MPI_Op_create(&right, 0 /*non-commutative */ , &right_op); MPI_Op_create(&nc_sum, 0 /*non-commutative */ , &nc_sum_op); for (block_size = 1; block_size < MAX_BLOCK_SIZE; block_size *= 2) { sendbuf = (int *) malloc(block_size * size * sizeof(int)); recvbuf = malloc(block_size * sizeof(int)); for (i = 0; i < (size * block_size); i++) sendbuf[i] = rank + i; for (i = 0; i < block_size; i++) recvbuf[i] = 0xdeadbeef; MPI_Reduce_scatter_block(sendbuf, recvbuf, block_size, MPI_INT, left_op, comm); for (i = 0; i < block_size; ++i) if (recvbuf[i] != (rank * block_size + i)) ++err; MPI_Reduce_scatter_block(sendbuf, recvbuf, block_size, MPI_INT, right_op, comm); for (i = 0; i < block_size; ++i) if (recvbuf[i] != ((size - 1) + (rank * block_size) + i)) ++err; MPI_Reduce_scatter_block(sendbuf, recvbuf, block_size, MPI_INT, nc_sum_op, comm); for (i = 0; i < block_size; ++i) { int x = rank * block_size + i; if (recvbuf[i] != (size * x + (size - 1) * size / 2)) ++err; } free(recvbuf); free(sendbuf); } MPI_Op_free(&left_op); MPI_Op_free(&right_op); MPI_Op_free(&nc_sum_op); #endif MTest_Finalize(err); MPI_Finalize(); return err; } mpi-testsuite-3.2+dfsg/coll/icgatherv.c0000644000175000017500000000627012620254305017436 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include "mpicolltest.h" /* static char MTEST_Descrip[] = "Simple intercomm gatherv test"; */ int main(int argc, char *argv[]) { int errs = 0, err; int *buf = 0; int *recvcounts; int *recvdispls; int leftGroup, i, count, rank, rsize, size; MPI_Comm comm; MPI_Datatype datatype; MTest_Init(&argc, &argv); datatype = MPI_INT; while (MTestGetIntercomm(&comm, &leftGroup, 4)) { if (comm == MPI_COMM_NULL) continue; MPI_Comm_rank(comm, &rank); MPI_Comm_remote_size(comm, &rsize); MPI_Comm_size(comm, &size); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(comm, MPI_ERRORS_RETURN); for (count = 1; count < 65000; count = 2 * count) { /* Get an intercommunicator */ recvcounts = (int *) malloc(rsize * sizeof(int)); recvdispls = (int *) malloc(rsize * sizeof(int)); /* This simple test duplicates the Gather test, * using the same lengths for all messages */ for (i = 0; i < rsize; i++) { recvcounts[i] = count; recvdispls[i] = count * i; } if (leftGroup) { buf = (int *) malloc(count * rsize * sizeof(int)); for (i = 0; i < count * rsize; i++) buf[i] = -1; err = MTest_Gatherv(NULL, 0, datatype, buf, recvcounts, recvdispls, datatype, (rank == 0) ? MPI_ROOT : MPI_PROC_NULL, comm); if (err) { errs++; MTestPrintError(err); } /* Test that no other process in this group received the * broadcast */ if (rank != 0) { for (i = 0; i < count; i++) { if (buf[i] != -1) { errs++; } } } else { /* Check for the correct data */ for (i = 0; i < count * rsize; i++) { if (buf[i] != i) { errs++; } } } } else { /* In the right group */ buf = (int *) malloc(count * sizeof(int)); for (i = 0; i < count; i++) buf[i] = rank * count + i; err = MTest_Gatherv(buf, count, datatype, NULL, 0, 0, datatype, 0, comm); if (err) { errs++; MTestPrintError(err); } } free(buf); free(recvcounts); free(recvdispls); } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/icalltoallv.c0000644000175000017500000000602412620254305017765 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitest.h" #include #include #include "mpicolltest.h" /* This program tests MPI_Alltoallv by having processor i send different amounts of data to each processor. Because there are separate send and receive types to alltoallv, there need to be tests to rearrange data on the fly. Not done yet. The first test sends i items to processor i from all processors. Currently, the test uses only MPI_INT; this is adequate for testing systems that use point-to-point operations */ int main(int argc, char **argv) { MPI_Comm comm; int *sbuf, *rbuf; int rank, size, lsize, asize; int *sendcounts, *recvcounts, *rdispls, *sdispls; int i, j, *p, err; int leftGroup; MTest_Init(&argc, &argv); err = 0; while (MTestGetIntercomm(&comm, &leftGroup, 4)) { if (comm == MPI_COMM_NULL) continue; /* Create the buffer */ MPI_Comm_size(comm, &lsize); MPI_Comm_remote_size(comm, &size); asize = (lsize > size) ? lsize : size; MPI_Comm_rank(comm, &rank); sbuf = (int *) malloc(size * size * sizeof(int)); rbuf = (int *) malloc(asize * asize * sizeof(int)); if (!sbuf || !rbuf) { fprintf(stderr, "Could not allocated buffers!\n"); MPI_Abort(comm, 1); } /* Load up the buffers */ for (i = 0; i < size * size; i++) { sbuf[i] = i + 100 * rank; rbuf[i] = -i; } /* Create and load the arguments to alltoallv */ sendcounts = (int *) malloc(size * sizeof(int)); recvcounts = (int *) malloc(size * sizeof(int)); rdispls = (int *) malloc(size * sizeof(int)); sdispls = (int *) malloc(size * sizeof(int)); if (!sendcounts || !recvcounts || !rdispls || !sdispls) { fprintf(stderr, "Could not allocate arg items!\n"); MPI_Abort(comm, 1); } for (i = 0; i < size; i++) { sendcounts[i] = i; sdispls[i] = (i * (i + 1)) / 2; recvcounts[i] = rank; rdispls[i] = i * rank; } MTest_Alltoallv(sbuf, sendcounts, sdispls, MPI_INT, rbuf, recvcounts, rdispls, MPI_INT, comm); /* Check rbuf */ for (i = 0; i < size; i++) { p = rbuf + rdispls[i]; for (j = 0; j < rank; j++) { if (p[j] != i * 100 + (rank * (rank + 1)) / 2 + j) { fprintf(stderr, "[%d] got %d expected %d for %dth\n", rank, p[j], (i * (i + 1)) / 2 + j, j); err++; } } } free(sdispls); free(rdispls); free(recvcounts); free(sendcounts); free(rbuf); free(sbuf); MTestFreeComm(&comm); } MTest_Finalize(err); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/redscatblk3.c0000644000175000017500000000453412620254305017664 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2010 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * Test of reduce scatter with large data (needed in MPICH to trigger the * long-data algorithm) * * Each processor contributes its rank + the index to the reduction, * then receives the ith sum * * Can be called with any number of processors. */ #include "mpi.h" #include #include #include "mpitest.h" int main(int argc, char **argv) { int err = 0; int *sendbuf, *recvbuf; int size, rank, i, j, idx, mycount, sumval; MPI_Comm comm; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_Comm_size(comm, &size); MPI_Comm_rank(comm, &rank); mycount = (1024 * 1024) / size; sendbuf = (int *) malloc(mycount * size * sizeof(int)); if (!sendbuf) { fprintf(stderr, "Could not allocate %d ints for sendbuf\n", mycount * size); MPI_Abort(MPI_COMM_WORLD, 1); } idx = 0; for (i = 0; i < size; i++) { for (j = 0; j < mycount; j++) { sendbuf[idx++] = rank + i; } } recvbuf = (int *) malloc(mycount * sizeof(int)); if (!recvbuf) { fprintf(stderr, "Could not allocate %d ints for recvbuf\n", mycount); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Reduce_scatter_block(sendbuf, recvbuf, mycount, MPI_INT, MPI_SUM, comm); sumval = size * rank + ((size - 1) * size) / 2; /* recvbuf should be size * (rank + i) */ for (i = 0; i < mycount; i++) { if (recvbuf[i] != sumval) { err++; fprintf(stdout, "Did not get expected value for reduce scatter\n"); fprintf(stdout, "[%d] Got %d expected %d\n", rank, recvbuf[i], sumval); } } MPI_Reduce_scatter_block(MPI_IN_PLACE, sendbuf, mycount, MPI_INT, MPI_SUM, comm); sumval = size * rank + ((size - 1) * size) / 2; /* recv'ed values for my process should be size * (rank + i) */ for (i = 0; i < mycount; i++) { if (sendbuf[i] != sumval) { err++; fprintf(stdout, "Did not get expected value for reduce scatter (in place)\n"); fprintf(stdout, "[%d] Got %d expected %d\n", rank, sendbuf[i], sumval); } } free(sendbuf); free(recvbuf); MTest_Finalize(err); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/nonblocking3.c0000644000175000017500000006614312620254305020055 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2011 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* This test attempts to execute multiple simultaneous nonblocking collective * (NBC) MPI routines at the same time, and manages their completion with a * variety of routines (MPI_{Wait,Test}{,_all,_any,_some}). It also throws a * few point-to-point operations into the mix. * * Possible improvements: * - post operations on multiple comms from multiple threads */ #include "mpi.h" #include #include #include #include #ifdef HAVE_UNISTD_H #include #endif static int errs = 0; /* Constants that control the high level test harness behavior. */ /* MAIN_ITERATIONS is how many NBC ops the test will attempt to issue. */ #define MAIN_ITERATIONS (100000) /* WINDOW is the maximum number of outstanding NBC requests at any given time */ #define WINDOW (20) /* we sleep with probability 1/CHANCE_OF_SLEEP */ #define CHANCE_OF_SLEEP (1000) /* JITTER_DELAY is denominated in microseconds (us) */ #define JITTER_DELAY (50000) /* 0.05 seconds */ /* NUM_COMMS is the number of communicators on which ops will be posted */ #define NUM_COMMS (4) /* Constants that control behavior of the individual testing operations. * Altering these can help to explore the testing space, but increasing them too * much can consume too much memory (often O(n^2) usage). */ /* FIXME is COUNT==10 too limiting? should we try a larger count too (~500)? */ #define COUNT (10) #define PRIME (17) #define my_assert(cond_) \ do { \ if (!(cond_)) { \ ++errs; \ if (errs < 10) { \ fprintf(stderr, "assertion (%s) failed on line %d\n", #cond_, __LINE__); \ } \ } \ } while (0) /* Intended to act like "rand_r", but we can be sure that it will exist and be * consistent across all of comm world. Returns a number in the range * [0,GEN_PRN_MAX] */ #define GEN_PRN_MAX (4294967291-1) static unsigned int gen_prn(unsigned int x) { /* a simple "multiplicative congruential method" PRNG, with parameters: * m=4294967291, largest 32-bit prime * a=279470273, good primitive root of m from "TABLES OF LINEAR * CONGRUENTIAL GENERATORS OF DIFFERENT SIZES AND GOOD * LATTICE STRUCTURE", by Pierre L’Ecuyer */ return (279470273UL * (unsigned long) x) % 4294967291UL; } /* given a random unsigned int value "rndval_" from gen_prn, this evaluates to a * value in the range [min_,max_) */ #define rand_range(rndval_,min_,max_) \ ((unsigned int)((min_) + ((rndval_) * (1.0 / (GEN_PRN_MAX+1.0)) * ((max_) - (min_))))) static void sum_fn(void *invec, void *inoutvec, int *len, MPI_Datatype * datatype) { int i; int *in = invec; int *inout = inoutvec; for (i = 0; i < *len; ++i) { inout[i] = in[i] + inout[i]; } } /* used to keep track of buffers that should be freed after the corresponding * operation has completed */ struct laundry { int case_num; /* which test case initiated this req/laundry */ MPI_Comm comm; int *buf; int *recvbuf; int *sendcounts; int *recvcounts; int *sdispls; int *rdispls; int *sendtypes; int *recvtypes; }; static void cleanup_laundry(struct laundry *l) { l->case_num = -1; l->comm = MPI_COMM_NULL; if (l->buf) free(l->buf); if (l->recvbuf) free(l->recvbuf); if (l->sendcounts) free(l->sendcounts); if (l->recvcounts) free(l->recvcounts); if (l->sdispls) free(l->sdispls); if (l->rdispls) free(l->rdispls); if (l->sendtypes) free(l->sendtypes); if (l->recvtypes) free(l->recvtypes); } /* Starts a "random" operation on "comm" corresponding to "rndnum" and returns * in (*req) a request handle corresonding to that operation. This call should * be considered collective over comm (with a consistent value for "rndnum"), * even though the operation may only be a point-to-point request. */ static void start_random_nonblocking(MPI_Comm comm, unsigned int rndnum, MPI_Request * req, struct laundry *l) { int i, j; int rank, size; int *buf = NULL; int *recvbuf = NULL; int *sendcounts = NULL; int *recvcounts = NULL; int *sdispls = NULL; int *rdispls = NULL; int *sendtypes = NULL; int *recvtypes = NULL; signed char *buf_alias = NULL; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); *req = MPI_REQUEST_NULL; l->case_num = -1; l->comm = comm; l->buf = buf = malloc(COUNT * size * sizeof(int)); l->recvbuf = recvbuf = malloc(COUNT * size * sizeof(int)); l->sendcounts = sendcounts = malloc(size * sizeof(int)); l->recvcounts = recvcounts = malloc(size * sizeof(int)); l->sdispls = sdispls = malloc(size * sizeof(int)); l->rdispls = rdispls = malloc(size * sizeof(int)); l->sendtypes = sendtypes = malloc(size * sizeof(MPI_Datatype)); l->recvtypes = recvtypes = malloc(size * sizeof(MPI_Datatype)); #define NUM_CASES (21) l->case_num = rand_range(rndnum, 0, NUM_CASES); switch (l->case_num) { case 0: /* MPI_Ibcast */ for (i = 0; i < COUNT; ++i) { if (rank == 0) { buf[i] = i; } else { buf[i] = 0xdeadbeef; } } MPI_Ibcast(buf, COUNT, MPI_INT, 0, comm, req); break; case 1: /* MPI_Ibcast (again, but designed to stress scatter/allgather impls) */ /* FIXME fiddle with PRIME and buffer allocation s.t. PRIME is much larger (1021?) */ buf_alias = (signed char *) buf; my_assert(COUNT * size * sizeof(int) > PRIME); /* sanity */ for (i = 0; i < PRIME; ++i) { if (rank == 0) buf_alias[i] = i; else buf_alias[i] = 0xdb; } for (i = PRIME; i < COUNT * size * sizeof(int); ++i) { buf_alias[i] = 0xbf; } MPI_Ibcast(buf_alias, PRIME, MPI_SIGNED_CHAR, 0, comm, req); break; case 2: /* MPI_Ibarrier */ MPI_Ibarrier(comm, req); break; case 3: /* MPI_Ireduce */ for (i = 0; i < COUNT; ++i) { buf[i] = rank + i; recvbuf[i] = 0xdeadbeef; } MPI_Ireduce(buf, recvbuf, COUNT, MPI_INT, MPI_SUM, 0, comm, req); break; case 4: /* same again, use a user op and free it before the wait */ { MPI_Op op = MPI_OP_NULL; MPI_Op_create(sum_fn, /*commute= */ 1, &op); for (i = 0; i < COUNT; ++i) { buf[i] = rank + i; recvbuf[i] = 0xdeadbeef; } MPI_Ireduce(buf, recvbuf, COUNT, MPI_INT, op, 0, comm, req); MPI_Op_free(&op); } break; case 5: /* MPI_Iallreduce */ for (i = 0; i < COUNT; ++i) { buf[i] = rank + i; recvbuf[i] = 0xdeadbeef; } MPI_Iallreduce(buf, recvbuf, COUNT, MPI_INT, MPI_SUM, comm, req); break; case 6: /* MPI_Ialltoallv (a weak test, neither irregular nor sparse) */ for (i = 0; i < size; ++i) { sendcounts[i] = COUNT; recvcounts[i] = COUNT; sdispls[i] = COUNT * i; rdispls[i] = COUNT * i; for (j = 0; j < COUNT; ++j) { buf[i * COUNT + j] = rank + (i * j); recvbuf[i * COUNT + j] = 0xdeadbeef; } } MPI_Ialltoallv(buf, sendcounts, sdispls, MPI_INT, recvbuf, recvcounts, rdispls, MPI_INT, comm, req); break; case 7: /* MPI_Igather */ for (i = 0; i < size * COUNT; ++i) { buf[i] = rank + i; recvbuf[i] = 0xdeadbeef; } MPI_Igather(buf, COUNT, MPI_INT, recvbuf, COUNT, MPI_INT, 0, comm, req); break; case 8: /* same test again, just use a dup'ed datatype and free it before the wait */ { MPI_Datatype type = MPI_DATATYPE_NULL; MPI_Type_dup(MPI_INT, &type); for (i = 0; i < size * COUNT; ++i) { buf[i] = rank + i; recvbuf[i] = 0xdeadbeef; } MPI_Igather(buf, COUNT, MPI_INT, recvbuf, COUNT, type, 0, comm, req); MPI_Type_free(&type); /* should cause implementations that don't refcount * correctly to blow up or hang in the wait */ } break; case 9: /* MPI_Iscatter */ for (i = 0; i < size; ++i) { for (j = 0; j < COUNT; ++j) { if (rank == 0) buf[i * COUNT + j] = i + j; else buf[i * COUNT + j] = 0xdeadbeef; recvbuf[i * COUNT + j] = 0xdeadbeef; } } MPI_Iscatter(buf, COUNT, MPI_INT, recvbuf, COUNT, MPI_INT, 0, comm, req); break; case 10: /* MPI_Iscatterv */ for (i = 0; i < size; ++i) { /* weak test, just test the regular case where all counts are equal */ sendcounts[i] = COUNT; sdispls[i] = i * COUNT; for (j = 0; j < COUNT; ++j) { if (rank == 0) buf[i * COUNT + j] = i + j; else buf[i * COUNT + j] = 0xdeadbeef; recvbuf[i * COUNT + j] = 0xdeadbeef; } } MPI_Iscatterv(buf, sendcounts, sdispls, MPI_INT, recvbuf, COUNT, MPI_INT, 0, comm, req); break; case 11: /* MPI_Ireduce_scatter */ for (i = 0; i < size; ++i) { recvcounts[i] = COUNT; for (j = 0; j < COUNT; ++j) { buf[i * COUNT + j] = rank + i; recvbuf[i * COUNT + j] = 0xdeadbeef; } } MPI_Ireduce_scatter(buf, recvbuf, recvcounts, MPI_INT, MPI_SUM, comm, req); break; case 12: /* MPI_Ireduce_scatter_block */ for (i = 0; i < size; ++i) { for (j = 0; j < COUNT; ++j) { buf[i * COUNT + j] = rank + i; recvbuf[i * COUNT + j] = 0xdeadbeef; } } MPI_Ireduce_scatter_block(buf, recvbuf, COUNT, MPI_INT, MPI_SUM, comm, req); break; case 13: /* MPI_Igatherv */ for (i = 0; i < size * COUNT; ++i) { buf[i] = 0xdeadbeef; recvbuf[i] = 0xdeadbeef; } for (i = 0; i < COUNT; ++i) { buf[i] = rank + i; } for (i = 0; i < size; ++i) { recvcounts[i] = COUNT; rdispls[i] = i * COUNT; } MPI_Igatherv(buf, COUNT, MPI_INT, recvbuf, recvcounts, rdispls, MPI_INT, 0, comm, req); break; case 14: /* MPI_Ialltoall */ for (i = 0; i < size; ++i) { for (j = 0; j < COUNT; ++j) { buf[i * COUNT + j] = rank + (i * j); recvbuf[i * COUNT + j] = 0xdeadbeef; } } MPI_Ialltoall(buf, COUNT, MPI_INT, recvbuf, COUNT, MPI_INT, comm, req); break; case 15: /* MPI_Iallgather */ for (i = 0; i < size * COUNT; ++i) { buf[i] = rank + i; recvbuf[i] = 0xdeadbeef; } MPI_Iallgather(buf, COUNT, MPI_INT, recvbuf, COUNT, MPI_INT, comm, req); break; case 16: /* MPI_Iallgatherv */ for (i = 0; i < size; ++i) { for (j = 0; j < COUNT; ++j) { recvbuf[i * COUNT + j] = 0xdeadbeef; } recvcounts[i] = COUNT; rdispls[i] = i * COUNT; } for (i = 0; i < COUNT; ++i) buf[i] = rank + i; MPI_Iallgatherv(buf, COUNT, MPI_INT, recvbuf, recvcounts, rdispls, MPI_INT, comm, req); break; case 17: /* MPI_Iscan */ for (i = 0; i < COUNT; ++i) { buf[i] = rank + i; recvbuf[i] = 0xdeadbeef; } MPI_Iscan(buf, recvbuf, COUNT, MPI_INT, MPI_SUM, comm, req); break; case 18: /* MPI_Iexscan */ for (i = 0; i < COUNT; ++i) { buf[i] = rank + i; recvbuf[i] = 0xdeadbeef; } MPI_Iexscan(buf, recvbuf, COUNT, MPI_INT, MPI_SUM, comm, req); break; case 19: /* MPI_Ialltoallw (a weak test, neither irregular nor sparse) */ for (i = 0; i < size; ++i) { sendcounts[i] = COUNT; recvcounts[i] = COUNT; sdispls[i] = COUNT * i * sizeof(int); rdispls[i] = COUNT * i * sizeof(int); sendtypes[i] = MPI_INT; recvtypes[i] = MPI_INT; for (j = 0; j < COUNT; ++j) { buf[i * COUNT + j] = rank + (i * j); recvbuf[i * COUNT + j] = 0xdeadbeef; } } MPI_Ialltoallw(buf, sendcounts, sdispls, sendtypes, recvbuf, recvcounts, rdispls, recvtypes, comm, req); break; case 20: /* basic pt2pt MPI_Isend/MPI_Irecv pairing */ /* even ranks send to odd ranks, but only if we have a full pair */ if ((rank % 2 != 0) || (rank != size - 1)) { for (j = 0; j < COUNT; ++j) { buf[j] = j; recvbuf[j] = 0xdeadbeef; } if (rank % 2 == 0) MPI_Isend(buf, COUNT, MPI_INT, rank + 1, 5, comm, req); else MPI_Irecv(recvbuf, COUNT, MPI_INT, rank - 1, 5, comm, req); } break; default: fprintf(stderr, "unexpected value for l->case_num=%d)\n", (l->case_num)); MPI_Abort(comm, 1); break; } } static void check_after_completion(struct laundry *l) { int i, j; int rank, size; MPI_Comm comm = l->comm; int *buf = l->buf; int *recvbuf = l->recvbuf; int *sendcounts = l->sendcounts; int *recvcounts = l->recvcounts; int *sdispls = l->sdispls; int *rdispls = l->rdispls; int *sendtypes = l->sendtypes; int *recvtypes = l->recvtypes; char *buf_alias = (char *) buf; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); /* these cases all correspond to cases in start_random_nonblocking */ switch (l->case_num) { case 0: /* MPI_Ibcast */ for (i = 0; i < COUNT; ++i) { if (buf[i] != i) printf("buf[%d]=%d i=%d\n", i, buf[i], i); my_assert(buf[i] == i); } break; case 1: /* MPI_Ibcast (again, but designed to stress scatter/allgather impls) */ for (i = 0; i < PRIME; ++i) { if (buf_alias[i] != i) printf("buf_alias[%d]=%d i=%d\n", i, buf_alias[i], i); my_assert(buf_alias[i] == i); } break; case 2: /* MPI_Ibarrier */ /* nothing to check */ break; case 3: /* MPI_Ireduce */ if (rank == 0) { for (i = 0; i < COUNT; ++i) { if (recvbuf[i] != ((size * (size - 1) / 2) + (i * size))) printf("got recvbuf[%d]=%d, expected %d\n", i, recvbuf[i], ((size * (size - 1) / 2) + (i * size))); my_assert(recvbuf[i] == ((size * (size - 1) / 2) + (i * size))); } } break; case 4: /* same again, use a user op and free it before the wait */ if (rank == 0) { for (i = 0; i < COUNT; ++i) { if (recvbuf[i] != ((size * (size - 1) / 2) + (i * size))) printf("got recvbuf[%d]=%d, expected %d\n", i, recvbuf[i], ((size * (size - 1) / 2) + (i * size))); my_assert(recvbuf[i] == ((size * (size - 1) / 2) + (i * size))); } } break; case 5: /* MPI_Iallreduce */ for (i = 0; i < COUNT; ++i) { if (recvbuf[i] != ((size * (size - 1) / 2) + (i * size))) printf("got recvbuf[%d]=%d, expected %d\n", i, recvbuf[i], ((size * (size - 1) / 2) + (i * size))); my_assert(recvbuf[i] == ((size * (size - 1) / 2) + (i * size))); } break; case 6: /* MPI_Ialltoallv (a weak test, neither irregular nor sparse) */ for (i = 0; i < size; ++i) { for (j = 0; j < COUNT; ++j) { /*printf("recvbuf[%d*COUNT+%d]=%d, expecting %d\n", i, j, recvbuf[i*COUNT+j], (i + (rank * j))); */ my_assert(recvbuf[i * COUNT + j] == (i + (rank * j))); } } break; case 7: /* MPI_Igather */ if (rank == 0) { for (i = 0; i < size; ++i) { for (j = 0; j < COUNT; ++j) { my_assert(recvbuf[i * COUNT + j] == i + j); } } } else { for (i = 0; i < size * COUNT; ++i) { my_assert(recvbuf[i] == 0xdeadbeef); } } break; case 8: /* same test again, just use a dup'ed datatype and free it before the wait */ if (rank == 0) { for (i = 0; i < size; ++i) { for (j = 0; j < COUNT; ++j) { my_assert(recvbuf[i * COUNT + j] == i + j); } } } else { for (i = 0; i < size * COUNT; ++i) { my_assert(recvbuf[i] == 0xdeadbeef); } } break; case 9: /* MPI_Iscatter */ for (j = 0; j < COUNT; ++j) { my_assert(recvbuf[j] == rank + j); } if (rank != 0) { for (i = 0; i < size * COUNT; ++i) { /* check we didn't corrupt the sendbuf somehow */ my_assert(buf[i] == 0xdeadbeef); } } break; case 10: /* MPI_Iscatterv */ for (j = 0; j < COUNT; ++j) { my_assert(recvbuf[j] == rank + j); } if (rank != 0) { for (i = 0; i < size * COUNT; ++i) { /* check we didn't corrupt the sendbuf somehow */ my_assert(buf[i] == 0xdeadbeef); } } for (i = 1; i < size; ++i) { for (j = 0; j < COUNT; ++j) { /* check we didn't corrupt the rest of the recvbuf */ my_assert(recvbuf[i * COUNT + j] == 0xdeadbeef); } } break; case 11: /* MPI_Ireduce_scatter */ for (j = 0; j < COUNT; ++j) { my_assert(recvbuf[j] == (size * rank + ((size - 1) * size) / 2)); } for (i = 1; i < size; ++i) { for (j = 0; j < COUNT; ++j) { /* check we didn't corrupt the rest of the recvbuf */ my_assert(recvbuf[i * COUNT + j] == 0xdeadbeef); } } break; case 12: /* MPI_Ireduce_scatter_block */ for (j = 0; j < COUNT; ++j) { my_assert(recvbuf[j] == (size * rank + ((size - 1) * size) / 2)); } for (i = 1; i < size; ++i) { for (j = 0; j < COUNT; ++j) { /* check we didn't corrupt the rest of the recvbuf */ my_assert(recvbuf[i * COUNT + j] == 0xdeadbeef); } } break; case 13: /* MPI_Igatherv */ if (rank == 0) { for (i = 0; i < size; ++i) { for (j = 0; j < COUNT; ++j) { my_assert(recvbuf[i * COUNT + j] == i + j); } } } else { for (i = 0; i < size * COUNT; ++i) { my_assert(recvbuf[i] == 0xdeadbeef); } } break; case 14: /* MPI_Ialltoall */ for (i = 0; i < size; ++i) { for (j = 0; j < COUNT; ++j) { /*printf("recvbuf[%d*COUNT+%d]=%d, expecting %d\n", i, j, recvbuf[i*COUNT+j], (i + (i * j))); */ my_assert(recvbuf[i * COUNT + j] == (i + (rank * j))); } } break; case 15: /* MPI_Iallgather */ for (i = 0; i < size; ++i) { for (j = 0; j < COUNT; ++j) { my_assert(recvbuf[i * COUNT + j] == i + j); } } break; case 16: /* MPI_Iallgatherv */ for (i = 0; i < size; ++i) { for (j = 0; j < COUNT; ++j) { my_assert(recvbuf[i * COUNT + j] == i + j); } } break; case 17: /* MPI_Iscan */ for (i = 0; i < COUNT; ++i) { my_assert(recvbuf[i] == ((rank * (rank + 1) / 2) + (i * (rank + 1)))); } break; case 18: /* MPI_Iexscan */ for (i = 0; i < COUNT; ++i) { if (rank == 0) my_assert(recvbuf[i] == 0xdeadbeef); else my_assert(recvbuf[i] == ((rank * (rank + 1) / 2) + (i * (rank + 1)) - (rank + i))); } break; case 19: /* MPI_Ialltoallw (a weak test, neither irregular nor sparse) */ for (i = 0; i < size; ++i) { for (j = 0; j < COUNT; ++j) { /*printf("recvbuf[%d*COUNT+%d]=%d, expecting %d\n", i, j, recvbuf[i*COUNT+j], (i + (rank * j))); */ my_assert(recvbuf[i * COUNT + j] == (i + (rank * j))); } } break; case 20: /* basic pt2pt MPI_Isend/MPI_Irecv pairing */ /* even ranks send to odd ranks, but only if we have a full pair */ if ((rank % 2 != 0) || (rank != size - 1)) { for (j = 0; j < COUNT; ++j) { /* only odd procs did a recv */ if (rank % 2 == 0) { my_assert(recvbuf[j] == 0xdeadbeef); } else { if (recvbuf[j] != j) printf("recvbuf[%d]=%d j=%d\n", j, recvbuf[j], j); my_assert(recvbuf[j] == j); } } } break; default: printf("invalid case_num (%d) detected\n", l->case_num); assert(0); break; } } #undef NUM_CASES static void complete_something_somehow(unsigned int rndnum, int numreqs, MPI_Request reqs[], int *outcount, int indices[]) { int i, idx, flag; #define COMPLETION_CASES (8) switch (rand_range(rndnum, 0, COMPLETION_CASES)) { case 0: MPI_Waitall(numreqs, reqs, MPI_STATUSES_IGNORE); *outcount = numreqs; for (i = 0; i < numreqs; ++i) { indices[i] = i; } break; case 1: MPI_Testsome(numreqs, reqs, outcount, indices, MPI_STATUS_IGNORE); if (*outcount == MPI_UNDEFINED) { *outcount = 0; } break; case 2: MPI_Waitsome(numreqs, reqs, outcount, indices, MPI_STATUS_IGNORE); if (*outcount == MPI_UNDEFINED) { *outcount = 0; } break; case 3: MPI_Waitany(numreqs, reqs, &idx, MPI_STATUS_IGNORE); if (idx == MPI_UNDEFINED) { *outcount = 0; } else { *outcount = 1; indices[0] = idx; } break; case 4: MPI_Testany(numreqs, reqs, &idx, &flag, MPI_STATUS_IGNORE); if (idx == MPI_UNDEFINED) { *outcount = 0; } else { *outcount = 1; indices[0] = idx; } break; case 5: MPI_Testall(numreqs, reqs, &flag, MPI_STATUSES_IGNORE); if (flag) { *outcount = numreqs; for (i = 0; i < numreqs; ++i) { indices[i] = i; } } else { *outcount = 0; } break; case 6: /* select a new random index and wait on it */ rndnum = gen_prn(rndnum); idx = rand_range(rndnum, 0, numreqs); MPI_Wait(&reqs[idx], MPI_STATUS_IGNORE); *outcount = 1; indices[0] = idx; break; case 7: /* select a new random index and wait on it */ rndnum = gen_prn(rndnum); idx = rand_range(rndnum, 0, numreqs); MPI_Test(&reqs[idx], &flag, MPI_STATUS_IGNORE); *outcount = (flag ? 1 : 0); indices[0] = idx; break; default: assert(0); break; } #undef COMPLETION_CASES } int main(int argc, char **argv) { int i, num_posted, num_completed; int wrank, wsize; unsigned int seed = 0x10bc; unsigned int post_seq, complete_seq; struct laundry larr[WINDOW]; MPI_Request reqs[WINDOW]; int outcount; int indices[WINDOW]; MPI_Comm comms[NUM_COMMS]; MPI_Comm comm; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &wrank); MPI_Comm_size(MPI_COMM_WORLD, &wsize); /* it is critical that all processes in the communicator start with a * consistent value for "post_seq" */ post_seq = complete_seq = gen_prn(seed); num_completed = 0; num_posted = 0; /* construct all of the communicators, just dups of comm world for now */ for (i = 0; i < NUM_COMMS; ++i) { MPI_Comm_dup(MPI_COMM_WORLD, &comms[i]); } /* fill the entire window of ops */ for (i = 0; i < WINDOW; ++i) { reqs[i] = MPI_REQUEST_NULL; memset(&larr[i], 0, sizeof(struct laundry)); larr[i].case_num = -1; /* randomly select a comm, using a new seed to avoid correlating * particular kinds of NBC ops with particular communicators */ comm = comms[rand_range(gen_prn(post_seq), 0, NUM_COMMS)]; start_random_nonblocking(comm, post_seq, &reqs[i], &larr[i]); ++num_posted; post_seq = gen_prn(post_seq); } /* now loop repeatedly, completing ops with "random" completion functions, * until we've posted and completed MAIN_ITERATIONS ops */ while (num_completed < MAIN_ITERATIONS) { complete_something_somehow(complete_seq, WINDOW, reqs, &outcount, indices); complete_seq = gen_prn(complete_seq); for (i = 0; i < outcount; ++i) { int idx = indices[i]; assert(reqs[idx] == MPI_REQUEST_NULL); if (larr[idx].case_num != -1) { check_after_completion(&larr[idx]); cleanup_laundry(&larr[idx]); ++num_completed; if (num_posted < MAIN_ITERATIONS) { comm = comms[rand_range(gen_prn(post_seq), 0, NUM_COMMS)]; start_random_nonblocking(comm, post_seq, &reqs[idx], &larr[idx]); ++num_posted; post_seq = gen_prn(post_seq); } } } /* "randomly" and infrequently introduce some jitter into the system */ if (0 == rand_range(gen_prn(complete_seq + wrank), 0, CHANCE_OF_SLEEP)) { usleep(JITTER_DELAY); /* take a short nap */ } } for (i = 0; i < NUM_COMMS; ++i) { MPI_Comm_free(&comms[i]); } if (wrank == 0) { if (errs) printf("found %d errors\n", errs); else printf(" No errors\n"); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/icalltoallw.c0000644000175000017500000000711112620254305017764 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitest.h" #include #include #include "mpicolltest.h" /* This program tests MPI_Alltoallw by having processor i send different amounts of data to each processor. This is just the MPI_Alltoallv test, but with displacements in bytes rather than units of the datatype. Because there are separate send and receive types to alltoallw, there need to be tests to rearrange data on the fly. Not done yet. The first test sends i items to processor i from all processors. Currently, the test uses only MPI_INT; this is adequate for testing systems that use point-to-point operations */ int main(int argc, char **argv) { MPI_Comm comm; int *sbuf, *rbuf; int rank, size, lsize, asize; int *sendcounts, *recvcounts, *rdispls, *sdispls; int i, j, *p, err; MPI_Datatype *sendtypes, *recvtypes; int leftGroup; MTest_Init(&argc, &argv); err = 0; while (MTestGetIntercomm(&comm, &leftGroup, 4)) { if (comm == MPI_COMM_NULL) continue; /* Create the buffer */ MPI_Comm_size(comm, &lsize); MPI_Comm_remote_size(comm, &size); asize = (lsize > size) ? lsize : size; MPI_Comm_rank(comm, &rank); sbuf = (int *) malloc(size * size * sizeof(int)); rbuf = (int *) malloc(asize * asize * sizeof(int)); if (!sbuf || !rbuf) { fprintf(stderr, "Could not allocated buffers!\n"); MPI_Abort(comm, 1); } /* Load up the buffers */ for (i = 0; i < size * size; i++) { sbuf[i] = i + 100 * rank; rbuf[i] = -i; } /* Create and load the arguments to alltoallv */ sendcounts = (int *) malloc(size * sizeof(int)); recvcounts = (int *) malloc(size * sizeof(int)); rdispls = (int *) malloc(size * sizeof(int)); sdispls = (int *) malloc(size * sizeof(int)); sendtypes = (MPI_Datatype *) malloc(size * sizeof(MPI_Datatype)); recvtypes = (MPI_Datatype *) malloc(size * sizeof(MPI_Datatype)); if (!sendcounts || !recvcounts || !rdispls || !sdispls || !sendtypes || !recvtypes) { fprintf(stderr, "Could not allocate arg items!\n"); MPI_Abort(comm, 1); } /* Note that process 0 sends no data (sendcounts[0] = 0) */ for (i = 0; i < size; i++) { sendcounts[i] = i; sdispls[i] = (((i + 1) * (i)) / 2) * sizeof(int); sendtypes[i] = MPI_INT; recvcounts[i] = rank; rdispls[i] = i * rank * sizeof(int); recvtypes[i] = MPI_INT; } MTest_Alltoallw(sbuf, sendcounts, sdispls, sendtypes, rbuf, recvcounts, rdispls, recvtypes, comm); /* Check rbuf */ for (i = 0; i < size; i++) { p = rbuf + rdispls[i] / sizeof(int); for (j = 0; j < rank; j++) { if (p[j] != i * 100 + (rank * (rank + 1)) / 2 + j) { fprintf(stderr, "[%d] got %d expected %d for %dth\n", rank, p[j], (i * (i + 1)) / 2 + j, j); err++; } } } free(sendtypes); free(recvtypes); free(sdispls); free(rdispls); free(recvcounts); free(sendcounts); free(rbuf); free(sbuf); MTestFreeComm(&comm); } MTest_Finalize(err); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/oplxor.c0000644000175000017500000002004212620254305016776 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test MPI_LXOR operations on optional datatypes dupported by MPICH"; */ /* * This test looks at the handling of logical and for types that are not * integers or are not required integers (e.g., long long). MPICH allows * these as well. A strict MPI test should not include this test. */ int main(int argc, char *argv[]) { int errs = 0; int rc; int rank, size; MPI_Comm comm; char cinbuf[3], coutbuf[3]; signed char scinbuf[3], scoutbuf[3]; unsigned char ucinbuf[3], ucoutbuf[3]; float finbuf[3], foutbuf[3]; double dinbuf[3], doutbuf[3]; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; /* Set errors return so that we can provide better information * should a routine reject one of the operand/datatype pairs */ MPI_Errhandler_set(comm, MPI_ERRORS_RETURN); MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); #ifndef USE_STRICT_MPI /* char */ MTestPrintfMsg(10, "Reduce of MPI_CHAR\n"); cinbuf[0] = 1; cinbuf[1] = 0; cinbuf[2] = (rank > 0); coutbuf[0] = 0; coutbuf[1] = 1; coutbuf[2] = 1; rc = MPI_Reduce(cinbuf, coutbuf, 3, MPI_CHAR, MPI_LXOR, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_LXOR and MPI_CHAR", rc); errs++; } else { if (rank == 0) { if (coutbuf[0] != (size % 2)) { errs++; fprintf(stderr, "char XOR(1) test failed\n"); } if (coutbuf[1]) { errs++; fprintf(stderr, "char XOR(0) test failed\n"); } if (coutbuf[2] == (size % 2) && size > 1) { errs++; fprintf(stderr, "char XOR(>) test failed\n"); } } } #endif /* USE_STRICT_MPI */ /* signed char */ MTestPrintfMsg(10, "Reduce of MPI_SIGNED_CHAR\n"); scinbuf[0] = 1; scinbuf[1] = 0; scinbuf[2] = (rank > 0); scoutbuf[0] = 0; scoutbuf[1] = 1; scoutbuf[2] = 1; rc = MPI_Reduce(scinbuf, scoutbuf, 3, MPI_SIGNED_CHAR, MPI_LXOR, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_LXOR and MPI_SIGNED_CHAR", rc); errs++; } else { if (rank == 0) { if (scoutbuf[0] != (size % 2)) { errs++; fprintf(stderr, "signed char XOR(1) test failed\n"); } if (scoutbuf[1]) { errs++; fprintf(stderr, "signed char XOR(0) test failed\n"); } if (scoutbuf[2] == (size % 2) && size > 1) { errs++; fprintf(stderr, "signed char XOR(>) test failed\n"); } } } /* unsigned char */ MTestPrintfMsg(10, "Reduce of MPI_UNSIGNED_CHAR\n"); ucinbuf[0] = 1; ucinbuf[1] = 0; ucinbuf[2] = (rank > 0); ucoutbuf[0] = 0; ucoutbuf[1] = 1; ucoutbuf[2] = 1; rc = MPI_Reduce(ucinbuf, ucoutbuf, 3, MPI_UNSIGNED_CHAR, MPI_LXOR, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_LXOR and MPI_UNSIGNED_CHAR", rc); errs++; } else { if (rank == 0) { if (ucoutbuf[0] != (size % 2)) { errs++; fprintf(stderr, "unsigned char XOR(1) test failed\n"); } if (ucoutbuf[1]) { errs++; fprintf(stderr, "unsigned char XOR(0) test failed\n"); } if (ucoutbuf[2] == (size % 2) && size > 1) { errs++; fprintf(stderr, "unsigned char XOR(>) test failed\n"); } } } #ifndef USE_STRICT_MPI /* float */ MTestPrintfMsg(10, "Reduce of MPI_FLOAT\n"); finbuf[0] = 1; finbuf[1] = 0; finbuf[2] = (rank > 0); foutbuf[0] = 0; foutbuf[1] = 1; foutbuf[2] = 1; rc = MPI_Reduce(finbuf, foutbuf, 3, MPI_FLOAT, MPI_LXOR, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_LXOR and MPI_FLOAT", rc); errs++; } else { if (rank == 0) { if (foutbuf[0] != (size % 2)) { errs++; fprintf(stderr, "float XOR(1) test failed\n"); } if (foutbuf[1]) { errs++; fprintf(stderr, "float XOR(0) test failed\n"); } if (foutbuf[2] == (size % 2) && size > 1) { errs++; fprintf(stderr, "float XOR(>) test failed\n"); } } } /* double */ MTestPrintfMsg(10, "Reduce of MPI_DOUBLE\n"); dinbuf[0] = 1; dinbuf[1] = 0; dinbuf[2] = (rank > 0); doutbuf[0] = 0; doutbuf[1] = 1; doutbuf[2] = 1; rc = MPI_Reduce(dinbuf, doutbuf, 3, MPI_DOUBLE, MPI_LXOR, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_LXOR and MPI_DOUBLE", rc); errs++; } else { if (rank == 0) { if (doutbuf[0] != (size % 2)) { errs++; fprintf(stderr, "double XOR(1) test failed\n"); } if (doutbuf[1]) { errs++; fprintf(stderr, "double XOR(0) test failed\n"); } if (doutbuf[2] == (size % 2) && size > 1) { errs++; fprintf(stderr, "double XOR(>) test failed\n"); } } } #ifdef HAVE_LONG_DOUBLE { long double ldinbuf[3], ldoutbuf[3]; /* long double */ ldinbuf[0] = 1; ldinbuf[1] = 0; ldinbuf[2] = (rank > 0); ldoutbuf[0] = 0; ldoutbuf[1] = 1; ldoutbuf[2] = 1; if (MPI_LONG_DOUBLE != MPI_DATATYPE_NULL) { MTestPrintfMsg(10, "Reduce of MPI_LONG_DOUBLE\n"); rc = MPI_Reduce(ldinbuf, ldoutbuf, 3, MPI_LONG_DOUBLE, MPI_LXOR, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_LXOR and MPI_LONG_DOUBLE", rc); errs++; } else { if (rank == 0) { if (ldoutbuf[0] != (size % 2)) { errs++; fprintf(stderr, "long double XOR(1) test failed\n"); } if (ldoutbuf[1]) { errs++; fprintf(stderr, "long double XOR(0) test failed\n"); } if (ldoutbuf[2] == (size % 2) && size > 1) { errs++; fprintf(stderr, "long double XOR(>) test failed\n"); } } } } } #endif /* HAVE_LONG_DOUBLE */ #endif /* USE_STRICT_MPI */ #ifdef HAVE_LONG_LONG { long long llinbuf[3], lloutbuf[3]; /* long long */ llinbuf[0] = 1; llinbuf[1] = 0; llinbuf[2] = (rank > 0); lloutbuf[0] = 0; lloutbuf[1] = 1; lloutbuf[2] = 1; if (MPI_LONG_LONG != MPI_DATATYPE_NULL) { MTestPrintfMsg(10, "Reduce of MPI_LONG_LONG\n"); rc = MPI_Reduce(llinbuf, lloutbuf, 3, MPI_LONG_LONG, MPI_LXOR, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_LXOR and MPI_LONG_LONG", rc); errs++; } else { if (rank == 0) { if (lloutbuf[0] != (size % 2)) { errs++; fprintf(stderr, "long long XOR(1) test failed\n"); } if (lloutbuf[1]) { errs++; fprintf(stderr, "long long XOR(0) test failed\n"); } if (lloutbuf[2] == (size % 2) && size > 1) { errs++; fprintf(stderr, "long long XOR(>) test failed\n"); } } } } } #endif MPI_Errhandler_set(comm, MPI_ERRORS_ARE_FATAL); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/uoplong.c0000644000175000017500000000646112620254305017147 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; -*- */ /* * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitest.h" #include #include /* * Test user-defined operations with a large number of elements. * Added because a talk at EuroMPI'12 claimed that these failed with * more than 64k elements */ #define MAX_ERRS 10 #define MAX_COUNT 1200000 void myop(void *cinPtr, void *coutPtr, int *count, MPI_Datatype * dtype); /* * myop takes a datatype that is a triple of doubles, and computes * the sum, max, min of the respective elements of the triple. */ void myop(void *cinPtr, void *coutPtr, int *count, MPI_Datatype * dtype) { int i, n = *count; double const *cin = (double *) cinPtr; double *cout = (double *) coutPtr; for (i = 0; i < n; i++) { cout[0] += cin[0]; cout[1] = (cout[1] > cin[1]) ? cout[1] : cin[1]; cout[2] = (cout[2] < cin[2]) ? cout[2] : cin[2]; cin += 3; cout += 3; } } int main(int argc, char *argv[]) { int errs = 0; int wsize, wrank, i, count; MPI_Datatype tripleType; double *inVal, *outVal; double maxval, sumval; MPI_Op op; MTest_Init(&argc, &argv); MPI_Op_create(myop, 0, &op); MPI_Type_contiguous(3, MPI_DOUBLE, &tripleType); MPI_Type_commit(&tripleType); MPI_Comm_size(MPI_COMM_WORLD, &wsize); MPI_Comm_rank(MPI_COMM_WORLD, &wrank); for (count = 1; count < MAX_COUNT; count += count) { if (wrank == 0) MTestPrintfMsg(1, "Count = %d\n", count); inVal = (double *) malloc(3 * count * sizeof(double)); outVal = (double *) malloc(3 * count * sizeof(double)); if (!inVal || !outVal) { fprintf(stderr, "Unable to allocated %d words for data\n", 3 * count); MPI_Abort(MPI_COMM_WORLD, 1); } for (i = 0; i < count * 3; i++) { outVal[i] = -1; inVal[i] = 1 + (i & 0x3); } MPI_Reduce(inVal, outVal, count, tripleType, op, 0, MPI_COMM_WORLD); /* Check Result values */ if (wrank == 0) { for (i = 0; i < 3 * count; i += 3) { sumval = wsize * (1 + (i & 0x3)); maxval = 1 + ((i + 1) & 0x3); if (outVal[i] != sumval) { if (errs < MAX_ERRS) fprintf(stderr, "%d: outval[%d] = %f, expected %f (sum)\n", count, i, outVal[i], sumval); errs++; } if (outVal[i + 1] != maxval) { if (errs < MAX_ERRS) fprintf(stderr, "%d: outval[%d] = %f, expected %f (max)\n", count, i + 1, outVal[i + 1], maxval); errs++; } if (outVal[i + 2] != 1 + ((i + 2) & 0x3)) { if (errs < MAX_ERRS) fprintf(stderr, "%d: outval[%d] = %f, expected %f (min)\n", count, i + 2, outVal[i + 2], (double) (1 + ((i + 2) ^ 0x3))); errs++; } } } free(inVal); free(outVal); } MPI_Op_free(&op); MPI_Type_free(&tripleType); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/bcastzerotype.c0000644000175000017500000000246312620254305020360 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include /* test broadcast behavior with non-zero counts but zero-sized types */ int main(int argc, char *argv[]) { int i, type_size; MPI_Datatype type = MPI_DATATYPE_NULL; char *buf = NULL; int wrank, wsize; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &wrank); MPI_Comm_size(MPI_COMM_WORLD, &wsize); /* a random non-zero sized buffer */ #define NELEM (10) buf = malloc(NELEM * sizeof(int)); assert(buf); for (i = 0; i < NELEM; i++) { buf[i] = wrank * NELEM + i; } /* create a zero-size type */ MPI_Type_contiguous(0, MPI_INT, &type); MPI_Type_commit(&type); MPI_Type_size(type, &type_size); assert(type_size == 0); /* do the broadcast, which will break on some MPI implementations */ MPI_Bcast(buf, NELEM, type, 0, MPI_COMM_WORLD); /* check that the buffer remains unmolested */ for (i = 0; i < NELEM; i++) { assert(buf[i] == wrank * NELEM + i); } MPI_Type_free(&type); MPI_Finalize(); if (wrank == 0) { printf(" No errors\n"); } return 0; } mpi-testsuite-3.2+dfsg/coll/coll6.c0000644000175000017500000000571512620254305016504 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" #define MAX_PROCESSES 10 int main(int argc, char **argv) { int rank, size, i, j; int table[MAX_PROCESSES][MAX_PROCESSES]; int errors = 0; int participants; int displs[MAX_PROCESSES]; int recv_counts[MAX_PROCESSES]; MPI_Comm test_comm; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); /* A maximum of MAX_PROCESSES processes can participate */ participants = (size > MAX_PROCESSES) ? MAX_PROCESSES : size; if (MAX_PROCESSES % participants) { fprintf(stderr, "Number of processors must divide %d\n", MAX_PROCESSES); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_split(MPI_COMM_WORLD, rank < participants, rank, &test_comm); if (rank < participants) { /* Determine what rows are my responsibility */ int block_size = MAX_PROCESSES / participants; int begin_row = rank * block_size; int end_row = (rank + 1) * block_size; int send_count = block_size * MAX_PROCESSES; /* Fill in the displacements and recv_counts */ for (i = 0; i < participants; i++) { displs[i] = i * block_size * MAX_PROCESSES; recv_counts[i] = send_count; } /* Paint my rows my color */ for (i = begin_row; i < end_row; i++) for (j = 0; j < MAX_PROCESSES; j++) table[i][j] = rank + 10; /* Everybody gets the gathered data */ if ((char *) &table[begin_row][0] != (char *) table + displs[rank] * sizeof(int)) MPI_Allgatherv(&table[begin_row][0], send_count, MPI_INT, &table[0][0], recv_counts, displs, MPI_INT, test_comm); else MPI_Allgatherv(MPI_IN_PLACE, send_count, MPI_INT, &table[0][0], recv_counts, displs, MPI_INT, test_comm); /* Everybody should have the same table now. * * The entries are: * Table[i][j] = (i/block_size) + 10; */ for (i = 0; i < MAX_PROCESSES; i++) if ((table[i][0] - table[i][MAX_PROCESSES - 1] != 0)) errors++; for (i = 0; i < MAX_PROCESSES; i++) { for (j = 0; j < MAX_PROCESSES; j++) { if (table[i][j] != (i / block_size) + 10) errors++; } } if (errors) { /* Print out table if there are any errors */ for (i = 0; i < MAX_PROCESSES; i++) { printf("\n"); for (j = 0; j < MAX_PROCESSES; j++) printf(" %d", table[i][j]); } printf("\n"); } } MTest_Finalize(errors); MPI_Comm_free(&test_comm); MPI_Finalize(); return MTestReturnValue(errors); } mpi-testsuite-3.2+dfsg/coll/scatter3.c0000644000175000017500000000545012620254305017211 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitest.h" #include #include /* This example sends contiguous data and receives a vector on some nodes and contiguous data on others. There is some evidence that some MPI implementations do not check recvcount on the root process; this test checks for that case */ int main(int argc, char **argv) { MPI_Datatype vec; double *vecin, *vecout, ivalue; int root, i, n, stride, errs = 0; int rank, size; MPI_Aint vextent; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); n = 12; stride = 10; /* Note that vecout really needs to be only (n-1)*stride+1 doubles, but * this is easier and allows a little extra room if there is a bug */ vecout = (double *) malloc(n * stride * sizeof(double)); vecin = (double *) malloc(n * size * sizeof(double)); MPI_Type_vector(n, 1, stride, MPI_DOUBLE, &vec); MPI_Type_commit(&vec); MPI_Type_extent(vec, &vextent); if (vextent != ((n - 1) * (MPI_Aint) stride + 1) * sizeof(double)) { errs++; printf("Vector extent is %ld, should be %ld\n", (long) vextent, (long) (((n - 1) * stride + 1) * sizeof(double))); } /* Note that the exted of type vector is from the first to the * last element, not n*stride. * E.g., with n=1, the extent is a single double */ for (i = 0; i < n * size; i++) vecin[i] = (double) i; for (root = 0; root < size; root++) { for (i = 0; i < n * stride; i++) vecout[i] = -1.0; if (rank == root) { /* Receive into a vector */ MPI_Scatter(vecin, n, MPI_DOUBLE, vecout, 1, vec, root, MPI_COMM_WORLD); for (i = 0; i < n; i++) { ivalue = n * root + i; if (vecout[i * stride] != ivalue) { errs++; printf("[%d] Expected %f but found %f for vecout[%d] on root\n", rank, ivalue, vecout[i * stride], i * stride); } } } else { /* Receive into contiguous data */ MPI_Scatter(NULL, -1, MPI_DATATYPE_NULL, vecout, n, MPI_DOUBLE, root, MPI_COMM_WORLD); for (i = 0; i < n; i++) { ivalue = rank * n + i; if (vecout[i] != ivalue) { printf("[%d] Expected %f but found %f for vecout[%d]\n", rank, ivalue, vecout[i], i); errs++; } } } } MTest_Finalize(errs); MPI_Type_free(&vec); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/redscat2.c0000644000175000017500000000647612620254305017201 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * Test of reduce scatter. * * Checks that non-commutative operations are not commuted and that * all of the operations are performed. * * Can be called with any number of processors. */ #include "mpi.h" #include #include #include "mpitest.h" int err = 0; /* left(x,y) ==> x */ void left(void *a, void *b, int *count, MPI_Datatype * type); void left(void *a, void *b, int *count, MPI_Datatype * type) { int *in = a; int *inout = b; int i; for (i = 0; i < *count; ++i) { if (in[i] > inout[i]) ++err; inout[i] = in[i]; } } /* right(x,y) ==> y */ void right(void *a, void *b, int *count, MPI_Datatype * type); void right(void *a, void *b, int *count, MPI_Datatype * type) { int *in = a; int *inout = b; int i; for (i = 0; i < *count; ++i) { if (in[i] > inout[i]) ++err; inout[i] = inout[i]; } } /* Just performs a simple sum but can be marked as non-commutative to potentially tigger different logic in the implementation. */ void nc_sum(void *a, void *b, int *count, MPI_Datatype * type); void nc_sum(void *a, void *b, int *count, MPI_Datatype * type) { int *in = a; int *inout = b; int i; for (i = 0; i < *count; ++i) { inout[i] = in[i] + inout[i]; } } #define MAX_BLOCK_SIZE 256 int main(int argc, char **argv) { int *sendbuf, *recvcounts; int block_size; int *recvbuf; int size, rank, i; MPI_Comm comm; MPI_Op left_op, right_op, nc_sum_op; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_Comm_size(comm, &size); MPI_Comm_rank(comm, &rank); MPI_Op_create(&left, 0 /*non-commutative */ , &left_op); MPI_Op_create(&right, 0 /*non-commutative */ , &right_op); MPI_Op_create(&nc_sum, 0 /*non-commutative */ , &nc_sum_op); for (block_size = 1; block_size < MAX_BLOCK_SIZE; block_size *= 2) { sendbuf = (int *) malloc(block_size * size * sizeof(int)); recvbuf = malloc(block_size * sizeof(int)); for (i = 0; i < (size * block_size); i++) sendbuf[i] = rank + i; for (i = 0; i < block_size; i++) recvbuf[i] = 0xdeadbeef; recvcounts = (int *) malloc(size * sizeof(int)); for (i = 0; i < size; i++) recvcounts[i] = block_size; MPI_Reduce_scatter(sendbuf, recvbuf, recvcounts, MPI_INT, left_op, comm); for (i = 0; i < block_size; ++i) if (recvbuf[i] != (rank * block_size + i)) ++err; MPI_Reduce_scatter(sendbuf, recvbuf, recvcounts, MPI_INT, right_op, comm); for (i = 0; i < block_size; ++i) if (recvbuf[i] != ((size - 1) + (rank * block_size) + i)) ++err; MPI_Reduce_scatter(sendbuf, recvbuf, recvcounts, MPI_INT, nc_sum_op, comm); for (i = 0; i < block_size; ++i) { int x = rank * block_size + i; if (recvbuf[i] != (size * x + (size - 1) * size / 2)) ++err; } free(recvbuf); free(sendbuf); } MPI_Op_free(&left_op); MPI_Op_free(&right_op); MPI_Op_free(&nc_sum_op); MTest_Finalize(err); MPI_Finalize(); return err; } mpi-testsuite-3.2+dfsg/coll/alltoallv0.c0000644000175000017500000001002612620254305017526 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitest.h" #include #include /* This program tests MPI_Alltoallv by having processor each process send data to two neighbors only, using counts of 0 for the other processes. This idiom is sometimes used for halo exchange operations. Because there are separate send and receive types to alltoallv, there need to be tests to rearrange data on the fly. Not done yet. Currently, the test uses only MPI_INT; this is adequate for testing systems that use point-to-point operations */ int main(int argc, char **argv) { MPI_Comm comm; int *sbuf, *rbuf; int rank, size; int *sendcounts, *recvcounts, *rdispls, *sdispls; int i, *p, err; int left, right, length; MTest_Init(&argc, &argv); err = 0; while (MTestGetIntracommGeneral(&comm, 2, 1)) { if (comm == MPI_COMM_NULL) continue; MPI_Comm_size(comm, &size); MPI_Comm_rank(comm, &rank); if (size < 3) continue; /* Create and load the arguments to alltoallv */ sendcounts = (int *) malloc(size * sizeof(int)); recvcounts = (int *) malloc(size * sizeof(int)); rdispls = (int *) malloc(size * sizeof(int)); sdispls = (int *) malloc(size * sizeof(int)); if (!sendcounts || !recvcounts || !rdispls || !sdispls) { fprintf(stderr, "Could not allocate arg items!\n"); MPI_Abort(comm, 1); } /* Get the neighbors */ left = (rank - 1 + size) % size; right = (rank + 1) % size; /* Set the defaults */ for (i = 0; i < size; i++) { sendcounts[i] = 0; recvcounts[i] = 0; rdispls[i] = 0; sdispls[i] = 0; } for (length = 1; length < 66000; length = length * 2 + 1) { /* Get the buffers */ sbuf = (int *) malloc(2 * length * sizeof(int)); rbuf = (int *) malloc(2 * length * sizeof(int)); if (!sbuf || !rbuf) { fprintf(stderr, "Could not allocate buffers!\n"); MPI_Abort(comm, 1); } /* Load up the buffers */ for (i = 0; i < length; i++) { sbuf[i] = i + 100000 * rank; sbuf[i + length] = i + 100000 * rank; rbuf[i] = -i; rbuf[i + length] = -i - length; } sendcounts[left] = length; sendcounts[right] = length; recvcounts[left] = length; recvcounts[right] = length; rdispls[left] = 0; rdispls[right] = length; sdispls[left] = 0; sdispls[right] = length; MPI_Alltoallv(sbuf, sendcounts, sdispls, MPI_INT, rbuf, recvcounts, rdispls, MPI_INT, comm); /* Check rbuf */ p = rbuf; /* left */ for (i = 0; i < length; i++) { if (p[i] != i + 100000 * left) { if (err < 10) { fprintf(stderr, "[%d from %d] got %d expected %d for %dth\n", rank, left, p[i], i + 100000 * left, i); } err++; } } p = rbuf + length; /* right */ for (i = 0; i < length; i++) { if (p[i] != i + 100000 * right) { if (err < 10) { fprintf(stderr, "[%d from %d] got %d expected %d for %dth\n", rank, right, p[i], i + 100000 * right, i); } err++; } } free(rbuf); free(sbuf); } free(sdispls); free(rdispls); free(recvcounts); free(sendcounts); MTestFreeComm(&comm); } MTest_Finalize(err); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/ibarrier.c0000644000175000017500000000146212620254305017257 0ustar mbanckmbanck/* -*- Mode: c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2013 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Regression test for ticket #1785, contributed by Jed Brown. The test was * hanging indefinitely under a buggy version of ch3:sock. */ #include #include #include int main(int argc, char *argv[]) { MPI_Request barrier; int rank, i, done; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Ibarrier(MPI_COMM_WORLD, &barrier); for (i = 0, done = 0; !done; i++) { usleep(1000); /*printf("[%d] MPI_Test: %d\n",rank,i); */ MPI_Test(&barrier, &done, MPI_STATUS_IGNORE); } if (rank == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/scatter2.c0000644000175000017500000000427312620254305017212 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitest.h" #include #include /* This example sends a vector and receives individual elements, but the root process does not receive any data */ int main(int argc, char **argv) { MPI_Datatype vec; double *vecin, *vecout, ivalue; int root, i, n, stride, err = 0; int rank, size; MPI_Aint vextent; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); n = 12; stride = 10; vecin = (double *) malloc(n * stride * size * sizeof(double)); vecout = (double *) malloc(n * sizeof(double)); MPI_Type_vector(n, 1, stride, MPI_DOUBLE, &vec); MPI_Type_commit(&vec); MPI_Type_extent(vec, &vextent); if (vextent != ((n - 1) * (MPI_Aint) stride + 1) * sizeof(double)) { err++; printf("Vector extent is %ld, should be %ld\n", (long) vextent, (long) (((n - 1) * stride + 1) * sizeof(double))); } /* Note that the exted of type vector is from the first to the * last element, not n*stride. * E.g., with n=1, the extent is a single double */ for (i = 0; i < n * stride * size; i++) vecin[i] = (double) i; for (root = 0; root < size; root++) { for (i = 0; i < n; i++) vecout[i] = -1.0; if (rank == root) { MPI_Scatter(vecin, 1, vec, MPI_IN_PLACE, -1, MPI_DATATYPE_NULL, root, MPI_COMM_WORLD); } else { MPI_Scatter(NULL, -1, MPI_DATATYPE_NULL, vecout, n, MPI_DOUBLE, root, MPI_COMM_WORLD); ivalue = rank * ((n - 1) * stride + 1); for (i = 0; i < n; i++) { if (vecout[i] != ivalue) { printf("[%d] Expected %f but found %f for vecout[%d]\n", rank, ivalue, vecout[i], i); err++; } ivalue += stride; } } } free(vecin); free(vecout); MTest_Finalize(err); MPI_Type_free(&vec); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/allgatherv2.c0000644000175000017500000000364112620254305017674 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitest.h" #include #include /* Gather data from a vector to contiguous. Use IN_PLACE. This is the trivial version based on the allgather test (allgatherv but with constant data sizes) */ int main(int argc, char **argv) { double *vecout; MPI_Comm comm; int count, minsize = 2; int i, errs = 0; int rank, size; int *displs, *recvcounts; MTest_Init(&argc, &argv); while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; /* Determine the sender and receiver */ MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); displs = (int *) malloc(size * sizeof(int)); recvcounts = (int *) malloc(size * sizeof(int)); for (count = 1; count < 9000; count = count * 2) { vecout = (double *) malloc(size * count * sizeof(double)); for (i = 0; i < count; i++) { vecout[rank * count + i] = rank * count + i; } for (i = 0; i < size; i++) { recvcounts[i] = count; displs[i] = i * count; } MPI_Allgatherv(MPI_IN_PLACE, -1, MPI_DATATYPE_NULL, vecout, recvcounts, displs, MPI_DOUBLE, comm); for (i = 0; i < count * size; i++) { if (vecout[i] != i) { errs++; if (errs < 10) { fprintf(stderr, "vecout[%d]=%d\n", i, (int) vecout[i]); } } } free(vecout); } free(displs); free(recvcounts); MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/gather2.c0000644000175000017500000000524112620254305017013 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitest.h" #include #include /* Gather data from a vector to contiguous. Use IN_PLACE */ int main(int argc, char **argv) { MPI_Datatype vec; double *vecin, *vecout; MPI_Comm comm; int count, minsize = 2; int root, i, n, stride, errs = 0; int rank, size; MTest_Init(&argc, &argv); while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; /* Determine the sender and receiver */ MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); for (root = 0; root < size; root++) { for (count = 1; count < 65000; count = count * 2) { n = 12; stride = 10; vecin = (double *) malloc(n * stride * size * sizeof(double)); vecout = (double *) malloc(size * n * sizeof(double)); MPI_Type_vector(n, 1, stride, MPI_DOUBLE, &vec); MPI_Type_commit(&vec); for (i = 0; i < n * stride; i++) vecin[i] = -2; for (i = 0; i < n; i++) vecin[i * stride] = rank * n + i; if (rank == root) { for (i = 0; i < n; i++) { vecout[rank * n + i] = rank * n + i; } MPI_Gather(MPI_IN_PLACE, -1, MPI_DATATYPE_NULL, vecout, n, MPI_DOUBLE, root, comm); } else { MPI_Gather(vecin, 1, vec, NULL, -1, MPI_DATATYPE_NULL, root, comm); } if (rank == root) { for (i = 0; i < n * size; i++) { if (vecout[i] != i) { errs++; if (errs < 10) { fprintf(stderr, "vecout[%d]=%d\n", i, (int) vecout[i]); } } } } MPI_Type_free(&vec); free(vecin); free(vecout); } } MTestFreeComm(&comm); } /* do a zero length gather */ MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (rank == 0) { MPI_Gather(MPI_IN_PLACE, -1, MPI_DATATYPE_NULL, NULL, 0, MPI_BYTE, 0, MPI_COMM_WORLD); } else { MPI_Gather(NULL, 0, MPI_BYTE, NULL, 0, MPI_BYTE, 0, MPI_COMM_WORLD); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/alltoallw1.c0000644000175000017500000002024012620254305017527 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * Changes to this example * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * This example is taken from MPI-The complete reference, Vol 1, * pages 222-224. * * Lines after the "--CUT HERE--" were added to make this into a complete * test program. */ /* Specify the maximum number of errors to report. */ #define MAX_ERRORS 10 #include "mpi.h" #include "mpitest.h" #include #include #define MAX_SIZE 64 MPI_Datatype transpose_type(int M, int m, int n, MPI_Datatype type); MPI_Datatype submatrix_type(int N, int m, int n, MPI_Datatype type); void Transpose(float *localA, float *localB, int M, int N, MPI_Comm comm); void Transpose(float *localA, float *localB, int M, int N, MPI_Comm comm) /* transpose MxN matrix A that is block distributed (1-D) on processes of comm onto block distributed matrix B */ { int i, j, extent, myrank, p, n[2], m[2]; int lasti, lastj; int *sendcounts, *recvcounts; int *sdispls, *rdispls; MPI_Datatype xtype[2][2], stype[2][2], *sendtypes, *recvtypes; MTestPrintfMsg(2, "M = %d, N = %d\n", M, N); /* compute parameters */ MPI_Comm_size(comm, &p); MPI_Comm_rank(comm, &myrank); extent = sizeof(float); /* allocate arrays */ sendcounts = (int *) malloc(p * sizeof(int)); recvcounts = (int *) malloc(p * sizeof(int)); sdispls = (int *) malloc(p * sizeof(int)); rdispls = (int *) malloc(p * sizeof(int)); sendtypes = (MPI_Datatype *) malloc(p * sizeof(MPI_Datatype)); recvtypes = (MPI_Datatype *) malloc(p * sizeof(MPI_Datatype)); /* compute block sizes */ m[0] = M / p; m[1] = M - (p - 1) * (M / p); n[0] = N / p; n[1] = N - (p - 1) * (N / p); /* compute types */ for (i = 0; i <= 1; i++) for (j = 0; j <= 1; j++) { xtype[i][j] = transpose_type(N, m[i], n[j], MPI_FLOAT); stype[i][j] = submatrix_type(M, m[i], n[j], MPI_FLOAT); } /* prepare collective operation arguments */ lasti = myrank == p - 1; for (j = 0; j < p; j++) { lastj = j == p - 1; sendcounts[j] = 1; sdispls[j] = j * n[0] * extent; sendtypes[j] = xtype[lasti][lastj]; recvcounts[j] = 1; rdispls[j] = j * m[0] * extent; recvtypes[j] = stype[lastj][lasti]; } /* communicate */ MTestPrintfMsg(2, "Begin Alltoallw...\n"); /* -- Note that the book incorrectly uses &localA and &localB * as arguments to MPI_Alltoallw */ MPI_Alltoallw(localA, sendcounts, sdispls, sendtypes, localB, recvcounts, rdispls, recvtypes, comm); MTestPrintfMsg(2, "Done with Alltoallw\n"); /* Free buffers */ free(sendcounts); free(recvcounts); free(sdispls); free(rdispls); free(sendtypes); free(recvtypes); /* Free datatypes */ for (i = 0; i <= 1; i++) for (j = 0; j <= 1; j++) { MPI_Type_free(&xtype[i][j]); MPI_Type_free(&stype[i][j]); } } /* Define an n x m submatrix in a n x M local matrix (this is the destination in the transpose matrix */ MPI_Datatype submatrix_type(int M, int m, int n, MPI_Datatype type) /* computes a datatype for an mxn submatrix within an MxN matrix with entries of type type */ { /* MPI_Datatype subrow; */ MPI_Datatype submatrix; /* The book, MPI: The Complete Reference, has the wrong type constructor * here. Since the stride in the vector type is relative to the input * type, the stride in the book's code is n times as long as is intended. * Since n may not exactly divide N, it is better to simply use the * blocklength argument in Type_vector */ /* * MPI_Type_contiguous(n, type, &subrow); * MPI_Type_vector(m, 1, N, subrow, &submatrix); */ MPI_Type_vector(n, m, M, type, &submatrix); MPI_Type_commit(&submatrix); /* Add a consistency test: the size of submatrix should be * n * m * sizeof(type) and the extent should be ((n-1)*M+m) * sizeof(type) */ { int tsize; MPI_Aint textent, lb; MPI_Type_size(type, &tsize); MPI_Type_get_extent(submatrix, &lb, &textent); if (textent != tsize * (M * (n - 1) + m)) { fprintf(stderr, "Submatrix extent is %ld, expected %ld (%d,%d,%d)\n", (long) textent, (long) (tsize * (M * (n - 1) + m)), M, n, m); } } return (submatrix); } /* Extract an m x n submatrix within an m x N matrix and transpose it. Assume storage by rows; the defined datatype accesses by columns */ MPI_Datatype transpose_type(int N, int m, int n, MPI_Datatype type) /* computes a datatype for the transpose of an mxn matrix with entries of type type */ { MPI_Datatype subrow, subrow1, submatrix; MPI_Aint lb, extent; MPI_Type_vector(m, 1, N, type, &subrow); MPI_Type_get_extent(type, &lb, &extent); MPI_Type_create_resized(subrow, 0, extent, &subrow1); MPI_Type_contiguous(n, subrow1, &submatrix); MPI_Type_commit(&submatrix); MPI_Type_free(&subrow); MPI_Type_free(&subrow1); /* Add a consistency test: the size of submatrix should be * n * m * sizeof(type) and the extent should be ((m-1)*N+n) * sizeof(type) */ { int tsize; MPI_Aint textent, llb; MPI_Type_size(type, &tsize); MPI_Type_get_true_extent(submatrix, &llb, &textent); if (textent != tsize * (N * (m - 1) + n)) { fprintf(stderr, "Transpose Submatrix extent is %ld, expected %ld (%d,%d,%d)\n", (long) textent, (long) (tsize * (N * (m - 1) + n)), N, n, m); } } return (submatrix); } /* -- CUT HERE -- */ int main(int argc, char *argv[]) { int gM, gN, lm, lmlast, ln, lnlast, i, j, errs = 0; int size, rank; float *localA, *localB; MPI_Comm comm; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_Comm_size(comm, &size); MPI_Comm_rank(comm, &rank); gM = 20; gN = 30; /* Each block is lm x ln in size, except for the last process, * which has lmlast x lnlast */ lm = gM / size; lmlast = gM - (size - 1) * lm; ln = gN / size; lnlast = gN - (size - 1) * ln; /* Create the local matrices. * Initialize the input matrix so that the entries are * consequtive integers, by row, starting at 0. */ if (rank == size - 1) { localA = (float *) malloc(gN * lmlast * sizeof(float)); localB = (float *) malloc(gM * lnlast * sizeof(float)); for (i = 0; i < lmlast; i++) { for (j = 0; j < gN; j++) { localA[i * gN + j] = (float) (i * gN + j + rank * gN * lm); } } } else { localA = (float *) malloc(gN * lm * sizeof(float)); localB = (float *) malloc(gM * ln * sizeof(float)); for (i = 0; i < lm; i++) { for (j = 0; j < gN; j++) { localA[i * gN + j] = (float) (i * gN + j + rank * gN * lm); } } } MTestPrintfMsg(2, "Allocated local arrays\n"); /* Transpose */ Transpose(localA, localB, gM, gN, comm); /* check the transposed matrix * In the global matrix, the transpose has consequtive integers, * organized by columns. */ if (rank == size - 1) { for (i = 0; i < lnlast; i++) { for (j = 0; j < gM; j++) { int expected = i + gN * j + rank * ln; if ((int) localB[i * gM + j] != expected) { if (errs < MAX_ERRORS) printf("Found %d but expected %d\n", (int) localB[i * gM + j], expected); errs++; } } } } else { for (i = 0; i < ln; i++) { for (j = 0; j < gM; j++) { int expected = i + gN * j + rank * ln; if ((int) localB[i * gM + j] != expected) { if (errs < MAX_ERRORS) printf("Found %d but expected %d\n", (int) localB[i * gM + j], expected); errs++; } } } } /* Free storage */ free(localA); free(localB); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/allred.c0000644000175000017500000005012112620254305016717 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Warning - this test will fail for MPI_PROD & maybe MPI_SUM * if more than 10 MPI processes are used. Loss of precision * will occur as the number of processors is increased. */ #include "mpi.h" #include "mpitest.h" #include #include #include #ifdef HAVE_STDINT_H #include #endif int count, size, rank; int cerrcnt; struct int_test { int a; int b; }; struct long_test { long a; int b; }; struct short_test { short a; int b; }; struct float_test { float a; int b; }; struct double_test { double a; int b; }; #define mpi_op2str(op) \ ((op == MPI_SUM) ? "MPI_SUM" : \ (op == MPI_PROD) ? "MPI_PROD" : \ (op == MPI_MAX) ? "MPI_MAX" : \ (op == MPI_MIN) ? "MPI_MIN" : \ (op == MPI_LOR) ? "MPI_LOR" : \ (op == MPI_LXOR) ? "MPI_LXOR" : \ (op == MPI_LAND) ? "MPI_LAND" : \ (op == MPI_BOR) ? "MPI_BOR" : \ (op == MPI_BAND) ? "MPI_BAND" : \ (op == MPI_BXOR) ? "MPI_BXOR" : \ (op == MPI_MAXLOC) ? "MPI_MAXLOC" : \ (op == MPI_MINLOC) ? "MPI_MINLOC" : \ "MPI_NO_OP") /* calloc to avoid spurious valgrind warnings when "type" has padding bytes */ #define DECL_MALLOC_IN_OUT_SOL(type) \ type *in, *out, *sol; \ in = (type *) calloc(count, sizeof(type)); \ out = (type *) calloc(count, sizeof(type)); \ sol = (type *) calloc(count, sizeof(type)); #define SET_INDEX_CONST(arr, val) \ { \ int i; \ for (i = 0; i < count; i++) \ arr[i] = val; \ } #define SET_INDEX_SUM(arr, val) \ { \ int i; \ for (i = 0; i < count; i++) \ arr[i] = i + val; \ } #define SET_INDEX_FACTOR(arr, val) \ { \ int i; \ for (i = 0; i < count; i++) \ arr[i] = i * (val); \ } #define SET_INDEX_POWER(arr, val) \ { \ int i, j; \ for (i = 0; i < count; i++) { \ (arr)[i] = 1; \ for (j = 0; j < (val); j++) \ arr[i] *= i; \ } \ } #define ERROR_CHECK_AND_FREE(lerrcnt, mpi_type, mpi_op) \ do { \ char name[MPI_MAX_OBJECT_NAME] = {0}; \ int len = 0; \ if (lerrcnt) { \ MPI_Type_get_name(mpi_type, name, &len); \ fprintf(stderr, "(%d) Error for type %s and op %s\n", \ rank, name, mpi_op2str(mpi_op)); \ } \ free(in); free(out); free(sol); \ } while (0) /* The logic on the error check on MPI_Allreduce assumes that all MPI_Allreduce routines return a failure if any do - this is sufficient for MPI implementations that reject some of the valid op/datatype pairs (and motivated this addition, as some versions of the IBM MPI failed in just this way). */ #define ALLREDUCE_AND_FREE(mpi_type, mpi_op, in, out, sol) \ { \ int i, rc, lerrcnt = 0; \ rc = MPI_Allreduce(in, out, count, mpi_type, mpi_op, MPI_COMM_WORLD); \ if (rc) { lerrcnt++; cerrcnt++; MTestPrintError(rc); } \ else { \ for (i = 0; i < count; i++) { \ if (out[i] != sol[i]) { \ cerrcnt++; \ lerrcnt++; \ } \ } \ } \ ERROR_CHECK_AND_FREE(lerrcnt, mpi_type, mpi_op); \ } #define STRUCT_ALLREDUCE_AND_FREE(mpi_type, mpi_op, in, out, sol) \ { \ int i, rc, lerrcnt = 0; \ rc = MPI_Allreduce(in, out, count, mpi_type, mpi_op, MPI_COMM_WORLD); \ if (rc) { lerrcnt++; cerrcnt++; MTestPrintError(rc); } \ else { \ for (i = 0; i < count; i++) { \ if ((out[i].a != sol[i].a) || (out[i].b != sol[i].b)) { \ cerrcnt++; \ lerrcnt++; \ } \ } \ } \ ERROR_CHECK_AND_FREE(lerrcnt, mpi_type, mpi_op); \ } #define SET_INDEX_STRUCT_CONST(arr, val, el) \ { \ int i; \ for (i = 0; i < count; i++) \ arr[i].el = val; \ } #define SET_INDEX_STRUCT_SUM(arr, val, el) \ { \ int i; \ for (i = 0; i < count; i++) \ arr[i].el = i + (val); \ } #define sum_test1(type, mpi_type) \ { \ DECL_MALLOC_IN_OUT_SOL(type); \ SET_INDEX_SUM(in, 0); \ SET_INDEX_FACTOR(sol, size); \ SET_INDEX_CONST(out, 0); \ ALLREDUCE_AND_FREE(mpi_type, MPI_SUM, in, out, sol); \ } #define prod_test1(type, mpi_type) \ { \ DECL_MALLOC_IN_OUT_SOL(type); \ SET_INDEX_SUM(in, 0); \ SET_INDEX_POWER(sol, size); \ SET_INDEX_CONST(out, 0); \ ALLREDUCE_AND_FREE(mpi_type, MPI_PROD, in, out, sol); \ } #define max_test1(type, mpi_type) \ { \ DECL_MALLOC_IN_OUT_SOL(type); \ SET_INDEX_SUM(in, rank); \ SET_INDEX_SUM(sol, size - 1); \ SET_INDEX_CONST(out, 0); \ ALLREDUCE_AND_FREE(mpi_type, MPI_MAX, in, out, sol); \ } #define min_test1(type, mpi_type) \ { \ DECL_MALLOC_IN_OUT_SOL(type); \ SET_INDEX_SUM(in, rank); \ SET_INDEX_SUM(sol, 0); \ SET_INDEX_CONST(out, 0); \ ALLREDUCE_AND_FREE(mpi_type, MPI_MIN, in, out, sol); \ } #define const_test(type, mpi_type, mpi_op, val1, val2, val3) \ { \ DECL_MALLOC_IN_OUT_SOL(type); \ SET_INDEX_CONST(in, (val1)); \ SET_INDEX_CONST(sol, (val2)); \ SET_INDEX_CONST(out, (val3)); \ ALLREDUCE_AND_FREE(mpi_type, mpi_op, in, out, sol); \ } #define lor_test1(type, mpi_type) \ const_test(type, mpi_type, MPI_LOR, (rank & 0x1), (size > 1), 0) #define lor_test2(type, mpi_type) \ const_test(type, mpi_type, MPI_LOR, 0, 0, 0) #define lxor_test1(type, mpi_type) \ const_test(type, mpi_type, MPI_LXOR, (rank == 1), (size > 1), 0) #define lxor_test2(type, mpi_type) \ const_test(type, mpi_type, MPI_LXOR, 0, 0, 0) #define lxor_test3(type, mpi_type) \ const_test(type, mpi_type, MPI_LXOR, 1, (size & 0x1), 0) #define land_test1(type, mpi_type) \ const_test(type, mpi_type, MPI_LAND, (rank & 0x1), 0, 0) #define land_test2(type, mpi_type) \ const_test(type, mpi_type, MPI_LAND, 1, 1, 0) #define bor_test1(type, mpi_type) \ const_test(type, mpi_type, MPI_BOR, (rank & 0x3), ((size < 3) ? size - 1 : 0x3), 0) #define bxor_test1(type, mpi_type) \ const_test(type, mpi_type, MPI_BXOR, (rank == 1) * 0xf0, (size > 1) * 0xf0, 0) #define bxor_test2(type, mpi_type) \ const_test(type, mpi_type, MPI_BXOR, 0, 0, 0) #define bxor_test3(type, mpi_type) \ const_test(type, mpi_type, MPI_BXOR, ~0, (size &0x1) ? ~0 : 0, 0) #define band_test1(type, mpi_type) \ { \ DECL_MALLOC_IN_OUT_SOL(type); \ if (rank == size-1) { \ SET_INDEX_SUM(in, 0); \ } \ else { \ SET_INDEX_CONST(in, ~0); \ } \ SET_INDEX_SUM(sol, 0); \ SET_INDEX_CONST(out, 0); \ ALLREDUCE_AND_FREE(mpi_type, MPI_BAND, in, out, sol); \ } #define band_test2(type, mpi_type) \ { \ DECL_MALLOC_IN_OUT_SOL(type); \ if (rank == size-1) { \ SET_INDEX_SUM(in, 0); \ } \ else { \ SET_INDEX_CONST(in, 0); \ } \ SET_INDEX_CONST(sol, 0); \ SET_INDEX_CONST(out, 0); \ ALLREDUCE_AND_FREE(mpi_type, MPI_BAND, in, out, sol); \ } #define maxloc_test(type, mpi_type) \ { \ DECL_MALLOC_IN_OUT_SOL(type); \ SET_INDEX_STRUCT_SUM(in, rank, a); \ SET_INDEX_STRUCT_CONST(in, rank, b); \ SET_INDEX_STRUCT_SUM(sol, size - 1, a); \ SET_INDEX_STRUCT_CONST(sol, size - 1, b); \ SET_INDEX_STRUCT_CONST(out, 0, a); \ SET_INDEX_STRUCT_CONST(out, -1, b); \ STRUCT_ALLREDUCE_AND_FREE(mpi_type, MPI_MAXLOC, in, out, sol); \ } #define minloc_test(type, mpi_type) \ { \ DECL_MALLOC_IN_OUT_SOL(type); \ SET_INDEX_STRUCT_SUM(in, rank, a); \ SET_INDEX_STRUCT_CONST(in, rank, b); \ SET_INDEX_STRUCT_SUM(sol, 0, a); \ SET_INDEX_STRUCT_CONST(sol, 0, b); \ SET_INDEX_STRUCT_CONST(out, 0, a); \ SET_INDEX_STRUCT_CONST(out, -1, b); \ STRUCT_ALLREDUCE_AND_FREE(mpi_type, MPI_MINLOC, in, out, sol); \ } #if MTEST_HAVE_MIN_MPI_VERSION(2,2) #define test_types_set_mpi_2_2_integer(op,post) do { \ op##_test##post(int8_t, MPI_INT8_T); \ op##_test##post(int16_t, MPI_INT16_T); \ op##_test##post(int32_t, MPI_INT32_T); \ op##_test##post(int64_t, MPI_INT64_T); \ op##_test##post(uint8_t, MPI_UINT8_T); \ op##_test##post(uint16_t, MPI_UINT16_T); \ op##_test##post(uint32_t, MPI_UINT32_T); \ op##_test##post(uint64_t, MPI_UINT64_T); \ op##_test##post(MPI_Aint, MPI_AINT); \ op##_test##post(MPI_Offset, MPI_OFFSET); \ } while (0) #else #define test_types_set_mpi_2_2_integer(op,post) do { } while (0) #endif #if MTEST_HAVE_MIN_MPI_VERSION(3,0) #define test_types_set_mpi_3_0_integer(op,post) do { \ op##_test##post(MPI_Count, MPI_COUNT); \ } while (0) #else #define test_types_set_mpi_3_0_integer(op,post) do { } while (0) #endif #define test_types_set1(op, post) \ { \ op##_test##post(int, MPI_INT); \ op##_test##post(long, MPI_LONG); \ op##_test##post(short, MPI_SHORT); \ op##_test##post(unsigned short, MPI_UNSIGNED_SHORT); \ op##_test##post(unsigned, MPI_UNSIGNED); \ op##_test##post(unsigned long, MPI_UNSIGNED_LONG); \ op##_test##post(unsigned char, MPI_UNSIGNED_CHAR); \ test_types_set_mpi_2_2_integer(op,post); \ test_types_set_mpi_3_0_integer(op,post); \ } #define test_types_set2(op, post) \ { \ test_types_set1(op, post); \ op##_test##post(float, MPI_FLOAT); \ op##_test##post(double, MPI_DOUBLE); \ } #define test_types_set3(op, post) \ { \ op##_test##post(unsigned char, MPI_BYTE); \ } /* Make sure that we test complex and double complex, even if long double complex is not available */ #if defined(USE_LONG_DOUBLE_COMPLEX) #if MTEST_HAVE_MIN_MPI_VERSION(2,2) && defined(HAVE_FLOAT__COMPLEX) \ && defined(HAVE_DOUBLE__COMPLEX) \ && defined(HAVE_LONG_DOUBLE__COMPLEX) #define test_types_set4(op, post) \ do { \ op##_test##post(float _Complex, MPI_C_FLOAT_COMPLEX); \ op##_test##post(double _Complex, MPI_C_DOUBLE_COMPLEX); \ if (MPI_C_LONG_DOUBLE_COMPLEX != MPI_DATATYPE_NULL) { \ op##_test##post(long double _Complex, MPI_C_LONG_DOUBLE_COMPLEX); \ } \ } while (0) #else #define test_types_set4(op, post) do { } while (0) #endif #else #if MTEST_HAVE_MIN_MPI_VERSION(2,2) && defined(HAVE_FLOAT__COMPLEX) \ && defined(HAVE_DOUBLE__COMPLEX) #define test_types_set4(op, post) \ do { \ op##_test##post(float _Complex, MPI_C_FLOAT_COMPLEX); \ op##_test##post(double _Complex, MPI_C_DOUBLE_COMPLEX); \ } while (0) #else #define test_types_set4(op, post) do { } while (0) #endif #endif /* defined(USE_LONG_DOUBLE_COMPLEX) */ #if MTEST_HAVE_MIN_MPI_VERSION(2,2) && defined(HAVE__BOOL) #define test_types_set5(op, post) \ do { \ op##_test##post(_Bool, MPI_C_BOOL); \ } while (0) #else #define test_types_set5(op, post) do { } while (0) #endif int main(int argc, char **argv) { MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (size < 2) { fprintf(stderr, "At least 2 processes required\n"); MPI_Abort(MPI_COMM_WORLD, 1); } /* Set errors return so that we can provide better information * should a routine reject one of the operand/datatype pairs */ MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_RETURN); count = 10; /* Allow an argument to override the count. * Note that the product tests may fail if the count is very large. */ if (argc >= 2) { count = atoi(argv[1]); if (count <= 0) { fprintf(stderr, "Invalid count argument %s\n", argv[1]); MPI_Abort(MPI_COMM_WORLD, 1); } } test_types_set2(sum, 1); test_types_set2(prod, 1); test_types_set2(max, 1); test_types_set2(min, 1); test_types_set1(lor, 1); test_types_set1(lor, 2); test_types_set1(lxor, 1); test_types_set1(lxor, 2); test_types_set1(lxor, 3); test_types_set1(land, 1); test_types_set1(land, 2); test_types_set1(bor, 1); test_types_set1(band, 1); test_types_set1(band, 2); test_types_set1(bxor, 1); test_types_set1(bxor, 2); test_types_set1(bxor, 3); test_types_set3(bor, 1); test_types_set3(band, 1); test_types_set3(band, 2); test_types_set3(bxor, 1); test_types_set3(bxor, 2); test_types_set3(bxor, 3); test_types_set4(sum, 1); test_types_set4(prod, 1); test_types_set5(lor, 1); test_types_set5(lor, 2); test_types_set5(lxor, 1); test_types_set5(lxor, 2); test_types_set5(lxor, 3); test_types_set5(land, 1); test_types_set5(land, 2); maxloc_test(struct int_test, MPI_2INT); maxloc_test(struct long_test, MPI_LONG_INT); maxloc_test(struct short_test, MPI_SHORT_INT); maxloc_test(struct float_test, MPI_FLOAT_INT); maxloc_test(struct double_test, MPI_DOUBLE_INT); minloc_test(struct int_test, MPI_2INT); minloc_test(struct long_test, MPI_LONG_INT); minloc_test(struct short_test, MPI_SHORT_INT); minloc_test(struct float_test, MPI_FLOAT_INT); minloc_test(struct double_test, MPI_DOUBLE_INT); MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_ARE_FATAL); MTest_Finalize(cerrcnt); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/exscan.c0000644000175000017500000000573512620254305016750 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test MPI_Exscan"; */ int main(int argc, char *argv[]) { int errs = 0; int rank, size; int minsize = 2, count; int *sendbuf, *recvbuf, i; MPI_Comm comm; MTest_Init(&argc, &argv); /* The following illustrates the use of the routines to * run through a selection of communicators and datatypes. * Use subsets of these for tests that do not involve combinations * of communicators, datatypes, and counts of datatypes */ while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); for (count = 1; count < 65000; count = count * 2) { sendbuf = (int *) malloc(count * sizeof(int)); recvbuf = (int *) malloc(count * sizeof(int)); for (i = 0; i < count; i++) { sendbuf[i] = rank + i * size; recvbuf[i] = -1; } MPI_Exscan(sendbuf, recvbuf, count, MPI_INT, MPI_SUM, comm); /* Check the results. rank 0 has no data */ if (rank > 0) { int result; for (i = 0; i < count; i++) { result = rank * i * size + ((rank) * (rank - 1)) / 2; if (recvbuf[i] != result) { errs++; if (errs < 10) { fprintf(stderr, "Error in recvbuf[%d] = %d on %d, expected %d\n", i, recvbuf[i], rank, result); } } } } #if MTEST_HAVE_MIN_MPI_VERSION(2,2) /* now try the MPI_IN_PLACE flavor */ for (i = 0; i < count; i++) { sendbuf[i] = -1; /* unused */ recvbuf[i] = rank + i * size; } MPI_Exscan(MPI_IN_PLACE, recvbuf, count, MPI_INT, MPI_SUM, comm); /* Check the results. rank 0's data must remain unchanged */ for (i = 0; i < count; i++) { int result; if (rank == 0) result = rank + i * size; else result = rank * i * size + ((rank) * (rank - 1)) / 2; if (recvbuf[i] != result) { errs++; if (errs < 10) { fprintf(stderr, "Error in recvbuf[%d] = %d on %d, expected %d\n", i, recvbuf[i], rank, result); } } } #endif free(sendbuf); free(recvbuf); } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/iallred.c0000644000175000017500000000146712620254305017101 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include "mpi.h" #include "mpitest.h" int main(int argc, char *argv[]) { MPI_Request request; int size, rank; int one = 1, two = 2, isum, sum; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); assert(size == 2); MPI_Iallreduce(&one, &isum, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD, &request); MPI_Allreduce(&two, &sum, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD); MPI_Wait(&request, MPI_STATUS_IGNORE); assert(isum == 2); assert(sum == 4); if (rank == 0) printf(" No errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/opsum.c0000644000175000017500000002033712620254305016625 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test MPI_SUM operations on optional datatypes dupported by MPICH"; */ typedef struct { double r, i; } d_complex; #ifdef HAVE_LONG_DOUBLE typedef struct { long double r, i; } ld_complex; #endif /* * This test looks at the handling of logical and for types that are not * integers or are not required integers (e.g., long long). MPICH allows * these as well. A strict MPI test should not include this test. */ int main(int argc, char *argv[]) { int errs = 0; int rank, size; MPI_Comm comm; char cinbuf[3], coutbuf[3]; signed char scinbuf[3], scoutbuf[3]; unsigned char ucinbuf[3], ucoutbuf[3]; d_complex dinbuf[3], doutbuf[3]; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); #ifndef USE_STRICT_MPI /* char */ MTestPrintfMsg(10, "Reduce of MPI_CHAR\n"); cinbuf[0] = 1; cinbuf[1] = 0; cinbuf[2] = (rank > 0); coutbuf[0] = 0; coutbuf[1] = 1; coutbuf[2] = 1; MPI_Reduce(cinbuf, coutbuf, 3, MPI_CHAR, MPI_SUM, 0, comm); if (rank == 0) { if (size < 128 && coutbuf[0] != size) { errs++; fprintf(stderr, "char SUM(1) test failed\n"); } if (size < 128 && coutbuf[1] != 0) { errs++; fprintf(stderr, "char SUM(0) test failed\n"); } if (size < 128 && coutbuf[2] != size - 1) { errs++; fprintf(stderr, "char SUM(>) test failed\n"); } } #endif /* USE_MPI_STRICT */ /* signed char */ MTestPrintfMsg(10, "Reduce of MPI_SIGNED_CHAR\n"); scinbuf[0] = 1; scinbuf[1] = 0; scinbuf[2] = (rank > 0); scoutbuf[0] = 0; scoutbuf[1] = 1; scoutbuf[2] = 1; MPI_Reduce(scinbuf, scoutbuf, 3, MPI_SIGNED_CHAR, MPI_SUM, 0, comm); if (rank == 0) { if (size < 128 && scoutbuf[0] != size) { errs++; fprintf(stderr, "signed char SUM(1) test failed\n"); } if (size < 128 && scoutbuf[1] != 0) { errs++; fprintf(stderr, "signed char SUM(0) test failed\n"); } if (size < 128 && scoutbuf[2] != size - 1) { errs++; fprintf(stderr, "signed char SUM(>) test failed\n"); } } /* unsigned char */ MTestPrintfMsg(10, "Reduce of MPI_UNSIGNED_CHAR\n"); ucinbuf[0] = 1; ucinbuf[1] = 0; ucinbuf[2] = (rank > 0); ucoutbuf[0] = 0; ucoutbuf[1] = 1; ucoutbuf[2] = 1; MPI_Reduce(ucinbuf, ucoutbuf, 3, MPI_UNSIGNED_CHAR, MPI_SUM, 0, comm); if (rank == 0) { if (size < 128 && ucoutbuf[0] != size) { errs++; fprintf(stderr, "unsigned char SUM(1) test failed\n"); } if (size < 128 && ucoutbuf[1]) { errs++; fprintf(stderr, "unsigned char SUM(0) test failed\n"); } if (size < 128 && ucoutbuf[2] != size - 1) { errs++; fprintf(stderr, "unsigned char SUM(>) test failed\n"); } } #ifndef USE_STRICT_MPI /* For some reason, complex is not allowed for sum and prod */ if (MPI_DOUBLE_COMPLEX != MPI_DATATYPE_NULL) { int dc; #ifdef HAVE_LONG_DOUBLE ld_complex ldinbuf[3], ldoutbuf[3]; #endif /* Must determine which C type matches this Fortran type */ MPI_Type_size(MPI_DOUBLE_COMPLEX, &dc); if (dc == sizeof(d_complex)) { MTestPrintfMsg(10, "Reduce of MPI_DOUBLE_COMPLEX\n"); /* double complex; may be null if we do not have Fortran support */ dinbuf[0].r = 1; dinbuf[1].r = 0; dinbuf[2].r = (rank > 0); dinbuf[0].i = -1; dinbuf[1].i = 0; dinbuf[2].i = -(rank > 0); doutbuf[0].r = 0; doutbuf[1].r = 1; doutbuf[2].r = 1; doutbuf[0].i = 0; doutbuf[1].i = 1; doutbuf[2].i = 1; MPI_Reduce(dinbuf, doutbuf, 3, MPI_DOUBLE_COMPLEX, MPI_SUM, 0, comm); if (rank == 0) { if (doutbuf[0].r != size || doutbuf[0].i != -size) { errs++; fprintf(stderr, "double complex SUM(1) test failed\n"); } if (doutbuf[1].r != 0 || doutbuf[1].i != 0) { errs++; fprintf(stderr, "double complex SUM(0) test failed\n"); } if (doutbuf[2].r != size - 1 || doutbuf[2].i != 1 - size) { errs++; fprintf(stderr, "double complex SUM(>) test failed\n"); } } } #ifdef HAVE_LONG_DOUBLE else if (dc == sizeof(ld_complex)) { MTestPrintfMsg(10, "Reduce of MPI_DOUBLE_COMPLEX\n"); /* double complex; may be null if we do not have Fortran support */ ldinbuf[0].r = 1; ldinbuf[1].r = 0; ldinbuf[2].r = (rank > 0); ldinbuf[0].i = -1; ldinbuf[1].i = 0; ldinbuf[2].i = -(rank > 0); ldoutbuf[0].r = 0; ldoutbuf[1].r = 1; ldoutbuf[2].r = 1; ldoutbuf[0].i = 0; ldoutbuf[1].i = 1; ldoutbuf[2].i = 1; MPI_Reduce(ldinbuf, ldoutbuf, 3, MPI_DOUBLE_COMPLEX, MPI_SUM, 0, comm); if (rank == 0) { if (ldoutbuf[0].r != size || ldoutbuf[0].i != -size) { errs++; fprintf(stderr, "double complex SUM(1) test failed\n"); } if (ldoutbuf[1].r != 0 || ldoutbuf[1].i != 0) { errs++; fprintf(stderr, "double complex SUM(0) test failed\n"); } if (ldoutbuf[2].r != size - 1 || ldoutbuf[2].i != 1 - size) { errs++; fprintf(stderr, "double complex SUM(>) test failed\n"); } } } #endif /* Implicitly ignore if there is no matching C type */ } #endif /* USE_STRICT_MPI */ #ifdef HAVE_LONG_DOUBLE { long double ldinbuf[3], ldoutbuf[3]; /* long double */ ldinbuf[0] = 1; ldinbuf[1] = 0; ldinbuf[2] = (rank > 0); ldoutbuf[0] = 0; ldoutbuf[1] = 1; ldoutbuf[2] = 1; if (MPI_LONG_DOUBLE != MPI_DATATYPE_NULL) { MTestPrintfMsg(10, "Reduce of MPI_LONG_DOUBLE\n"); MPI_Reduce(ldinbuf, ldoutbuf, 3, MPI_LONG_DOUBLE, MPI_SUM, 0, comm); if (rank == 0) { if (ldoutbuf[0] != size) { errs++; fprintf(stderr, "long double SUM(1) test failed\n"); } if (ldoutbuf[1] != 0.0) { errs++; fprintf(stderr, "long double SUM(0) test failed\n"); } if (ldoutbuf[2] != size - 1) { errs++; fprintf(stderr, "long double SUM(>) test failed\n"); } } } } #endif #ifdef HAVE_LONG_LONG { long long llinbuf[3], lloutbuf[3]; /* long long */ llinbuf[0] = 1; llinbuf[1] = 0; llinbuf[2] = (rank > 0); lloutbuf[0] = 0; lloutbuf[1] = 1; lloutbuf[2] = 1; if (MPI_LONG_LONG != MPI_DATATYPE_NULL) { MTestPrintfMsg(10, "Reduce of MPI_LONG_LONG\n"); MPI_Reduce(llinbuf, lloutbuf, 3, MPI_LONG_LONG, MPI_SUM, 0, comm); if (rank == 0) { if (lloutbuf[0] != size) { errs++; fprintf(stderr, "long long SUM(1) test failed\n"); } if (lloutbuf[1] != 0) { errs++; fprintf(stderr, "long long SUM(0) test failed\n"); } if (lloutbuf[2] != size - 1) { errs++; fprintf(stderr, "long long SUM(>) test failed\n"); } } } } #endif MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/opland.c0000644000175000017500000001754612620254305016747 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test MPI_LAND operations on optional datatypes dupported by MPICH"; */ /* * This test looks at the handling of logical and for types that are not * integers or are not required integers (e.g., long long). MPICH allows * these as well. A strict MPI test should not include this test. */ int main(int argc, char *argv[]) { int errs = 0; int rc; int rank, size; MPI_Comm comm; char cinbuf[3], coutbuf[3]; signed char scinbuf[3], scoutbuf[3]; unsigned char ucinbuf[3], ucoutbuf[3]; float finbuf[3], foutbuf[3]; double dinbuf[3], doutbuf[3]; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; /* Set errors return so that we can provide better information * should a routine reject one of the operand/datatype pairs */ MPI_Errhandler_set(comm, MPI_ERRORS_RETURN); MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); #ifndef USE_STRICT_MPI /* char */ MTestPrintfMsg(10, "Reduce of MPI_CHAR\n"); cinbuf[0] = 1; cinbuf[1] = 0; cinbuf[2] = (rank > 0); coutbuf[0] = 0; coutbuf[1] = 1; coutbuf[2] = 1; rc = MPI_Reduce(cinbuf, coutbuf, 3, MPI_CHAR, MPI_LAND, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_LAND and MPI_CHAR", rc); errs++; } else { if (rank == 0) { if (!coutbuf[0]) { errs++; fprintf(stderr, "char AND(1) test failed\n"); } if (coutbuf[1]) { errs++; fprintf(stderr, "char AND(0) test failed\n"); } if (coutbuf[2] && size > 1) { errs++; fprintf(stderr, "char AND(>) test failed\n"); } } } #endif /* USE_STRICT_MPI */ /* signed char */ MTestPrintfMsg(10, "Reduce of MPI_SIGNED_CHAR\n"); scinbuf[0] = 1; scinbuf[1] = 0; scinbuf[2] = (rank > 0); scoutbuf[0] = 0; scoutbuf[1] = 1; scoutbuf[2] = 1; rc = MPI_Reduce(scinbuf, scoutbuf, 3, MPI_SIGNED_CHAR, MPI_LAND, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_LAND and MPI_SIGNED_CHAR", rc); errs++; } else { if (rank == 0) { if (!scoutbuf[0]) { errs++; fprintf(stderr, "signed char AND(1) test failed\n"); } if (scoutbuf[1]) { errs++; fprintf(stderr, "signed char AND(0) test failed\n"); } if (scoutbuf[2] && size > 1) { errs++; fprintf(stderr, "signed char AND(>) test failed\n"); } } } /* unsigned char */ MTestPrintfMsg(10, "Reduce of MPI_UNSIGNED_CHAR\n"); ucinbuf[0] = 1; ucinbuf[1] = 0; ucinbuf[2] = (rank > 0); ucoutbuf[0] = 0; ucoutbuf[1] = 1; ucoutbuf[2] = 1; rc = MPI_Reduce(ucinbuf, ucoutbuf, 3, MPI_UNSIGNED_CHAR, MPI_LAND, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_LAND and MPI_UNSIGNED_CHAR", rc); errs++; } else { if (rank == 0) { if (!ucoutbuf[0]) { errs++; fprintf(stderr, "unsigned char AND(1) test failed\n"); } if (ucoutbuf[1]) { errs++; fprintf(stderr, "unsigned char AND(0) test failed\n"); } if (ucoutbuf[2] && size > 1) { errs++; fprintf(stderr, "unsigned char AND(>) test failed\n"); } } } #ifndef USE_STRICT_MPI /* float */ MTestPrintfMsg(10, "Reduce of MPI_FLOAT\n"); finbuf[0] = 1; finbuf[1] = 0; finbuf[2] = (rank > 0); foutbuf[0] = 0; foutbuf[1] = 1; foutbuf[2] = 1; rc = MPI_Reduce(finbuf, foutbuf, 3, MPI_FLOAT, MPI_LAND, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_LAND and MPI_FLOAT", rc); errs++; } else { if (rank == 0) { if (!foutbuf[0]) { errs++; fprintf(stderr, "float AND(1) test failed\n"); } if (foutbuf[1]) { errs++; fprintf(stderr, "float AND(0) test failed\n"); } if (foutbuf[2] && size > 1) { errs++; fprintf(stderr, "float AND(>) test failed\n"); } } } MTestPrintfMsg(10, "Reduce of MPI_DOUBLE\n"); /* double */ dinbuf[0] = 1; dinbuf[1] = 0; dinbuf[2] = (rank > 0); doutbuf[0] = 0; doutbuf[1] = 1; doutbuf[2] = 1; rc = MPI_Reduce(dinbuf, doutbuf, 3, MPI_DOUBLE, MPI_LAND, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_LAND and MPI_DOUBLE", rc); errs++; } else { if (rank == 0) { if (!doutbuf[0]) { errs++; fprintf(stderr, "double AND(1) test failed\n"); } if (doutbuf[1]) { errs++; fprintf(stderr, "double AND(0) test failed\n"); } if (doutbuf[2] && size > 1) { errs++; fprintf(stderr, "double AND(>) test failed\n"); } } } #ifdef HAVE_LONG_DOUBLE { long double ldinbuf[3], ldoutbuf[3]; /* long double */ ldinbuf[0] = 1; ldinbuf[1] = 0; ldinbuf[2] = (rank > 0); ldoutbuf[0] = 0; ldoutbuf[1] = 1; ldoutbuf[2] = 1; if (MPI_LONG_DOUBLE != MPI_DATATYPE_NULL) { MTestPrintfMsg(10, "Reduce of MPI_LONG_DOUBLE\n"); rc = MPI_Reduce(ldinbuf, ldoutbuf, 3, MPI_LONG_DOUBLE, MPI_LAND, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_LAND and MPI_LONG_DOUBLE", rc); errs++; } else { if (rank == 0) { if (!ldoutbuf[0]) { errs++; fprintf(stderr, "long double AND(1) test failed\n"); } if (ldoutbuf[1]) { errs++; fprintf(stderr, "long double AND(0) test failed\n"); } if (ldoutbuf[2] && size > 1) { errs++; fprintf(stderr, "long double AND(>) test failed\n"); } } } } } #endif /* HAVE_LONG_DOUBLE */ #endif /* USE_STRICT_MPI */ #ifdef HAVE_LONG_LONG { long long llinbuf[3], lloutbuf[3]; /* long long */ llinbuf[0] = 1; llinbuf[1] = 0; llinbuf[2] = (rank > 0); lloutbuf[0] = 0; lloutbuf[1] = 1; lloutbuf[2] = 1; if (MPI_LONG_LONG != MPI_DATATYPE_NULL) { MTestPrintfMsg(10, "Reduce of MPI_LONG_LONG\n"); rc = MPI_Reduce(llinbuf, lloutbuf, 3, MPI_LONG_LONG, MPI_LAND, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_LAND and MPI_LONG_LONG", rc); errs++; } else { if (rank == 0) { if (!lloutbuf[0]) { errs++; fprintf(stderr, "long long AND(1) test failed\n"); } if (lloutbuf[1]) { errs++; fprintf(stderr, "long long AND(0) test failed\n"); } if (lloutbuf[2] && size > 1) { errs++; fprintf(stderr, "long long AND(>) test failed\n"); } } } } } #endif MPI_Errhandler_set(comm, MPI_ERRORS_ARE_FATAL); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/allred6.c0000644000175000017500000000412012620254305017003 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test MPI_Allreduce with apparent non-commutative operators"; */ /* While the operator is in fact commutative, this forces the MPI code to run the code that is used for non-commutative operators, and for various message lengths. Other tests check truly non-commutative operators */ void mysum(void *cinPtr, void *coutPtr, int *count, MPI_Datatype * dtype); void mysum(void *cinPtr, void *coutPtr, int *count, MPI_Datatype * dtype) { const int *cin = (const int *) cinPtr; int *cout = (int *) coutPtr; int i, n = *count; for (i = 0; i < n; i++) cout[i] += cin[i]; } int main(int argc, char *argv[]) { int errs = 0; int rank, size; int minsize = 2, count; MPI_Comm comm; MPI_Op op; int *buf, i; MTest_Init(&argc, &argv); MPI_Op_create(mysum, 0, &op); while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; MPI_Comm_size(comm, &size); MPI_Comm_rank(comm, &rank); for (count = 1; count < 65000; count = count * 2) { /* Contiguous data */ buf = (int *) malloc(count * sizeof(int)); for (i = 0; i < count; i++) buf[i] = rank + i; MPI_Allreduce(MPI_IN_PLACE, buf, count, MPI_INT, op, comm); /* Check the results */ for (i = 0; i < count; i++) { int result = i * size + (size * (size - 1)) / 2; if (buf[i] != result) { errs++; if (errs < 10) { fprintf(stderr, "buf[%d] = %d expected %d\n", i, buf[i], result); } } } free(buf); } MTestFreeComm(&comm); } MPI_Op_free(&op); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/coll9.c0000644000175000017500000000215312620254305016500 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" void addem(int *, int *, int *, MPI_Datatype *); void addem(int *invec, int *inoutvec, int *len, MPI_Datatype * dtype) { int i; for (i = 0; i < *len; i++) inoutvec[i] += invec[i]; } int main(int argc, char **argv) { int rank, size, i; int data; int errors = 0; int result = -100; int correct_result; MPI_Op op; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); data = rank; MPI_Op_create((MPI_User_function *) addem, 1, &op); MPI_Reduce(&data, &result, 1, MPI_INT, op, 0, MPI_COMM_WORLD); MPI_Bcast(&result, 1, MPI_INT, 0, MPI_COMM_WORLD); MPI_Op_free(&op); correct_result = 0; for (i = 0; i < size; i++) correct_result += i; if (result != correct_result) errors++; MTest_Finalize(errors); MPI_Finalize(); return MTestReturnValue(errors); } mpi-testsuite-3.2+dfsg/coll/icscatterv.c0000644000175000017500000000677612620254305017644 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include "mpicolltest.h" /* static char MTEST_Descrip[] = "Simple intercomm scatterv test"; */ int main(int argc, char *argv[]) { int errs = 0, err; int *buf = 0; int *sendcounts; int *senddispls; int leftGroup, i, count, rank, rsize, size; MPI_Comm comm; MPI_Datatype datatype; MTest_Init(&argc, &argv); datatype = MPI_INT; /* Get an intercommunicator */ while (MTestGetIntercomm(&comm, &leftGroup, 4)) { if (comm == MPI_COMM_NULL) continue; MPI_Comm_remote_size(comm, &rsize); MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(comm, MPI_ERRORS_RETURN); for (count = 1; count < 65000; count = 2 * count) { buf = 0; sendcounts = (int *) malloc(rsize * sizeof(int)); senddispls = (int *) malloc(rsize * sizeof(int)); for (i = 0; i < rsize; i++) { sendcounts[i] = count; senddispls[i] = count * i; } if (leftGroup) { buf = (int *) malloc(count * rsize * sizeof(int)); if (rank == 0) { for (i = 0; i < count * rsize; i++) buf[i] = i; } else { for (i = 0; i < count * rsize; i++) buf[i] = -1; } err = MTest_Scatterv(buf, sendcounts, senddispls, datatype, NULL, 0, datatype, (rank == 0) ? MPI_ROOT : MPI_PROC_NULL, comm); if (err) { errs++; MTestPrintError(err); } /* Test that no other process in this group received the * scatter */ if (rank != 0) { for (i = 0; i < count * rsize; i++) { if (buf[i] != -1) { if (errs < 10) { fprintf(stderr, "Received data on root group!\n"); } errs++; } } } } else { buf = (int *) malloc(count * sizeof(int)); /* In the right group */ for (i = 0; i < count; i++) buf[i] = -1; err = MTest_Scatterv(NULL, 0, 0, datatype, buf, count, datatype, 0, comm); if (err) { errs++; MTestPrintError(err); } /* Check that we have received the correct data */ for (i = 0; i < count; i++) { if (buf[i] != i + rank * count) { if (errs < 10) fprintf(stderr, "buf[%d] = %d on %d\n", i, buf[i], rank); errs++; } } } free(sendcounts); free(senddispls); free(buf); } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/alltoallw2.c0000644000175000017500000001150212620254305017531 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitest.h" #include #include #include /* This program tests MPI_Alltoallw by having processor i send different amounts of data to each processor. This is just the MPI_Alltoallv test, but with displacements in bytes rather than units of the datatype. Because there are separate send and receive types to alltoallw, there need to be tests to rearrange data on the fly. Not done yet. The first test sends i items to processor i from all processors. Currently, the test uses only MPI_INT; this is adequate for testing systems that use point-to-point operations */ int main(int argc, char **argv) { MPI_Comm comm; int *sbuf, *rbuf; int rank, size; int *sendcounts, *recvcounts, *rdispls, *sdispls; int i, j, *p, err; MPI_Datatype *sendtypes, *recvtypes; MTest_Init(&argc, &argv); err = 0; while (MTestGetIntracommGeneral(&comm, 2, 1)) { if (comm == MPI_COMM_NULL) continue; /* Create the buffer */ MPI_Comm_size(comm, &size); MPI_Comm_rank(comm, &rank); sbuf = (int *) malloc(size * size * sizeof(int)); rbuf = (int *) malloc(size * size * sizeof(int)); if (!sbuf || !rbuf) { fprintf(stderr, "Could not allocated buffers!\n"); MPI_Abort(comm, 1); } /* Load up the buffers */ for (i = 0; i < size * size; i++) { sbuf[i] = i + 100 * rank; rbuf[i] = -i; } /* Create and load the arguments to alltoallv */ sendcounts = (int *) malloc(size * sizeof(int)); recvcounts = (int *) malloc(size * sizeof(int)); rdispls = (int *) malloc(size * sizeof(int)); sdispls = (int *) malloc(size * sizeof(int)); sendtypes = (MPI_Datatype *) malloc(size * sizeof(MPI_Datatype)); recvtypes = (MPI_Datatype *) malloc(size * sizeof(MPI_Datatype)); if (!sendcounts || !recvcounts || !rdispls || !sdispls || !sendtypes || !recvtypes) { fprintf(stderr, "Could not allocate arg items!\n"); MPI_Abort(comm, 1); } /* Note that process 0 sends no data (sendcounts[0] = 0) */ for (i = 0; i < size; i++) { sendcounts[i] = i; recvcounts[i] = rank; rdispls[i] = i * rank * sizeof(int); sdispls[i] = (((i + 1) * (i)) / 2) * sizeof(int); sendtypes[i] = recvtypes[i] = MPI_INT; } MPI_Alltoallw(sbuf, sendcounts, sdispls, sendtypes, rbuf, recvcounts, rdispls, recvtypes, comm); /* Check rbuf */ for (i = 0; i < size; i++) { p = rbuf + rdispls[i] / sizeof(int); for (j = 0; j < rank; j++) { if (p[j] != i * 100 + (rank * (rank + 1)) / 2 + j) { fprintf(stderr, "[%d] got %d expected %d for %dth\n", rank, p[j], (i * (i + 1)) / 2 + j, j); err++; } } } free(sendtypes); free(sdispls); free(sendcounts); free(sbuf); #if MTEST_HAVE_MIN_MPI_VERSION(2,2) /* check MPI_IN_PLACE, added in MPI-2.2 */ free(rbuf); rbuf = (int *) malloc(size * (2 * size) * sizeof(int)); if (!rbuf) { fprintf(stderr, "Could not reallocate rbuf!\n"); MPI_Abort(comm, 1); } /* Load up the buffers */ for (i = 0; i < size; i++) { /* alltoallw displs are in bytes, not in type extents */ rdispls[i] = i * (2 * size) * sizeof(int); recvtypes[i] = MPI_INT; recvcounts[i] = i + rank; } memset(rbuf, -1, size * (2 * size) * sizeof(int)); for (i = 0; i < size; i++) { p = rbuf + (rdispls[i] / sizeof(int)); for (j = 0; j < recvcounts[i]; ++j) { p[j] = 100 * rank + 10 * i + j; } } MPI_Alltoallw(MPI_IN_PLACE, NULL, NULL, NULL, rbuf, recvcounts, rdispls, recvtypes, comm); /* Check rbuf */ for (i = 0; i < size; i++) { p = rbuf + (rdispls[i] / sizeof(int)); for (j = 0; j < recvcounts[i]; j++) { int expected = 100 * i + 10 * rank + j; if (p[j] != expected) { fprintf(stderr, "[%d] got %d expected %d for block=%d, element=%dth\n", rank, p[j], expected, i, j); ++err; } } } #endif free(recvtypes); free(rdispls); free(recvcounts); free(rbuf); MTestFreeComm(&comm); } MTest_Finalize(err); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/coll3.c0000644000175000017500000000555512620254305016503 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" #define MAX_PROCESSES 10 int main(int argc, char **argv) { int rank, size, i, j; int table[MAX_PROCESSES][MAX_PROCESSES]; int errors = 0; int participants; int displs[MAX_PROCESSES]; int recv_counts[MAX_PROCESSES]; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); /* A maximum of MAX_PROCESSES processes can participate */ if (size > MAX_PROCESSES) participants = MAX_PROCESSES; else participants = size; /* while (MAX_PROCESSES % participants) participants--; */ if (MAX_PROCESSES % participants) { fprintf(stderr, "Number of processors must divide %d\n", MAX_PROCESSES); MPI_Abort(MPI_COMM_WORLD, 1); } if ((rank < participants)) { /* Determine what rows are my responsibility */ int block_size = MAX_PROCESSES / participants; int begin_row = rank * block_size; int end_row = (rank + 1) * block_size; int send_count = block_size * MAX_PROCESSES; /* Fill in the displacements and recv_counts */ for (i = 0; i < participants; i++) { displs[i] = i * block_size * MAX_PROCESSES; recv_counts[i] = send_count; } /* Paint my rows my color */ for (i = begin_row; i < end_row; i++) for (j = 0; j < MAX_PROCESSES; j++) table[i][j] = rank + 10; /* Gather everybody's result together - sort of like an */ /* inefficient allgather */ for (i = 0; i < participants; i++) { void *sendbuf = (i == rank ? MPI_IN_PLACE : &table[begin_row][0]); MPI_Gatherv(sendbuf, send_count, MPI_INT, &table[0][0], recv_counts, displs, MPI_INT, i, MPI_COMM_WORLD); } /* Everybody should have the same table now. * * The entries are: * Table[i][j] = (i/block_size) + 10; */ for (i = 0; i < MAX_PROCESSES; i++) if ((table[i][0] - table[i][MAX_PROCESSES - 1] != 0)) errors++; for (i = 0; i < MAX_PROCESSES; i++) { for (j = 0; j < MAX_PROCESSES; j++) { if (table[i][j] != (i / block_size) + 10) errors++; } } if (errors) { /* Print out table if there are any errors */ for (i = 0; i < MAX_PROCESSES; i++) { printf("\n"); for (j = 0; j < MAX_PROCESSES; j++) printf(" %d", table[i][j]); } printf("\n"); } } MTest_Finalize(errors); MPI_Finalize(); return MTestReturnValue(errors); } mpi-testsuite-3.2+dfsg/coll/opprod.c0000644000175000017500000002455712620254305016775 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test MPI_PROD operations on optional datatypes dupported by MPICH"; */ typedef struct { double r, i; } d_complex; #ifdef HAVE_LONG_DOUBLE typedef struct { long double r, i; } ld_complex; #endif /* * This test looks at the handling of logical and for types that are not * integers or are not required integers (e.g., long long). MPICH allows * these as well. A strict MPI test should not include this test. */ int main(int argc, char *argv[]) { int errs = 0; int rank, size, maxsize, result[6] = { 1, 1, 2, 6, 24, 120 }; MPI_Comm comm; char cinbuf[3], coutbuf[3]; signed char scinbuf[3], scoutbuf[3]; unsigned char ucinbuf[3], ucoutbuf[3]; d_complex dinbuf[3], doutbuf[3]; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); if (size > 5) maxsize = 5; else maxsize = size; /* General forumula: If we multiple the values from 1 to n, the * product is n!. This grows very fast, so we'll only use the first * five (1! = 1, 2! = 2, 3! = 6, 4! = 24, 5! = 120), with n! * stored in the array result[n] */ #ifndef USE_STRICT_MPI /* char */ MTestPrintfMsg(10, "Reduce of MPI_CHAR\n"); cinbuf[0] = (rank < maxsize && rank > 0) ? rank : 1; cinbuf[1] = 0; cinbuf[2] = (rank > 1); coutbuf[0] = 0; coutbuf[1] = 1; coutbuf[2] = 1; MPI_Reduce(cinbuf, coutbuf, 3, MPI_CHAR, MPI_PROD, 0, comm); if (rank == 0) { if (coutbuf[0] != (char) result[maxsize - 1]) { errs++; fprintf(stderr, "char PROD(rank) test failed (%d!=%d)\n", (int) coutbuf[0], (int) result[maxsize]); } if (coutbuf[1]) { errs++; fprintf(stderr, "char PROD(0) test failed\n"); } if (size > 1 && coutbuf[2]) { errs++; fprintf(stderr, "char PROD(>) test failed\n"); } } #endif /* USE_STRICT_MPI */ /* signed char */ MTestPrintfMsg(10, "Reduce of MPI_SIGNED_CHAR\n"); scinbuf[0] = (rank < maxsize && rank > 0) ? rank : 1; scinbuf[1] = 0; scinbuf[2] = (rank > 1); scoutbuf[0] = 0; scoutbuf[1] = 1; scoutbuf[2] = 1; MPI_Reduce(scinbuf, scoutbuf, 3, MPI_SIGNED_CHAR, MPI_PROD, 0, comm); if (rank == 0) { if (scoutbuf[0] != (signed char) result[maxsize - 1]) { errs++; fprintf(stderr, "signed char PROD(rank) test failed (%d!=%d)\n", (int) scoutbuf[0], (int) result[maxsize]); } if (scoutbuf[1]) { errs++; fprintf(stderr, "signed char PROD(0) test failed\n"); } if (size > 1 && scoutbuf[2]) { errs++; fprintf(stderr, "signed char PROD(>) test failed\n"); } } /* unsigned char */ MTestPrintfMsg(10, "Reduce of MPI_UNSIGNED_CHAR\n"); ucinbuf[0] = (rank < maxsize && rank > 0) ? rank : 1; ucinbuf[1] = 0; ucinbuf[2] = (rank > 0); ucoutbuf[0] = 0; ucoutbuf[1] = 1; ucoutbuf[2] = 1; MPI_Reduce(ucinbuf, ucoutbuf, 3, MPI_UNSIGNED_CHAR, MPI_PROD, 0, comm); if (rank == 0) { if (ucoutbuf[0] != (unsigned char) result[maxsize - 1]) { errs++; fprintf(stderr, "unsigned char PROD(rank) test failed\n"); } if (ucoutbuf[1]) { errs++; fprintf(stderr, "unsigned char PROD(0) test failed\n"); } if (size > 1 && ucoutbuf[2]) { errs++; fprintf(stderr, "unsigned char PROD(>) test failed\n"); } } #ifndef USE_STRICT_MPI /* For some reason, complex is not allowed for sum and prod */ if (MPI_DOUBLE_COMPLEX != MPI_DATATYPE_NULL) { int dc; #ifdef HAVE_LONG_DOUBLE ld_complex ldinbuf[3], ldoutbuf[3]; #endif /* Must determine which C type matches this Fortran type */ MPI_Type_size(MPI_DOUBLE_COMPLEX, &dc); if (dc == sizeof(d_complex)) { /* double complex; may be null if we do not have Fortran support */ dinbuf[0].r = (rank < maxsize && rank > 0) ? rank : 1; dinbuf[1].r = 0; dinbuf[2].r = (rank > 0); dinbuf[0].i = 0; dinbuf[1].i = 1; dinbuf[2].i = -(rank > 0); doutbuf[0].r = 0; doutbuf[1].r = 1; doutbuf[2].r = 1; doutbuf[0].i = 0; doutbuf[1].i = 1; doutbuf[2].i = 1; MPI_Reduce(dinbuf, doutbuf, 3, MPI_DOUBLE_COMPLEX, MPI_PROD, 0, comm); if (rank == 0) { double imag, real; if (doutbuf[0].r != (double) result[maxsize - 1] || doutbuf[0].i != 0) { errs++; fprintf(stderr, "double complex PROD(rank) test failed\n"); } /* Multiplying the imaginary part depends on size mod 4 */ imag = 1.0; real = 0.0; /* Make compiler happy */ switch (size % 4) { case 1: imag = 1.0; real = 0.0; break; case 2: imag = 0.0; real = -1.0; break; case 3: imag = -1.0; real = 0.0; break; case 0: imag = 0.0; real = 1.0; break; } if (doutbuf[1].r != real || doutbuf[1].i != imag) { errs++; fprintf(stderr, "double complex PROD(i) test failed (%f,%f)!=(%f,%f)\n", doutbuf[1].r, doutbuf[1].i, real, imag); } if (doutbuf[2].r != 0 || doutbuf[2].i != 0) { errs++; fprintf(stderr, "double complex PROD(>) test failed\n"); } } } #ifdef HAVE_LONG_DOUBLE else if (dc == sizeof(ld_complex)) { /* double complex; may be null if we do not have Fortran support */ ldinbuf[0].r = (rank < maxsize && rank > 0) ? rank : 1; ldinbuf[1].r = 0; ldinbuf[2].r = (rank > 0); ldinbuf[0].i = 0; ldinbuf[1].i = 1; ldinbuf[2].i = -(rank > 0); ldoutbuf[0].r = 0; ldoutbuf[1].r = 1; ldoutbuf[2].r = 1; ldoutbuf[0].i = 0; ldoutbuf[1].i = 1; ldoutbuf[2].i = 1; MPI_Reduce(ldinbuf, ldoutbuf, 3, MPI_DOUBLE_COMPLEX, MPI_PROD, 0, comm); if (rank == 0) { long double imag, real; if (ldoutbuf[0].r != (double) result[maxsize - 1] || ldoutbuf[0].i != 0) { errs++; fprintf(stderr, "double complex PROD(rank) test failed\n"); } /* Multiplying the imaginary part depends on size mod 4 */ imag = 1.0; real = 0.0; /* Make compiler happy */ switch (size % 4) { case 1: imag = 1.0; real = 0.0; break; case 2: imag = 0.0; real = -1.0; break; case 3: imag = -1.0; real = 0.0; break; case 0: imag = 0.0; real = 1.0; break; } if (ldoutbuf[1].r != real || ldoutbuf[1].i != imag) { errs++; fprintf(stderr, "double complex PROD(i) test failed (%Lf,%Lf)!=(%Lf,%Lf)\n", ldoutbuf[1].r, ldoutbuf[1].i, real, imag); } if (ldoutbuf[2].r != 0 || ldoutbuf[2].i != 0) { errs++; fprintf(stderr, "double complex PROD(>) test failed\n"); } } } #endif /* HAVE_LONG_DOUBLE */ } #endif /* USE_STRICT_MPI */ #ifdef HAVE_LONG_DOUBLE { long double ldinbuf[3], ldoutbuf[3]; /* long double */ ldinbuf[0] = (rank < maxsize && rank > 0) ? rank : 1; ldinbuf[1] = 0; ldinbuf[2] = (rank > 0); ldoutbuf[0] = 0; ldoutbuf[1] = 1; ldoutbuf[2] = 1; if (MPI_LONG_DOUBLE != MPI_DATATYPE_NULL) { MPI_Reduce(ldinbuf, ldoutbuf, 3, MPI_LONG_DOUBLE, MPI_PROD, 0, comm); if (rank == 0) { if (ldoutbuf[0] != (long double) result[maxsize - 1]) { errs++; fprintf(stderr, "long double PROD(rank) test failed\n"); } if (ldoutbuf[1]) { errs++; fprintf(stderr, "long double PROD(0) test failed\n"); } if (size > 1 && ldoutbuf[2] != 0) { errs++; fprintf(stderr, "long double PROD(>) test failed\n"); } } } } #endif /* HAVE_LONG_DOUBLE */ #ifdef HAVE_LONG_LONG { long long llinbuf[3], lloutbuf[3]; /* long long */ llinbuf[0] = (rank < maxsize && rank > 0) ? rank : 1; llinbuf[1] = 0; llinbuf[2] = (rank > 0); lloutbuf[0] = 0; lloutbuf[1] = 1; lloutbuf[2] = 1; if (MPI_LONG_LONG != MPI_DATATYPE_NULL) { MPI_Reduce(llinbuf, lloutbuf, 3, MPI_LONG_LONG, MPI_PROD, 0, comm); if (rank == 0) { if (lloutbuf[0] != (long long) result[maxsize - 1]) { errs++; fprintf(stderr, "long long PROD(rank) test failed\n"); } if (lloutbuf[1]) { errs++; fprintf(stderr, "long long PROD(0) test failed\n"); } if (size > 1 && lloutbuf[2]) { errs++; fprintf(stderr, "long long PROD(>) test failed\n"); } } } } #endif /* HAVE_LONG_LONG */ MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/icbarrier.c0000644000175000017500000000305312620254305017420 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include "mpicolltest.h" /* static char MTEST_Descrip[] = "Simple intercomm barrier test"; */ /* This only checks that the Barrier operation accepts intercommunicators. It does not check for the semantics of a intercomm barrier (all processes in the local group can exit when (but not before) all processes in the remote group enter the barrier */ int main(int argc, char *argv[]) { int errs = 0, err; int leftGroup; MPI_Comm comm; MPI_Datatype datatype; MTest_Init(&argc, &argv); datatype = MPI_INT; /* Get an intercommunicator */ while (MTestGetIntercomm(&comm, &leftGroup, 4)) { if (comm == MPI_COMM_NULL) continue; /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(comm, MPI_ERRORS_RETURN); if (leftGroup) { err = MTest_Barrier(comm); if (err) { errs++; MTestPrintError(err); } } else { /* In the right group */ err = MTest_Barrier(comm); if (err) { errs++; MTestPrintError(err); } } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/gather_big.c0000644000175000017500000000421712620254305017554 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitest.h" #include #include #define ROOT 7 #if 0 /* Following should always work for -n 8 256, -N 32, using longs */ #define COUNT 1048576*32 #endif #if 1 /* Following will fail for -n 8 unless gather path is 64 bit clean */ #define COUNT (1024*1024*128+1) #endif #define VERIFY_CONST 100000000L int main(int argc, char *argv[]) { int rank, size; int i, j; long *sendbuf = NULL; long *recvbuf = NULL; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); sendbuf = malloc(COUNT * sizeof(long)); if (sendbuf == NULL) { fprintf(stderr, "PE %d:ERROR: malloc of sendbuf failed\n", rank); } for (i = 0; i < COUNT; i++) { sendbuf[i] = (long) i + (long) rank *VERIFY_CONST; } if (rank == ROOT) { recvbuf = malloc(COUNT * sizeof(long) * size); if (recvbuf == NULL) { fprintf(stderr, "PE %d:ERROR: malloc of recvbuf failed\n", rank); } for (i = 0; i < COUNT * size; i++) { recvbuf[i] = -456789L; } } MPI_Gather(sendbuf, COUNT, MPI_LONG, recvbuf, COUNT, MPI_LONG, ROOT, MPI_COMM_WORLD); int lerr = 0; if (rank == ROOT) { for (i = 0; i < size; i++) { for (j = 0; j < COUNT; j++) { if (recvbuf[i * COUNT + j] != i * VERIFY_CONST + j) { printf("PE 0: mis-match error"); printf(" recbuf[%d * %d + %d] = ", i, COUNT, j); printf(" %ld,", recvbuf[i * COUNT + j]); printf(" should be %ld\n", i * VERIFY_CONST + j); lerr++; if (lerr > 10) { j = COUNT; } } } } MTest_Finalize(lerr); free(recvbuf); } else { MTest_Finalize(lerr); } MPI_Barrier(MPI_COMM_WORLD); MPI_Finalize(); free(sendbuf); return 0; } mpi-testsuite-3.2+dfsg/coll/allgatherv3.c0000644000175000017500000000367312620254305017702 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitest.h" #include #include /* Gather data from a vector to contiguous. This is the trivial version based on the allgather test (allgatherv but with constant data sizes) */ int main(int argc, char **argv) { double *vecout, *invec; MPI_Comm comm; int count, minsize = 2; int i, errs = 0; int rank, size; int *displs, *recvcounts; MTest_Init(&argc, &argv); while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; /* Determine the sender and receiver */ MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); displs = (int *) malloc(size * sizeof(int)); recvcounts = (int *) malloc(size * sizeof(int)); for (count = 1; count < 9000; count = count * 2) { invec = (double *) malloc(count * sizeof(double)); vecout = (double *) malloc(size * count * sizeof(double)); for (i = 0; i < count; i++) { invec[i] = rank * count + i; } for (i = 0; i < size; i++) { recvcounts[i] = count; displs[i] = i * count; } MPI_Allgatherv(invec, count, MPI_DOUBLE, vecout, recvcounts, displs, MPI_DOUBLE, comm); for (i = 0; i < count * size; i++) { if (vecout[i] != i) { errs++; if (errs < 10) { fprintf(stderr, "vecout[%d]=%d\n", i, (int) vecout[i]); } } } free(invec); free(vecout); } free(displs); free(recvcounts); MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/allred5.c0000644000175000017500000000334212620254305017007 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include /* static char MTEST_Descrip[] = "Test MPI_Allreduce with count greater than the number of processes"; */ /* We make the error count global so that we can easily control the output of error information (in particular, limiting it after the first 10 errors */ int errs = 0; int main(int argc, char *argv[]) { MPI_Comm comm; MPI_Datatype dtype; int count, *bufin, *bufout, size, i, minsize = 1; MTest_Init(&argc, &argv); while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) { continue; } MPI_Comm_size(comm, &size); count = size * 2; bufin = (int *) malloc(count * sizeof(int)); bufout = (int *) malloc(count * sizeof(int)); if (!bufin || !bufout) { fprintf(stderr, "Unable to allocated space for buffers (%d)\n", count); MPI_Abort(MPI_COMM_WORLD, 1); } for (i = 0; i < count; i++) { bufin[i] = i; bufout[i] = -1; } dtype = MPI_INT; MPI_Allreduce(bufin, bufout, count, dtype, MPI_SUM, comm); /* Check output */ for (i = 0; i < count; i++) { if (bufout[i] != i * size) { fprintf(stderr, "Expected bufout[%d] = %d but found %d\n", i, i * size, bufout[i]); errs++; } } free(bufin); free(bufout); MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/opband.c0000644000175000017500000002506312620254305016726 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test MPI_BAND operations on optional datatypes dupported by MPICH"; */ /* * This test looks at the handling of logical and for types that are not * integers or are not required integers (e.g., long long). MPICH allows * these as well. A strict MPI test should not include this test. */ int main(int argc, char *argv[]) { int errs = 0; int rc; int rank, size; MPI_Comm comm; char cinbuf[3], coutbuf[3]; signed char scinbuf[3], scoutbuf[3]; unsigned char ucinbuf[3], ucoutbuf[3]; short sinbuf[3], soutbuf[3]; unsigned short usinbuf[3], usoutbuf[3]; long linbuf[3], loutbuf[3]; unsigned long ulinbuf[3], uloutbuf[3]; unsigned uinbuf[3], uoutbuf[3]; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; /* Set errors return so that we can provide better information * should a routine reject one of the operand/datatype pairs */ MPI_Errhandler_set(comm, MPI_ERRORS_RETURN); MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); #ifndef USE_STRICT_MPI /* char */ MTestPrintfMsg(10, "Reduce of MPI_CHAR\n"); cinbuf[0] = 0xff; cinbuf[1] = 0; cinbuf[2] = (rank > 0) ? 0xff : 0xf0; coutbuf[0] = 0; coutbuf[1] = 1; coutbuf[2] = 1; rc = MPI_Reduce(cinbuf, coutbuf, 3, MPI_CHAR, MPI_BAND, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_BAND and MPI_CHAR", rc); errs++; } else { if (rank == 0) { if (coutbuf[0] != (char) 0xff) { errs++; fprintf(stderr, "char BAND(1) test failed\n"); } if (coutbuf[1]) { errs++; fprintf(stderr, "char BAND(0) test failed\n"); } if (coutbuf[2] != (char) 0xf0 && size > 1) { errs++; fprintf(stderr, "char BAND(>) test failed\n"); } } } #endif /* USE_STRICT_MPI */ /* signed char */ MTestPrintfMsg(10, "Reduce of MPI_SIGNED_CHAR\n"); scinbuf[0] = 0xff; scinbuf[1] = 0; scinbuf[2] = (rank > 0) ? 0xff : 0xf0; scoutbuf[0] = 0; scoutbuf[1] = 1; scoutbuf[2] = 1; rc = MPI_Reduce(scinbuf, scoutbuf, 3, MPI_SIGNED_CHAR, MPI_BAND, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_BAND and MPI_SIGNED_CHAR", rc); errs++; } else { if (rank == 0) { if (scoutbuf[0] != (signed char) 0xff) { errs++; fprintf(stderr, "signed char BAND(1) test failed\n"); } if (scoutbuf[1]) { errs++; fprintf(stderr, "signed char BAND(0) test failed\n"); } if (scoutbuf[2] != (signed char) 0xf0 && size > 1) { errs++; fprintf(stderr, "signed char BAND(>) test failed\n"); } } } /* unsigned char */ MTestPrintfMsg(10, "Reduce of MPI_UNSIGNED_CHAR\n"); ucinbuf[0] = 0xff; ucinbuf[1] = 0; ucinbuf[2] = (rank > 0) ? 0xff : 0xf0; ucoutbuf[0] = 0; ucoutbuf[1] = 1; ucoutbuf[2] = 1; rc = MPI_Reduce(ucinbuf, ucoutbuf, 3, MPI_UNSIGNED_CHAR, MPI_BAND, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_BAND and MPI_UNSIGNED_CHAR", rc); errs++; } else { if (rank == 0) { if (ucoutbuf[0] != 0xff) { errs++; fprintf(stderr, "unsigned char BAND(1) test failed\n"); } if (ucoutbuf[1]) { errs++; fprintf(stderr, "unsigned char BAND(0) test failed\n"); } if (ucoutbuf[2] != 0xf0 && size > 1) { errs++; fprintf(stderr, "unsigned char BAND(>) test failed\n"); } } } /* bytes */ MTestPrintfMsg(10, "Reduce of MPI_BYTE\n"); cinbuf[0] = 0xff; cinbuf[1] = 0; cinbuf[2] = (rank > 0) ? 0xff : 0xf0; coutbuf[0] = 0; coutbuf[1] = 1; coutbuf[2] = 1; rc = MPI_Reduce(cinbuf, coutbuf, 3, MPI_BYTE, MPI_BAND, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_BAND and MPI_BYTE", rc); errs++; } else { if (rank == 0) { if (coutbuf[0] != (char) 0xff) { errs++; fprintf(stderr, "byte BAND(1) test failed\n"); } if (coutbuf[1]) { errs++; fprintf(stderr, "byte BAND(0) test failed\n"); } if (coutbuf[2] != (char) 0xf0 && size > 1) { errs++; fprintf(stderr, "byte BAND(>) test failed\n"); } } } /* short */ MTestPrintfMsg(10, "Reduce of MPI_SHORT\n"); sinbuf[0] = 0xffff; sinbuf[1] = 0; sinbuf[2] = (rank > 0) ? 0xffff : 0xf0f0; soutbuf[0] = 0; soutbuf[1] = 1; soutbuf[2] = 1; rc = MPI_Reduce(sinbuf, soutbuf, 3, MPI_SHORT, MPI_BAND, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_BAND and MPI_SHORT", rc); errs++; } else { if (rank == 0) { if (soutbuf[0] != (short) 0xffff) { errs++; fprintf(stderr, "short BAND(1) test failed\n"); } if (soutbuf[1]) { errs++; fprintf(stderr, "short BAND(0) test failed\n"); } if (soutbuf[2] != (short) 0xf0f0 && size > 1) { errs++; fprintf(stderr, "short BAND(>) test failed\n"); } } } MTestPrintfMsg(10, "Reduce of MPI_UNSIGNED_SHORT\n"); /* unsigned short */ usinbuf[0] = 0xffff; usinbuf[1] = 0; usinbuf[2] = (rank > 0) ? 0xffff : 0xf0f0; usoutbuf[0] = 0; usoutbuf[1] = 1; usoutbuf[2] = 1; rc = MPI_Reduce(usinbuf, usoutbuf, 3, MPI_UNSIGNED_SHORT, MPI_BAND, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_BAND and MPI_UNSIGNED_SHORT", rc); errs++; } else { if (rank == 0) { if (usoutbuf[0] != 0xffff) { errs++; fprintf(stderr, "short BAND(1) test failed\n"); } if (usoutbuf[1]) { errs++; fprintf(stderr, "short BAND(0) test failed\n"); } if (usoutbuf[2] != 0xf0f0 && size > 1) { errs++; fprintf(stderr, "short BAND(>) test failed\n"); } } } /* unsigned */ MTestPrintfMsg(10, "Reduce of MPI_UNSIGNED\n"); uinbuf[0] = 0xffffffff; uinbuf[1] = 0; uinbuf[2] = (rank > 0) ? 0xffffffff : 0xf0f0f0f0; uoutbuf[0] = 0; uoutbuf[1] = 1; uoutbuf[2] = 1; rc = MPI_Reduce(uinbuf, uoutbuf, 3, MPI_UNSIGNED, MPI_BAND, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_BAND and MPI_UNSIGNED", rc); errs++; } else { if (rank == 0) { if (uoutbuf[0] != 0xffffffff) { errs++; fprintf(stderr, "unsigned BAND(1) test failed\n"); } if (uoutbuf[1]) { errs++; fprintf(stderr, "unsigned BAND(0) test failed\n"); } if (uoutbuf[2] != 0xf0f0f0f0 && size > 1) { errs++; fprintf(stderr, "unsigned BAND(>) test failed\n"); } } } /* long */ MTestPrintfMsg(10, "Reduce of MPI_LONG\n"); linbuf[0] = 0xffffffff; linbuf[1] = 0; linbuf[2] = (rank > 0) ? 0xffffffff : 0xf0f0f0f0; loutbuf[0] = 0; loutbuf[1] = 1; loutbuf[2] = 1; rc = MPI_Reduce(linbuf, loutbuf, 3, MPI_LONG, MPI_BAND, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_BAND and MPI_LONG", rc); errs++; } else { if (rank == 0) { if (loutbuf[0] != 0xffffffff) { errs++; fprintf(stderr, "long BAND(1) test failed\n"); } if (loutbuf[1]) { errs++; fprintf(stderr, "long BAND(0) test failed\n"); } if (loutbuf[2] != 0xf0f0f0f0 && size > 1) { errs++; fprintf(stderr, "long BAND(>) test failed\n"); } } } MTestPrintfMsg(10, "Reduce of MPI_UNSIGNED_LONG\n"); /* unsigned long */ ulinbuf[0] = 0xffffffff; ulinbuf[1] = 0; ulinbuf[2] = (rank > 0) ? 0xffffffff : 0xf0f0f0f0; uloutbuf[0] = 0; uloutbuf[1] = 1; uloutbuf[2] = 1; rc = MPI_Reduce(ulinbuf, uloutbuf, 3, MPI_UNSIGNED_LONG, MPI_BAND, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_BAND and MPI_UNSIGNED_LONG", rc); errs++; } else { if (rank == 0) { if (uloutbuf[0] != 0xffffffff) { errs++; fprintf(stderr, "unsigned long BAND(1) test failed\n"); } if (uloutbuf[1]) { errs++; fprintf(stderr, "unsigned long BAND(0) test failed\n"); } if (uloutbuf[2] != 0xf0f0f0f0 && size > 1) { errs++; fprintf(stderr, "unsigned long BAND(>) test failed\n"); } } } #ifdef HAVE_LONG_LONG { long long llinbuf[3], lloutbuf[3]; /* long long */ llinbuf[0] = 0xffffffff; llinbuf[1] = 0; llinbuf[2] = (rank > 0) ? 0xffffffff : 0xf0f0f0f0; lloutbuf[0] = 0; lloutbuf[1] = 1; lloutbuf[2] = 1; if (MPI_LONG_LONG != MPI_DATATYPE_NULL) { MTestPrintfMsg(10, "Reduce of MPI_LONG_LONG\n"); rc = MPI_Reduce(llinbuf, lloutbuf, 3, MPI_LONG_LONG, MPI_BAND, 0, comm); if (rc) { MTestPrintErrorMsg("MPI_BAND and MPI_LONG_LONG", rc); errs++; } else { if (rank == 0) { if (lloutbuf[0] != 0xffffffff) { errs++; fprintf(stderr, "long long BAND(1) test failed\n"); } if (lloutbuf[1]) { errs++; fprintf(stderr, "long long BAND(0) test failed\n"); } if (lloutbuf[2] != 0xf0f0f0f0 && size > 1) { errs++; fprintf(stderr, "long long BAND(>) test failed\n"); } } } } } #endif MPI_Errhandler_set(comm, MPI_ERRORS_ARE_FATAL); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/coll13.c0000644000175000017500000000361312620254305016555 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * Changes to the original code * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" /* From: hook@nas.nasa.gov (Edward C. Hook) */ #include #include #include "mpitest.h" #include #include #ifndef EXIT_SUCCESS #define EXIT_SUCCESS 0 #define EXIT_FAILURE 1 #endif int main(int argc, char *argv[]) { int rank, size; int chunk = 128; int i; int *sb; int *rb; int status, gstatus; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); for (i = 1; i < argc; ++i) { if (argv[i][0] != '-') continue; switch (argv[i][1]) { case 'm': chunk = atoi(argv[++i]); break; default: fprintf(stderr, "Unrecognized argument %s\n", argv[i]); MPI_Abort(MPI_COMM_WORLD, EXIT_FAILURE); } } sb = (int *) malloc(size * chunk * sizeof(int)); if (!sb) { perror("can't allocate send buffer"); MPI_Abort(MPI_COMM_WORLD, EXIT_FAILURE); } rb = (int *) malloc(size * chunk * sizeof(int)); if (!rb) { perror("can't allocate recv buffer"); free(sb); MPI_Abort(MPI_COMM_WORLD, EXIT_FAILURE); } for (i = 0; i < size * chunk; ++i) { sb[i] = rank + 1; rb[i] = 0; } /* fputs("Before MPI_Alltoall\n",stdout); */ /* This should really send MPI_CHAR, but since sb and rb were allocated * as chunk*size*sizeof(int), the buffers are large enough */ status = MPI_Alltoall(sb, chunk, MPI_INT, rb, chunk, MPI_INT, MPI_COMM_WORLD); /* fputs("Before MPI_Allreduce\n",stdout); */ MTest_Finalize(status); free(sb); free(rb); MPI_Finalize(); return MTestReturnValue(status); } mpi-testsuite-3.2+dfsg/coll/opmax.c0000644000175000017500000001175012620254305016605 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test MPI_MAX operations on optional datatypes dupported by MPICH"; */ /* * This test looks at the handling of char and types that are not required * integers (e.g., long long). MPICH allows * these as well. A strict MPI test should not include this test. */ int main(int argc, char *argv[]) { int errs = 0; int rank, size; MPI_Comm comm; char cinbuf[3], coutbuf[3]; signed char scinbuf[3], scoutbuf[3]; unsigned char ucinbuf[3], ucoutbuf[3]; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); #ifndef USE_STRICT_MPI /* char */ MTestPrintfMsg(10, "Reduce of MPI_CHAR\n"); cinbuf[0] = 1; cinbuf[1] = 0; cinbuf[2] = rank; coutbuf[0] = 0; coutbuf[1] = 1; coutbuf[2] = 1; MPI_Reduce(cinbuf, coutbuf, 3, MPI_CHAR, MPI_MAX, 0, comm); if (rank == 0) { if (coutbuf[0] != 1) { errs++; fprintf(stderr, "char MAX(1) test failed\n"); } if (coutbuf[1] != 0) { errs++; fprintf(stderr, "char MAX(0) test failed\n"); } if (size < 128 && coutbuf[2] != size - 1) { errs++; fprintf(stderr, "char MAX(>) test failed\n"); } } #endif /* USE_STRICT_MPI */ /* signed char */ MTestPrintfMsg(10, "Reduce of MPI_SIGNED_CHAR\n"); scinbuf[0] = 1; scinbuf[1] = 0; scinbuf[2] = rank; scoutbuf[0] = 0; scoutbuf[1] = 1; scoutbuf[2] = 1; MPI_Reduce(scinbuf, scoutbuf, 3, MPI_SIGNED_CHAR, MPI_MAX, 0, comm); if (rank == 0) { if (scoutbuf[0] != 1) { errs++; fprintf(stderr, "signed char MAX(1) test failed\n"); } if (scoutbuf[1] != 0) { errs++; fprintf(stderr, "signed char MAX(0) test failed\n"); } if (size < 128 && scoutbuf[2] != size - 1) { errs++; fprintf(stderr, "signed char MAX(>) test failed\n"); } } /* unsigned char */ MTestPrintfMsg(10, "Reduce of MPI_UNSIGNED_CHAR\n"); ucinbuf[0] = 1; ucinbuf[1] = 0; ucinbuf[2] = rank; ucoutbuf[0] = 0; ucoutbuf[1] = 1; ucoutbuf[2] = 1; MPI_Reduce(ucinbuf, ucoutbuf, 3, MPI_UNSIGNED_CHAR, MPI_MAX, 0, comm); if (rank == 0) { if (ucoutbuf[0] != 1) { errs++; fprintf(stderr, "unsigned char MAX(1) test failed\n"); } if (ucoutbuf[1]) { errs++; fprintf(stderr, "unsigned char MAX(0) test failed\n"); } if (size < 256 && ucoutbuf[2] != size - 1) { errs++; fprintf(stderr, "unsigned char MAX(>) test failed\n"); } } #ifdef HAVE_LONG_DOUBLE { long double ldinbuf[3], ldoutbuf[3]; /* long double */ ldinbuf[0] = 1; ldinbuf[1] = 0; ldinbuf[2] = rank; ldoutbuf[0] = 0; ldoutbuf[1] = 1; ldoutbuf[2] = 1; if (MPI_LONG_DOUBLE != MPI_DATATYPE_NULL) { MTestPrintfMsg(10, "Reduce of MPI_LONG_DOUBLE\n"); MPI_Reduce(ldinbuf, ldoutbuf, 3, MPI_LONG_DOUBLE, MPI_MAX, 0, comm); if (rank == 0) { if (ldoutbuf[0] != 1) { errs++; fprintf(stderr, "long double MAX(1) test failed\n"); } if (ldoutbuf[1] != 0.0) { errs++; fprintf(stderr, "long double MAX(0) test failed\n"); } if (ldoutbuf[2] != size - 1) { errs++; fprintf(stderr, "long double MAX(>) test failed\n"); } } } } #endif /* HAVE_LONG_DOUBLE */ #ifdef HAVE_LONG_LONG { long long llinbuf[3], lloutbuf[3]; /* long long */ llinbuf[0] = 1; llinbuf[1] = 0; llinbuf[2] = rank; lloutbuf[0] = 0; lloutbuf[1] = 1; lloutbuf[2] = 1; if (MPI_LONG_LONG != MPI_DATATYPE_NULL) { MTestPrintfMsg(10, "Reduce of MPI_LONG_LONG\n"); MPI_Reduce(llinbuf, lloutbuf, 3, MPI_LONG_LONG, MPI_MAX, 0, comm); if (rank == 0) { if (lloutbuf[0] != 1) { errs++; fprintf(stderr, "long long MAX(1) test failed\n"); } if (lloutbuf[1] != 0) { errs++; fprintf(stderr, "long long MAX(0) test failed\n"); } if (lloutbuf[2] != size - 1) { errs++; fprintf(stderr, "long long MAX(>) test failed\n"); } } } } #endif /* HAVE_LONG_LONG */ MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/coll7.c0000644000175000017500000000377112620254305016505 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" #define MAX_PROCESSES 10 int main(int argc, char **argv) { int rank, size, i, j; int table[MAX_PROCESSES][MAX_PROCESSES]; int errors = 0; int participants; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); /* A maximum of MAX_PROCESSES processes can participate */ if (size > MAX_PROCESSES) participants = MAX_PROCESSES; else participants = size; if (MAX_PROCESSES % participants) { fprintf(stderr, "Number of processors must divide %d\n", MAX_PROCESSES); MPI_Abort(MPI_COMM_WORLD, 1); } /* while (MAX_PROCESSES % participants) participants--; */ if ((rank < participants)) { /* Determine what rows are my responsibility */ int block_size = MAX_PROCESSES / participants; int begin_row = rank * block_size; int end_row = (rank + 1) * block_size; int send_count = block_size * MAX_PROCESSES; int recv_count = send_count; /* Paint my rows my color */ for (i = begin_row; i < end_row; i++) for (j = 0; j < MAX_PROCESSES; j++) table[i][j] = rank + 10; /* Everybody gets the gathered table */ MPI_Allgather(MPI_IN_PLACE, 0, MPI_DATATYPE_NULL, &table[0][0], recv_count, MPI_INT, MPI_COMM_WORLD); /* Everybody should have the same table now, */ /* This test does not in any way guarantee there are no errors */ /* Print out a table or devise a smart test to make sure it's correct */ for (i = 0; i < MAX_PROCESSES; i++) { if ((table[i][0] - table[i][MAX_PROCESSES - 1] != 0)) errors++; } } MTest_Finalize(errors); MPI_Finalize(); return MTestReturnValue(errors); } mpi-testsuite-3.2+dfsg/coll/red4.c0000644000175000017500000001600212620254305016312 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test MPI_Reduce with non-commutative user-define operations and arbitrary root"; */ /* * This tests that the reduce operation respects the noncommutative flag. * and that can distinguish between P_{root} P_{root+1} * ... P_{root-1} and P_0 ... P_{size-1} . The MPI standard clearly * specifies that the result is P_0 ... P_{size-1}, independent of the root * (see 4.9.4 in MPI-1) */ /* This implements a simple matrix-matrix multiply. This is an associative but not commutative operation. The matrix size is set in matSize; the number of matrices is the count argument. The matrix is stored in C order, so that c(i,j) is cin[j+i*matSize] */ #define MAXCOL 256 static int matSize = 0; /* Must be < MAXCOL */ void uop(void *cinPtr, void *coutPtr, int *count, MPI_Datatype * dtype); void uop(void *cinPtr, void *coutPtr, int *count, MPI_Datatype * dtype) { const int *cin; int *cout; int i, j, k, nmat; int tempCol[MAXCOL]; if (*count != 1) printf("Panic!\n"); for (nmat = 0; nmat < *count; nmat++) { cin = (const int *) cinPtr; cout = (int *) coutPtr; for (j = 0; j < matSize; j++) { for (i = 0; i < matSize; i++) { tempCol[i] = 0; for (k = 0; k < matSize; k++) { /* col[i] += cin(i,k) * cout(k,j) */ tempCol[i] += cin[k + i * matSize] * cout[j + k * matSize]; } } for (i = 0; i < matSize; i++) { cout[j + i * matSize] = tempCol[i]; } } cinPtr = (int *) cinPtr + matSize * matSize; coutPtr = (int *) coutPtr + matSize * matSize; } } /* Initialize the integer matrix as a permutation of rank with rank+1. If we call this matrix P_r, we know that product of P_0 P_1 ... P_{size-1} is the matrix with rows ordered as 1,size,2,3,4,...,size-1 (The matrix is basically a circular shift right, shifting right n-1 steps for an n x n dimensional matrix, with the last step swapping rows 1 and size) */ static void initMat(MPI_Comm comm, int mat[]) { int i, size, rank; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); /* Remember the matrix size */ matSize = size; for (i = 0; i < matSize * matSize; i++) mat[i] = 0; for (i = 0; i < matSize; i++) { if (i == rank) mat[((i + 1) % matSize) + i * matSize] = 1; else if (i == ((rank + 1) % matSize)) mat[((i + matSize - 1) % matSize) + i * matSize] = 1; else mat[i + i * matSize] = 1; } } /* Compare a matrix with the identity matrix */ /* static int isIdentity(MPI_Comm comm, int mat[]) { int i, j, size, rank, errs = 0; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); for (i=0; i MAXCOL) { /* Skip because there are too many processes */ MTestFreeComm(&comm); continue; } /* Only one matrix for now */ count = 1; /* A single matrix, the size of the communicator */ MPI_Type_contiguous(size * size, MPI_INT, &mattype); MPI_Type_commit(&mattype); buf = (int *) malloc(count * size * size * sizeof(int)); if (!buf) MPI_Abort(MPI_COMM_WORLD, 1); bufout = (int *) malloc(count * size * size * sizeof(int)); if (!bufout) MPI_Abort(MPI_COMM_WORLD, 1); for (root = 0; root < size; root++) { initMat(comm, buf); MPI_Reduce(buf, bufout, count, mattype, op, root, comm); if (rank == root) { errs += isPermutedIdentity(comm, bufout); } /* Try the same test, but using MPI_IN_PLACE */ initMat(comm, bufout); if (rank == root) { MPI_Reduce(MPI_IN_PLACE, bufout, count, mattype, op, root, comm); } else { MPI_Reduce(bufout, NULL, count, mattype, op, root, comm); } if (rank == root) { errs += isPermutedIdentity(comm, bufout); } } MPI_Type_free(&mattype); free(buf); free(bufout); MTestFreeComm(&comm); } MPI_Op_free(&op); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/coll4.c0000644000175000017500000000320712620254305016474 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" #define MAX_PROCESSES 10 int main(int argc, char **argv) { int rank, size, i, j; int table[MAX_PROCESSES][MAX_PROCESSES]; int row[MAX_PROCESSES]; int errors = 0; int participants; MPI_Comm comm; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); comm = MPI_COMM_WORLD; /* A maximum of MAX_PROCESSES processes can participate */ if (size > MAX_PROCESSES) { participants = MAX_PROCESSES; MPI_Comm_split(MPI_COMM_WORLD, rank < MAX_PROCESSES, rank, &comm); } else { participants = size; MPI_Comm_dup(MPI_COMM_WORLD, &comm); } if ((rank < participants)) { int send_count = MAX_PROCESSES; int recv_count = MAX_PROCESSES; /* If I'm the root (process 0), then fill out the big table */ if (rank == 0) for (i = 0; i < participants; i++) for (j = 0; j < MAX_PROCESSES; j++) table[i][j] = i + j; /* Scatter the big table to everybody's little table */ MPI_Scatter(&table[0][0], send_count, MPI_INT, &row[0], recv_count, MPI_INT, 0, comm); /* Now see if our row looks right */ for (i = 0; i < MAX_PROCESSES; i++) if (row[i] != i + rank) errors++; } MPI_Comm_free(&comm); MTest_Finalize(errors); MPI_Finalize(); return MTestReturnValue(errors); } mpi-testsuite-3.2+dfsg/coll/opmaxloc.c0000644000175000017500000002446712620254305017314 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test MPI_MAXLOC operations on datatypes dupported by MPICH"; */ /* * This test looks at the handling of char and types that are not required * integers (e.g., long long). MPICH allows * these as well. A strict MPI test should not include this test. * * The rule on max loc is that if there is a tie in the value, the minimum * rank is used (see 4.9.3 in the MPI-1 standard) */ int main(int argc, char *argv[]) { int errs = 0; int rank, size; MPI_Comm comm; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); /* 2 int */ { struct twoint { int val; int loc; } cinbuf[3], coutbuf[3]; cinbuf[0].val = 1; cinbuf[0].loc = rank; cinbuf[1].val = 0; cinbuf[1].loc = rank; cinbuf[2].val = rank; cinbuf[2].loc = rank; coutbuf[0].val = 0; coutbuf[0].loc = -1; coutbuf[1].val = 1; coutbuf[1].loc = -1; coutbuf[2].val = 1; coutbuf[2].loc = -1; MPI_Reduce(cinbuf, coutbuf, 3, MPI_2INT, MPI_MAXLOC, 0, comm); if (rank == 0) { if (coutbuf[0].val != 1 || coutbuf[0].loc != 0) { errs++; fprintf(stderr, "2int MAXLOC(1) test failed\n"); } if (coutbuf[1].val != 0) { errs++; fprintf(stderr, "2int MAXLOC(0) test failed, value = %d, should be zero\n", coutbuf[1].val); } if (coutbuf[1].loc != 0) { errs++; fprintf(stderr, "2int MAXLOC(0) test failed, location of max = %d, should be zero\n", coutbuf[1].loc); } if (coutbuf[2].val != size - 1 || coutbuf[2].loc != size - 1) { errs++; fprintf(stderr, "2int MAXLOC(>) test failed\n"); } } } /* float int */ { struct floatint { float val; int loc; } cinbuf[3], coutbuf[3]; cinbuf[0].val = 1; cinbuf[0].loc = rank; cinbuf[1].val = 0; cinbuf[1].loc = rank; cinbuf[2].val = (float) rank; cinbuf[2].loc = rank; coutbuf[0].val = 0; coutbuf[0].loc = -1; coutbuf[1].val = 1; coutbuf[1].loc = -1; coutbuf[2].val = 1; coutbuf[2].loc = -1; MPI_Reduce(cinbuf, coutbuf, 3, MPI_FLOAT_INT, MPI_MAXLOC, 0, comm); if (rank == 0) { if (coutbuf[0].val != 1 || coutbuf[0].loc != 0) { errs++; fprintf(stderr, "float-int MAXLOC(1) test failed\n"); } if (coutbuf[1].val != 0) { errs++; fprintf(stderr, "float-int MAXLOC(0) test failed, value = %f, should be zero\n", coutbuf[1].val); } if (coutbuf[1].loc != 0) { errs++; fprintf(stderr, "float-int MAXLOC(0) test failed, location of max = %d, should be zero\n", coutbuf[1].loc); } if (coutbuf[2].val != size - 1 || coutbuf[2].loc != size - 1) { errs++; fprintf(stderr, "float-int MAXLOC(>) test failed\n"); } } } /* long int */ { struct longint { long val; int loc; } cinbuf[3], coutbuf[3]; cinbuf[0].val = 1; cinbuf[0].loc = rank; cinbuf[1].val = 0; cinbuf[1].loc = rank; cinbuf[2].val = rank; cinbuf[2].loc = rank; coutbuf[0].val = 0; coutbuf[0].loc = -1; coutbuf[1].val = 1; coutbuf[1].loc = -1; coutbuf[2].val = 1; coutbuf[2].loc = -1; MPI_Reduce(cinbuf, coutbuf, 3, MPI_LONG_INT, MPI_MAXLOC, 0, comm); if (rank == 0) { if (coutbuf[0].val != 1 || coutbuf[0].loc != 0) { errs++; fprintf(stderr, "long-int MAXLOC(1) test failed\n"); } if (coutbuf[1].val != 0) { errs++; fprintf(stderr, "long-int MAXLOC(0) test failed, value = %ld, should be zero\n", coutbuf[1].val); } if (coutbuf[1].loc != 0) { errs++; fprintf(stderr, "long-int MAXLOC(0) test failed, location of max = %d, should be zero\n", coutbuf[1].loc); } if (coutbuf[2].val != size - 1 || coutbuf[2].loc != size - 1) { errs++; fprintf(stderr, "long-int MAXLOC(>) test failed\n"); } } } /* short int */ { struct shortint { short val; int loc; } cinbuf[3], coutbuf[3]; cinbuf[0].val = 1; cinbuf[0].loc = rank; cinbuf[1].val = 0; cinbuf[1].loc = rank; cinbuf[2].val = rank; cinbuf[2].loc = rank; coutbuf[0].val = 0; coutbuf[0].loc = -1; coutbuf[1].val = 1; coutbuf[1].loc = -1; coutbuf[2].val = 1; coutbuf[2].loc = -1; MPI_Reduce(cinbuf, coutbuf, 3, MPI_SHORT_INT, MPI_MAXLOC, 0, comm); if (rank == 0) { if (coutbuf[0].val != 1 || coutbuf[0].loc != 0) { errs++; fprintf(stderr, "short-int MAXLOC(1) test failed\n"); } if (coutbuf[1].val != 0) { errs++; fprintf(stderr, "short-int MAXLOC(0) test failed, value = %d, should be zero\n", coutbuf[1].val); } if (coutbuf[1].loc != 0) { errs++; fprintf(stderr, "short-int MAXLOC(0) test failed, location of max = %d, should be zero\n", coutbuf[1].loc); } if (coutbuf[2].val != size - 1) { errs++; fprintf(stderr, "short-int MAXLOC(>) test failed, value = %d, should be %d\n", coutbuf[2].val, size - 1); } if (coutbuf[2].loc != size - 1) { errs++; fprintf(stderr, "short-int MAXLOC(>) test failed, location of max = %d, should be %d\n", coutbuf[2].loc, size - 1); } } } /* double int */ { struct doubleint { double val; int loc; } cinbuf[3], coutbuf[3]; cinbuf[0].val = 1; cinbuf[0].loc = rank; cinbuf[1].val = 0; cinbuf[1].loc = rank; cinbuf[2].val = rank; cinbuf[2].loc = rank; coutbuf[0].val = 0; coutbuf[0].loc = -1; coutbuf[1].val = 1; coutbuf[1].loc = -1; coutbuf[2].val = 1; coutbuf[2].loc = -1; MPI_Reduce(cinbuf, coutbuf, 3, MPI_DOUBLE_INT, MPI_MAXLOC, 0, comm); if (rank == 0) { if (coutbuf[0].val != 1 || coutbuf[0].loc != 0) { errs++; fprintf(stderr, "double-int MAXLOC(1) test failed\n"); } if (coutbuf[1].val != 0) { errs++; fprintf(stderr, "double-int MAXLOC(0) test failed, value = %lf, should be zero\n", coutbuf[1].val); } if (coutbuf[1].loc != 0) { errs++; fprintf(stderr, "double-int MAXLOC(0) test failed, location of max = %d, should be zero\n", coutbuf[1].loc); } if (coutbuf[2].val != size - 1 || coutbuf[2].loc != size - 1) { errs++; fprintf(stderr, "double-int MAXLOC(>) test failed\n"); } } } #ifdef HAVE_LONG_DOUBLE /* long double int */ { struct longdoubleint { long double val; int loc; } cinbuf[3], coutbuf[3]; /* avoid valgrind warnings about padding bytes in the long double */ memset(&cinbuf[0], 0, sizeof(cinbuf)); memset(&coutbuf[0], 0, sizeof(coutbuf)); cinbuf[0].val = 1; cinbuf[0].loc = rank; cinbuf[1].val = 0; cinbuf[1].loc = rank; cinbuf[2].val = rank; cinbuf[2].loc = rank; coutbuf[0].val = 0; coutbuf[0].loc = -1; coutbuf[1].val = 1; coutbuf[1].loc = -1; coutbuf[2].val = 1; coutbuf[2].loc = -1; if (MPI_LONG_DOUBLE != MPI_DATATYPE_NULL) { MPI_Reduce(cinbuf, coutbuf, 3, MPI_LONG_DOUBLE_INT, MPI_MAXLOC, 0, comm); if (rank == 0) { if (coutbuf[0].val != 1 || coutbuf[0].loc != 0) { errs++; fprintf(stderr, "long double-int MAXLOC(1) test failed\n"); } if (coutbuf[1].val != 0) { errs++; fprintf(stderr, "long double-int MAXLOC(0) test failed, value = %lf, should be zero\n", (double) coutbuf[1].val); } if (coutbuf[1].loc != 0) { errs++; fprintf(stderr, "long double-int MAXLOC(0) test failed, location of max = %d, should be zero\n", coutbuf[1].loc); } if (coutbuf[2].val != size - 1) { errs++; fprintf(stderr, "long double-int MAXLOC(>) test failed, value = %lf, should be %d\n", (double) coutbuf[2].val, size - 1); } if (coutbuf[2].loc != size - 1) { errs++; fprintf(stderr, "long double-int MAXLOC(>) test failed, location of max = %d, should be %d\n", coutbuf[2].loc, size - 1); } } } } #endif MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/icallreduce.c0000644000175000017500000000522612620254305017736 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include "mpicolltest.h" /* static char MTEST_Descrip[] = "Simple intercomm allreduce test"; */ int main(int argc, char *argv[]) { int errs = 0, err; int *sendbuf = 0, *recvbuf = 0; int leftGroup, i, count, rank, rsize; MPI_Comm comm; MPI_Datatype datatype; MTest_Init(&argc, &argv); datatype = MPI_INT; /* Get an intercommunicator */ while (MTestGetIntercomm(&comm, &leftGroup, 4)) { if (comm == MPI_COMM_NULL) continue; MPI_Comm_rank(comm, &rank); MPI_Comm_remote_size(comm, &rsize); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Errhandler_set(comm, MPI_ERRORS_RETURN); for (count = 1; count < 65000; count = 2 * count) { /* printf("rank = %d(%d)\n", rank, leftGroup); fflush(stdout); */ sendbuf = (int *) malloc(count * sizeof(int)); recvbuf = (int *) malloc(count * sizeof(int)); if (leftGroup) { for (i = 0; i < count; i++) sendbuf[i] = i; } else { for (i = 0; i < count; i++) sendbuf[i] = -i; } for (i = 0; i < count; i++) recvbuf[i] = 0; err = MTest_Allreduce(sendbuf, recvbuf, count, datatype, MPI_SUM, comm); if (err) { errs++; MTestPrintError(err); } /* In each process should be the sum of the values from the * other process */ if (leftGroup) { for (i = 0; i < count; i++) { if (recvbuf[i] != -i * rsize) { errs++; if (errs < 10) { fprintf(stderr, "recvbuf[%d] = %d\n", i, recvbuf[i]); } } } } else { for (i = 0; i < count; i++) { if (recvbuf[i] != i * rsize) { errs++; if (errs < 10) { fprintf(stderr, "recvbuf[%d] = %d\n", i, recvbuf[i]); } } } } free(sendbuf); free(recvbuf); } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/allgather3.c0000644000175000017500000000317712620254305017513 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitest.h" #include #include /* Gather data from a vector to contiguous. */ int main(int argc, char **argv) { double *vecout, *invec; MPI_Comm comm; int count, minsize = 2; int i, errs = 0; int rank, size; MTest_Init(&argc, &argv); while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; /* Determine the sender and receiver */ MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); for (count = 1; count < 9000; count = count * 2) { invec = (double *) malloc(count * sizeof(double)); vecout = (double *) malloc(size * count * sizeof(double)); for (i = 0; i < count; i++) { invec[i] = rank * count + i; } MPI_Allgather(invec, count, MPI_DOUBLE, vecout, count, MPI_DOUBLE, comm); for (i = 0; i < count * size; i++) { if (vecout[i] != i) { errs++; if (errs < 10) { fprintf(stderr, "vecout[%d]=%d\n", i, (int) vecout[i]); } } } free(invec); free(vecout); } MTestFreeComm(&comm); } /* Do a zero byte gather */ MPI_Allgather(MPI_IN_PLACE, -1, MPI_DATATYPE_NULL, NULL, 0, MPI_BYTE, MPI_COMM_WORLD); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/coll/redscat.c0000644000175000017500000000272612620254305017111 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * Test of reduce scatter. * * Each processor contributes its rank + the index to the reduction, * then receives the ith sum * * Can be called with any number of processors. */ #include "mpi.h" #include #include #include "mpicolltest.h" int main(int argc, char **argv) { int err = 0, toterr; int *sendbuf, recvbuf, *recvcounts; int size, rank, i, sumval; MPI_Comm comm; MPI_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_Comm_size(comm, &size); MPI_Comm_rank(comm, &rank); sendbuf = (int *) malloc(size * sizeof(int)); for (i = 0; i < size; i++) sendbuf[i] = rank + i; recvcounts = (int *) malloc(size * sizeof(int)); for (i = 0; i < size; i++) recvcounts[i] = 1; MTest_Reduce_scatter(sendbuf, &recvbuf, recvcounts, MPI_INT, MPI_SUM, comm); sumval = size * rank + ((size - 1) * size) / 2; /* recvbuf should be size * (rank + i) */ if (recvbuf != sumval) { err++; fprintf(stdout, "Did not get expected value for reduce scatter\n"); fprintf(stdout, "[%d] Got %d expected %d\n", rank, recvbuf, sumval); } MPI_Allreduce(&err, &toterr, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD); if (rank == 0 && toterr == 0) { printf(" No Errors\n"); } MPI_Finalize(); return toterr; } mpi-testsuite-3.2+dfsg/coll/coll11.c0000644000175000017500000000551112620254305016552 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" void addem(int *, int *, int *, MPI_Datatype *); void assoc(int *, int *, int *, MPI_Datatype *); void addem(int *invec, int *inoutvec, int *len, MPI_Datatype * dtype) { int i; for (i = 0; i < *len; i++) inoutvec[i] += invec[i]; } #define BAD_ANSWER 100000 /* The operation is inoutvec[i] = invec[i] op inoutvec[i] (see 4.9.4). The order is important. Note that the computation is in process rank (in the communicator) order, independant of the root. */ void assoc(int *invec, int *inoutvec, int *len, MPI_Datatype * dtype) { int i; for (i = 0; i < *len; i++) { if (inoutvec[i] <= invec[i]) { int rank; MPI_Comm_rank(MPI_COMM_WORLD, &rank); fprintf(stderr, "[%d] inout[0] = %d, in[0] = %d\n", rank, inoutvec[0], invec[0]); inoutvec[i] = BAD_ANSWER; } else inoutvec[i] = invec[i]; } } int main(int argc, char **argv) { int rank, size, i; int data; int errors = 0; int result = -100; int correct_result; MPI_Op op_assoc, op_addem; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); data = rank; correct_result = 0; for (i = 0; i <= rank; i++) correct_result += i; MPI_Scan(&data, &result, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD); if (result != correct_result) { fprintf(stderr, "[%d] Error suming ints with scan\n", rank); errors++; } MPI_Scan(&data, &result, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD); if (result != correct_result) { fprintf(stderr, "[%d] Error summing ints with scan (2)\n", rank); errors++; } data = rank; result = -100; MPI_Op_create((MPI_User_function *) assoc, 0, &op_assoc); MPI_Op_create((MPI_User_function *) addem, 1, &op_addem); MPI_Scan(&data, &result, 1, MPI_INT, op_addem, MPI_COMM_WORLD); if (result != correct_result) { fprintf(stderr, "[%d] Error summing ints with scan (userop)\n", rank); errors++; } MPI_Scan(&data, &result, 1, MPI_INT, op_addem, MPI_COMM_WORLD); if (result != correct_result) { fprintf(stderr, "[%d] Error summing ints with scan (userop2)\n", rank); errors++; } result = -100; data = rank; MPI_Scan(&data, &result, 1, MPI_INT, op_assoc, MPI_COMM_WORLD); if (result == BAD_ANSWER) { fprintf(stderr, "[%d] Error scanning with non-commutative op\n", rank); errors++; } MPI_Op_free(&op_assoc); MPI_Op_free(&op_addem); MTest_Finalize(errors); MPI_Finalize(); return MTestReturnValue(errors); } mpi-testsuite-3.2+dfsg/coll/coll10.c0000644000175000017500000000303512620254305016550 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" #define BAD_ANSWER 100000 int assoc(int *, int *, int *, MPI_Datatype *); /* The operation is inoutvec[i] = invec[i] op inoutvec[i] (see 4.9.4). The order is important. Note that the computation is in process rank (in the communicator) order, independant of the root. */ int assoc(int *invec, int *inoutvec, int *len, MPI_Datatype * dtype) { int i; for (i = 0; i < *len; i++) { if (inoutvec[i] <= invec[i]) { int rank; MPI_Comm_rank(MPI_COMM_WORLD, &rank); fprintf(stderr, "[%d] inout[0] = %d, in[0] = %d\n", rank, inoutvec[0], invec[0]); inoutvec[i] = BAD_ANSWER; } else inoutvec[i] = invec[i]; } return (1); } int main(int argc, char **argv) { int rank, size; int data; int errors = 0; int result = -100; MPI_Op op; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); data = rank; MPI_Op_create((MPI_User_function *) assoc, 0, &op); MPI_Reduce(&data, &result, 1, MPI_INT, op, size - 1, MPI_COMM_WORLD); MPI_Bcast(&result, 1, MPI_INT, size - 1, MPI_COMM_WORLD); MPI_Op_free(&op); if (result == BAD_ANSWER) errors++; MTest_Finalize(errors); MPI_Finalize(); return MTestReturnValue(errors); } mpi-testsuite-3.2+dfsg/checktests.in0000755000175000017500000000425612620254305017062 0ustar mbanckmbanck#! @PERL@ $debug = 1; $verbose = 1; $ignoreBogusOutput = 0; $filePattern = "runtests.*.status"; $testsPassed = 0; $testsFailed = 0; foreach $_ (@ARGV) { if (/^--?ignorebogus/) { $ignoreBogusOutput = 1; } else { print STDERR "checktests [ -ignorebogus ]\n"; exit(1); } } open( RESULTS, "ls -1 $filePattern |" ) || die "Cannot list directory using ls -1 $filePattern\n"; while () { chop; $statusFile = $_; $resultsFile = $statusFile; $resultsFile =~ s/\.status/.out/; if ($resultsFile =~ /runtests\.([0-9]+)\.out/) { $count = $1; } else { $count = -1; print STDERR "Unable to determine test number from $resultsFile!\n"; $testsFailed ++; next; } open (SFD, "<$statusFile" ); while () { chop; $testStatus = $_; } close (SFD); if (-s $resultsFile) { open (RFD, "<$resultsFile"); $runLine = ; $sawNoerrors = 0; # Successful output should contain ONLY the line No Errors while () { chop; $outLine = $_; if ($outLine =~ /^\s+No [Ee]rrors\s*$/) { $sawNoerrors = 1; } else { # To filter out output that may be added to STDOUT # by a badly behaved runtime system, you can either # add a specific filter here (preferred) or set the # -ignorebogus option (considered a workaround) # The following is an example that accepts certain # kinds of output once "No Errors" is seen. if ($sawNoerrors) { if ( /^Application [0-9]+ resources: utime .*/) { last; } } if (!$ignoreBogusOutput) { # Any extraneous output is an error $sawNoerrors = 0; } } } close (RFD); if ($sawNoerrors == 1 && $testStatus == 0) { $testsPassed ++; } else { # Test wrote No Errors but then exited with a non-zero status $testsFailed ++; # Output the errors if ($verbose) { print STDOUT "Test $count failed:\n"; print STDOUT "Test status: $testStatus\n"; print STDOUT "Test output:\n"; system ("cat $resultsFile" ); } } } else { print STDERR "No $resultsFile\n" if $debug; $testsFailed ++; } } print "Tests passed: $testsPassed; test failed: $testsFailed\n"; mpi-testsuite-3.2+dfsg/errors/0000755000175000017500000000000012621010232015662 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/errors/f90/0000755000175000017500000000000012621010233016261 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/errors/f90/Makefile.in0000644000175000017500000005213312621010233020332 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = errors/f90 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = testlist CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/testlist.in \ $(top_srcdir)/Makefile_f90.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F90 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f90/util/mtestf90.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist.in SUBDIRS = @iodir@ DIST_SUBDIRS = io all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f90.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign errors/f90/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign errors/f90/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f90.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): testlist: $(top_builddir)/config.status $(srcdir)/testlist.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic cscopelist-am ctags ctags-am \ distclean distclean-generic distclean-tags distdir dvi dvi-am \ html html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile $(top_builddir)/f90/util/mtestf90.o: $(top_srcdir)/f90/util/mtestf90.f90 (cd $(top_builddir)/f90/util && $(MAKE) mtestf90.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/errors/f90/Makefile.am0000644000175000017500000000036712620254305020334 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f90.mtest EXTRA_DIST = testlist.in SUBDIRS = @iodir@ DIST_SUBDIRS = io mpi-testsuite-3.2+dfsg/errors/f90/testlist.in0000644000175000017500000000001012620254305020464 0ustar mbanckmbanck@iodir@ mpi-testsuite-3.2+dfsg/errors/f90/io/0000755000175000017500000000000012621010233016670 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/errors/f90/io/uerrhandf90.f900000644000175000017500000001032112621010150021332 0ustar mbanckmbanck! This file created from test/mpi/errors/f77/io/uerrhandf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2013 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer (kind=MPI_ADDRESS_KIND) asize integer (kind=MPI_OFFSET_KIND) offset integer ierr, rank, i integer errs external comm_errh_fn, win_errh_fn, file_errh_fn integer comm_errh, win_errh, file_errh integer winbuf(2), winh, wdup, wdsize, sizeofint, id integer fh, status(MPI_STATUS_SIZE) common /ec/ iseen integer iseen(3) save /ec/ iseen(1) = 0 iseen(2) = 0 iseen(3) = 0 ierr = -1 errs = 0 call mtest_init( ierr ) call mpi_type_size( MPI_INTEGER, sizeofint, ierr ) call mpi_comm_create_errhandler( comm_errh_fn, comm_errh, ierr ) if (ierr .ne. MPI_SUCCESS) then call mtestprinterrormsg( "Comm_create_errhandler:", ierr ) errs = errs + 1 endif call mpi_win_create_errhandler( win_errh_fn, win_errh, ierr ) if (ierr .ne. MPI_SUCCESS) then call mtestprinterrormsg( "Win_create_errhandler:", ierr ) errs = errs + 1 endif call mpi_file_create_errhandler( file_errh_fn, file_errh, ierr ) if (ierr .ne. MPI_SUCCESS) then call mtestprinterrormsg( "File_create_errhandler:", ierr ) errs = errs + 1 endif ! call mpi_comm_dup( MPI_COMM_WORLD, wdup, ierr ) call mpi_comm_set_errhandler( wdup, comm_errh, ierr ) call mpi_comm_size( wdup, wdsize, ierr ) call mpi_send( id, 1, MPI_INTEGER, wdsize, -37, wdup, ierr ) if (ierr .eq. MPI_SUCCESS) then print *, ' Failed to detect error in use of MPI_SEND' errs = errs + 1 else if (iseen(1) .ne. 1) then errs = errs + 1 print *, ' Failed to increment comm error counter' endif endif asize = 2*sizeofint call mpi_win_create( winbuf, asize, sizeofint, MPI_INFO_NULL & & , wdup, winh, ierr ) if (ierr .ne. MPI_SUCCESS) then call mtestprinterrormsg( "Win_create:", ierr ) errs = errs + 1 endif call mpi_win_set_errhandler( winh, win_errh, ierr ) asize = 0 call mpi_put( winbuf, 1, MPI_INT, wdsize, asize, 1, MPI_INT, winh, & & ierr ) if (ierr .eq. MPI_SUCCESS) then print *, ' Failed to detect error in use of MPI_PUT' errs = errs + 1 else if (iseen(3) .ne. 1) then errs = errs + 1 print *, ' Failed to increment win error counter' endif endif call mpi_file_open( MPI_COMM_SELF, 'ftest', MPI_MODE_CREATE + & & MPI_MODE_RDWR + MPI_MODE_DELETE_ON_CLOSE, MPI_INFO_NULL, fh, & & ierr ) if (ierr .ne. MPI_SUCCESS) then call mtestprinterrormsg( "File_open:", ierr ) errs = errs + 1 endif call mpi_file_set_errhandler( fh, file_errh, ierr ) offset = -100 call mpi_file_read_at( fh, offset, winbuf, 1, MPI_INTEGER, status, & & ierr ) if (ierr .eq. MPI_SUCCESS) then print *, ' Failed to detect error in use of MPI_PUT' errs = errs + 1 else if (iseen(2) .ne. 1) then errs = errs + 1 print *, ' Failed to increment file error counter' endif endif call mpi_comm_free( wdup, ierr ) call mpi_win_free( winh, ierr ) call mpi_file_close( fh, ierr ) call mpi_errhandler_free( win_errh, ierr ) call mpi_errhandler_free( comm_errh, ierr ) call mpi_errhandler_free( file_errh, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end ! subroutine comm_errh_fn( comm, ec ) integer comm, ec common /ec/ iseen integer iseen(3) save /ec/ ! iseen(1) = iseen(1) + 1 ! end ! subroutine win_errh_fn( win, ec ) integer win, ec common /ec/ iseen integer iseen(3) save /ec/ ! iseen(3) = iseen(3) + 1 ! end subroutine file_errh_fn( fh, ec ) integer fh, ec common /ec/ iseen integer iseen(3) save /ec/ ! iseen(2) = iseen(2) + 1 ! end mpi-testsuite-3.2+dfsg/errors/f90/io/testlist0000644000175000017500000000006012621010150020460 0ustar mbanckmbanck# This file generated by f77tof90 uerrhandf90 1 mpi-testsuite-3.2+dfsg/errors/f90/io/Makefile.in0000644000175000017500000004577512621010233020757 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This Makefile.am generated automatically by f77tof90 # from test/mpi/errors/f77/io/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = uerrhandf90$(EXEEXT) @MAINTAINER_MODE_TRUE@am__append_1 = Makefile.am-stamp subdir = errors/f90/io ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) uerrhandf90_SOURCES = uerrhandf90.f90 uerrhandf90_OBJECTS = uerrhandf90.$(OBJEXT) uerrhandf90_LDADD = $(LDADD) uerrhandf90_DEPENDENCIES = $(top_builddir)/f90/util/mtestf90.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = SOURCES = uerrhandf90.f90 DIST_SOURCES = uerrhandf90.f90 am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_f90.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F90 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f90/util/mtestf90.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist $(am__append_1) AM_DEFAULT_SOURCE_EXT = .f90 @MAINTAINER_MODE_TRUE@MAINTAINERCLEANFILES = Makefile.am-stamp all: all-am .SUFFIXES: .SUFFIXES: .f90 .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f90.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign errors/f90/io/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign errors/f90/io/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f90.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) uerrhandf90$(EXEEXT): $(uerrhandf90_OBJECTS) $(uerrhandf90_DEPENDENCIES) $(EXTRA_uerrhandf90_DEPENDENCIES) @rm -f uerrhandf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(uerrhandf90_OBJECTS) $(uerrhandf90_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f90/util/mtestf90.o: $(top_srcdir)/f90/util/mtestf90.f90 (cd $(top_builddir)/f90/util && $(MAKE) mtestf90.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # f77tof90 only replaces output files if the contents differ, so we must use a # separate timestamp file in order avoid constantly trying to remake the f90 # copy of the Makefile when the f77 copy is updated in a way that does not # change its contents @MAINTAINER_MODE_TRUE@$(srcdir)/Makefile.am: $(srcdir)/Makefile.am-stamp @MAINTAINER_MODE_TRUE@$(srcdir)/Makefile.am-stamp: $(master_top_srcdir)/test/mpi/errors/f77/io/Makefile.am $(master_top_srcdir)/maint/f77tof90 @MAINTAINER_MODE_TRUE@ ( cd $(master_top_srcdir) && ./maint/f77tof90 test/mpi/errors/f77/io test/mpi/errors/f90/io Makefile.am Makefile.ap ) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/errors/f90/io/Makefile.am0000644000175000017500000000227312621010150020726 0ustar mbanckmbanck# This Makefile.am generated automatically by f77tof90 # from test/mpi/errors/f77/io/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f90.mtest EXTRA_DIST = testlist AM_DEFAULT_SOURCE_EXT = .f90 ## for all programs that are just built from the single corresponding source ## file, we don't need per-target _SOURCES rules, automake will infer them ## correctly noinst_PROGRAMS = uerrhandf90 if MAINTAINER_MODE # f77tof90 only replaces output files if the contents differ, so we must use a # separate timestamp file in order avoid constantly trying to remake the f90 # copy of the Makefile when the f77 copy is updated in a way that does not # change its contents $(srcdir)/Makefile.am: $(srcdir)/Makefile.am-stamp $(srcdir)/Makefile.am-stamp: $(master_top_srcdir)/test/mpi/errors/f77/io/Makefile.am $(master_top_srcdir)/maint/f77tof90 ( cd $(master_top_srcdir) && ./maint/f77tof90 test/mpi/errors/f77/io test/mpi/errors/f90/io Makefile.am Makefile.ap ) MAINTAINERCLEANFILES = Makefile.am-stamp EXTRA_DIST += Makefile.am-stamp endif MAINTAINER_MODE mpi-testsuite-3.2+dfsg/errors/f90/io/Makefile.am-stamp0000644000175000017500000000001212621010150022035 0ustar mbanckmbancktimestamp mpi-testsuite-3.2+dfsg/errors/datatype/0000755000175000017500000000000012621010233017476 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/errors/datatype/testlist0000644000175000017500000000001412620254305021300 0ustar mbanckmbanckgetcnterr 1 mpi-testsuite-3.2+dfsg/errors/datatype/Makefile.in0000644000175000017500000004651412621010233021555 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = getcnterr$(EXEEXT) subdir = errors/datatype ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) getcnterr_SOURCES = getcnterr.c getcnterr_OBJECTS = getcnterr.$(OBJEXT) getcnterr_LDADD = $(LDADD) getcnterr_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = getcnterr.c DIST_SOURCES = getcnterr.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.mtest \ $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign errors/datatype/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign errors/datatype/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) getcnterr$(EXEEXT): $(getcnterr_OBJECTS) $(getcnterr_DEPENDENCIES) $(EXTRA_getcnterr_DEPENDENCIES) @rm -f getcnterr$(EXEEXT) $(AM_V_CCLD)$(LINK) $(getcnterr_OBJECTS) $(getcnterr_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getcnterr.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/errors/datatype/Makefile.am0000644000175000017500000000061612620254305021546 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile.mtest EXTRA_DIST = testlist ## for all programs that are just built from the single corresponding source ## file, we don't need per-target _SOURCES rules, automake will infer them ## correctly noinst_PROGRAMS = getcnterr mpi-testsuite-3.2+dfsg/errors/datatype/getcnterr.c0000644000175000017500000000300512620254305021646 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2005 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include "mpi.h" #include "mpitest.h" int main(int argc, char *argv[]) { int i, count, err, errs = 0; MPI_Datatype type_ia; char omessage[256], imessage[256]; MPI_Status recvstatus, sendstatus; MPI_Request request; MTest_Init(&argc, &argv); MPI_Type_contiguous(4, MPI_DOUBLE_INT, &type_ia); MPI_Type_commit(&type_ia); for (i = 1; i < 256; i++) omessage[i] = i; MPI_Isend(omessage, 33, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &request); MPI_Recv(imessage, 33, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &recvstatus); MPI_Wait(&request, &sendstatus); /* In versions of MPICH through 1.0.7, this call would segfault on * some platforms (at least on BlueGene). On others, it would fail * to report an error. * It should return an error (it is invalid to use a different type * here than was used in the recv) or at least return MPI_UNDEFINED. * * If it returns MPI_UNDEFINED as the count, that will often be * acceptable. */ MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_RETURN); err = MPI_Get_elements(&recvstatus, type_ia, &count); if (err == MPI_SUCCESS && count != MPI_UNDEFINED) { errs++; printf("MPI_Get_elements did not report an error\n"); } MPI_Type_free(&type_ia); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/Makefile.in0000644000175000017500000005276512621010232017746 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = errors ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = testlist CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/testlist.in \ $(top_srcdir)/Makefile.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist.in # FIXME should "datatype" be included in this list? It was not in the # simplemake version for some reason and is also missing from the testlist # file static_subdirs = attr coll comm datatype group pt2pt rma topo basic faults all_lang_subdirs = cxx f77 f90 f08 SUBDIRS = $(static_subdirs) $(iodir) $(otherlangs) $(spawndir) DIST_SUBDIRS = $(static_subdirs) io $(all_lang_subdirs) spawn all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign errors/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign errors/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): testlist: $(top_builddir)/config.status $(srcdir)/testlist.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic cscopelist-am ctags ctags-am \ distclean distclean-generic distclean-tags distdir dvi dvi-am \ html html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/errors/f77/0000755000175000017500000000000012621010233016266 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/errors/f77/Makefile.in0000644000175000017500000005170212621010233020340 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = errors/f77 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = testlist CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/testlist.in \ $(top_srcdir)/Makefile_f77.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F77 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. LDADD = $(top_builddir)/f77/util/mtestf.o CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist.in SUBDIRS = @iodir@ DIST_SUBDIRS = io all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f77.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign errors/f77/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign errors/f77/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f77.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): testlist: $(top_builddir)/config.status $(srcdir)/testlist.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic cscopelist-am ctags ctags-am \ distclean distclean-generic distclean-tags distdir dvi dvi-am \ html html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile $(top_builddir)/f77/util/mtestf.o: $(top_srcdir)/f77/util/mtestf.f (cd $(top_builddir)/f77/util && $(MAKE) mtestf.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/errors/f77/Makefile.am0000644000175000017500000000037012620254305020333 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f77.mtest EXTRA_DIST = testlist.in SUBDIRS = @iodir@ DIST_SUBDIRS = io mpi-testsuite-3.2+dfsg/errors/f77/testlist.in0000644000175000017500000000001012620254305020471 0ustar mbanckmbanck@iodir@ mpi-testsuite-3.2+dfsg/errors/f77/io/0000755000175000017500000000000012621010233016675 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/errors/f77/io/testlist0000644000175000017500000000001412620254305020477 0ustar mbanckmbanckuerrhandf 1 mpi-testsuite-3.2+dfsg/errors/f77/io/Makefile.in0000644000175000017500000004431212621010233020746 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = uerrhandf$(EXEEXT) subdir = errors/f77/io ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = addsize.h iooffset.h CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) uerrhandf_SOURCES = uerrhandf.f uerrhandf_OBJECTS = uerrhandf.$(OBJEXT) uerrhandf_LDADD = $(LDADD) uerrhandf_DEPENDENCIES = $(top_builddir)/f77/util/mtestf.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include F77COMPILE = $(F77) $(AM_FFLAGS) $(FFLAGS) AM_V_F77 = $(am__v_F77_@AM_V@) am__v_F77_ = $(am__v_F77_@AM_DEFAULT_V@) am__v_F77_0 = @echo " F77 " $@; am__v_F77_1 = F77LD = $(F77) F77LINK = $(F77LD) $(AM_FFLAGS) $(FFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_F77LD = $(am__v_F77LD_@AM_V@) am__v_F77LD_ = $(am__v_F77LD_@AM_DEFAULT_V@) am__v_F77LD_0 = @echo " F77LD " $@; am__v_F77LD_1 = SOURCES = uerrhandf.f DIST_SOURCES = uerrhandf.f am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/addsize.h.in \ $(srcdir)/iooffset.h.in $(top_srcdir)/Makefile_f77.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F77 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. LDADD = $(top_builddir)/f77/util/mtestf.o CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist AM_DEFAULT_SOURCE_EXT = .f all: all-am .SUFFIXES: .SUFFIXES: .f .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f77.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign errors/f77/io/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign errors/f77/io/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f77.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): addsize.h: $(top_builddir)/config.status $(srcdir)/addsize.h.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ iooffset.h: $(top_builddir)/config.status $(srcdir)/iooffset.h.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) uerrhandf$(EXEEXT): $(uerrhandf_OBJECTS) $(uerrhandf_DEPENDENCIES) $(EXTRA_uerrhandf_DEPENDENCIES) @rm -f uerrhandf$(EXEEXT) $(AM_V_F77LD)$(F77LINK) $(uerrhandf_OBJECTS) $(uerrhandf_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .f.o: $(AM_V_F77)$(F77COMPILE) -c -o $@ $< .f.obj: $(AM_V_F77)$(F77COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f77/util/mtestf.o: $(top_srcdir)/f77/util/mtestf.f (cd $(top_builddir)/f77/util && $(MAKE) mtestf.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/errors/f77/io/Makefile.am0000644000175000017500000000065612620254305020751 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f77.mtest EXTRA_DIST = testlist AM_DEFAULT_SOURCE_EXT = .f ## for all programs that are just built from the single corresponding source ## file, we don't need per-target _SOURCES rules, automake will infer them ## correctly noinst_PROGRAMS = uerrhandf mpi-testsuite-3.2+dfsg/errors/f77/io/iooffset.h.in0000644000175000017500000000022712620254305021303 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C @F77_MPI_OFFSET@ offset mpi-testsuite-3.2+dfsg/errors/f77/io/uerrhandf.f0000644000175000017500000001016012620254305021031 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2013 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C program main implicit none include 'mpif.h' include 'addsize.h' include 'iooffset.h' integer ierr, rank, i integer errs external comm_errh_fn, win_errh_fn, file_errh_fn integer comm_errh, win_errh, file_errh integer winbuf(2), winh, wdup, wdsize, sizeofint, id integer fh, status(MPI_STATUS_SIZE) common /ec/ iseen integer iseen(3) save /ec/ iseen(1) = 0 iseen(2) = 0 iseen(3) = 0 ierr = -1 errs = 0 call mtest_init( ierr ) call mpi_type_size( MPI_INTEGER, sizeofint, ierr ) call mpi_comm_create_errhandler( comm_errh_fn, comm_errh, ierr ) if (ierr .ne. MPI_SUCCESS) then call mtestprinterrormsg( "Comm_create_errhandler:", ierr ) errs = errs + 1 endif call mpi_win_create_errhandler( win_errh_fn, win_errh, ierr ) if (ierr .ne. MPI_SUCCESS) then call mtestprinterrormsg( "Win_create_errhandler:", ierr ) errs = errs + 1 endif call mpi_file_create_errhandler( file_errh_fn, file_errh, ierr ) if (ierr .ne. MPI_SUCCESS) then call mtestprinterrormsg( "File_create_errhandler:", ierr ) errs = errs + 1 endif C call mpi_comm_dup( MPI_COMM_WORLD, wdup, ierr ) call mpi_comm_set_errhandler( wdup, comm_errh, ierr ) call mpi_comm_size( wdup, wdsize, ierr ) call mpi_send( id, 1, MPI_INTEGER, wdsize, -37, wdup, ierr ) if (ierr .eq. MPI_SUCCESS) then print *, ' Failed to detect error in use of MPI_SEND' errs = errs + 1 else if (iseen(1) .ne. 1) then errs = errs + 1 print *, ' Failed to increment comm error counter' endif endif asize = 2*sizeofint call mpi_win_create( winbuf, asize, sizeofint, MPI_INFO_NULL $ , wdup, winh, ierr ) if (ierr .ne. MPI_SUCCESS) then call mtestprinterrormsg( "Win_create:", ierr ) errs = errs + 1 endif call mpi_win_set_errhandler( winh, win_errh, ierr ) asize = 0 call mpi_put( winbuf, 1, MPI_INT, wdsize, asize, 1, MPI_INT, winh, $ ierr ) if (ierr .eq. MPI_SUCCESS) then print *, ' Failed to detect error in use of MPI_PUT' errs = errs + 1 else if (iseen(3) .ne. 1) then errs = errs + 1 print *, ' Failed to increment win error counter' endif endif call mpi_file_open( MPI_COMM_SELF, 'ftest', MPI_MODE_CREATE + $ MPI_MODE_RDWR + MPI_MODE_DELETE_ON_CLOSE, MPI_INFO_NULL, fh, $ ierr ) if (ierr .ne. MPI_SUCCESS) then call mtestprinterrormsg( "File_open:", ierr ) errs = errs + 1 endif call mpi_file_set_errhandler( fh, file_errh, ierr ) offset = -100 call mpi_file_read_at( fh, offset, winbuf, 1, MPI_INTEGER, status, $ ierr ) if (ierr .eq. MPI_SUCCESS) then print *, ' Failed to detect error in use of MPI_PUT' errs = errs + 1 else if (iseen(2) .ne. 1) then errs = errs + 1 print *, ' Failed to increment file error counter' endif endif call mpi_comm_free( wdup, ierr ) call mpi_win_free( winh, ierr ) call mpi_file_close( fh, ierr ) call mpi_errhandler_free( win_errh, ierr ) call mpi_errhandler_free( comm_errh, ierr ) call mpi_errhandler_free( file_errh, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end C subroutine comm_errh_fn( comm, ec ) integer comm, ec common /ec/ iseen integer iseen(3) save /ec/ C iseen(1) = iseen(1) + 1 C end C subroutine win_errh_fn( win, ec ) integer win, ec common /ec/ iseen integer iseen(3) save /ec/ C iseen(3) = iseen(3) + 1 C end subroutine file_errh_fn( fh, ec ) integer fh, ec common /ec/ iseen integer iseen(3) save /ec/ C iseen(2) = iseen(2) + 1 C end mpi-testsuite-3.2+dfsg/errors/f77/io/addsize.h.in0000644000175000017500000000022712620254305021110 0ustar mbanckmbanckC -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C @F77_MPI_ADDRESS@ asize mpi-testsuite-3.2+dfsg/errors/spawn/0000755000175000017500000000000012621010233017013 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/errors/spawn/Makefile.in0000644000175000017500000005075112621010233021070 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = badport$(EXEEXT) unpub$(EXEEXT) lookup_name$(EXEEXT) subdir = errors/spawn ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = testlist CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) badport_SOURCES = badport.c badport_OBJECTS = badport.$(OBJEXT) badport_LDADD = $(LDADD) badport_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o lookup_name_SOURCES = lookup_name.c lookup_name_OBJECTS = lookup_name.$(OBJEXT) lookup_name_LDADD = $(LDADD) lookup_name_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o unpub_SOURCES = unpub.c unpub_OBJECTS = unpub.$(OBJEXT) unpub_LDADD = $(LDADD) unpub_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = badport.c lookup_name.c unpub.c DIST_SOURCES = badport.c lookup_name.c unpub.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/testlist.in \ $(top_srcdir)/Makefile.mtest $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign errors/spawn/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign errors/spawn/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): testlist: $(top_builddir)/config.status $(srcdir)/testlist.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) badport$(EXEEXT): $(badport_OBJECTS) $(badport_DEPENDENCIES) $(EXTRA_badport_DEPENDENCIES) @rm -f badport$(EXEEXT) $(AM_V_CCLD)$(LINK) $(badport_OBJECTS) $(badport_LDADD) $(LIBS) lookup_name$(EXEEXT): $(lookup_name_OBJECTS) $(lookup_name_DEPENDENCIES) $(EXTRA_lookup_name_DEPENDENCIES) @rm -f lookup_name$(EXEEXT) $(AM_V_CCLD)$(LINK) $(lookup_name_OBJECTS) $(lookup_name_LDADD) $(LIBS) unpub$(EXEEXT): $(unpub_OBJECTS) $(unpub_DEPENDENCIES) $(EXTRA_unpub_DEPENDENCIES) @rm -f unpub$(EXEEXT) $(AM_V_CCLD)$(LINK) $(unpub_OBJECTS) $(unpub_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/badport.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lookup_name.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unpub.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/errors/spawn/Makefile.am0000644000175000017500000000063612620254305021065 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile.mtest EXTRA_DIST = testlist ## for all programs that are just built from the single corresponding source ## file, we don't need per-target _SOURCES rules, automake will infer them ## correctly noinst_PROGRAMS = badport unpub lookup_name mpi-testsuite-3.2+dfsg/errors/spawn/testlist.in0000644000175000017500000000007612620254305021232 0ustar mbanckmbanckbadport 2 @namepub_tests@unpub 1 @namepub_tests@lookup_name 1 mpi-testsuite-3.2+dfsg/errors/spawn/unpub.c0000644000175000017500000000170012620254305020317 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* calling MPI_Unpublish_name before calling MPI_Publish_name (a user error) would cause the process manager to die. This is added as a regression test so that it doesn't happen in the future. */ int main(int argc, char *argv[]) { int rc, errclass, errs = 0; char port_name[MPI_MAX_PORT_NAME], serv_name[256]; MTest_Init(&argc, &argv); strcpy(port_name, "otherhost:122"); strcpy(serv_name, "MyTest"); MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); rc = MPI_Unpublish_name(serv_name, MPI_INFO_NULL, port_name); MPI_Error_class(rc, &errclass); if (errclass != MPI_ERR_SERVICE) ++errs; MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/spawn/badport.c0000644000175000017500000000230512620254305020623 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2006 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* Set verbose to 1 to see the error message */ static int verbose = 0; int main(int argc, char *argv[]) { int ierr, errs = 0; MPI_Comm newcomm = MPI_COMM_NULL; MTest_Init(&argc, &argv); MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); ierr = MPI_Comm_connect((char *) "myhost:27", MPI_INFO_NULL, 0, MPI_COMM_WORLD, &newcomm); if (ierr == MPI_SUCCESS) { errs++; printf("Comm_connect returned success with bogus port\n"); MPI_Comm_free(&newcomm); } else { if (verbose) { char str[MPI_MAX_ERROR_STRING]; int slen; /* Check the message */ MPI_Error_string(ierr, str, &slen); printf("Error message is: %s\n", str); } if (newcomm != MPI_COMM_NULL) { errs++; printf("Comm_connect returned a communicator even with an error\n"); } } fflush(stdout); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/spawn/lookup_name.c0000644000175000017500000000143612620254305021505 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* calling lookup_name 15 times in a loop when the name has not been been published used to cause MPICH to crash. Adding this as a regression test */ int main(int argc, char *argv[]) { int errs = 0, i; char port_name[MPI_MAX_PORT_NAME], serv_name[256]; MTest_Init(&argc, &argv); strcpy(serv_name, "MyTest"); MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); for (i = 0; i < 20; i++) MPI_Lookup_name(serv_name, MPI_INFO_NULL, port_name); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/coll/0000755000175000017500000000000012621010233016614 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/errors/coll/reduce_local.c0000644000175000017500000000353212620254305021415 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2013 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* This test checks for proper error checking in MPI_Reduce_local, especially * handling of MPI_IN_PLACE and buffer aliasing. */ #include #include #include #include "mpi.h" #include "mpitest.h" /* quick cop-out for now */ #define check(c_) assert(c_) int main(int argc, char *argv[]) { int err, errs = 0, len, i, errclass; int rank = -1, size = -1; int *buf; int *recvbuf; char msg[MPI_MAX_ERROR_STRING]; MTest_Init(&argc, &argv); MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_RETURN); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); buf = malloc(size * sizeof(int)); recvbuf = malloc(size * sizeof(int)); for (i = 0; i < size; ++i) { buf[i] = i; recvbuf[i] = -1; } /* check valid reduce_local does not fail */ err = MPI_Reduce_local(buf, recvbuf, size, MPI_INT, MPI_SUM); check(err == MPI_SUCCESS); /* ERR: check inbuf==MPI_IN_PLACE */ err = MPI_Reduce_local(MPI_IN_PLACE, recvbuf, size, MPI_INT, MPI_SUM); check(err != MPI_SUCCESS); MPI_Error_class(err, &errclass); check(errclass == MPI_ERR_BUFFER); /* ERR: check inoutbuf==MPI_IN_PLACE */ err = MPI_Reduce_local(buf, MPI_IN_PLACE, size, MPI_INT, MPI_SUM); check(err != MPI_SUCCESS); MPI_Error_class(err, &errclass); check(errclass == MPI_ERR_BUFFER); /* ERR: check buffer aliasing is caught */ err = MPI_Reduce_local(recvbuf, recvbuf, size, MPI_INT, MPI_SUM); check(err != MPI_SUCCESS); MPI_Error_class(err, &errclass); check(errclass == MPI_ERR_BUFFER); free(recvbuf); free(buf); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/coll/noalias3.c0000644000175000017500000001150212620254305020501 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2010 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* This is a very weak sanity test that all nonblocking collectives specified by * MPI-3 are present in the library and take arguments as expected. This test * does not check for progress, matching issues, or sensible output buffer * values. */ #include "mpi.h" #include #include #include "mpitest.h" #define NUM_INTS (2) #define my_assert(cond_) \ do { \ if (!(cond_)) { \ fprintf(stderr, "assertion (%s) failed, aborting\n", #cond_); \ MPI_Abort(MPI_COMM_WORLD, 1); \ } \ } while (0) int main(int argc, char **argv) { int errs = 0; int i; int rank, size; int *sbuf = NULL; int *rbuf = NULL; int *scounts = NULL; int *rcounts = NULL; int *sdispls = NULL; int *rdispls = NULL; int *types = NULL; MPI_Comm comm; MPI_Request req; /* intentionally not using MTest_Init/MTest_Finalize in order to make it * easy to take this test and use it as an NBC sanity test outside of the * MPICH test suite */ MPI_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_Comm_size(comm, &size); MPI_Comm_rank(comm, &rank); MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); /* enough space for every process to contribute at least NUM_INTS ints to any * collective operation */ sbuf = malloc(NUM_INTS * size * sizeof(int)); my_assert(sbuf); rbuf = malloc(NUM_INTS * size * sizeof(int)); my_assert(rbuf); scounts = malloc(size * sizeof(int)); my_assert(scounts); rcounts = malloc(size * sizeof(int)); my_assert(rcounts); sdispls = malloc(size * sizeof(int)); my_assert(sdispls); rdispls = malloc(size * sizeof(int)); my_assert(rdispls); types = malloc(size * sizeof(int)); my_assert(types); for (i = 0; i < size; ++i) { sbuf[2 * i] = i; sbuf[2 * i + 1] = i; rbuf[2 * i] = i; rbuf[2 * i + 1] = i; scounts[i] = NUM_INTS; rcounts[i] = NUM_INTS; sdispls[i] = i * NUM_INTS; rdispls[i] = i * NUM_INTS; types[i] = MPI_INT; } if (rank == 0 && MPI_SUCCESS == MPI_Igather(sbuf, NUM_INTS, MPI_INT, sbuf, NUM_INTS, MPI_INT, 0, comm, &req)) errs++; if (rank == 0 && MPI_SUCCESS == MPI_Igatherv(sbuf, NUM_INTS, MPI_INT, sbuf, rcounts, rdispls, MPI_INT, 0, comm, &req)) errs++; if (rank == 0 && MPI_SUCCESS == MPI_Iscatter(sbuf, NUM_INTS, MPI_INT, sbuf, NUM_INTS, MPI_INT, 0, comm, &req)) errs++; if (rank == 0 && MPI_SUCCESS == MPI_Iscatterv(sbuf, scounts, sdispls, MPI_INT, sbuf, NUM_INTS, MPI_INT, 0, comm, &req)) errs++; if (MPI_SUCCESS == MPI_Iallgather(&sbuf[rank], 1, MPI_INT, sbuf, 1, MPI_INT, comm, &req)) errs++; if (MPI_SUCCESS == MPI_Iallgatherv(&sbuf[rank * rcounts[rank]], rcounts[rank], MPI_INT, sbuf, rcounts, rdispls, MPI_INT, comm, &req)) errs++; if (MPI_SUCCESS == MPI_Ialltoall(sbuf, NUM_INTS, MPI_INT, sbuf, NUM_INTS, MPI_INT, comm, &req)) errs++; if (MPI_SUCCESS == MPI_Ialltoallv(sbuf, scounts, sdispls, MPI_INT, sbuf, scounts, sdispls, MPI_INT, comm, &req)) errs++; if (MPI_SUCCESS == MPI_Ialltoallw(sbuf, scounts, sdispls, types, sbuf, scounts, sdispls, types, comm, &req)) errs++; if (rank == 0 && MPI_SUCCESS == MPI_Ireduce(sbuf, sbuf, NUM_INTS, MPI_INT, MPI_SUM, 0, comm, &req)) errs++; if (MPI_SUCCESS == MPI_Iallreduce(sbuf, sbuf, NUM_INTS, MPI_INT, MPI_SUM, comm, &req)) errs++; if (MPI_SUCCESS == MPI_Ireduce_scatter(sbuf, sbuf, rcounts, MPI_INT, MPI_SUM, comm, &req)) errs++; if (MPI_SUCCESS == MPI_Ireduce_scatter_block(sbuf, sbuf, NUM_INTS, MPI_INT, MPI_SUM, comm, &req)) errs++; if (MPI_SUCCESS == MPI_Iscan(sbuf, sbuf, NUM_INTS, MPI_INT, MPI_SUM, comm, &req)) errs++; if (MPI_SUCCESS == MPI_Iexscan(sbuf, sbuf, NUM_INTS, MPI_INT, MPI_SUM, comm, &req)) errs++; if (sbuf) free(sbuf); if (rbuf) free(rbuf); if (scounts) free(scounts); if (rcounts) free(rcounts); if (sdispls) free(sdispls); if (rdispls) free(rdispls); if (rank == 0) { if (errs) fprintf(stderr, "Found %d errors\n", errs); else printf(" No errors\n"); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/coll/testlist0000644000175000017500000000033112620254305020420 0ustar mbanckmbancknoalias 2 nb_noalias 2 mpiversion=3.0 xfail=ticket2301 noalias2 4 mpiversion=2.2 noalias3 4 mpiversion=3.0 rerr 2 nb_rerr 2 mpiversion=3.0 reduce_local 1 bcastlength 4 ibcastlength 4 mpiversion=3.0 xfail=ticket2300 mpi-testsuite-3.2+dfsg/errors/coll/Makefile.in0000644000175000017500000007275212621010233020676 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = noalias$(EXEEXT) noalias2$(EXEEXT) noalias3$(EXEEXT) \ rerr$(EXEEXT) bcastlength$(EXEEXT) reduce_local$(EXEEXT) \ nb_noalias$(EXEEXT) nb_rerr$(EXEEXT) ibcastlength$(EXEEXT) subdir = errors/coll ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) bcastlength_SOURCES = bcastlength.c bcastlength_OBJECTS = bcastlength.$(OBJEXT) bcastlength_LDADD = $(LDADD) bcastlength_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_ibcastlength_OBJECTS = ibcastlength-bcastlength.$(OBJEXT) ibcastlength_OBJECTS = $(am_ibcastlength_OBJECTS) ibcastlength_LDADD = $(LDADD) ibcastlength_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_nb_noalias_OBJECTS = nb_noalias-noalias.$(OBJEXT) nb_noalias_OBJECTS = $(am_nb_noalias_OBJECTS) nb_noalias_LDADD = $(LDADD) nb_noalias_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_nb_rerr_OBJECTS = nb_rerr-rerr.$(OBJEXT) nb_rerr_OBJECTS = $(am_nb_rerr_OBJECTS) nb_rerr_LDADD = $(LDADD) nb_rerr_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o noalias_SOURCES = noalias.c noalias_OBJECTS = noalias.$(OBJEXT) noalias_LDADD = $(LDADD) noalias_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o noalias2_SOURCES = noalias2.c noalias2_OBJECTS = noalias2.$(OBJEXT) noalias2_LDADD = $(LDADD) noalias2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o noalias3_SOURCES = noalias3.c noalias3_OBJECTS = noalias3.$(OBJEXT) noalias3_LDADD = $(LDADD) noalias3_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o reduce_local_SOURCES = reduce_local.c reduce_local_OBJECTS = reduce_local.$(OBJEXT) reduce_local_LDADD = $(LDADD) reduce_local_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o rerr_SOURCES = rerr.c rerr_OBJECTS = rerr.$(OBJEXT) rerr_LDADD = $(LDADD) rerr_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = bcastlength.c $(ibcastlength_SOURCES) $(nb_noalias_SOURCES) \ $(nb_rerr_SOURCES) noalias.c noalias2.c noalias3.c \ reduce_local.c rerr.c DIST_SOURCES = bcastlength.c $(ibcastlength_SOURCES) \ $(nb_noalias_SOURCES) $(nb_rerr_SOURCES) noalias.c noalias2.c \ noalias3.c reduce_local.c rerr.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.mtest \ $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist ibcastlength_SOURCES = bcastlength.c ibcastlength_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nb_noalias_SOURCES = noalias.c nb_noalias_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nb_rerr_SOURCES = rerr.c nb_rerr_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign errors/coll/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign errors/coll/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) bcastlength$(EXEEXT): $(bcastlength_OBJECTS) $(bcastlength_DEPENDENCIES) $(EXTRA_bcastlength_DEPENDENCIES) @rm -f bcastlength$(EXEEXT) $(AM_V_CCLD)$(LINK) $(bcastlength_OBJECTS) $(bcastlength_LDADD) $(LIBS) ibcastlength$(EXEEXT): $(ibcastlength_OBJECTS) $(ibcastlength_DEPENDENCIES) $(EXTRA_ibcastlength_DEPENDENCIES) @rm -f ibcastlength$(EXEEXT) $(AM_V_CCLD)$(LINK) $(ibcastlength_OBJECTS) $(ibcastlength_LDADD) $(LIBS) nb_noalias$(EXEEXT): $(nb_noalias_OBJECTS) $(nb_noalias_DEPENDENCIES) $(EXTRA_nb_noalias_DEPENDENCIES) @rm -f nb_noalias$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nb_noalias_OBJECTS) $(nb_noalias_LDADD) $(LIBS) nb_rerr$(EXEEXT): $(nb_rerr_OBJECTS) $(nb_rerr_DEPENDENCIES) $(EXTRA_nb_rerr_DEPENDENCIES) @rm -f nb_rerr$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nb_rerr_OBJECTS) $(nb_rerr_LDADD) $(LIBS) noalias$(EXEEXT): $(noalias_OBJECTS) $(noalias_DEPENDENCIES) $(EXTRA_noalias_DEPENDENCIES) @rm -f noalias$(EXEEXT) $(AM_V_CCLD)$(LINK) $(noalias_OBJECTS) $(noalias_LDADD) $(LIBS) noalias2$(EXEEXT): $(noalias2_OBJECTS) $(noalias2_DEPENDENCIES) $(EXTRA_noalias2_DEPENDENCIES) @rm -f noalias2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(noalias2_OBJECTS) $(noalias2_LDADD) $(LIBS) noalias3$(EXEEXT): $(noalias3_OBJECTS) $(noalias3_DEPENDENCIES) $(EXTRA_noalias3_DEPENDENCIES) @rm -f noalias3$(EXEEXT) $(AM_V_CCLD)$(LINK) $(noalias3_OBJECTS) $(noalias3_LDADD) $(LIBS) reduce_local$(EXEEXT): $(reduce_local_OBJECTS) $(reduce_local_DEPENDENCIES) $(EXTRA_reduce_local_DEPENDENCIES) @rm -f reduce_local$(EXEEXT) $(AM_V_CCLD)$(LINK) $(reduce_local_OBJECTS) $(reduce_local_LDADD) $(LIBS) rerr$(EXEEXT): $(rerr_OBJECTS) $(rerr_DEPENDENCIES) $(EXTRA_rerr_DEPENDENCIES) @rm -f rerr$(EXEEXT) $(AM_V_CCLD)$(LINK) $(rerr_OBJECTS) $(rerr_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bcastlength.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibcastlength-bcastlength.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nb_noalias-noalias.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nb_rerr-rerr.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/noalias.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/noalias2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/noalias3.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reduce_local.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rerr.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ibcastlength-bcastlength.o: bcastlength.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ibcastlength_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ibcastlength-bcastlength.o -MD -MP -MF $(DEPDIR)/ibcastlength-bcastlength.Tpo -c -o ibcastlength-bcastlength.o `test -f 'bcastlength.c' || echo '$(srcdir)/'`bcastlength.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibcastlength-bcastlength.Tpo $(DEPDIR)/ibcastlength-bcastlength.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='bcastlength.c' object='ibcastlength-bcastlength.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ibcastlength_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ibcastlength-bcastlength.o `test -f 'bcastlength.c' || echo '$(srcdir)/'`bcastlength.c ibcastlength-bcastlength.obj: bcastlength.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ibcastlength_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ibcastlength-bcastlength.obj -MD -MP -MF $(DEPDIR)/ibcastlength-bcastlength.Tpo -c -o ibcastlength-bcastlength.obj `if test -f 'bcastlength.c'; then $(CYGPATH_W) 'bcastlength.c'; else $(CYGPATH_W) '$(srcdir)/bcastlength.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibcastlength-bcastlength.Tpo $(DEPDIR)/ibcastlength-bcastlength.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='bcastlength.c' object='ibcastlength-bcastlength.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ibcastlength_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ibcastlength-bcastlength.obj `if test -f 'bcastlength.c'; then $(CYGPATH_W) 'bcastlength.c'; else $(CYGPATH_W) '$(srcdir)/bcastlength.c'; fi` nb_noalias-noalias.o: noalias.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nb_noalias_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nb_noalias-noalias.o -MD -MP -MF $(DEPDIR)/nb_noalias-noalias.Tpo -c -o nb_noalias-noalias.o `test -f 'noalias.c' || echo '$(srcdir)/'`noalias.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nb_noalias-noalias.Tpo $(DEPDIR)/nb_noalias-noalias.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='noalias.c' object='nb_noalias-noalias.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nb_noalias_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nb_noalias-noalias.o `test -f 'noalias.c' || echo '$(srcdir)/'`noalias.c nb_noalias-noalias.obj: noalias.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nb_noalias_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nb_noalias-noalias.obj -MD -MP -MF $(DEPDIR)/nb_noalias-noalias.Tpo -c -o nb_noalias-noalias.obj `if test -f 'noalias.c'; then $(CYGPATH_W) 'noalias.c'; else $(CYGPATH_W) '$(srcdir)/noalias.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nb_noalias-noalias.Tpo $(DEPDIR)/nb_noalias-noalias.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='noalias.c' object='nb_noalias-noalias.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nb_noalias_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nb_noalias-noalias.obj `if test -f 'noalias.c'; then $(CYGPATH_W) 'noalias.c'; else $(CYGPATH_W) '$(srcdir)/noalias.c'; fi` nb_rerr-rerr.o: rerr.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nb_rerr_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nb_rerr-rerr.o -MD -MP -MF $(DEPDIR)/nb_rerr-rerr.Tpo -c -o nb_rerr-rerr.o `test -f 'rerr.c' || echo '$(srcdir)/'`rerr.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nb_rerr-rerr.Tpo $(DEPDIR)/nb_rerr-rerr.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='rerr.c' object='nb_rerr-rerr.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nb_rerr_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nb_rerr-rerr.o `test -f 'rerr.c' || echo '$(srcdir)/'`rerr.c nb_rerr-rerr.obj: rerr.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nb_rerr_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nb_rerr-rerr.obj -MD -MP -MF $(DEPDIR)/nb_rerr-rerr.Tpo -c -o nb_rerr-rerr.obj `if test -f 'rerr.c'; then $(CYGPATH_W) 'rerr.c'; else $(CYGPATH_W) '$(srcdir)/rerr.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nb_rerr-rerr.Tpo $(DEPDIR)/nb_rerr-rerr.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='rerr.c' object='nb_rerr-rerr.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nb_rerr_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nb_rerr-rerr.obj `if test -f 'rerr.c'; then $(CYGPATH_W) 'rerr.c'; else $(CYGPATH_W) '$(srcdir)/rerr.c'; fi` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/errors/coll/noalias.c0000644000175000017500000001120412620254305020415 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include "mpi.h" #include "mpitest.h" #include "mpicolltest.h" int main(int argc, char *argv[]) { int err, errs = 0, len, i; int rank = -1, size = -1; int *buf; int *recvbuf; char msg[MPI_MAX_ERROR_STRING]; MTest_Init(&argc, &argv); MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_RETURN); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); buf = malloc(size * sizeof(int)); recvbuf = malloc(size * sizeof(int)); for (i = 0; i < size; ++i) { buf[i] = i; recvbuf[i] = -1; } err = MTest_Allreduce(buf, buf, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD); if (!err) { errs++; if (rank == 0) printf("Did not detect aliased arguments in MPI_Allreduce\n"); } else { /* Check that we can get a message for this error */ /* (This works if it does not SEGV or hang) */ MPI_Error_string(err, msg, &len); } /* This case is a bit stranger than the MPI_Allreduce case above, because * the recvbuf argument is only relevant at the root. So without an extra * communication step to return errors everywhere, it will be typical for * rank 0 (the root) to return an error and all other ranks will return * MPI_SUCCESS. In many implementations this can leave the non-root * processes hung or yield unmatched unexpected messages on the root. So we * do our best to carry on in this case by posting a second non-erroneous * MPI_Reduce on any process that got back an error from the intentionally * erroneous MPI_Reduce. */ err = MTest_Reduce(buf, ((rank == 0) ? buf : NULL), 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (rank == 0) { if (!err) { errs++; if (rank == 0) printf("Did not detect aliased arguments in MPI_Reduce\n"); } else { /* Check that we can get a message for this error */ /* (This works if it does not SEGV or hang) */ MPI_Error_string(err, msg, &len); } } if (err) { /* post a correct MPI_Reduce on any processes that got an error earlier */ err = MTest_Reduce(buf, recvbuf, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (err) { errs++; printf("make-up reduce failed on rank %d\n", rank); } } /* this case should _not_ trigger an error, thanks to Kenneth Inghram for * reporting this bug in MPICH */ err = MTest_Reduce(((rank == 0) ? MPI_IN_PLACE : buf), buf, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (err) { errs++; printf ("Incorrectly reported aliased arguments in MPI_Reduce with MPI_IN_PLACE on rank %d\n", rank); MPI_Abort(MPI_COMM_WORLD, 1); printf("FAILED TO MPI_ABORT!!!\n"); } /* check for aliasing detection in MPI_Gather (tt#1006) */ err = MTest_Gather(buf, 1, MPI_INT, buf, 1, MPI_INT, 0, MPI_COMM_WORLD); if (rank == 0) { if (!err) { errs++; printf("Did not detect aliased arguments in MPI_Gather\n"); } else { /* Check that we can get a message for this error */ /* (This works if it does not SEGV or hang) */ MPI_Error_string(err, msg, &len); } } if (err) { /* post a correct MPI_Gather on any processes that got an error earlier */ err = MTest_Gather(buf, 1, MPI_INT, recvbuf, 1, MPI_INT, 0, MPI_COMM_WORLD); if (err) { errs++; printf("make-up gather failed on rank %d\n", rank); } } /* check for aliasing detection in MPI_Scatter (tt#1006) */ err = MPI_Scatter(buf, 1, MPI_INT, buf, 1, MPI_INT, 0, MPI_COMM_WORLD); if (rank == 0) { if (!err) { errs++; printf("Did not detect aliased arguments in MPI_Scatter\n"); } else { /* Check that we can get a message for this error */ /* (This works if it does not SEGV or hang) */ MPI_Error_string(err, msg, &len); } } if (err) { /* post a correct MPI_Scatter on any processes that got an error earlier */ err = MPI_Scatter(buf, 1, MPI_INT, recvbuf, 1, MPI_INT, 0, MPI_COMM_WORLD); if (err) { errs++; printf("make-up scatter failed on rank %d\n", rank); } } free(recvbuf); free(buf); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/coll/bcastlength.c0000644000175000017500000000430212620254305021266 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2006 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include "mpi.h" #include "mpitest.h" #include "mpicolltest.h" /* Very simple test that Bcast handled mismatched lengths (while not a common user error, we've seen it several times, so good handling of this helps to reduce bug reports) */ int verbose = 0; int main(int argc, char *argv[]) { int buf[10], ierr, errs = 0; int rank; char str[MPI_MAX_ERROR_STRING + 1]; int slen; MTest_Init(&argc, &argv); MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_RETURN); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (rank == 0) { ierr = MTest_Bcast(buf, 1, MPI_INT, 0, MPI_COMM_WORLD); } else { ierr = MTest_Bcast(buf, 10, MPI_INT, 0, MPI_COMM_WORLD); } if (ierr == MPI_SUCCESS) { if (rank != 0) { /* The root process may not detect that a too-long buffer * was provided by the non-root processes, but those processes * should detect this. */ errs++; printf("Did not detect mismatched length (long) on process %d\n", rank); } } else { if (verbose) { MPI_Error_string(ierr, str, &slen); printf("Found expected error; message is: %s\n", str); } } if (rank == 0) { ierr = MTest_Bcast(buf, 10, MPI_INT, 0, MPI_COMM_WORLD); } else { ierr = MTest_Bcast(buf, 1, MPI_INT, 0, MPI_COMM_WORLD); } if (ierr == MPI_SUCCESS) { if (rank != 0) { /* The root process may not detect that a too-short buffer * was provided by the non-root processes, but those processes * should detect this. */ errs++; printf("Did not detect mismatched length (short) on process %d\n", rank); } } else { if (verbose) { MPI_Error_string(ierr, str, &slen); printf("Found expected error; message is: %s\n", str); } } MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_ARE_FATAL); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/coll/Makefile.am0000644000175000017500000000133212620254305020660 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile.mtest EXTRA_DIST = testlist ## for all programs that are just built from the single corresponding source ## file, we don't need per-target _SOURCES rules, automake will infer them ## correctly noinst_PROGRAMS = noalias noalias2 noalias3 rerr bcastlength reduce_local nb_noalias nb_rerr ibcastlength ibcastlength_SOURCES = bcastlength.c ibcastlength_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nb_noalias_SOURCES = noalias.c nb_noalias_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) nb_rerr_SOURCES = rerr.c nb_rerr_CPPFLAGS = -DUSE_MTEST_NBC $(AM_CPPFLAGS) mpi-testsuite-3.2+dfsg/errors/coll/rerr.c0000644000175000017500000000204112620254305017740 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include "mpi.h" #include "mpitest.h" #include "mpicolltest.h" /* Very simple test that Allreduce detects invalid (datatype,operation) pair */ int verbose = 0; int main(int argc, char *argv[]) { int a, b, ierr, errs = 0; char str[MPI_MAX_ERROR_STRING + 1]; int slen; MTest_Init(&argc, &argv); MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_RETURN); ierr = MTest_Reduce(&a, &b, 1, MPI_BYTE, MPI_MAX, 0, MPI_COMM_WORLD); if (ierr == MPI_SUCCESS) { errs++; printf("Did not detect invalid type/op pair (byte,max) in Allreduce\n"); } else { if (verbose) { MPI_Error_string(ierr, str, &slen); printf("Found expected error; message is: %s\n", str); } } MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_ARE_FATAL); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/coll/noalias2.c0000644000175000017500000001123412620254305020502 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* This is a very weak sanity test that all nonblocking collectives specified by * MPI-3 are present in the library and take arguments as expected. This test * does not check for progress, matching issues, or sensible output buffer * values. */ #include "mpi.h" #include #include #include "mpitest.h" #define NUM_INTS (2) #define my_assert(cond_) \ do { \ if (!(cond_)) { \ fprintf(stderr, "assertion (%s) failed, aborting\n", #cond_); \ MPI_Abort(MPI_COMM_WORLD, 1); \ } \ } while (0) int main(int argc, char **argv) { int errs = 0; int i; int rank, size; int *sbuf = NULL; int *rbuf = NULL; int *scounts = NULL; int *rcounts = NULL; int *sdispls = NULL; int *rdispls = NULL; int *types = NULL; MPI_Comm comm; /* intentionally not using MTest_Init/MTest_Finalize in order to make it * easy to take this test and use it as an NBC sanity test outside of the * MPICH test suite */ MPI_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_Comm_size(comm, &size); MPI_Comm_rank(comm, &rank); MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); /* enough space for every process to contribute at least NUM_INTS ints to any * collective operation */ sbuf = malloc(NUM_INTS * size * sizeof(int)); my_assert(sbuf); rbuf = malloc(NUM_INTS * size * sizeof(int)); my_assert(rbuf); scounts = malloc(size * sizeof(int)); my_assert(scounts); rcounts = malloc(size * sizeof(int)); my_assert(rcounts); sdispls = malloc(size * sizeof(int)); my_assert(sdispls); rdispls = malloc(size * sizeof(int)); my_assert(rdispls); types = malloc(size * sizeof(int)); my_assert(types); for (i = 0; i < size; ++i) { sbuf[2 * i] = i; sbuf[2 * i + 1] = i; rbuf[2 * i] = i; rbuf[2 * i + 1] = i; scounts[i] = NUM_INTS; rcounts[i] = NUM_INTS; sdispls[i] = i * NUM_INTS; rdispls[i] = i * NUM_INTS; types[i] = MPI_INT; } if (rank == 0 && MPI_SUCCESS == MPI_Gather(sbuf, NUM_INTS, MPI_INT, sbuf, NUM_INTS, MPI_INT, 0, comm)) errs++; if (rank == 0 && MPI_SUCCESS == MPI_Gatherv(sbuf, NUM_INTS, MPI_INT, sbuf, rcounts, rdispls, MPI_INT, 0, comm)) errs++; if (rank == 0 && MPI_SUCCESS == MPI_Scatter(sbuf, NUM_INTS, MPI_INT, sbuf, NUM_INTS, MPI_INT, 0, comm)) errs++; if (rank == 0 && MPI_SUCCESS == MPI_Scatterv(sbuf, scounts, sdispls, MPI_INT, sbuf, NUM_INTS, MPI_INT, 0, comm)) errs++; if (MPI_SUCCESS == MPI_Allgather(&sbuf[rank], 1, MPI_INT, sbuf, 1, MPI_INT, comm)) errs++; if (MPI_SUCCESS == MPI_Allgatherv(&sbuf[rank * rcounts[rank]], rcounts[rank], MPI_INT, sbuf, rcounts, rdispls, MPI_INT, comm)) errs++; if (MPI_SUCCESS == MPI_Alltoall(sbuf, NUM_INTS, MPI_INT, sbuf, NUM_INTS, MPI_INT, comm)) errs++; if (MPI_SUCCESS == MPI_Alltoallv(sbuf, scounts, sdispls, MPI_INT, sbuf, scounts, sdispls, MPI_INT, comm)) errs++; if (MPI_SUCCESS == MPI_Alltoallw(sbuf, scounts, sdispls, types, sbuf, scounts, sdispls, types, comm)) errs++; if (rank == 0 && MPI_SUCCESS == MPI_Reduce(sbuf, sbuf, NUM_INTS, MPI_INT, MPI_SUM, 0, comm)) errs++; if (MPI_SUCCESS == MPI_Allreduce(sbuf, sbuf, NUM_INTS, MPI_INT, MPI_SUM, comm)) errs++; if (MPI_SUCCESS == MPI_Reduce_scatter(sbuf, sbuf, rcounts, MPI_INT, MPI_SUM, comm)) errs++; if (MPI_SUCCESS == MPI_Reduce_scatter_block(sbuf, sbuf, NUM_INTS, MPI_INT, MPI_SUM, comm)) errs++; if (MPI_SUCCESS == MPI_Scan(sbuf, sbuf, NUM_INTS, MPI_INT, MPI_SUM, comm)) errs++; if (MPI_SUCCESS == MPI_Exscan(sbuf, sbuf, NUM_INTS, MPI_INT, MPI_SUM, comm)) errs++; if (sbuf) free(sbuf); if (rbuf) free(rbuf); if (scounts) free(scounts); if (rcounts) free(rcounts); if (sdispls) free(sdispls); if (rdispls) free(rdispls); if (rank == 0) { if (errs) fprintf(stderr, "Found %d errors\n", errs); else printf(" No errors\n"); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/attr/0000755000175000017500000000000012621010232016634 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/errors/attr/testlist0000644000175000017500000000001412620254305020437 0ustar mbanckmbanckkeyvalmis 1 mpi-testsuite-3.2+dfsg/errors/attr/Makefile.in0000644000175000017500000004650012621010232020706 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = keyvalmis$(EXEEXT) subdir = errors/attr ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) keyvalmis_SOURCES = keyvalmis.c keyvalmis_OBJECTS = keyvalmis.$(OBJEXT) keyvalmis_LDADD = $(LDADD) keyvalmis_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = keyvalmis.c DIST_SOURCES = keyvalmis.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.mtest \ $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign errors/attr/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign errors/attr/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) keyvalmis$(EXEEXT): $(keyvalmis_OBJECTS) $(keyvalmis_DEPENDENCIES) $(EXTRA_keyvalmis_DEPENDENCIES) @rm -f keyvalmis$(EXEEXT) $(AM_V_CCLD)$(LINK) $(keyvalmis_OBJECTS) $(keyvalmis_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keyvalmis.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/errors/attr/Makefile.am0000644000175000017500000000061612620254305020705 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile.mtest EXTRA_DIST = testlist ## for all programs that are just built from the single corresponding source ## file, we don't need per-target _SOURCES rules, automake will infer them ## correctly noinst_PROGRAMS = keyvalmis mpi-testsuite-3.2+dfsg/errors/attr/keyvalmis.c0000644000175000017500000001067112620254305021023 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2008 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include "mpi.h" #include "mpitest.h" /* * Test for detecting that a Keyval created for one MPI Object cannot be used * to set an attribute on a different type of object */ int main(int argc, char *argv[]) { int comm_keyval, win_keyval, type_keyval; int comm_aval; int err, errs = 0; int buf, flag; MPI_Win win; void *rval; MPI_Datatype dtype; MTest_Init(&argc, &argv); MPI_Comm_create_keyval(MPI_COMM_NULL_COPY_FN, MPI_COMM_NULL_DELETE_FN, &comm_keyval, 0); MPI_Win_create_keyval(MPI_WIN_NULL_COPY_FN, MPI_WIN_NULL_DELETE_FN, &win_keyval, 0); MPI_Type_create_keyval(MPI_TYPE_NULL_COPY_FN, MPI_TYPE_NULL_DELETE_FN, &type_keyval, 0); MPI_Type_contiguous(4, MPI_DOUBLE, &dtype); MPI_Win_create(&buf, sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &win); MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_RETURN); err = MPI_Comm_set_attr(MPI_COMM_WORLD, win_keyval, &comm_aval); if (err == MPI_SUCCESS) { errs++; fprintf(stderr, "Comm_set_attr accepted win keyval\n"); } err = MPI_Comm_set_attr(MPI_COMM_WORLD, type_keyval, &comm_aval); if (err == MPI_SUCCESS) { errs++; fprintf(stderr, "Comm_set_attr accepted type keyval\n"); } err = MPI_Type_set_attr(dtype, win_keyval, &comm_aval); if (err == MPI_SUCCESS) { errs++; fprintf(stderr, "Type_set_attr accepted win keyval\n"); } err = MPI_Type_set_attr(dtype, comm_keyval, &comm_aval); if (err == MPI_SUCCESS) { errs++; fprintf(stderr, "Comm_set_attr accepted type keyval\n"); } err = MPI_Win_set_attr(win, comm_keyval, &comm_aval); if (err == MPI_SUCCESS) { errs++; fprintf(stderr, "Win_set_attr accepted comm keyval\n"); } err = MPI_Win_set_attr(win, type_keyval, &comm_aval); if (err == MPI_SUCCESS) { errs++; fprintf(stderr, "Win_set_attr accepted type keyval\n"); } err = MPI_Comm_get_attr(MPI_COMM_WORLD, win_keyval, &rval, &flag); if (err == MPI_SUCCESS) { errs++; fprintf(stderr, "Comm_get_attr accepted win keyval\n"); } err = MPI_Comm_get_attr(MPI_COMM_WORLD, type_keyval, &rval, &flag); if (err == MPI_SUCCESS) { errs++; fprintf(stderr, "Comm_get_attr accepted type keyval\n"); } err = MPI_Comm_free_keyval(&win_keyval); if (err == MPI_SUCCESS) { errs++; fprintf(stderr, "Comm_free_keyval accepted win keyval\n"); } err = MPI_Comm_free_keyval(&type_keyval); if (err == MPI_SUCCESS) { errs++; fprintf(stderr, "Comm_free_keyval accepted type keyval\n"); } if (win_keyval != MPI_KEYVAL_INVALID) { err = MPI_Type_free_keyval(&win_keyval); if (err == MPI_SUCCESS) { errs++; fprintf(stderr, "Type_free_keyval accepted win keyval\n"); } } err = MPI_Type_free_keyval(&comm_keyval); if (err == MPI_SUCCESS) { errs++; fprintf(stderr, "Type_free_keyval accepted comm keyval\n"); } if (type_keyval != MPI_KEYVAL_INVALID) { err = MPI_Win_free_keyval(&type_keyval); if (err == MPI_SUCCESS) { errs++; fprintf(stderr, "Win_free_keyval accepted type keyval\n"); } } if (comm_keyval != MPI_KEYVAL_INVALID) { err = MPI_Win_free_keyval(&comm_keyval); if (err == MPI_SUCCESS) { errs++; fprintf(stderr, "Win_free_keyval accepted comm keyval\n"); } } /* Now, free for real */ if (comm_keyval != MPI_KEYVAL_INVALID) { err = MPI_Comm_free_keyval(&comm_keyval); if (err != MPI_SUCCESS) { errs++; fprintf(stderr, "Could not free comm keyval\n"); } } if (type_keyval != MPI_KEYVAL_INVALID) { err = MPI_Type_free_keyval(&type_keyval); if (err != MPI_SUCCESS) { errs++; fprintf(stderr, "Could not free type keyval\n"); } } if (win_keyval != MPI_KEYVAL_INVALID) { err = MPI_Win_free_keyval(&win_keyval); if (err != MPI_SUCCESS) { errs++; fprintf(stderr, "Could not free win keyval\n"); } } MPI_Win_free(&win); MPI_Type_free(&dtype); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/Makefile.am0000644000175000017500000000112312620254305017725 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile.mtest EXTRA_DIST = testlist.in # FIXME should "datatype" be included in this list? It was not in the # simplemake version for some reason and is also missing from the testlist # file static_subdirs = attr coll comm datatype group pt2pt rma topo basic faults all_lang_subdirs = cxx f77 f90 f08 SUBDIRS = $(static_subdirs) $(iodir) $(otherlangs) $(spawndir) DIST_SUBDIRS = $(static_subdirs) io $(all_lang_subdirs) spawn mpi-testsuite-3.2+dfsg/errors/comm/0000755000175000017500000000000012621010233016616 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/errors/comm/testlist0000644000175000017500000000030412620254305020422 0ustar mbanckmbanckcfree 4 ccreate1 8 userdup 4 manysplit 4 too_many_comms 4 strict=FALSE too_many_icomms 4 strict=FALSE too_many_comms2 4 strict=FALSE too_many_comms3 4 strict=FALSE too_many_icomms2 4 strict=FALSE mpi-testsuite-3.2+dfsg/errors/comm/Makefile.in0000644000175000017500000006003412621010233020666 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = cfree$(EXEEXT) ccreate1$(EXEEXT) manysplit$(EXEEXT) \ userdup$(EXEEXT) too_many_comms$(EXEEXT) \ too_many_comms2$(EXEEXT) too_many_comms3$(EXEEXT) \ too_many_icomms$(EXEEXT) too_many_icomms2$(EXEEXT) subdir = errors/comm ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) ccreate1_SOURCES = ccreate1.c ccreate1_OBJECTS = ccreate1.$(OBJEXT) ccreate1_LDADD = $(LDADD) ccreate1_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o cfree_SOURCES = cfree.c cfree_OBJECTS = cfree.$(OBJEXT) cfree_LDADD = $(LDADD) cfree_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o manysplit_SOURCES = manysplit.c manysplit_OBJECTS = manysplit.$(OBJEXT) manysplit_LDADD = $(LDADD) manysplit_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o too_many_comms_SOURCES = too_many_comms.c too_many_comms_OBJECTS = too_many_comms.$(OBJEXT) too_many_comms_LDADD = $(LDADD) too_many_comms_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o too_many_comms2_SOURCES = too_many_comms2.c too_many_comms2_OBJECTS = too_many_comms2.$(OBJEXT) too_many_comms2_LDADD = $(LDADD) too_many_comms2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o too_many_comms3_SOURCES = too_many_comms3.c too_many_comms3_OBJECTS = too_many_comms3.$(OBJEXT) too_many_comms3_LDADD = $(LDADD) too_many_comms3_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o too_many_icomms_SOURCES = too_many_icomms.c too_many_icomms_OBJECTS = too_many_icomms.$(OBJEXT) too_many_icomms_LDADD = $(LDADD) too_many_icomms_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o too_many_icomms2_SOURCES = too_many_icomms2.c too_many_icomms2_OBJECTS = too_many_icomms2.$(OBJEXT) too_many_icomms2_LDADD = $(LDADD) too_many_icomms2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o userdup_SOURCES = userdup.c userdup_OBJECTS = userdup.$(OBJEXT) userdup_LDADD = $(LDADD) userdup_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = ccreate1.c cfree.c manysplit.c too_many_comms.c \ too_many_comms2.c too_many_comms3.c too_many_icomms.c \ too_many_icomms2.c userdup.c DIST_SOURCES = ccreate1.c cfree.c manysplit.c too_many_comms.c \ too_many_comms2.c too_many_comms3.c too_many_icomms.c \ too_many_icomms2.c userdup.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.mtest \ $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign errors/comm/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign errors/comm/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) ccreate1$(EXEEXT): $(ccreate1_OBJECTS) $(ccreate1_DEPENDENCIES) $(EXTRA_ccreate1_DEPENDENCIES) @rm -f ccreate1$(EXEEXT) $(AM_V_CCLD)$(LINK) $(ccreate1_OBJECTS) $(ccreate1_LDADD) $(LIBS) cfree$(EXEEXT): $(cfree_OBJECTS) $(cfree_DEPENDENCIES) $(EXTRA_cfree_DEPENDENCIES) @rm -f cfree$(EXEEXT) $(AM_V_CCLD)$(LINK) $(cfree_OBJECTS) $(cfree_LDADD) $(LIBS) manysplit$(EXEEXT): $(manysplit_OBJECTS) $(manysplit_DEPENDENCIES) $(EXTRA_manysplit_DEPENDENCIES) @rm -f manysplit$(EXEEXT) $(AM_V_CCLD)$(LINK) $(manysplit_OBJECTS) $(manysplit_LDADD) $(LIBS) too_many_comms$(EXEEXT): $(too_many_comms_OBJECTS) $(too_many_comms_DEPENDENCIES) $(EXTRA_too_many_comms_DEPENDENCIES) @rm -f too_many_comms$(EXEEXT) $(AM_V_CCLD)$(LINK) $(too_many_comms_OBJECTS) $(too_many_comms_LDADD) $(LIBS) too_many_comms2$(EXEEXT): $(too_many_comms2_OBJECTS) $(too_many_comms2_DEPENDENCIES) $(EXTRA_too_many_comms2_DEPENDENCIES) @rm -f too_many_comms2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(too_many_comms2_OBJECTS) $(too_many_comms2_LDADD) $(LIBS) too_many_comms3$(EXEEXT): $(too_many_comms3_OBJECTS) $(too_many_comms3_DEPENDENCIES) $(EXTRA_too_many_comms3_DEPENDENCIES) @rm -f too_many_comms3$(EXEEXT) $(AM_V_CCLD)$(LINK) $(too_many_comms3_OBJECTS) $(too_many_comms3_LDADD) $(LIBS) too_many_icomms$(EXEEXT): $(too_many_icomms_OBJECTS) $(too_many_icomms_DEPENDENCIES) $(EXTRA_too_many_icomms_DEPENDENCIES) @rm -f too_many_icomms$(EXEEXT) $(AM_V_CCLD)$(LINK) $(too_many_icomms_OBJECTS) $(too_many_icomms_LDADD) $(LIBS) too_many_icomms2$(EXEEXT): $(too_many_icomms2_OBJECTS) $(too_many_icomms2_DEPENDENCIES) $(EXTRA_too_many_icomms2_DEPENDENCIES) @rm -f too_many_icomms2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(too_many_icomms2_OBJECTS) $(too_many_icomms2_LDADD) $(LIBS) userdup$(EXEEXT): $(userdup_OBJECTS) $(userdup_DEPENDENCIES) $(EXTRA_userdup_DEPENDENCIES) @rm -f userdup$(EXEEXT) $(AM_V_CCLD)$(LINK) $(userdup_OBJECTS) $(userdup_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ccreate1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cfree.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/manysplit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/too_many_comms.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/too_many_comms2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/too_many_comms3.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/too_many_icomms.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/too_many_icomms2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/userdup.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/errors/comm/ccreate1.c0000644000175000017500000001030512620254305020461 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2007 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* Check that Comm_create detects the case where the group is not a subset of the group of the input communicator */ void abortMsg(const char *, int); void abortMsg(const char *str, int code) { char msg[MPI_MAX_ERROR_STRING]; int class, resultLen; MPI_Error_class(code, &class); MPI_Error_string(code, msg, &resultLen); fprintf(stderr, "%s: errcode = %d, class = %d, msg = %s\n", str, code, class, msg); MPI_Abort(MPI_COMM_WORLD, code); } int main(int argc, char *argv[]) { MPI_Comm evencomm, lowcomm, newcomm; int wrank, wsize, gsize, err, errs = 0; int ranges[1][3], mygrank; MPI_Group wGroup, godd, ghigh, geven; MTest_Init(&argc, &argv); MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); MPI_Comm_size(MPI_COMM_WORLD, &wsize); MPI_Comm_rank(MPI_COMM_WORLD, &wrank); /* Create some communicators */ MPI_Comm_split(MPI_COMM_WORLD, wrank % 2, wrank, &evencomm); MPI_Comm_split(MPI_COMM_WORLD, wrank < wsize / 2, wsize - wrank, &lowcomm); MPI_Comm_set_errhandler(evencomm, MPI_ERRORS_RETURN); MPI_Comm_set_errhandler(lowcomm, MPI_ERRORS_RETURN); /* Create some groups */ MPI_Comm_group(MPI_COMM_WORLD, &wGroup); ranges[0][0] = 2 * (wsize / 2) - 1; ranges[0][1] = 1; ranges[0][2] = -2; err = MPI_Group_range_incl(wGroup, 1, ranges, &godd); if (err) abortMsg("Failed to create odd group: ", err); err = MPI_Group_size(godd, &gsize); if (err) abortMsg("Failed to get size of odd group: ", err); if (gsize != wsize / 2) { fprintf(stderr, "Group godd size is %d should be %d\n", gsize, wsize / 2); errs++; } ranges[0][0] = wsize / 4; ranges[0][1] = wsize - 1; ranges[0][2] = 1; err = MPI_Group_range_incl(wGroup, 1, ranges, &ghigh); if (err) abortMsg("Failed to create high group\n", err); ranges[0][0] = 0; ranges[0][1] = wsize - 1; ranges[0][2] = 2; err = MPI_Group_range_incl(wGroup, 1, ranges, &geven); if (err) abortMsg("Failed to create even group:", err); /* Check that a correct case returns success */ if ((wrank % 2) == 0) { err = MPI_Group_rank(geven, &mygrank); if (err) { errs++; fprintf(stderr, "Could not get rank from geven group\n"); } else if (mygrank == MPI_UNDEFINED) { errs++; fprintf(stderr, "mygrank should be %d but is undefined\n", wrank / 2); } err = MPI_Comm_create(evencomm, geven, &newcomm); /* printf("Created new even comm\n"); */ if (err != MPI_SUCCESS) { errs++; fprintf(stderr, "Failed to allow creation from even group\n"); } else { MPI_Comm_free(&newcomm); } } /* Now, test that these return errors when we try to use them to create * groups */ if ((wrank % 2) == 0) { /* printf("Even comm...\n"); */ /* evencomm is the comm of even-ranked processed in comm world */ err = MPI_Comm_create(evencomm, godd, &newcomm); MPI_Group_rank(godd, &mygrank); if (err == MPI_SUCCESS) { if (mygrank != MPI_UNDEFINED) { errs++; fprintf(stderr, "Did not detect group of odd ranks in even comm\n"); } MPI_Comm_free(&newcomm); } } if (wrank < wsize / 2) { /* printf("low comm...\n"); */ err = MPI_Comm_create(lowcomm, ghigh, &newcomm); MPI_Group_rank(ghigh, &mygrank); if (err == MPI_SUCCESS) { if (mygrank != MPI_UNDEFINED) { errs++; fprintf(stderr, "Did not detect group of high ranks in low comm\n"); } MPI_Comm_free(&newcomm); } } MPI_Comm_free(&lowcomm); MPI_Comm_free(&evencomm); MPI_Group_free(&ghigh); MPI_Group_free(&godd); MPI_Group_free(&geven); MPI_Group_free(&wGroup); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/comm/Makefile.am0000644000175000017500000000076512620254305020673 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile.mtest EXTRA_DIST = testlist ## for all programs that are just built from the single corresponding source ## file, we don't need per-target _SOURCES rules, automake will infer them ## correctly noinst_PROGRAMS = cfree ccreate1 manysplit userdup too_many_comms too_many_comms2 too_many_comms3 too_many_icomms too_many_icomms2 mpi-testsuite-3.2+dfsg/errors/comm/too_many_comms3.c0000644000175000017500000000446212620254305022107 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* This test attempts to create a large number of communicators, in an effort * to exceed the number of communicators that the MPI implementation can * provide. It checks that the implementation detects this error correctly * handles it. */ /* In this version, we create communicators that contain ranks {0}, {0}, ..., * {P} from MPI_COMM_WORLD until we run out of context IDs. This test * fragments the context ID space, resulting in a context ID allocation that * fails because there is no common free ID, even though all processes have * unused context IDs. */ #include #include #include #include "mpitest.h" #define MAX_NCOMM 100000 static const int verbose = 0; int main(int argc, char **argv) { int rank, nproc, mpi_errno; int i, ncomm, *ranks; int errors = 1; MPI_Comm *comm_hdls; MPI_Group world_group; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Comm_group(MPI_COMM_WORLD, &world_group); MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); comm_hdls = malloc(sizeof(MPI_Comm) * MAX_NCOMM); ranks = malloc(sizeof(int) * nproc); ncomm = 0; for (i = 0; i < MAX_NCOMM; i++) { int incl = i % nproc; MPI_Group comm_group; /* Comms include ranks: 0; 1; 2; ...; 0; 1; ... */ MPI_Group_incl(world_group, 1, &incl, &comm_group); /* Note: the comms we create all contain one rank from MPI_COMM_WORLD */ mpi_errno = MPI_Comm_create(MPI_COMM_WORLD, comm_group, &comm_hdls[i]); if (mpi_errno == MPI_SUCCESS) { if (verbose) printf("%d: Created comm %d\n", rank, i); ncomm++; } else { if (verbose) printf("%d: Error creating comm %d\n", rank, i); MPI_Group_free(&comm_group); errors = 0; break; } MPI_Group_free(&comm_group); } for (i = 0; i < ncomm; i++) MPI_Comm_free(&comm_hdls[i]); free(comm_hdls); MPI_Group_free(&world_group); MTest_Finalize(errors); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/comm/manysplit.c0000644000175000017500000000261612620254305021020 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2007 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include "mpitest.h" /* Test that comm_split fails gracefully when the number of communicators is exhausted. Original version submitted by Paul Sack. */ #define MAX_COMMS 2000 /* Define VERBOSE to get an output line for every communicator */ /* #define VERBOSE 1 */ int main(int argc, char *argv[]) { int i, rank; int rc, maxcomm; int errs = 0; MPI_Comm comm[MAX_COMMS]; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_RETURN); maxcomm = -1; for (i = 0; i < MAX_COMMS; i++) { #ifdef VERBOSE if (rank == 0) { if (i % 20 == 0) { fprintf(stderr, "\n %d: ", i); fflush(stdout); } else { fprintf(stderr, "."); fflush(stdout); } } #endif rc = MPI_Comm_split(MPI_COMM_WORLD, 1, rank, &comm[i]); if (rc != MPI_SUCCESS) { break; } maxcomm = i; } for (i = 0; i <= maxcomm; i++) { MPI_Comm_free(&comm[i]); } /* If we complete, there are no errors */ MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/comm/too_many_comms2.c0000644000175000017500000000425512620254305022106 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* This test attempts to create a large number of communicators, in an effort * to exceed the number of communicators that the MPI implementation can * provide. It checks that the implementation detects this error correctly * handles it. */ /* In this version, we create communicators that contain ranks {0}, {0,1}, ..., * {0..P-1} from MPI_COMM_WORLD until we run out of context IDs. */ #include #include #include #include "mpitest.h" #define MAX_NCOMM 100000 static const int verbose = 0; int main(int argc, char **argv) { int rank, nproc, mpi_errno; int i, ncomm, *ranks; int errors = 1; MPI_Comm *comm_hdls; MPI_Group world_group; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Comm_group(MPI_COMM_WORLD, &world_group); MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); comm_hdls = malloc(sizeof(MPI_Comm) * MAX_NCOMM); ranks = malloc(sizeof(int) * nproc); for (i = 0; i < nproc; i++) ranks[i] = i; ncomm = 0; for (i = 0; i < MAX_NCOMM; i++) { MPI_Group comm_group; /* Comms include ranks: 0; 0,1; 0,1,2; ...; 0; 0,1; 0,1,2; ... */ MPI_Group_incl(world_group, (i + 1) % (nproc + 1), /* Adding 1 yields counts of 1..nproc */ ranks, &comm_group); /* Note: the comms we create are all varying subsets of MPI_COMM_WORLD */ mpi_errno = MPI_Comm_create(MPI_COMM_WORLD, comm_group, &comm_hdls[i]); if (mpi_errno == MPI_SUCCESS) { ncomm++; } else { if (verbose) printf("%d: Error creating comm %d\n", rank, i); MPI_Group_free(&comm_group); errors = 0; break; } MPI_Group_free(&comm_group); } for (i = 0; i < ncomm; i++) MPI_Comm_free(&comm_hdls[i]); free(comm_hdls); MPI_Group_free(&world_group); MTest_Finalize(errors); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/comm/cfree.c0000644000175000017500000000177312620254305020067 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* Check that freed communicators are detected */ int main(int argc, char *argv[]) { MPI_Comm dup, dupcopy; int errs = 0; int ierr; MTest_Init(&argc, &argv); MPI_Comm_dup(MPI_COMM_WORLD, &dup); MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_RETURN); dupcopy = dup; MPI_Comm_free(&dupcopy); ierr = MPI_Barrier(dup); if (ierr == MPI_SUCCESS) { errs++; printf("Returned wrong code (SUCCESS) in barrier\n"); } { int in, *input = ∈ int out, *output = &out; ierr = MPI_Allgather(input, 1, MPI_INT, output, 1, MPI_INT, dup); } if (ierr == MPI_SUCCESS) { errs++; printf("Returned wrong code (SUCCESS) in allgather\n"); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/comm/too_many_icomms.c0000644000175000017500000000322212620254305022166 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* This test attempts to create a large number of communicators, in an effort * to exceed the number of communicators that the MPI implementation can * provide. It checks that the implementation detects this error correctly * handles it. */ /* In this version, we duplicate MPI_COMM_WORLD in a non-blocking * fashion until we run out of context IDs. */ #include #include #include #include "mpitest.h" #define MAX_NCOMM 100000 static const int verbose = 0; int main(int argc, char **argv) { int rank, nproc, mpi_errno; int i, ncomm; int errors = 1; MPI_Comm *comm_hdls; MPI_Request req; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); comm_hdls = malloc(sizeof(MPI_Comm) * MAX_NCOMM); ncomm = 0; for (i = 0; i < MAX_NCOMM; i++) { /* Note: the comms we create are all dups of MPI_COMM_WORLD */ MPI_Comm_idup(MPI_COMM_WORLD, &comm_hdls[i], &req); mpi_errno = MPI_Wait(&req,MPI_STATUSES_IGNORE); if (mpi_errno == MPI_SUCCESS) { ncomm++; } else { if (verbose) printf("%d: Error creating comm %d\n", rank, i); errors = 0; break; } } for (i = 0; i < ncomm; i++) MPI_Comm_free(&comm_hdls[i]); free(comm_hdls); MTest_Finalize(errors); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/comm/too_many_comms.c0000644000175000017500000000306012620254305022015 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* This test attempts to create a large number of communicators, in an effort * to exceed the number of communicators that the MPI implementation can * provide. It checks that the implementation detects this error correctly * handles it. */ /* In this version, we duplicate MPI_COMM_WORLD until we run out of context * IDs. */ #include #include #include #include "mpitest.h" #define MAX_NCOMM 100000 static const int verbose = 0; int main(int argc, char **argv) { int rank, nproc, mpi_errno; int i, ncomm; int errors = 1; MPI_Comm *comm_hdls; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); comm_hdls = malloc(sizeof(MPI_Comm) * MAX_NCOMM); ncomm = 0; for (i = 0; i < MAX_NCOMM; i++) { /* Note: the comms we create are all dups of MPI_COMM_WORLD */ mpi_errno = MPI_Comm_dup(MPI_COMM_WORLD, &comm_hdls[i]); if (mpi_errno == MPI_SUCCESS) { ncomm++; } else { if (verbose) printf("%d: Error creating comm %d\n", rank, i); errors = 0; break; } } for (i = 0; i < ncomm; i++) MPI_Comm_free(&comm_hdls[i]); free(comm_hdls); MTest_Finalize(errors); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/comm/too_many_icomms2.c0000644000175000017500000000551312620254305022255 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* This test attempts to create a large number of communicators, in an effort * to exceed the number of communicators that the MPI implementation can * provide. It checks that the implementation detects this error correctly * handles it. */ /* In this version, we duplicate MPI_COMM_WORLD in a non-blocking * fashion until we run out of context IDs. */ #include #include #include #include "mpitest.h" #define MAX_NCOMM 100000 #define WAIT_COMM 7 static const int verbose = 0; int main(int argc, char **argv) { int rank, nproc, mpi_errno; int i, j, ncomm, block; int errors = 1; MPI_Comm *comm_hdls; MPI_Request req[WAIT_COMM]; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); MPI_Status error_status[WAIT_COMM]; comm_hdls = malloc(sizeof(MPI_Comm) * MAX_NCOMM); ncomm = 0; block = 0; for (i = 0; i < MAX_NCOMM; i++) { /* Note: the comms we create are all dups of MPI_COMM_WORLD */ MPI_Comm_idup(MPI_COMM_WORLD, &comm_hdls[i], &req[block++]); if(block == WAIT_COMM ){ mpi_errno = MPI_Waitall(block, req, error_status); if (mpi_errno == MPI_SUCCESS) { ncomm+=block; } else { if (verbose) printf("%d: Error creating comm %d\n", rank, i); for(j = 0; j < block; j++) { if(error_status[j].MPI_ERROR == MPI_SUCCESS){ ncomm+=1; } else if(error_status[j].MPI_ERROR == MPI_ERR_PENDING) { mpi_errno = MPI_Wait(&req[j], MPI_STATUSES_IGNORE); if(mpi_errno == MPI_SUCCESS) { ncomm+=1; } else { if (verbose) printf("%d: Error creating comm %d\n", rank, i); } } } errors = 0; block = 0; break; } block = 0; } } if(block != 0) { mpi_errno = MPI_Waitall(block, req, MPI_STATUSES_IGNORE); if (mpi_errno == MPI_SUCCESS) { ncomm+=block; } else { if (verbose) printf("%d: Error creating comm %d\n", rank, i); errors = 0; } } for (i = 0; i < ncomm; i++) MPI_Comm_free(&comm_hdls[i]); free(comm_hdls); MTest_Finalize(errors); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/comm/userdup.c0000644000175000017500000001022012620254305020455 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2007 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* Check that user-define error codes and classes are correctly handled by the attribute copy routines. Note that this behavior is not required by the MPI specification but is a quality of implementation issues - users will expect to be able to control the class and code that comes back from MPI_Comm_dup (and MPI_Comm_free) in this case. */ void abortMsg(const char *, int); int copybomb_fn(MPI_Comm, int, void *, void *, void *, int *); static int myErrClass, myErrCode; static int nCall = 0; void abortMsg(const char *str, int code) { char msg[MPI_MAX_ERROR_STRING]; int class, resultLen; MPI_Error_class(code, &class); MPI_Error_string(code, msg, &resultLen); fprintf(stderr, "%s: errcode = %d, class = %d, msg = %s\n", str, code, class, msg); MPI_Abort(MPI_COMM_WORLD, code); } int copybomb_fn(MPI_Comm oldcomm, int keyval, void *extra_state, void *attribute_val_in, void *attribute_val_out, int *flag) { int err; /* We always fail to copy */ *flag = 1; /* Return either the class (as a code) or the code */ if (nCall == 0) err = myErrClass; else err = myErrCode; nCall++; return err; } int main(int argc, char *argv[]) { MPI_Comm dupWorld, dup2; int myRank, key, err, errs = 0; MTest_Init(&argc, &argv); MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); /* Create my error class and code */ MPI_Add_error_class(&myErrClass); MPI_Add_error_code(myErrClass, &myErrCode); MPI_Add_error_string(myErrClass, (char *) "My error class"); MPI_Add_error_string(myErrCode, (char *) "My error code"); MPI_Comm_dup(MPI_COMM_WORLD, &dupWorld); MPI_Comm_rank(MPI_COMM_WORLD, &myRank); err = MPI_Comm_create_keyval(copybomb_fn, MPI_COMM_NULL_DELETE_FN, &key, NULL); if (err) { errs++; abortMsg("Comm_create_keyval", err); } err = MPI_Comm_set_attr(dupWorld, key, &myRank); if (err) { errs++; abortMsg("Comm_set_attr", err); } err = MPI_Comm_dup(dupWorld, &dup2); if (err == MPI_SUCCESS) { errs++; fprintf(stderr, "Comm_dup did not fail\n"); MPI_Comm_free(&dup2); } else { int eclass, resultLen; char msg[MPI_MAX_ERROR_STRING]; /* Check for expected error class */ MPI_Error_class(err, &eclass); if (eclass != myErrClass) { errs++; fprintf(stderr, "Unexpected error class = %d, expected user-defined class %d\n", eclass, myErrClass); } else { MPI_Error_string(err, msg, &resultLen); if (strcmp(msg, "My error class") != 0) { errs++; fprintf(stderr, "Unexpected error string %s\n", msg); } } } err = MPI_Comm_dup(dupWorld, &dup2); if (err == MPI_SUCCESS) { errs++; fprintf(stderr, "Comm_dup did not fail (2)\n"); MPI_Comm_free(&dup2); } else { int eclass, resultLen; char msg[MPI_MAX_ERROR_STRING]; /* Check for expected error class */ MPI_Error_class(err, &eclass); if (eclass != myErrClass) { errs++; fprintf(stderr, "Unexpected error class = %d, expected user-defined class %d\n", eclass, myErrClass); } if (err != myErrCode) { errs++; fprintf(stderr, "Unexpected error code = %d, expected user-defined code %d\n", err, myErrCode); } else { MPI_Error_string(err, msg, &resultLen); if (strcmp(msg, "My error code") != 0) { errs++; fprintf(stderr, "Unexpected error string %s, expected user-defined error string\n", msg); } } } MPI_Comm_free(&dupWorld); MPI_Comm_free_keyval(&key); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/testlist.in0000644000175000017500000000014312620254305020075 0ustar mbanckmbanckattr coll comm group pt2pt topo @rmadir@ @spawndir@ @iodir@ @f77dir@ @cxxdir@ @f90dir@ @faultsdir@ mpi-testsuite-3.2+dfsg/errors/pt2pt/0000755000175000017500000000000012621010233016734 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/errors/pt2pt/errinstatta.c0000644000175000017500000000733312620254305021457 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test err in status return, using truncated \ messages for MPI_Testall"; */ int main(int argc, char *argv[]) { int errs = 0; MPI_Comm comm; MPI_Request r[2]; MPI_Status s[2]; int b1[20], b2[20], rank, size, src, dest, i, flag; int errval, errclass; MTest_Init(&argc, &argv); /* Create some receive requests. tags 0-9 will succeed, tags 10-19 * will be used for ERR_TRUNCATE (fewer than 20 messages will be used) */ comm = MPI_COMM_WORLD; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); src = 1; dest = 0; if (rank == dest) { MPI_Errhandler_set(comm, MPI_ERRORS_RETURN); errval = MPI_Irecv(b1, 10, MPI_INT, src, 0, comm, &r[0]); if (errval) { errs++; MTestPrintError(errval); printf("Error returned from Irecv\n"); } errval = MPI_Irecv(b2, 10, MPI_INT, src, 10, comm, &r[1]); if (errval) { errs++; MTestPrintError(errval); printf("Error returned from Irecv\n"); } /* Wait for Irecvs to be posted before the sender calls send. This * prevents the operation from completing and returning an error in the * Irecv. */ errval = MPI_Recv(NULL, 0, MPI_INT, src, 100, comm, MPI_STATUS_IGNORE); if (errval) { errs++; MTestPrintError(errval); printf("Error returned from Recv\n"); } /* Wait for sends to complete at the sender before proceeding */ /* WARNING: This does not guarantee that the sends are ready to * complete at the receiver. */ errval = MPI_Recv(NULL, 0, MPI_INT, src, 10, comm, MPI_STATUS_IGNORE); if (errval) { errs++; MTestPrintError(errval); printf("Error returned from Recv\n"); } for (i = 0; i < 2; i++) { s[i].MPI_ERROR = -1; } /* WARNING: The following assumes that Testall will complete both * send/irecv pairs. This is *not* guaranteed by the MPI standard. */ errval = MPI_Testall(2, r, &flag, s); MPI_Error_class(errval, &errclass); if (errclass != MPI_ERR_IN_STATUS) { errs++; printf("Did not get ERR_IN_STATUS in Testall\n"); } else if (!flag) { errs++; printf("Test returned false for test\n"); } else { /* Check for success */ for (i = 0; i < 2; i++) { if (s[i].MPI_TAG < 10 && s[i].MPI_ERROR != MPI_SUCCESS) { errs++; printf("correct msg had error class %d\n", s[i].MPI_ERROR); } else if (s[i].MPI_TAG >= 10 && s[i].MPI_ERROR == MPI_SUCCESS) { errs++; printf("truncated msg had MPI_SUCCESS\n"); } } } } else if (rank == src) { /* Wait for Irecvs to be posted before the sender calls send */ MPI_Ssend(NULL, 0, MPI_INT, dest, 100, comm); /* Send test messages, then send another message so that the test does * not start until we are sure that the sends have begun */ MPI_Send(b1, 10, MPI_INT, dest, 0, comm); MPI_Send(b2, 11, MPI_INT, dest, 10, comm); /* Wait for sends to complete before proceeding to the testsome. */ MPI_Ssend(NULL, 0, MPI_INT, dest, 10, comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/pt2pt/testlist0000644000175000017500000000016712620254305020547 0ustar mbanckmbanckproberank 1 truncmsg1 2 truncmsg2 2 # multiple completion ests errinstatts 2 errinstatta 2 errinstatws 2 errinstatwa 2 mpi-testsuite-3.2+dfsg/errors/pt2pt/Makefile.in0000644000175000017500000005530712621010233021013 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = proberank$(EXEEXT) truncmsg1$(EXEEXT) \ truncmsg2$(EXEEXT) errinstatts$(EXEEXT) errinstatta$(EXEEXT) \ errinstatws$(EXEEXT) errinstatwa$(EXEEXT) subdir = errors/pt2pt ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) errinstatta_SOURCES = errinstatta.c errinstatta_OBJECTS = errinstatta.$(OBJEXT) errinstatta_LDADD = $(LDADD) errinstatta_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o errinstatts_SOURCES = errinstatts.c errinstatts_OBJECTS = errinstatts.$(OBJEXT) errinstatts_LDADD = $(LDADD) errinstatts_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o errinstatwa_SOURCES = errinstatwa.c errinstatwa_OBJECTS = errinstatwa.$(OBJEXT) errinstatwa_LDADD = $(LDADD) errinstatwa_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o errinstatws_SOURCES = errinstatws.c errinstatws_OBJECTS = errinstatws.$(OBJEXT) errinstatws_LDADD = $(LDADD) errinstatws_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o proberank_SOURCES = proberank.c proberank_OBJECTS = proberank.$(OBJEXT) proberank_LDADD = $(LDADD) proberank_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o truncmsg1_SOURCES = truncmsg1.c truncmsg1_OBJECTS = truncmsg1.$(OBJEXT) truncmsg1_LDADD = $(LDADD) truncmsg1_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o truncmsg2_SOURCES = truncmsg2.c truncmsg2_OBJECTS = truncmsg2.$(OBJEXT) truncmsg2_LDADD = $(LDADD) truncmsg2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = errinstatta.c errinstatts.c errinstatwa.c errinstatws.c \ proberank.c truncmsg1.c truncmsg2.c DIST_SOURCES = errinstatta.c errinstatts.c errinstatwa.c errinstatws.c \ proberank.c truncmsg1.c truncmsg2.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.mtest \ $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign errors/pt2pt/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign errors/pt2pt/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) errinstatta$(EXEEXT): $(errinstatta_OBJECTS) $(errinstatta_DEPENDENCIES) $(EXTRA_errinstatta_DEPENDENCIES) @rm -f errinstatta$(EXEEXT) $(AM_V_CCLD)$(LINK) $(errinstatta_OBJECTS) $(errinstatta_LDADD) $(LIBS) errinstatts$(EXEEXT): $(errinstatts_OBJECTS) $(errinstatts_DEPENDENCIES) $(EXTRA_errinstatts_DEPENDENCIES) @rm -f errinstatts$(EXEEXT) $(AM_V_CCLD)$(LINK) $(errinstatts_OBJECTS) $(errinstatts_LDADD) $(LIBS) errinstatwa$(EXEEXT): $(errinstatwa_OBJECTS) $(errinstatwa_DEPENDENCIES) $(EXTRA_errinstatwa_DEPENDENCIES) @rm -f errinstatwa$(EXEEXT) $(AM_V_CCLD)$(LINK) $(errinstatwa_OBJECTS) $(errinstatwa_LDADD) $(LIBS) errinstatws$(EXEEXT): $(errinstatws_OBJECTS) $(errinstatws_DEPENDENCIES) $(EXTRA_errinstatws_DEPENDENCIES) @rm -f errinstatws$(EXEEXT) $(AM_V_CCLD)$(LINK) $(errinstatws_OBJECTS) $(errinstatws_LDADD) $(LIBS) proberank$(EXEEXT): $(proberank_OBJECTS) $(proberank_DEPENDENCIES) $(EXTRA_proberank_DEPENDENCIES) @rm -f proberank$(EXEEXT) $(AM_V_CCLD)$(LINK) $(proberank_OBJECTS) $(proberank_LDADD) $(LIBS) truncmsg1$(EXEEXT): $(truncmsg1_OBJECTS) $(truncmsg1_DEPENDENCIES) $(EXTRA_truncmsg1_DEPENDENCIES) @rm -f truncmsg1$(EXEEXT) $(AM_V_CCLD)$(LINK) $(truncmsg1_OBJECTS) $(truncmsg1_LDADD) $(LIBS) truncmsg2$(EXEEXT): $(truncmsg2_OBJECTS) $(truncmsg2_DEPENDENCIES) $(EXTRA_truncmsg2_DEPENDENCIES) @rm -f truncmsg2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(truncmsg2_OBJECTS) $(truncmsg2_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/errinstatta.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/errinstatts.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/errinstatwa.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/errinstatws.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/proberank.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/truncmsg1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/truncmsg2.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/errors/pt2pt/truncmsg2.c0000644000175000017500000000757612620254305021054 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2008 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * This program was sent in as an example that did not perform as expected. * The program has a bug in that it is sending 3 characters but receiving * three integers, which is not a valid MPI program (the type signatures * must match). However, a good MPI implementation will handle this * gracefully, which is why this test is included in the error directory */ #include #include #include #include "mpi.h" #include "mpitest.h" #define BUFSIZE 128 #define FAIL_ERROR 123 #define RESFAIL_ERROR 123 #define INTERNAL_ERROR 123 void if_error(const char *function, const char *data, int ret); void if_error(const char *function, const char *data, int ret) { if (ret == 0) return; if (data) printf("%s for %s returned %d (%#x)\n", function, data, ret, ret); else printf("%s returned %d (%#x)\n", function, ret, ret); exit(INTERNAL_ERROR); } int main(int argc, char *argv[]) { int ret, errs = 0; char *src, *sendrec; int bufsize = BUFSIZE; int myrank, nprocs; int i; MPI_Status status; int small_non_contig_struct_count = 3; int small_non_contig_struct_blocklens[] = { 1, 1, 1 }; MPI_Aint small_non_contig_struct_disps[] = { 0, 2, 4 }; MPI_Datatype small_non_contig_struct_types[] = { MPI_CHAR, MPI_CHAR, MPI_CHAR }; MPI_Datatype small_non_contig_struct_type; int contig_indexed_count = 3; int contig_indexed_blocklens[] = { 1, 2, 1 }; int contig_indexed_indices[] = { 4, 8, 16 }; int contig_indexed_inner_type = MPI_INT; int contig_indexed_type; MTest_Init(&argc, &argv); ret = MPI_Comm_rank(MPI_COMM_WORLD, &myrank); ret = MPI_Comm_size(MPI_COMM_WORLD, &nprocs); if (nprocs < 2) { printf("Need at least 2 procs\n"); exit(RESFAIL_ERROR); } ret = MPI_Type_struct(small_non_contig_struct_count, small_non_contig_struct_blocklens, small_non_contig_struct_disps, small_non_contig_struct_types, &small_non_contig_struct_type); if_error("MPI_Type_struct", "small_non_contig_struct_type", ret); ret = MPI_Type_commit(&small_non_contig_struct_type); if_error("MPI_Type_commit", "small_non_contig_struct_type", ret); ret = MPI_Type_indexed(contig_indexed_count, contig_indexed_blocklens, contig_indexed_indices, contig_indexed_inner_type, &contig_indexed_type); if_error("MPI_Type_indexed", "contig_indexed_type", ret); ret = MPI_Type_commit(&contig_indexed_type); if_error("MPI_Type_commit", "contig_indexed_type", ret); ret = MPI_Alloc_mem(bufsize, MPI_INFO_NULL, &src); if (ret != 0) { printf("MPI_Alloc_mem src = #%x\n", ret); exit(INTERNAL_ERROR); } ret = MPI_Alloc_mem(bufsize, MPI_INFO_NULL, &sendrec); if (ret != 0) { printf("MPI_Alloc_mem sendrec buf = #%x\n", ret); exit(INTERNAL_ERROR); } for (i = 0; i < bufsize; i++) { src[i] = (char) i + 1; } memset(sendrec, 0, bufsize); MPI_Barrier(MPI_COMM_WORLD); if (myrank == 1) { MPI_Send(src, 1, small_non_contig_struct_type, 0, 0xabc, MPI_COMM_WORLD); } else { MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_RETURN); ret = MPI_Recv(sendrec, 1, contig_indexed_type, 1, 0xabc, MPI_COMM_WORLD, &status); if (ret == MPI_SUCCESS) { printf("MPI_Recv succeeded with non-matching datatype signature\n"); errs++; } } MPI_Barrier(MPI_COMM_WORLD); MPI_Type_free(&small_non_contig_struct_type); MPI_Type_free(&contig_indexed_type); MPI_Free_mem(src); MPI_Free_mem(sendrec); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/pt2pt/errinstatts.c0000644000175000017500000000772712620254305021510 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test err in status return, using truncated \ messages for MPI_Testsome"; */ int main(int argc, char *argv[]) { int errs = 0; MPI_Comm comm; MPI_Request r[2]; MPI_Status s[2]; int indices[2], outcount; int errval, errclass; int b1[20], b2[20], rank, size, src, dest, i, j; MTest_Init(&argc, &argv); /* Create some receive requests. tags 0-9 will succeed, tags 10-19 * will be used for ERR_TRUNCATE (fewer than 20 messages will be used) */ comm = MPI_COMM_WORLD; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); src = 1; dest = 0; if (rank == dest) { MPI_Errhandler_set(comm, MPI_ERRORS_RETURN); errval = MPI_Irecv(b1, 10, MPI_INT, src, 0, comm, &r[0]); if (errval) { errs++; MTestPrintError(errval); printf("Error returned from Irecv\n"); } errval = MPI_Irecv(b2, 10, MPI_INT, src, 10, comm, &r[1]); if (errval) { errs++; MTestPrintError(errval); printf("Error returned from Irecv\n"); } /* Wait for Irecvs to be posted before the sender calls send. This * prevents the operation from completing and returning an error in the * Irecv. */ errval = MPI_Recv(NULL, 0, MPI_INT, src, 100, comm, MPI_STATUS_IGNORE); if (errval) { errs++; MTestPrintError(errval); printf("Error returned from Recv\n"); } /* Wait for sends to complete at the sender before proceeding */ /* WARNING: This does not guarantee that the sends are ready to * complete at the receiver. */ errval = MPI_Recv(NULL, 0, MPI_INT, src, 10, comm, MPI_STATUS_IGNORE); if (errval) { errs++; MTestPrintError(errval); printf("Error returned from Recv\n"); } for (i = 0; i < 2; i++) { s[i].MPI_ERROR = -1; } /* WARNING: The following assumes that Testsome will complete both * send/irecv pairs. This is *not* guaranteed by the MPI standard. */ errval = MPI_Testsome(2, r, &outcount, indices, s); MPI_Error_class(errval, &errclass); if (errclass != MPI_ERR_IN_STATUS) { errs++; printf ("Did not get ERR_IN_STATUS in Testsome (outcount = %d, should equal 2); class returned was %d\n", outcount, errclass); } else if (outcount != 2) { errs++; printf("Test returned outcount = %d\n", outcount); } else { /* Check for success */ for (i = 0; i < outcount; i++) { j = i; /* Indices is the request index */ if (s[j].MPI_TAG < 10 && s[j].MPI_ERROR != MPI_SUCCESS) { errs++; printf("correct msg had error class %d\n", s[j].MPI_ERROR); } else if (s[j].MPI_TAG >= 10 && s[j].MPI_ERROR == MPI_SUCCESS) { errs++; printf("truncated msg had MPI_SUCCESS\n"); } } } } else if (rank == src) { /* Wait for Irecvs to be posted before the sender calls send */ MPI_Ssend(NULL, 0, MPI_INT, dest, 100, comm); /* Send test messages, then send another message so that the test does * not start until we are sure that the sends have begun */ MPI_Send(b1, 10, MPI_INT, dest, 0, comm); MPI_Send(b2, 11, MPI_INT, dest, 10, comm); /* Wait for sends to complete before proceeding to the testsome. */ MPI_Ssend(NULL, 0, MPI_INT, dest, 10, comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/pt2pt/proberank.c0000644000175000017500000000147712620254305021105 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include "mpi.h" #include "mpitest.h" int main(int argc, char *argv[]) { MPI_Status status; int err, errs = 0, len; char msg[MPI_MAX_ERROR_STRING]; MTest_Init(&argc, &argv); MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_RETURN); err = MPI_Probe(-80, 1, MPI_COMM_WORLD, &status); if (!err) { errs++; printf("Did not detect an erroneous rank in MPI_Probe\n"); } else { /* Check that we can get a message for this error */ /* (This works if it does not SEGV or hang) */ MPI_Error_string(err, msg, &len); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/pt2pt/truncmsg1.c0000644000175000017500000000765612620254305021052 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include "mpi.h" #include "mpitest.h" /* * Test handling of truncated messages, including short and rendezvous */ static int testShort = 1; static int ShortLen = 2; static int testMid = 1; static int MidLen = 64; static int testLong = 1; static int LongLen = 100000; int checkTruncError(int err, const char *msg); int checkOk(int err, const char *msg); int main(int argc, char *argv[]) { MPI_Status status; int err, errs = 0, source, dest, rank, size; int *buf = 0; MTest_Init(&argc, &argv); MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_RETURN); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); source = 0; dest = size - 1; buf = (int *) malloc(LongLen * sizeof(int)); if (!buf) { fprintf(stderr, "Unable to allocate communication buffer of size %d\n", LongLen); MPI_Abort(MPI_COMM_WORLD, 1); } if (testShort) { if (rank == source) { err = MPI_Send(buf, ShortLen, MPI_INT, dest, 0, MPI_COMM_WORLD); errs += checkOk(err, "short"); } else if (rank == dest) { err = MPI_Recv(buf, ShortLen - 1, MPI_INT, source, 0, MPI_COMM_WORLD, &status); errs += checkTruncError(err, "short"); } /* Try a message that is arrives after the receive is posted */ if (rank == source) { MPI_Sendrecv(MPI_BOTTOM, 0, MPI_INT, dest, 1, MPI_BOTTOM, 0, MPI_INT, dest, 1, MPI_COMM_WORLD, MPI_STATUS_IGNORE); MPI_Send(buf, ShortLen, MPI_INT, dest, 2, MPI_COMM_WORLD); } else if (rank == dest) { MPI_Request req; err = MPI_Irecv(buf, ShortLen - 1, MPI_INT, source, 2, MPI_COMM_WORLD, &req); errs += checkOk(err, "irecv-short"); MPI_Sendrecv(MPI_BOTTOM, 0, MPI_INT, source, 1, MPI_BOTTOM, 0, MPI_INT, source, 1, MPI_COMM_WORLD, MPI_STATUS_IGNORE); err = MPI_Wait(&req, &status); errs += checkTruncError(err, "irecv-short"); } } if (testMid) { if (rank == source) { err = MPI_Send(buf, MidLen, MPI_INT, dest, 0, MPI_COMM_WORLD); errs += checkOk(err, "medium"); } else if (rank == dest) { err = MPI_Recv(buf, MidLen - 1, MPI_INT, source, 0, MPI_COMM_WORLD, &status); errs += checkTruncError(err, "medium"); } } if (testLong) { if (rank == source) { err = MPI_Send(buf, LongLen, MPI_INT, dest, 0, MPI_COMM_WORLD); errs += checkOk(err, "long"); } else if (rank == dest) { err = MPI_Recv(buf, LongLen - 1, MPI_INT, source, 0, MPI_COMM_WORLD, &status); errs += checkTruncError(err, "long"); } } free(buf); MTest_Finalize(errs); MPI_Finalize(); return 0; } int checkTruncError(int err, const char *msg) { char errMsg[MPI_MAX_ERROR_STRING]; int errs = 0, msgLen, errclass; if (!err) { errs++; fprintf(stderr, "MPI_Recv (%s) returned MPI_SUCCESS instead of truncated message\n", msg); fflush(stderr); } else { MPI_Error_class(err, &errclass); if (errclass != MPI_ERR_TRUNCATE) { errs++; MPI_Error_string(err, errMsg, &msgLen); fprintf(stderr, "MPI_Recv (%s) returned unexpected error message: %s\n", msg, errMsg); fflush(stderr); } } return errs; } int checkOk(int err, const char *msg) { char errMsg[MPI_MAX_ERROR_STRING]; int errs = 0, msgLen; if (err) { errs++; MPI_Error_string(err, errMsg, &msgLen); fprintf(stderr, "MPI_Send(%s) failed with %s\n", msg, errMsg); fflush(stderr); } return errs; } mpi-testsuite-3.2+dfsg/errors/pt2pt/Makefile.am0000644000175000017500000000074612620254305021010 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile.mtest EXTRA_DIST = testlist ## for all programs that are just built from the single corresponding source ## file, we don't need per-target _SOURCES rules, automake will infer them ## correctly noinst_PROGRAMS = proberank truncmsg1 truncmsg2 \ errinstatts errinstatta errinstatws errinstatwa mpi-testsuite-3.2+dfsg/errors/pt2pt/errinstatws.c0000644000175000017500000000757412620254305021513 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test err in status return, using truncated \ messages for MPI_Waitsome"; */ int main(int argc, char *argv[]) { int errs = 0; MPI_Comm comm; MPI_Request r[2]; MPI_Status s[2]; int indices[2], outcount; int errval, errclass; int b1[20], b2[20], rank, size, src, dest, i, j; MTest_Init(&argc, &argv); /* Create some receive requests. tags 0-9 will succeed, tags 10-19 * will be used for ERR_TRUNCATE (fewer than 20 messages will be used) */ comm = MPI_COMM_WORLD; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); src = 1; dest = 0; if (rank == dest) { MPI_Errhandler_set(comm, MPI_ERRORS_RETURN); errval = MPI_Irecv(b1, 10, MPI_INT, src, 0, comm, &r[0]); if (errval) { errs++; MTestPrintError(errval); printf("Error returned from Irecv\n"); } errval = MPI_Irecv(b2, 10, MPI_INT, src, 10, comm, &r[1]); if (errval) { errs++; MTestPrintError(errval); printf("Error returned from Irecv\n"); } /* Wait for Irecvs to be posted before the sender calls send. This * prevents the operation from completing and returning an error in the * Irecv. */ errval = MPI_Recv(NULL, 0, MPI_INT, src, 100, comm, MPI_STATUS_IGNORE); if (errval) { errs++; MTestPrintError(errval); printf("Error returned from Recv\n"); } /* Wait for sends to complete at the sender before proceeding */ /* WARNING: This does not guarantee that the sends are ready to * complete at the receiver. */ errval = MPI_Recv(NULL, 0, MPI_INT, src, 10, comm, MPI_STATUS_IGNORE); if (errval) { errs++; MTestPrintError(errval); printf("Error returned from Recv\n"); } for (i = 0; i < 2; i++) { s[i].MPI_ERROR = -1; } /* WARNING: The following assumes that Waitsome will complete both * send/irecv pairs. This is *not* guaranteed by the MPI standard. */ errval = MPI_Waitsome(2, r, &outcount, indices, s); MPI_Error_class(errval, &errclass); if (errclass != MPI_ERR_IN_STATUS) { errs++; printf("Did not get ERR_IN_STATUS in Waitsome. Got %d.\n", errval); } else if (outcount != 2) { errs++; printf("Wait returned outcount = %d\n", outcount); } else { /* Check for success */ for (i = 0; i < outcount; i++) { j = i; /* Indices is the request index */ if (s[j].MPI_TAG < 10 && s[j].MPI_ERROR != MPI_SUCCESS) { errs++; printf("correct msg had error class %d\n", s[j].MPI_ERROR); } else if (s[j].MPI_TAG >= 10 && s[j].MPI_ERROR == MPI_SUCCESS) { errs++; printf("truncated msg had MPI_SUCCESS\n"); } } } } else if (rank == src) { /* Wait for Irecvs to be posted before the sender calls send */ MPI_Ssend(NULL, 0, MPI_INT, dest, 100, comm); /* Send test messages, then send another message so that the test does * not start until we are sure that the sends have begun */ MPI_Send(b1, 10, MPI_INT, dest, 0, comm); MPI_Send(b2, 11, MPI_INT, dest, 10, comm); /* Wait for sends to complete before proceeding to the testsome. */ MPI_Ssend(NULL, 0, MPI_INT, dest, 10, comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/pt2pt/errinstatwa.c0000644000175000017500000000701212620254305021454 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test err in status return, using truncated \ messages for MPI_Waitall"; */ int main(int argc, char *argv[]) { int errs = 0; MPI_Comm comm; MPI_Request r[2]; MPI_Status s[2]; int errval, errclass; int b1[20], b2[20], rank, size, src, dest, i; MTest_Init(&argc, &argv); /* Create some receive requests. tags 0-9 will succeed, tags 10-19 * will be used for ERR_TRUNCATE (fewer than 20 messages will be used) */ comm = MPI_COMM_WORLD; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); src = 1; dest = 0; if (rank == dest) { MPI_Errhandler_set(comm, MPI_ERRORS_RETURN); errval = MPI_Irecv(b1, 10, MPI_INT, src, 0, comm, &r[0]); if (errval) { errs++; MTestPrintError(errval); printf("Error returned from Irecv\n"); } errval = MPI_Irecv(b2, 10, MPI_INT, src, 10, comm, &r[1]); if (errval) { errs++; MTestPrintError(errval); printf("Error returned from Irecv\n"); } /* Wait for Irecvs to be posted before the sender calls send. This * prevents the operation from completing and returning an error in the * Irecv. */ errval = MPI_Recv(NULL, 0, MPI_INT, src, 100, comm, MPI_STATUS_IGNORE); if (errval) { errs++; MTestPrintError(errval); printf("Error returned from Recv\n"); } if (errval) { errs++; MTestPrintError(errval); printf("Error returned from Barrier\n"); } for (i = 0; i < 2; i++) { s[i].MPI_ERROR = -1; } errval = MPI_Waitall(2, r, s); MPI_Error_class(errval, &errclass); if (errclass != MPI_ERR_IN_STATUS) { errs++; printf("Did not get ERR_IN_STATUS in Waitall\n"); } else { /* Check for success */ /* We allow ERR_PENDING (neither completed nor in error) in case * the MPI implementation exits the Waitall when an error * is detected. Thanks to Jim Hoekstra of Iowa State University * and Kim McMahon for finding this bug in the test. */ for (i = 0; i < 2; i++) { if (s[i].MPI_TAG < 10 && (s[i].MPI_ERROR != MPI_SUCCESS && s[i].MPI_ERROR != MPI_ERR_PENDING)) { char msg[MPI_MAX_ERROR_STRING]; int msglen = MPI_MAX_ERROR_STRING; errs++; printf("correct msg had error code %d\n", s[i].MPI_ERROR); MPI_Error_string(s[i].MPI_ERROR, msg, &msglen); printf("Error message was %s\n", msg); } else if (s[i].MPI_TAG >= 10 && s[i].MPI_ERROR == MPI_SUCCESS) { errs++; printf("truncated msg had MPI_SUCCESS\n"); } } } } else if (rank == src) { /* Wait for Irecvs to be posted before the sender calls send */ MPI_Ssend(NULL, 0, MPI_INT, dest, 100, comm); MPI_Send(b1, 10, MPI_INT, dest, 0, comm); MPI_Send(b2, 11, MPI_INT, dest, 10, comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/f08/0000755000175000017500000000000012621010233016260 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/errors/f08/testlist0000644000175000017500000000000312620254305020060 0ustar mbanckmbanckio mpi-testsuite-3.2+dfsg/errors/f08/Makefile.in0000644000175000017500000005167612621010233020344 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = errors/f08 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_f08.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F08 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f08/util/mtestf08.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist SUBDIRS = @iodir@ DIST_SUBDIRS = io all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f08.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign errors/f08/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign errors/f08/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f08.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic cscopelist-am ctags ctags-am \ distclean distclean-generic distclean-tags distdir dvi dvi-am \ html html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile $(top_builddir)/f08/util/mtestf08.o: $(top_srcdir)/f08/util/mtestf08.f90 (cd $(top_builddir)/f08/util && $(MAKE) mtestf08.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/errors/f08/Makefile.am0000644000175000017500000000036412620254305020330 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f08.mtest EXTRA_DIST = testlist SUBDIRS = @iodir@ DIST_SUBDIRS = io mpi-testsuite-3.2+dfsg/errors/f08/io/0000755000175000017500000000000012621010233016667 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/errors/f08/io/testlist0000644000175000017500000000001612620254305020473 0ustar mbanckmbanckuerrhandf08 1 mpi-testsuite-3.2+dfsg/errors/f08/io/Makefile.in0000644000175000017500000004431412621010233020742 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This Makefile.am generated automatically by f77tof90 # from test/mpi/errors/f77/io/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = uerrhandf08$(EXEEXT) subdir = errors/f08/io ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) uerrhandf08_SOURCES = uerrhandf08.f90 uerrhandf08_OBJECTS = uerrhandf08.$(OBJEXT) uerrhandf08_LDADD = $(LDADD) uerrhandf08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = SOURCES = uerrhandf08.f90 DIST_SOURCES = uerrhandf08.f90 am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_f08.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F08 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f08/util/mtestf08.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist AM_DEFAULT_SOURCE_EXT = .f90 all: all-am .SUFFIXES: .SUFFIXES: .f90 .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f08.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign errors/f08/io/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign errors/f08/io/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f08.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) uerrhandf08$(EXEEXT): $(uerrhandf08_OBJECTS) $(uerrhandf08_DEPENDENCIES) $(EXTRA_uerrhandf08_DEPENDENCIES) @rm -f uerrhandf08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(uerrhandf08_OBJECTS) $(uerrhandf08_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f08/util/mtestf08.o: $(top_srcdir)/f08/util/mtestf08.f90 (cd $(top_builddir)/f08/util && $(MAKE) mtestf08.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/errors/f08/io/uerrhandf08.f900000644000175000017500000001037712620254305021356 0ustar mbanckmbanck! This file created from test/mpi/errors/f77/io/uerrhandf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2013 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer (kind=MPI_ADDRESS_KIND) asize integer (kind=MPI_OFFSET_KIND) offset integer ierr, rank, i integer errs external comm_errh_fn, win_errh_fn, file_errh_fn TYPE(MPI_Errhandles) comm_errh, win_errh, file_errh integer winbuf(2), wdsize, sizeofint, id TYPE(MPI_Win) winh TYPE(MPI_Comm) wdup integer fh TYPE(MPI_Status) status common /ec/ iseen integer iseen(3) save /ec/ iseen(1) = 0 iseen(2) = 0 iseen(3) = 0 ierr = -1 errs = 0 call mtest_init( ierr ) call mpi_type_size( MPI_INTEGER, sizeofint, ierr ) call mpi_comm_create_errhandler( comm_errh_fn, comm_errh, ierr ) if (ierr .ne. MPI_SUCCESS) then call mtestprinterrormsg( "Comm_create_errhandler:", ierr ) errs = errs + 1 endif call mpi_win_create_errhandler( win_errh_fn, win_errh, ierr ) if (ierr .ne. MPI_SUCCESS) then call mtestprinterrormsg( "Win_create_errhandler:", ierr ) errs = errs + 1 endif call mpi_file_create_errhandler( file_errh_fn, file_errh, ierr ) if (ierr .ne. MPI_SUCCESS) then call mtestprinterrormsg( "File_create_errhandler:", ierr ) errs = errs + 1 endif ! call mpi_comm_dup( MPI_COMM_WORLD, wdup, ierr ) call mpi_comm_set_errhandler( wdup, comm_errh, ierr ) call mpi_comm_size( wdup, wdsize, ierr ) call mpi_send( id, 1, MPI_INTEGER, wdsize, -37, wdup, ierr ) if (ierr .eq. MPI_SUCCESS) then print *, ' Failed to detect error in use of MPI_SEND' errs = errs + 1 else if (iseen(1) .ne. 1) then errs = errs + 1 print *, ' Failed to increment comm error counter' endif endif asize = 2*sizeofint call mpi_win_create( winbuf, asize, sizeofint, MPI_INFO_NULL & & , wdup, winh, ierr ) if (ierr .ne. MPI_SUCCESS) then call mtestprinterrormsg( "Win_create:", ierr ) errs = errs + 1 endif call mpi_win_set_errhandler( winh, win_errh, ierr ) asize = 0 call mpi_put( winbuf, 1, MPI_INT, wdsize, asize, 1, MPI_INT, winh, & & ierr ) if (ierr .eq. MPI_SUCCESS) then print *, ' Failed to detect error in use of MPI_PUT' errs = errs + 1 else if (iseen(3) .ne. 1) then errs = errs + 1 print *, ' Failed to increment win error counter' endif endif call mpi_file_open( MPI_COMM_SELF, 'ftest', MPI_MODE_CREATE + & & MPI_MODE_RDWR + MPI_MODE_DELETE_ON_CLOSE, MPI_INFO_NULL, fh, & & ierr ) if (ierr .ne. MPI_SUCCESS) then call mtestprinterrormsg( "File_open:", ierr ) errs = errs + 1 endif call mpi_file_set_errhandler( fh, file_errh, ierr ) offset = -100 call mpi_file_read_at( fh, offset, winbuf, 1, MPI_INTEGER, status, & & ierr ) if (ierr .eq. MPI_SUCCESS) then print *, ' Failed to detect error in use of MPI_PUT' errs = errs + 1 else if (iseen(2) .ne. 1) then errs = errs + 1 print *, ' Failed to increment file error counter' endif endif call mpi_comm_free( wdup, ierr ) call mpi_win_free( winh, ierr ) call mpi_file_close( fh, ierr ) call mpi_errhandler_free( win_errh, ierr ) call mpi_errhandler_free( comm_errh, ierr ) call mpi_errhandler_free( file_errh, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end ! subroutine comm_errh_fn( comm, ec ) integer comm, ec common /ec/ iseen integer iseen(3) save /ec/ ! iseen(1) = iseen(1) + 1 ! end ! subroutine win_errh_fn( win, ec ) integer win, ec common /ec/ iseen integer iseen(3) save /ec/ ! iseen(3) = iseen(3) + 1 ! end subroutine file_errh_fn( fh, ec ) integer fh, ec common /ec/ iseen integer iseen(3) save /ec/ ! iseen(2) = iseen(2) + 1 ! end mpi-testsuite-3.2+dfsg/errors/f08/io/Makefile.am0000644000175000017500000000104012620254305020727 0ustar mbanckmbanck# This Makefile.am generated automatically by f77tof90 # from test/mpi/errors/f77/io/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f08.mtest EXTRA_DIST = testlist AM_DEFAULT_SOURCE_EXT = .f90 ## for all programs that are just built from the single corresponding source ## file, we don't need per-target _SOURCES rules, automake will infer them ## correctly noinst_PROGRAMS = uerrhandf08 mpi-testsuite-3.2+dfsg/errors/io/0000755000175000017500000000000012621010233016272 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/errors/io/testlist0000644000175000017500000000004512620254305020100 0ustar mbanckmbanckfileerrret 1 openerr 1 file_errhdl 1 mpi-testsuite-3.2+dfsg/errors/io/Makefile.in0000644000175000017500000005063612621010233020351 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = fileerrret$(EXEEXT) openerr$(EXEEXT) \ file_errhdl$(EXEEXT) subdir = errors/io ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) file_errhdl_SOURCES = file_errhdl.c file_errhdl_OBJECTS = file_errhdl.$(OBJEXT) file_errhdl_LDADD = $(LDADD) file_errhdl_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o fileerrret_SOURCES = fileerrret.c fileerrret_OBJECTS = fileerrret.$(OBJEXT) fileerrret_LDADD = $(LDADD) fileerrret_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o openerr_SOURCES = openerr.c openerr_OBJECTS = openerr.$(OBJEXT) openerr_LDADD = $(LDADD) openerr_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = file_errhdl.c fileerrret.c openerr.c DIST_SOURCES = file_errhdl.c fileerrret.c openerr.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.mtest \ $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign errors/io/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign errors/io/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) file_errhdl$(EXEEXT): $(file_errhdl_OBJECTS) $(file_errhdl_DEPENDENCIES) $(EXTRA_file_errhdl_DEPENDENCIES) @rm -f file_errhdl$(EXEEXT) $(AM_V_CCLD)$(LINK) $(file_errhdl_OBJECTS) $(file_errhdl_LDADD) $(LIBS) fileerrret$(EXEEXT): $(fileerrret_OBJECTS) $(fileerrret_DEPENDENCIES) $(EXTRA_fileerrret_DEPENDENCIES) @rm -f fileerrret$(EXEEXT) $(AM_V_CCLD)$(LINK) $(fileerrret_OBJECTS) $(fileerrret_LDADD) $(LIBS) openerr$(EXEEXT): $(openerr_OBJECTS) $(openerr_DEPENDENCIES) $(EXTRA_openerr_DEPENDENCIES) @rm -f openerr$(EXEEXT) $(AM_V_CCLD)$(LINK) $(openerr_OBJECTS) $(openerr_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_errhdl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fileerrret.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openerr.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/errors/io/fileerrret.c0000644000175000017500000000317112620254305020614 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2006 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #include #ifdef HAVE_STRING_H #include #endif #include "mpitest.h" static int ncalls = 0; void efn(MPI_File * fh, int *code, ...); void efn(MPI_File * fh, int *code, ...) { ncalls++; *code = MPI_SUCCESS; } int main(int argc, char *argv[]) { MPI_File fh; MPI_Errhandler eh; char filename[10]; int errs = 0, rc; MTest_Init(&argc, &argv); /* Test that the default error handler is errors return for files */ strncpy(filename, "t1", sizeof(filename)); rc = MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_RDWR, MPI_INFO_NULL, &fh); if (!rc) { errs++; printf("Did not get error from open for writing without CREATE\n"); } /* Test that we can change the default error handler by changing * the error handler on MPI_FILE_NULL. */ MPI_File_create_errhandler(efn, &eh); MPI_File_set_errhandler(MPI_FILE_NULL, eh); MPI_Errhandler_free(&eh); rc = MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_RDWR, MPI_INFO_NULL, &fh); if (rc) { errs++; printf("Returned error from open (should have called error handler instead)\n"); } if (ncalls != 1) { errs++; printf ("Did not invoke error handler when opening a non-existent file for writing and reading (without MODE_CREATE)\n"); } /* Find out how many errors we saw */ MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/io/Makefile.am0000644000175000017500000000064312620254305020342 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile.mtest EXTRA_DIST = testlist ## for all programs that are just built from the single corresponding source ## file, we don't need per-target _SOURCES rules, automake will infer them ## correctly noinst_PROGRAMS = fileerrret openerr file_errhdl mpi-testsuite-3.2+dfsg/errors/io/openerr.c0000644000175000017500000001070012620254305020117 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #include #ifdef HAVE_STRING_H #include #endif #include "mpitest.h" /* * openerr - Test that errors on file open are handled correctly and that the * returned error message is accessible */ #define BUFLEN 10 int main(int argc, char *argv[]) { MPI_File fh; char emsg[MPI_MAX_ERROR_STRING]; int emsglen, err, ec, errs = 0; int amode, rank; char *name = 0; MPI_Status st; int outbuf[BUFLEN], inbuf[BUFLEN]; MTest_Init(&argc, &argv); name = "not-a-file-to-use"; /* Try to open a file that does/should not exist */ /* Note that no error message should be printed by MPI_File_open, * even when there is an error */ err = MPI_File_open(MPI_COMM_WORLD, name, MPI_MODE_RDONLY, MPI_INFO_NULL, &fh); if (err == MPI_SUCCESS) { errs++; printf("Did not return error when opening a file that does not exist\n"); MPI_File_close(&fh); MPI_File_delete(name, MPI_INFO_NULL); } else { MPI_Error_class(err, &ec); MPI_Error_string(err, emsg, &emsglen); MTestPrintfMsg(2, "Error msg from open: %s\n", emsg); if (ec != MPI_ERR_NO_SUCH_FILE && ec != MPI_ERR_IO) { errs++; printf("Did not return class ERR_NO_SUCH_FILE or ERR_IO\n"); printf("Returned class %d, message %s\n", ec, emsg); } } /* Now, create a file, write data into it; close, then reopen as * read only and try to write to it */ amode = MPI_MODE_CREATE | MPI_MODE_WRONLY; name = "mpio-test-openerrs"; err = MPI_File_open(MPI_COMM_WORLD, name, amode, MPI_INFO_NULL, &fh); if (err) { errs++; MTestPrintErrorMsg("Unable to open file for writing", err); } else { MPI_Comm_rank(MPI_COMM_WORLD, &rank); memset(outbuf, 'A' + rank, BUFLEN); err = MPI_File_write_at(fh, rank * BUFLEN, outbuf, BUFLEN, MPI_BYTE, &st); if (err) { errs++; MTestPrintErrorMsg("Unable to write file", err); } MPI_File_close(&fh); } /* Now, open for read only, and delete on close */ amode = MPI_MODE_RDONLY | MPI_MODE_DELETE_ON_CLOSE; err = MPI_File_open(MPI_COMM_WORLD, name, amode, MPI_INFO_NULL, &fh); if (err) { errs++; MTestPrintErrorMsg("Unable to reopen file for reading", err); } else { /* Try to read it */ /* Clear buffer before reading into it */ memset(inbuf, 0, BUFLEN); err = MPI_File_read_at(fh, rank * BUFLEN, inbuf, BUFLEN, MPI_BYTE, &st); if (err) { errs++; MTestPrintErrorMsg("Unable to read file", err); } /* Try to write it (should fail) */ err = MPI_File_write_at(fh, rank * BUFLEN, outbuf, BUFLEN, MPI_BYTE, &st); if (err == MPI_SUCCESS) { errs++; printf("Write operation succeeded to read-only file\n"); } else { /* Look at error class */ MPI_Error_class(err, &ec); if (ec != MPI_ERR_READ_ONLY && ec != MPI_ERR_ACCESS) { errs++; printf("Unexpected error class %d when writing to read-only file\n", ec); MTestPrintErrorMsg("Error msg is: ", err); } } err = MPI_File_close(&fh); if (err) { errs++; MTestPrintErrorMsg("Failed to close", err); } /* No MPI_Barrier is required here */ /* * Test open without CREATE to see if DELETE_ON_CLOSE worked. * This should fail if file was deleted correctly. */ amode = MPI_MODE_RDONLY; err = MPI_File_open(MPI_COMM_WORLD, name, amode, MPI_INFO_NULL, &fh); if (err == MPI_SUCCESS) { errs++; printf("File was not deleted!\n"); MPI_File_close(&fh); } else { MPI_Error_class(err, &ec); if (ec != MPI_ERR_NO_SUCH_FILE && ec != MPI_ERR_IO) { errs++; printf("Did not return class ERR_NO_SUCH_FILE or ERR_IO\n"); printf("Returned class %d, message %s\n", ec, emsg); } } } /* */ /* Find out how many errors we saw */ MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/io/file_errhdl.c0000644000175000017500000000125312620254305020727 0ustar mbanckmbanck/* test case contributed by Lisandro Dalcin */ #include #include int main(int argc, char *argv[]) { int ierr; MPI_File fh; MPI_Init(&argc, &argv); MPI_File_open(MPI_COMM_WORLD, "/tmp/datafile", MPI_MODE_CREATE | MPI_MODE_RDWR | MPI_MODE_DELETE_ON_CLOSE, MPI_INFO_NULL, &fh); MPI_File_set_errhandler(fh, MPI_ERRORS_RETURN); ierr = MPI_File_call_errhandler(fh, MPI_ERR_FILE); if (ierr != MPI_SUCCESS) { fprintf(stderr, "ierr: %d, expected: %d\n", ierr, (int) MPI_SUCCESS); } else { printf(" No Errors\n"); } MPI_File_close(&fh); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/basic/0000755000175000017500000000000012621010232016743 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/errors/basic/lefthandles.c0000644000175000017500000000121212620254305021406 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2006 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include int main(int argc, char *argv[]) { MPI_Comm comm; MPI_Datatype ntype; int i; MPI_Init(&argc, &argv); for (i = 0; i < 20; i++) { MPI_Comm_dup(MPI_COMM_WORLD, &comm); } MPI_Type_contiguous(27, MPI_INT, &ntype); MPI_Type_contiguous(27, MPI_INT, &ntype); MPI_Type_contiguous(27, MPI_INT, &ntype); MPI_Type_contiguous(27, MPI_INT, &ntype); MPI_Type_contiguous(27, MPI_INT, &ntype); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/basic/Makefile.in0000644000175000017500000004755512621010232021030 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = lefthandles$(EXEEXT) debabort$(EXEEXT) subdir = errors/basic ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) debabort_SOURCES = debabort.c debabort_OBJECTS = debabort.$(OBJEXT) debabort_LDADD = $(LDADD) debabort_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o lefthandles_SOURCES = lefthandles.c lefthandles_OBJECTS = lefthandles.$(OBJEXT) lefthandles_LDADD = $(LDADD) lefthandles_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = debabort.c lefthandles.c DIST_SOURCES = debabort.c lefthandles.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.mtest \ $(top_srcdir)/confdb/depcomp README DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign errors/basic/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign errors/basic/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) debabort$(EXEEXT): $(debabort_OBJECTS) $(debabort_DEPENDENCIES) $(EXTRA_debabort_DEPENDENCIES) @rm -f debabort$(EXEEXT) $(AM_V_CCLD)$(LINK) $(debabort_OBJECTS) $(debabort_LDADD) $(LIBS) lefthandles$(EXEEXT): $(lefthandles_OBJECTS) $(lefthandles_DEPENDENCIES) $(EXTRA_lefthandles_DEPENDENCIES) @rm -f lefthandles$(EXEEXT) $(AM_V_CCLD)$(LINK) $(lefthandles_OBJECTS) $(lefthandles_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/debabort.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lefthandles.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/errors/basic/debabort.c0000644000175000017500000000076112620254305020707 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2006 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include int main(int argc, char *argv[]) { int rank; double v1[2], v2[2]; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); /* Clearly incorrect program */ MPI_Allreduce(v1, v2, rank ? 1 : 2, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/basic/Makefile.am0000644000175000017500000000060212620254305021007 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile.mtest ## for all programs that are just built from the single corresponding source ## file, we don't need per-target _SOURCES rules, automake will infer them ## correctly noinst_PROGRAMS = lefthandles debabort mpi-testsuite-3.2+dfsg/errors/basic/README0000644000175000017500000000135212620254305017636 0ustar mbanckmbanckThis directory contains programs that are expected to fail in some way. They should be run manually to check the response of the MPI implementation to these failures. The programs are: debabort: This is a simple program that passes inconsistent parameters to MPI_Allreduce and should cause a run-time error. This may be used to see if a debugger can regain control of an MPI program when such an error, which will normally cause an Abort, occurs. lefthandles: This program allocates several MPI objects that are not freed. An MPI implmentation is not required to report this or fail in this case, but an MPI implementation that is striving to report storage leaks caused by user programs should report allocated and unfreed MPI objects. mpi-testsuite-3.2+dfsg/errors/faults/0000755000175000017500000000000012621010233017161 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/errors/faults/collf2.c0000644000175000017500000000356512620254305020530 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2009 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test error reporting from faults with collective communication"; */ int ReportErr(int errcode, const char name[]); int main(int argc, char *argv[]) { int wrank, wsize, rank, size, color; int tmp, errs = 0; MPI_Comm newcomm; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &wsize); MPI_Comm_rank(MPI_COMM_WORLD, &wrank); /* Color is 0 or 1; 1 will be the processes that "fault" */ /* process 0 and wsize/2+1...wsize-1 are in non-faulting group */ color = (wrank > 0) && (wrank <= wsize / 2); MPI_Comm_split(MPI_COMM_WORLD, color, wrank, &newcomm); MPI_Comm_size(newcomm, &size); MPI_Comm_rank(newcomm, &rank); /* Set errors return on COMM_WORLD and the new comm */ MPI_Comm_set_errhandler(MPI_ERRORS_RETURN, MPI_COMM_WORLD); MPI_Comm_set_errhandler(MPI_ERRORS_RETURN, newcomm); MPI_Barrier(MPI_COMM_WORLD); if (color) { /* Simulate a fault on some processes */ exit(1); } /* Can we still use newcomm? */ MPI_Allreduce(&rank, &tmp, 1, MPI_INT, MPI_SUM, newcomm); if (tmp != (size * (size + 1)) / 2) { printf("Allreduce gave %d but expected %d\n", tmp, (size * (size + 1)) / 2); errs++; } MPI_Comm_free(&newcomm); MPI_Finalize(); printf(" No Errors\n"); return 0; } int ReportErr(int errcode, const char name[]) { int errclass, errlen; char errmsg[MPI_MAX_ERROR_STRING]; MPI_Error_class(errcode, &errclass); MPI_Error_string(errcode, errmsg, &errlen); fprintf(stderr, "In %s, error code %d(class %d) = %s\n", name, errcode, errclass, errmsg); return 1; } mpi-testsuite-3.2+dfsg/errors/faults/pt2ptf2.c0000644000175000017500000000624112620254305020642 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2009 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test error reporting from faults with point to point communication"; */ int ReportErr(int errcode, const char name[]); int main(int argc, char *argv[]) { int wrank, wsize, rank, size, color; int j, tmp; int err, toterrs, errs = 0; MPI_Comm newcomm; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &wsize); MPI_Comm_rank(MPI_COMM_WORLD, &wrank); /* Color is 0 or 1; 1 will be the processes that "fault" */ /* process 0 and wsize/2+1...wsize-1 are in non-faulting group */ color = (wrank > 0) && (wrank <= wsize / 2); MPI_Comm_split(MPI_COMM_WORLD, color, wrank, &newcomm); MPI_Comm_size(newcomm, &size); MPI_Comm_rank(newcomm, &rank); /* Set errors return on COMM_WORLD and the new comm */ MPI_Comm_set_errhandler(MPI_ERRORS_RETURN, MPI_COMM_WORLD); MPI_Comm_set_errhandler(MPI_ERRORS_RETURN, newcomm); err = MPI_Barrier(MPI_COMM_WORLD); if (err) errs += ReportErr(err, "Barrier"); if (color) { /* Simulate a fault on some processes */ exit(1); } else { /* To improve the chance that the "faulted" processes will have * exited, wait for 1 second */ MTestSleep(1); } /* Can we still use newcomm? */ for (j = 0; j < rank; j++) { err = MPI_Recv(&tmp, 1, MPI_INT, j, 0, newcomm, MPI_STATUS_IGNORE); if (err) errs += ReportErr(err, "Recv"); } for (j = rank + 1; j < size; j++) { err = MPI_Send(&rank, 1, MPI_INT, j, 0, newcomm); if (err) errs += ReportErr(err, "Recv"); } /* Now, try sending in MPI_COMM_WORLD on dead processes */ /* There is a race condition here - we don't know for sure that the faulted * processes have exited. However, we can ensure a failure by using * synchronous sends - the sender will wait until the reciever handles * receives the message, which will not happen (the process will exit * without matching the message, even if it has not yet exited). */ for (j = 1; j <= wsize / 2; j++) { err = MPI_Ssend(&rank, 1, MPI_INT, j, 0, MPI_COMM_WORLD); if (!err) { errs++; fprintf(stderr, "Ssend succeeded to dead process %d\n", j); } } err = MPI_Allreduce(&errs, &toterrs, 1, MPI_INT, MPI_SUM, newcomm); if (err) errs += ReportErr(err, "Allreduce"); MPI_Comm_free(&newcomm); MPI_Finalize(); if (wrank == 0) { if (toterrs > 0) { printf(" Found %d errors\n", toterrs); } else { printf(" No Errors\n"); } } return 0; } int ReportErr(int errcode, const char name[]) { int errclass, errlen; char errmsg[MPI_MAX_ERROR_STRING]; MPI_Error_class(errcode, &errclass); MPI_Error_string(errcode, errmsg, &errlen); fprintf(stderr, "In %s, error code %d(class %d) = %s\n", name, errcode, errclass, errmsg); return 1; } mpi-testsuite-3.2+dfsg/errors/faults/testlist0000644000175000017500000000022512620254305020767 0ustar mbanckmbanckpt2ptf1 4 env=MPIEXEC_ALLOW_FAULT=YES collf1 4 env=MPIEXEC_ALLOW_FAULT=YES pt2ptf2 4 env=MPIEXEC_ALLOW_FAULT=YES collf2 4 env=MPIEXEC_ALLOW_FAULT=YESmpi-testsuite-3.2+dfsg/errors/faults/Makefile.in0000644000175000017500000005143612621010233021237 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = pt2ptf1$(EXEEXT) pt2ptf2$(EXEEXT) collf1$(EXEEXT) \ collf2$(EXEEXT) subdir = errors/faults ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) collf1_SOURCES = collf1.c collf1_OBJECTS = collf1.$(OBJEXT) collf1_LDADD = $(LDADD) collf1_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o collf2_SOURCES = collf2.c collf2_OBJECTS = collf2.$(OBJEXT) collf2_LDADD = $(LDADD) collf2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o pt2ptf1_SOURCES = pt2ptf1.c pt2ptf1_OBJECTS = pt2ptf1.$(OBJEXT) pt2ptf1_LDADD = $(LDADD) pt2ptf1_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o pt2ptf2_SOURCES = pt2ptf2.c pt2ptf2_OBJECTS = pt2ptf2.$(OBJEXT) pt2ptf2_LDADD = $(LDADD) pt2ptf2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = collf1.c collf2.c pt2ptf1.c pt2ptf2.c DIST_SOURCES = collf1.c collf2.c pt2ptf1.c pt2ptf2.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.mtest \ $(top_srcdir)/confdb/depcomp README DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign errors/faults/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign errors/faults/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) collf1$(EXEEXT): $(collf1_OBJECTS) $(collf1_DEPENDENCIES) $(EXTRA_collf1_DEPENDENCIES) @rm -f collf1$(EXEEXT) $(AM_V_CCLD)$(LINK) $(collf1_OBJECTS) $(collf1_LDADD) $(LIBS) collf2$(EXEEXT): $(collf2_OBJECTS) $(collf2_DEPENDENCIES) $(EXTRA_collf2_DEPENDENCIES) @rm -f collf2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(collf2_OBJECTS) $(collf2_LDADD) $(LIBS) pt2ptf1$(EXEEXT): $(pt2ptf1_OBJECTS) $(pt2ptf1_DEPENDENCIES) $(EXTRA_pt2ptf1_DEPENDENCIES) @rm -f pt2ptf1$(EXEEXT) $(AM_V_CCLD)$(LINK) $(pt2ptf1_OBJECTS) $(pt2ptf1_LDADD) $(LIBS) pt2ptf2$(EXEEXT): $(pt2ptf2_OBJECTS) $(pt2ptf2_DEPENDENCIES) $(EXTRA_pt2ptf2_DEPENDENCIES) @rm -f pt2ptf2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(pt2ptf2_OBJECTS) $(pt2ptf2_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collf1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collf2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pt2ptf1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pt2ptf2.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/errors/faults/collf1.c0000644000175000017500000000236412620254305020523 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2009 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test survivability from faults with collective communication"; */ int main(int argc, char *argv[]) { int wrank, wsize, rank, size, color; int tmp; MPI_Comm newcomm; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &wsize); MPI_Comm_rank(MPI_COMM_WORLD, &wrank); /* Color is 0 or 1; 1 will be the processes that "fault" */ color = (wrank > 0) && (wrank <= wsize / 2); MPI_Comm_split(MPI_COMM_WORLD, color, wrank, &newcomm); MPI_Barrier(MPI_COMM_WORLD); if (color) { /* Simulate a fault on some processes */ exit(1); } /* Can we still use newcomm? */ MPI_Comm_size(newcomm, &size); MPI_Comm_rank(newcomm, &rank); MPI_Allreduce(&rank, &tmp, 1, MPI_INT, MPI_SUM, newcomm); if (tmp != (size * (size + 1)) / 2) { printf("Allreduce gave %d but expected %d\n", tmp, (size * (size + 1)) / 2); } MPI_Comm_free(&newcomm); MPI_Finalize(); printf(" No Errors\n"); return 0; } mpi-testsuite-3.2+dfsg/errors/faults/pt2ptf1.c0000644000175000017500000000240712620254305020641 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2009 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test survivability from faults with point to point communication"; */ int main(int argc, char *argv[]) { int wrank, wsize, rank, size, color; int j, tmp; MPI_Comm newcomm; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &wsize); MPI_Comm_rank(MPI_COMM_WORLD, &wrank); /* Color is 0 or 1; 1 will be the processes that "fault" */ color = (wrank > 0) && (wrank <= wsize / 2); MPI_Comm_split(MPI_COMM_WORLD, color, wrank, &newcomm); MPI_Barrier(MPI_COMM_WORLD); if (color) { /* Simulate a fault on some processes */ exit(1); } /* Can we still use newcomm? */ MPI_Comm_size(newcomm, &size); MPI_Comm_rank(newcomm, &rank); for (j = 0; j < rank; j++) { MPI_Recv(&tmp, 1, MPI_INT, j, 0, newcomm, MPI_STATUS_IGNORE); } for (j = rank + 1; j < size; j++) { MPI_Send(&rank, 1, MPI_INT, j, 0, newcomm); } MPI_Comm_free(&newcomm); MPI_Finalize(); printf(" No Errors\n"); return 0; } mpi-testsuite-3.2+dfsg/errors/faults/Makefile.am0000644000175000017500000000064212620254305021230 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile.mtest EXTRA_DIST = testlist ## for all programs that are just built from the single corresponding source ## file, we don't need per-target _SOURCES rules, automake will infer them ## correctly noinst_PROGRAMS = pt2ptf1 pt2ptf2 collf1 collf2 mpi-testsuite-3.2+dfsg/errors/faults/README0000644000175000017500000000055712620254305020061 0ustar mbanckmbanckThis directory contains tests for the ability of MPI to survive faults. The MPI standard permits but does not require that an MPI implementation continue through a fault. If the MPI implementation does (claim) to be fault tolerant, these test programs provide some basic tests. To enable these, configure the tests with the configure option --enable-checkfaults . mpi-testsuite-3.2+dfsg/errors/rma/0000755000175000017500000000000012621010233016442 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/errors/rma/winerr.c0000644000175000017500000000354512620254305020134 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test the routines to control error handlers on windows"; */ static int calls = 0; static int errs = 0; static MPI_Win mywin; static int expected_err_class = MPI_ERR_OTHER; void weh(MPI_Win * win, int *err, ...); void weh(MPI_Win * win, int *err, ...) { int errclass; MPI_Error_class(*err, &errclass); if (errclass != expected_err_class) { errs++; printf("Unexpected error code (class = %d)\n", errclass); } if (*win != mywin) { errs++; printf("Unexpected window (got %x expected %x)\n", (int) *win, (int) mywin); } calls++; return; } int main(int argc, char *argv[]) { int err; int buf[2]; MPI_Win win; MPI_Comm comm; MPI_Errhandler newerr, olderr; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_Win_create_errhandler(weh, &newerr); MPI_Win_create(buf, 2 * sizeof(int), sizeof(int), MPI_INFO_NULL, comm, &win); mywin = win; MPI_Win_get_errhandler(win, &olderr); if (olderr != MPI_ERRORS_ARE_FATAL) { errs++; printf("Expected errors are fatal\n"); } MPI_Win_set_errhandler(win, newerr); expected_err_class = MPI_ERR_RANK; err = MPI_Put(buf, 1, MPI_INT, -5, 0, 1, MPI_INT, win); if (calls != 1) { errs++; printf("newerr not called\n"); calls = 1; } expected_err_class = MPI_ERR_OTHER; MPI_Win_call_errhandler(win, MPI_ERR_OTHER); if (calls != 2) { errs++; printf("newerr not called (2)\n"); } MPI_Win_free(&win); MPI_Errhandler_free(&newerr); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/rma/win_sync_free_at.c0000644000175000017500000000255712620254305022146 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include "win_sync.h" int main(int argc, char *argv[]) { int rank, nproc, i; int errors = 0, all_errors = 0; int buf, *my_buf; MPI_Win win; MPI_Group world_group; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Win_create(&buf, sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &win); MPI_Win_set_errhandler(win, MPI_ERRORS_RETURN); MPI_Comm_group(MPI_COMM_WORLD, &world_group); MPI_Win_post(world_group, 0, win); MPI_Win_start(world_group, 0, win); my_buf = malloc(nproc * sizeof(int)); for (i = 0; i < nproc; i++) { MPI_Get(&my_buf[i], 1, MPI_INT, i, 0, 1, MPI_INT, win); } /* This should fail, because the window is in an active target epoch. */ CHECK_ERR(MPI_Win_free(&win)); MPI_Win_complete(win); MPI_Win_wait(win); MPI_Win_free(&win); free(my_buf); MPI_Group_free(&world_group); MPI_Reduce(&errors, &all_errors, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (rank == 0 && all_errors == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/rma/testlist0000644000175000017500000000033312620254305020250 0ustar mbanckmbanckwinerr 2 winerr2 2 cas_type_check 2 mpiversion=3.0 win_sync_unlock 2 win_sync_free_pt 2 win_sync_free_at 2 win_sync_complete 2 win_sync_lock_at 2 win_sync_lock_pt 2 win_sync_lock_fence 2 win_sync_nested 2 win_sync_op 2 mpi-testsuite-3.2+dfsg/errors/rma/Makefile.in0000644000175000017500000006442212621010233020517 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = winerr$(EXEEXT) winerr2$(EXEEXT) \ cas_type_check$(EXEEXT) win_sync_unlock$(EXEEXT) \ win_sync_free_pt$(EXEEXT) win_sync_free_at$(EXEEXT) \ win_sync_complete$(EXEEXT) win_sync_lock_at$(EXEEXT) \ win_sync_lock_pt$(EXEEXT) win_sync_lock_fence$(EXEEXT) \ win_sync_nested$(EXEEXT) win_sync_op$(EXEEXT) subdir = errors/rma ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) cas_type_check_SOURCES = cas_type_check.c cas_type_check_OBJECTS = cas_type_check.$(OBJEXT) cas_type_check_LDADD = $(LDADD) cas_type_check_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o win_sync_complete_SOURCES = win_sync_complete.c win_sync_complete_OBJECTS = win_sync_complete.$(OBJEXT) win_sync_complete_LDADD = $(LDADD) win_sync_complete_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o win_sync_free_at_SOURCES = win_sync_free_at.c win_sync_free_at_OBJECTS = win_sync_free_at.$(OBJEXT) win_sync_free_at_LDADD = $(LDADD) win_sync_free_at_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o win_sync_free_pt_SOURCES = win_sync_free_pt.c win_sync_free_pt_OBJECTS = win_sync_free_pt.$(OBJEXT) win_sync_free_pt_LDADD = $(LDADD) win_sync_free_pt_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o win_sync_lock_at_SOURCES = win_sync_lock_at.c win_sync_lock_at_OBJECTS = win_sync_lock_at.$(OBJEXT) win_sync_lock_at_LDADD = $(LDADD) win_sync_lock_at_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o win_sync_lock_fence_SOURCES = win_sync_lock_fence.c win_sync_lock_fence_OBJECTS = win_sync_lock_fence.$(OBJEXT) win_sync_lock_fence_LDADD = $(LDADD) win_sync_lock_fence_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o win_sync_lock_pt_SOURCES = win_sync_lock_pt.c win_sync_lock_pt_OBJECTS = win_sync_lock_pt.$(OBJEXT) win_sync_lock_pt_LDADD = $(LDADD) win_sync_lock_pt_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o win_sync_nested_SOURCES = win_sync_nested.c win_sync_nested_OBJECTS = win_sync_nested.$(OBJEXT) win_sync_nested_LDADD = $(LDADD) win_sync_nested_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o win_sync_op_SOURCES = win_sync_op.c win_sync_op_OBJECTS = win_sync_op.$(OBJEXT) win_sync_op_LDADD = $(LDADD) win_sync_op_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o win_sync_unlock_SOURCES = win_sync_unlock.c win_sync_unlock_OBJECTS = win_sync_unlock.$(OBJEXT) win_sync_unlock_LDADD = $(LDADD) win_sync_unlock_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o winerr_SOURCES = winerr.c winerr_OBJECTS = winerr.$(OBJEXT) winerr_LDADD = $(LDADD) winerr_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o winerr2_SOURCES = winerr2.c winerr2_OBJECTS = winerr2.$(OBJEXT) winerr2_LDADD = $(LDADD) winerr2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = cas_type_check.c win_sync_complete.c win_sync_free_at.c \ win_sync_free_pt.c win_sync_lock_at.c win_sync_lock_fence.c \ win_sync_lock_pt.c win_sync_nested.c win_sync_op.c \ win_sync_unlock.c winerr.c winerr2.c DIST_SOURCES = cas_type_check.c win_sync_complete.c win_sync_free_at.c \ win_sync_free_pt.c win_sync_lock_at.c win_sync_lock_fence.c \ win_sync_lock_pt.c win_sync_nested.c win_sync_op.c \ win_sync_unlock.c winerr.c winerr2.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.mtest \ $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign errors/rma/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign errors/rma/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) cas_type_check$(EXEEXT): $(cas_type_check_OBJECTS) $(cas_type_check_DEPENDENCIES) $(EXTRA_cas_type_check_DEPENDENCIES) @rm -f cas_type_check$(EXEEXT) $(AM_V_CCLD)$(LINK) $(cas_type_check_OBJECTS) $(cas_type_check_LDADD) $(LIBS) win_sync_complete$(EXEEXT): $(win_sync_complete_OBJECTS) $(win_sync_complete_DEPENDENCIES) $(EXTRA_win_sync_complete_DEPENDENCIES) @rm -f win_sync_complete$(EXEEXT) $(AM_V_CCLD)$(LINK) $(win_sync_complete_OBJECTS) $(win_sync_complete_LDADD) $(LIBS) win_sync_free_at$(EXEEXT): $(win_sync_free_at_OBJECTS) $(win_sync_free_at_DEPENDENCIES) $(EXTRA_win_sync_free_at_DEPENDENCIES) @rm -f win_sync_free_at$(EXEEXT) $(AM_V_CCLD)$(LINK) $(win_sync_free_at_OBJECTS) $(win_sync_free_at_LDADD) $(LIBS) win_sync_free_pt$(EXEEXT): $(win_sync_free_pt_OBJECTS) $(win_sync_free_pt_DEPENDENCIES) $(EXTRA_win_sync_free_pt_DEPENDENCIES) @rm -f win_sync_free_pt$(EXEEXT) $(AM_V_CCLD)$(LINK) $(win_sync_free_pt_OBJECTS) $(win_sync_free_pt_LDADD) $(LIBS) win_sync_lock_at$(EXEEXT): $(win_sync_lock_at_OBJECTS) $(win_sync_lock_at_DEPENDENCIES) $(EXTRA_win_sync_lock_at_DEPENDENCIES) @rm -f win_sync_lock_at$(EXEEXT) $(AM_V_CCLD)$(LINK) $(win_sync_lock_at_OBJECTS) $(win_sync_lock_at_LDADD) $(LIBS) win_sync_lock_fence$(EXEEXT): $(win_sync_lock_fence_OBJECTS) $(win_sync_lock_fence_DEPENDENCIES) $(EXTRA_win_sync_lock_fence_DEPENDENCIES) @rm -f win_sync_lock_fence$(EXEEXT) $(AM_V_CCLD)$(LINK) $(win_sync_lock_fence_OBJECTS) $(win_sync_lock_fence_LDADD) $(LIBS) win_sync_lock_pt$(EXEEXT): $(win_sync_lock_pt_OBJECTS) $(win_sync_lock_pt_DEPENDENCIES) $(EXTRA_win_sync_lock_pt_DEPENDENCIES) @rm -f win_sync_lock_pt$(EXEEXT) $(AM_V_CCLD)$(LINK) $(win_sync_lock_pt_OBJECTS) $(win_sync_lock_pt_LDADD) $(LIBS) win_sync_nested$(EXEEXT): $(win_sync_nested_OBJECTS) $(win_sync_nested_DEPENDENCIES) $(EXTRA_win_sync_nested_DEPENDENCIES) @rm -f win_sync_nested$(EXEEXT) $(AM_V_CCLD)$(LINK) $(win_sync_nested_OBJECTS) $(win_sync_nested_LDADD) $(LIBS) win_sync_op$(EXEEXT): $(win_sync_op_OBJECTS) $(win_sync_op_DEPENDENCIES) $(EXTRA_win_sync_op_DEPENDENCIES) @rm -f win_sync_op$(EXEEXT) $(AM_V_CCLD)$(LINK) $(win_sync_op_OBJECTS) $(win_sync_op_LDADD) $(LIBS) win_sync_unlock$(EXEEXT): $(win_sync_unlock_OBJECTS) $(win_sync_unlock_DEPENDENCIES) $(EXTRA_win_sync_unlock_DEPENDENCIES) @rm -f win_sync_unlock$(EXEEXT) $(AM_V_CCLD)$(LINK) $(win_sync_unlock_OBJECTS) $(win_sync_unlock_LDADD) $(LIBS) winerr$(EXEEXT): $(winerr_OBJECTS) $(winerr_DEPENDENCIES) $(EXTRA_winerr_DEPENDENCIES) @rm -f winerr$(EXEEXT) $(AM_V_CCLD)$(LINK) $(winerr_OBJECTS) $(winerr_LDADD) $(LIBS) winerr2$(EXEEXT): $(winerr2_OBJECTS) $(winerr2_DEPENDENCIES) $(EXTRA_winerr2_DEPENDENCIES) @rm -f winerr2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(winerr2_OBJECTS) $(winerr2_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cas_type_check.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/win_sync_complete.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/win_sync_free_at.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/win_sync_free_pt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/win_sync_lock_at.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/win_sync_lock_fence.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/win_sync_lock_pt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/win_sync_nested.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/win_sync_op.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/win_sync_unlock.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/winerr.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/winerr2.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/errors/rma/win_sync.h0000644000175000017500000000351012620254305020454 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #ifndef WIN_SYNC_H_INCLUDED #define WIN_SYNC_H_INCLUDED #define CHECK_ERR(stmt) \ do { \ int err_class, err, rank; \ MPI_Comm_rank(MPI_COMM_WORLD, &rank); \ err = stmt; \ if (err == MPI_SUCCESS) { \ printf("%d: Operation succeeded, when it should have failed\n", rank); \ errors++; \ } else { \ MPI_Error_class(err, &err_class); \ if (err_class != MPI_ERR_RMA_SYNC) { \ char str[MPI_MAX_ERROR_STRING]; \ int len; \ MPI_Error_string(err, str, &len); \ printf("%d: Expected MPI_ERR_RMA_SYNC, got:\n%s\n", rank, str); \ errors++; \ } \ } \ } while (0) #endif mpi-testsuite-3.2+dfsg/errors/rma/win_sync_lock_pt.c0000644000175000017500000000176612620254305022175 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" #include "win_sync.h" int main(int argc, char *argv[]) { int rank; int errors = 0, all_errors = 0; int buf; MPI_Win win; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Win_create(&buf, sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &win); MPI_Win_set_errhandler(win, MPI_ERRORS_RETURN); MPI_Win_lock(MPI_LOCK_SHARED, 0, MPI_MODE_NOCHECK, win); /* This should fail because the window is already locked */ CHECK_ERR(MPI_Win_lock(MPI_LOCK_SHARED, 0, MPI_MODE_NOCHECK, win)); MPI_Win_unlock(0, win); MPI_Win_free(&win); MPI_Reduce(&errors, &all_errors, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (rank == 0 && all_errors == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/rma/cas_type_check.c0000644000175000017500000000652212620254305021570 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #define CAS_CHECK_TYPE(c_type, mpi_type, expected_err) \ do { \ int err, err_class, i; \ c_type val, cmp_val; \ c_type buf, res; \ MPI_Win win; \ \ val = cmp_val = buf = 0; \ \ MPI_Win_create(&buf, sizeof(c_type), sizeof(c_type), \ MPI_INFO_NULL, MPI_COMM_WORLD, &win); \ \ MPI_Win_set_errhandler(win, MPI_ERRORS_RETURN); \ \ MPI_Win_fence(MPI_MODE_NOPRECEDE, win); \ for (i = 0; i < 10000; i++) { \ err = MPI_Compare_and_swap(&val, &cmp_val, &res, \ mpi_type, 0, 0, win); \ MPI_Error_class(err, &err_class); \ assert(err_class == expected_err); \ } \ MPI_Win_fence(MPI_MODE_NOSUCCEED, win); \ \ MPI_Win_free(&win); \ } while (0); int main(int argc, char *argv[]) { int rank; MPI_Datatype my_int; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); /* C Integer */ CAS_CHECK_TYPE(signed char, MPI_SIGNED_CHAR, MPI_SUCCESS); CAS_CHECK_TYPE(short, MPI_SHORT, MPI_SUCCESS); CAS_CHECK_TYPE(int, MPI_INT, MPI_SUCCESS); CAS_CHECK_TYPE(long, MPI_LONG, MPI_SUCCESS); CAS_CHECK_TYPE(long long, MPI_LONG_LONG, MPI_SUCCESS); CAS_CHECK_TYPE(unsigned char, MPI_UNSIGNED_CHAR, MPI_SUCCESS); CAS_CHECK_TYPE(unsigned short, MPI_UNSIGNED_SHORT, MPI_SUCCESS); CAS_CHECK_TYPE(unsigned, MPI_UNSIGNED, MPI_SUCCESS); CAS_CHECK_TYPE(unsigned long, MPI_UNSIGNED_LONG, MPI_SUCCESS); CAS_CHECK_TYPE(unsigned long long, MPI_UNSIGNED_LONG_LONG, MPI_SUCCESS); /* Multilanguage Types */ CAS_CHECK_TYPE(MPI_Aint, MPI_AINT, MPI_SUCCESS); CAS_CHECK_TYPE(MPI_Offset, MPI_OFFSET, MPI_SUCCESS); CAS_CHECK_TYPE(MPI_Count, MPI_COUNT, MPI_SUCCESS); /* Byte */ CAS_CHECK_TYPE(char, MPI_BYTE, MPI_SUCCESS); /* Logical */ CAS_CHECK_TYPE(char, MPI_C_BOOL, MPI_SUCCESS); /* ERR: Derived datatypes */ MPI_Type_contiguous(sizeof(int), MPI_BYTE, &my_int); MPI_Type_commit(&my_int); CAS_CHECK_TYPE(int, my_int, MPI_ERR_TYPE); MPI_Type_free(&my_int); /* ERR: Character types */ CAS_CHECK_TYPE(char, MPI_CHAR, MPI_SUCCESS); /* ERR: Floating point */ CAS_CHECK_TYPE(float, MPI_FLOAT, MPI_ERR_TYPE); CAS_CHECK_TYPE(double, MPI_DOUBLE, MPI_ERR_TYPE); #ifdef HAVE_LONG_DOUBLE if (MPI_LONG_DOUBLE != MPI_DATATYPE_NULL) { CAS_CHECK_TYPE(long double, MPI_LONG_DOUBLE, MPI_ERR_TYPE); } #endif if (rank == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/rma/Makefile.am0000644000175000017500000000127212620254305020511 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile.mtest EXTRA_DIST = testlist ## for all programs that are just built from the single corresponding source ## file, we don't need per-target _SOURCES rules, automake will infer them ## correctly noinst_PROGRAMS = \ winerr \ winerr2 \ cas_type_check \ win_sync_unlock \ win_sync_free_pt \ win_sync_free_at \ win_sync_complete \ win_sync_lock_at \ win_sync_lock_pt \ win_sync_lock_fence \ win_sync_nested \ win_sync_op mpi-testsuite-3.2+dfsg/errors/rma/win_sync_unlock.c0000644000175000017500000000157012620254305022026 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" #include "win_sync.h" int main(int argc, char *argv[]) { int rank; int errors = 0, all_errors = 0; int buf; MPI_Win win; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Win_create(&buf, sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &win); MPI_Win_set_errhandler(win, MPI_ERRORS_RETURN); /* This should fail because the window is not locked. */ CHECK_ERR(MPI_Win_unlock(0, win)); MPI_Win_free(&win); MPI_Reduce(&errors, &all_errors, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (rank == 0 && all_errors == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/rma/winerr2.c0000644000175000017500000000656512620254305020223 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test the routines to control error handlers on windows"; */ static int calls = 0; static int errs = 0; static MPI_Win mywin; static int expected_err_class = MPI_ERR_OTHER; static int w1Called = 0; static int w2Called = 0; void weh1(MPI_Win * win, int *err, ...); void weh1(MPI_Win * win, int *err, ...) { int errclass; w1Called++; MPI_Error_class(*err, &errclass); if (errclass != expected_err_class) { errs++; printf("Unexpected error code (class = %d)\n", errclass); } if (*win != mywin) { errs++; printf("Unexpected window (got %x expected %x)\n", (int) *win, (int) mywin); } calls++; return; } void weh2(MPI_Win * win, int *err, ...); void weh2(MPI_Win * win, int *err, ...) { int errclass; w2Called++; MPI_Error_class(*err, &errclass); if (errclass != expected_err_class) { errs++; printf("Unexpected error code (class = %d)\n", errclass); } if (*win != mywin) { errs++; printf("Unexpected window (got %x expected %x)\n", (int) *win, (int) mywin); } calls++; return; } int main(int argc, char *argv[]) { int err; int buf[2]; MPI_Win win; MPI_Comm comm; MPI_Errhandler newerr1, newerr2, olderr; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_Win_create_errhandler(weh1, &newerr1); MPI_Win_create_errhandler(weh2, &newerr2); MPI_Win_create(buf, 2 * sizeof(int), sizeof(int), MPI_INFO_NULL, comm, &win); mywin = win; MPI_Win_get_errhandler(win, &olderr); if (olderr != MPI_ERRORS_ARE_FATAL) { errs++; printf("Expected errors are fatal\n"); } MPI_Win_set_errhandler(win, newerr1); /* We should be able to free the error handler now since the window is * using it */ MPI_Errhandler_free(&newerr1); expected_err_class = MPI_ERR_RANK; err = MPI_Put(buf, 1, MPI_INT, -5, 0, 1, MPI_INT, win); if (w1Called != 1) { errs++; printf("newerr1 not called\n"); w1Called = 1; } expected_err_class = MPI_ERR_OTHER; MPI_Win_call_errhandler(win, MPI_ERR_OTHER); if (w1Called != 2) { errs++; printf("newerr1 not called (2)\n"); } if (w1Called != 2 || w2Called != 0) { errs++; printf("Error handler weh1 not called the expected number of times\n"); } /* Try another error handler. This should allow the MPI implementation to * free the first error handler */ MPI_Win_set_errhandler(win, newerr2); MPI_Errhandler_free(&newerr2); expected_err_class = MPI_ERR_RANK; err = MPI_Put(buf, 1, MPI_INT, -5, 0, 1, MPI_INT, win); if (w2Called != 1) { errs++; printf("newerr2 not called\n"); calls = 1; } expected_err_class = MPI_ERR_OTHER; MPI_Win_call_errhandler(win, MPI_ERR_OTHER); if (w2Called != 2) { errs++; printf("newerr2 not called (2)\n"); } if (w1Called != 2 || w2Called != 2) { errs++; printf("Error handler weh1 not called the expected number of times\n"); } MPI_Win_free(&win); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/rma/win_sync_lock_fence.c0000644000175000017500000000227412620254305022625 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include "win_sync.h" int main(int argc, char *argv[]) { int rank, nproc; int errors = 0, all_errors = 0; int buf, my_buf; MPI_Win win; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Win_create(&buf, sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &win); MPI_Win_set_errhandler(win, MPI_ERRORS_RETURN); MPI_Win_fence(0, win); MPI_Win_lock(MPI_LOCK_SHARED, 0, MPI_MODE_NOCHECK, win); MPI_Get(&my_buf, 1, MPI_INT, 0, 0, 1, MPI_INT, win); MPI_Win_unlock(0, win); /* This should fail because the window is no longer in a fence epoch */ CHECK_ERR(MPI_Get(&my_buf, 1, MPI_INT, 0, 0, 1, MPI_INT, win)); MPI_Win_fence(0, win); MPI_Win_free(&win); MPI_Reduce(&errors, &all_errors, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (rank == 0 && all_errors == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/rma/win_sync_nested.c0000644000175000017500000000300512620254305022010 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include "win_sync.h" int main(int argc, char *argv[]) { int rank, nproc, i; int errors = 0, all_errors = 0; int buf, *my_buf; MPI_Win win; MPI_Group world_group; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Win_create(&buf, sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &win); MPI_Win_set_errhandler(win, MPI_ERRORS_RETURN); MPI_Comm_group(MPI_COMM_WORLD, &world_group); MPI_Win_post(world_group, 0, win); MPI_Win_start(world_group, 0, win); my_buf = malloc(nproc * sizeof(int)); for (i = 0; i < nproc; i++) { MPI_Get(&my_buf[i], 1, MPI_INT, i, 0, 1, MPI_INT, win); } /* This should fail, because the window is in an active target access epoch. */ CHECK_ERR(MPI_Win_start(world_group, 0, win)); MPI_Win_complete(win); /* This should fail, because the window is not in an active target access epoch. */ CHECK_ERR(MPI_Win_complete(win)); MPI_Win_wait(win); MPI_Win_free(&win); free(my_buf); MPI_Group_free(&world_group); MPI_Reduce(&errors, &all_errors, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (rank == 0 && all_errors == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/rma/win_sync_op.c0000644000175000017500000000175712620254305021160 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include "win_sync.h" int main(int argc, char *argv[]) { int rank, nproc; int errors = 0, all_errors = 0; int buf, my_buf; MPI_Win win; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Win_create(&buf, sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &win); MPI_Win_set_errhandler(win, MPI_ERRORS_RETURN); /* This should fail because the window is not in any access epoch */ CHECK_ERR(MPI_Get(&my_buf, 1, MPI_INT, 0, 0, 1, MPI_INT, win)); MPI_Win_free(&win); MPI_Reduce(&errors, &all_errors, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (rank == 0 && all_errors == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/rma/win_sync_lock_at.c0000644000175000017500000000262212620254305022146 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include "win_sync.h" int main(int argc, char *argv[]) { int rank, nproc, i; int errors = 0, all_errors = 0; int buf, *my_buf; MPI_Win win; MPI_Group world_group; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Win_create(&buf, sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &win); MPI_Win_set_errhandler(win, MPI_ERRORS_RETURN); MPI_Comm_group(MPI_COMM_WORLD, &world_group); MPI_Win_post(world_group, 0, win); MPI_Win_start(world_group, 0, win); my_buf = malloc(nproc * sizeof(int)); for (i = 0; i < nproc; i++) { MPI_Get(&my_buf[i], 1, MPI_INT, i, 0, 1, MPI_INT, win); } /* This should fail because the window is in an active target epoch */ CHECK_ERR(MPI_Win_lock(MPI_LOCK_SHARED, 0, MPI_MODE_NOCHECK, win)); MPI_Win_complete(win); MPI_Win_wait(win); MPI_Win_free(&win); free(my_buf); MPI_Group_free(&world_group); MPI_Reduce(&errors, &all_errors, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (rank == 0 && all_errors == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/rma/win_sync_complete.c0000644000175000017500000000157112620254305022344 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" #include "win_sync.h" int main(int argc, char *argv[]) { int rank; int errors = 0, all_errors = 0; int buf; MPI_Win win; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Win_create(&buf, sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &win); MPI_Win_set_errhandler(win, MPI_ERRORS_RETURN); /* This should fail because a PSCW epoch is not active. */ CHECK_ERR(MPI_Win_complete(win)); MPI_Win_free(&win); MPI_Reduce(&errors, &all_errors, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (rank == 0 && all_errors == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/rma/win_sync_free_pt.c0000644000175000017500000000171312620254305022156 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" #include "win_sync.h" int main(int argc, char *argv[]) { int rank; int errors = 0, all_errors = 0; int buf; MPI_Win win; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Win_create(&buf, sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &win); MPI_Win_set_errhandler(win, MPI_ERRORS_RETURN); MPI_Win_lock(MPI_LOCK_SHARED, 0, MPI_MODE_NOCHECK, win); /* This should fail, because the window is locked. */ CHECK_ERR(MPI_Win_free(&win)); MPI_Win_unlock(0, win); MPI_Win_free(&win); MPI_Reduce(&errors, &all_errors, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (rank == 0 && all_errors == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/group/0000755000175000017500000000000012621010233017017 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/errors/group/testlist0000644000175000017500000000000612620254305020622 0ustar mbanckmbanckgerr 1mpi-testsuite-3.2+dfsg/errors/group/Makefile.in0000644000175000017500000004635612621010233021102 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = gerr$(EXEEXT) subdir = errors/group ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) gerr_SOURCES = gerr.c gerr_OBJECTS = gerr.$(OBJEXT) gerr_LDADD = $(LDADD) gerr_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = gerr.c DIST_SOURCES = gerr.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.mtest \ $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign errors/group/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign errors/group/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) gerr$(EXEEXT): $(gerr_OBJECTS) $(gerr_DEPENDENCIES) $(EXTRA_gerr_DEPENDENCIES) @rm -f gerr$(EXEEXT) $(AM_V_CCLD)$(LINK) $(gerr_OBJECTS) $(gerr_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gerr.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/errors/group/Makefile.am0000644000175000017500000000061112620254305021062 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile.mtest EXTRA_DIST = testlist ## for all programs that are just built from the single corresponding source ## file, we don't need per-target _SOURCES rules, automake will infer them ## correctly noinst_PROGRAMS = gerr mpi-testsuite-3.2+dfsg/errors/group/gerr.c0000644000175000017500000000207212620254305020134 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* * Test whether invalid handles to group routines are detected */ int verbose = 0; int main(int argc, char *argv[]) { int errs = 0; int rc; int ranks[2]; MPI_Group ng; char str[MPI_MAX_ERROR_STRING + 1]; int slen; MTest_Init(&argc, &argv); /* Set errors return */ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); /* Create some valid input data except for the group handle */ ranks[0] = 0; rc = MPI_Group_incl(MPI_COMM_WORLD, 1, ranks, &ng); if (rc == MPI_SUCCESS) { errs++; printf("Did not detect invalid handle (comm) in group_incl\n"); } else { if (verbose) { MPI_Error_string(rc, str, &slen); printf("Found expected error; message is: %s\n", str); } } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/topo/0000755000175000017500000000000012621010233016644 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/errors/topo/testlist0000644000175000017500000000001412620254305020446 0ustar mbanckmbanckcartsmall 4 mpi-testsuite-3.2+dfsg/errors/topo/Makefile.in0000644000175000017500000004650012621010233020716 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = cartsmall$(EXEEXT) subdir = errors/topo ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) cartsmall_SOURCES = cartsmall.c cartsmall_OBJECTS = cartsmall.$(OBJEXT) cartsmall_LDADD = $(LDADD) cartsmall_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = cartsmall.c DIST_SOURCES = cartsmall.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.mtest \ $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign errors/topo/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign errors/topo/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) cartsmall$(EXEEXT): $(cartsmall_OBJECTS) $(cartsmall_DEPENDENCIES) $(EXTRA_cartsmall_DEPENDENCIES) @rm -f cartsmall$(EXEEXT) $(AM_V_CCLD)$(LINK) $(cartsmall_OBJECTS) $(cartsmall_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cartsmall.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/errors/topo/Makefile.am0000644000175000017500000000061612620254305020714 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile.mtest EXTRA_DIST = testlist ## for all programs that are just built from the single corresponding source ## file, we don't need per-target _SOURCES rules, automake will infer them ## correctly noinst_PROGRAMS = cartsmall mpi-testsuite-3.2+dfsg/errors/topo/cartsmall.c0000644000175000017500000000174212620254305021007 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2007 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" int main(int argc, char *argv[]) { int errs = 0, err; int dims[2]; int periods[2]; int size, rank; MPI_Comm comm; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); dims[0] = size; dims[1] = size; periods[0] = 0; periods[1] = 0; MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); err = MPI_Cart_create(MPI_COMM_WORLD, 2, dims, periods, 0, &comm); if (err == MPI_SUCCESS) { errs++; printf("Cart_create returned success when dims > size\n"); } else if (comm != MPI_COMM_NULL) { errs++; printf("Expected a null comm from cart create\n"); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/cxx/0000755000175000017500000000000012621010233016465 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/errors/cxx/Makefile.in0000644000175000017500000005225712621010233020545 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = errors/cxx ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = testlist CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/testlist.in \ $(top_srcdir)/Makefile.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist.in SUBDIRS = $(iodir) errhan DIST_SUBDIRS = io errhan all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign errors/cxx/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign errors/cxx/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): testlist: $(top_builddir)/config.status $(srcdir)/testlist.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic cscopelist-am ctags ctags-am \ distclean distclean-generic distclean-tags distdir dvi dvi-am \ html html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/errors/cxx/Makefile.am0000644000175000017500000000040312620254305020527 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile.mtest EXTRA_DIST = testlist.in SUBDIRS = $(iodir) errhan DIST_SUBDIRS = io errhan mpi-testsuite-3.2+dfsg/errors/cxx/testlist.in0000644000175000017500000000001712620254305020677 0ustar mbanckmbanckerrhan @iodir@ mpi-testsuite-3.2+dfsg/errors/cxx/errhan/0000755000175000017500000000000012621010233017744 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/errors/cxx/errhan/throwtest.cxx0000644000175000017500000000755612620254305022561 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2008 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* throwtest.cxx This test was based on code provided with a bug report submitted by Eric Eidson edeidso@sandia.gov */ #include #include #include "mpitestconf.h" #include "mpitestcxx.h" /* #define VERBOSE */ /* returns number of errors found */ template int testCallErrhandler(T &obj, int errorClass, int errorCode, std::string errorString) { int errs = 0; try { obj.Call_errhandler(errorCode); std::cerr << "Do Not See This" << std::endl; errs++; } catch (MPI::Exception &ex) { #ifdef VERBOSE std::cerr << "MPI Exception: " << ex.Get_error_string() << std::endl; #endif if (ex.Get_error_code() != errorCode) { std::cout << "errorCode does not match" << std::endl; errs++; } if (ex.Get_error_class() != errorClass) { std::cout << "errorClass does not match" << std::endl; errs++; } if (ex.Get_error_string() != errorString) { std::cout << "errorString does not match" << std::endl; errs++; } } catch (...) { std::cerr << "Caught Unknown Exception" << std::endl; errs++; } return errs; } int main( int argc, char *argv[] ) { int errs = 0; MPI::Win win = MPI::WIN_NULL; MTest_Init( ); const unsigned int rank = MPI::COMM_WORLD.Get_rank(); const unsigned int size = MPI::COMM_WORLD.Get_size(); int errorClass = MPI::Add_error_class(); int errorCode = MPI::Add_error_code(errorClass); std::string errorString = "Internal-use Error Code"; MPI::Add_error_string(errorCode, errorString.c_str()); win = MPI::Win::Create(NULL, 0, 1, MPI::INFO_NULL, MPI_COMM_WORLD); // first sanity check that ERRORS_RETURN actually returns in erroneous // conditions and doesn't throw an exception MPI::COMM_WORLD.Set_errhandler(MPI::ERRORS_RETURN); win.Set_errhandler(MPI::ERRORS_RETURN); try { // Do something that should cause an exception. MPI::COMM_WORLD.Get_attr(MPI::KEYVAL_INVALID, NULL); } catch (...) { std::cerr << "comm threw when it shouldn't have" << std::endl; ++errs; } try { // Do something that should cause an exception. win.Get_attr(MPI::KEYVAL_INVALID, NULL); } catch (...) { std::cerr << "win threw when it shouldn't have" << std::endl; ++errs; } // now test that when ERRORS_THROW_EXCEPTIONS actually throws an exception MPI::COMM_WORLD.Set_errhandler(MPI::ERRORS_THROW_EXCEPTIONS); win.Set_errhandler(MPI::ERRORS_THROW_EXCEPTIONS); if (0 == rank) { errs += testCallErrhandler(MPI::COMM_WORLD, errorClass, errorCode, errorString); errs += testCallErrhandler(win, errorClass, errorCode, errorString); // induce actual errors and make sure that they throw try { char buf[10]; MPI::COMM_WORLD.Send(&buf, 1, MPI::CHAR, size+1, 1); std::cout << "Invalid Send did not throw" << std::endl; errs++; } catch (MPI::Exception &ex) { // expected } catch (...) { std::cout << "Caught Unknown Exception" << std::endl; errs++; } try { char buf[10]; win.Get(&buf, 0, MPI::CHAR, size+1, 0, 0, MPI::CHAR); std::cout << "Invalid Get did not throw" << std::endl; errs++; } catch (MPI::Exception &ex) { // expected } catch (...) { std::cout << "Caught Unknown Exception" << std::endl; errs++; } } MTest_Finalize( errs ); win.Free(); MPI::Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/cxx/errhan/commerrx.cxx0000644000175000017500000000421712620254305022341 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2011 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Tests invocation of error handlers on a variety of communicators, including COMM_NULL. */ #include "mpitestconf.h" #include #include #include "mpitestcxx.h" /* returns number of errors found */ int testCommCall( MPI::Comm &comm ) { int i; bool sawException = false; comm.Set_errhandler( MPI::ERRORS_THROW_EXCEPTIONS ); try { // Invalid send comm.Send( &i, -1, MPI::DATATYPE_NULL, -1, -10 ); } catch (MPI::Exception &ex ) { // This is good sawException = true; } catch (...) { // This is bad } if (!sawException) { int len; char commname[MPI_MAX_OBJECT_NAME]; comm.Get_name( commname, len ); std::cout << "Did not see MPI exception on invalid call on communicator " << commname << "\n"; } return sawException ? 0 : 1; } int testNullCommCall( void ) { int i; bool sawException = false; const MPI::Comm &comm = MPI::COMM_NULL; MPI::COMM_WORLD.Set_errhandler( MPI::ERRORS_THROW_EXCEPTIONS ); try { // Invalid send comm.Send( &i, -1, MPI::DATATYPE_NULL, -1, -10 ); } catch (MPI::Exception &ex ) { // This is good sawException = true; } catch (...) { // This is bad } if (!sawException) { std::cout << "Did not see MPI exception on invalid call on communicator COMM_NULL\n"; } return sawException ? 0 : 1; } int main( int argc, char *argv[] ) { int errs = 0; bool periods[2] = { false, false }; int dims[2] = { 0, 0 }; MTest_Init( ); MPI::Compute_dims( MPI::COMM_WORLD.Get_size(), 2, dims ); MPI::Cartcomm cart = MPI::COMM_WORLD.Create_cart( 2, dims, periods, true ); cart.Set_name( "Cart comm" ); // Graphcomm graph = COMM_WORLD.Create_graph( ); errs += testCommCall( MPI::COMM_WORLD ); errs += testNullCommCall( ); errs += testCommCall( MPI::COMM_SELF ); errs += testCommCall( cart ); //errs += testCommCall( graph ); MTest_Finalize( errs ); cart.Free(); // graph.Free(); MPI::Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/cxx/errhan/testlist0000644000175000017500000000005312620254305021551 0ustar mbanckmbanckerrgetx 1 errsetx 1 throwtest 1 commerrx 2 mpi-testsuite-3.2+dfsg/errors/cxx/errhan/Makefile.in0000644000175000017500000005041112621010233022012 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = commerrx$(EXEEXT) errgetx$(EXEEXT) errsetx$(EXEEXT) \ throwtest$(EXEEXT) subdir = errors/cxx/errhan ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) commerrx_SOURCES = commerrx.cxx commerrx_OBJECTS = commerrx.$(OBJEXT) commerrx_LDADD = $(LDADD) commerrx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o errgetx_SOURCES = errgetx.cxx errgetx_OBJECTS = errgetx.$(OBJEXT) errgetx_LDADD = $(LDADD) errgetx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o errsetx_SOURCES = errsetx.cxx errsetx_OBJECTS = errsetx.$(OBJEXT) errsetx_LDADD = $(LDADD) errsetx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o throwtest_SOURCES = throwtest.cxx throwtest_OBJECTS = throwtest.$(OBJEXT) throwtest_LDADD = $(LDADD) throwtest_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = SOURCES = commerrx.cxx errgetx.cxx errsetx.cxx throwtest.cxx DIST_SOURCES = commerrx.cxx errgetx.cxx errsetx.cxx throwtest.cxx am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_cxx.mtest $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/cxx/util/mtest.o CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.cxx" lines AM_DEFAULT_SOURCE_EXT = .cxx all: all-am .SUFFIXES: .SUFFIXES: .cxx .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_cxx.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign errors/cxx/errhan/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign errors/cxx/errhan/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_cxx.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) commerrx$(EXEEXT): $(commerrx_OBJECTS) $(commerrx_DEPENDENCIES) $(EXTRA_commerrx_DEPENDENCIES) @rm -f commerrx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(commerrx_OBJECTS) $(commerrx_LDADD) $(LIBS) errgetx$(EXEEXT): $(errgetx_OBJECTS) $(errgetx_DEPENDENCIES) $(EXTRA_errgetx_DEPENDENCIES) @rm -f errgetx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(errgetx_OBJECTS) $(errgetx_LDADD) $(LIBS) errsetx$(EXEEXT): $(errsetx_OBJECTS) $(errsetx_DEPENDENCIES) $(EXTRA_errsetx_DEPENDENCIES) @rm -f errsetx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(errsetx_OBJECTS) $(errsetx_LDADD) $(LIBS) throwtest$(EXEEXT): $(throwtest_OBJECTS) $(throwtest_DEPENDENCIES) $(EXTRA_throwtest_DEPENDENCIES) @rm -f throwtest$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(throwtest_OBJECTS) $(throwtest_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/commerrx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/errgetx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/errsetx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/throwtest.Po@am__quote@ .cxx.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cxx.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/cxx/util/mtest.o: $(top_srcdir)/cxx/util/mtest.cxx (cd $(top_builddir)/cxx/util && $(MAKE) mtest.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/errors/cxx/errhan/Makefile.am0000644000175000017500000000053712620254305022016 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_cxx.mtest EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.cxx" lines AM_DEFAULT_SOURCE_EXT = .cxx noinst_PROGRAMS = commerrx errgetx errsetx throwtest mpi-testsuite-3.2+dfsg/errors/cxx/errhan/errsetx.cxx0000644000175000017500000000323412620254305022177 0ustar mbanckmbanck/* -*- Mode: C++; c-basic-offset:4 ; -*- */ /* * * (C) 2006 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpitestconf.h" #include "mpi.h" #ifdef HAVE_IOSTREAM // Not all C++ compilers have iostream instead of iostream.h #include #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #ifdef HAVE_STRING_H #include #endif #include "mpitestcxx.h" static int ncalls = 0; void efn( MPI::Comm &comm, int *code, ... ) { ncalls ++; } int main( int argc, char *argv[] ) { MPI::Errhandler eh; int size; bool foundMsg; int errs = 0; MTest_Init( ); size = MPI::COMM_WORLD.Get_size(); // Test that we can change the default error handler to not throw // an exception (our error handler could also throw an exception, // but we want to make sure that the exception is not thrown // by the MPI code) eh = MPI::Comm::Create_errhandler( efn ); MPI::COMM_WORLD.Set_errhandler( eh ); try { foundMsg = MPI::COMM_WORLD.Iprobe( size, 0 ); } catch (MPI::Exception ex) { cout << "Caught exception from iprobe (should have called error handler instead)\n"; errs++; if (ex.Get_error_class() == MPI_SUCCESS) { errs++; cout << "Unexpected error from Iprobe" << endl; } } if (ncalls != 1) { errs++; cout << "Did not invoke error handler when invoking iprobe with an invalid rank" << endl; } eh.Free(); // Find out how many errors we saw MTest_Finalize( errs ); MPI::Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/cxx/errhan/errgetx.cxx0000644000175000017500000000375012620254305022166 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2008 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* errgetx.cxx Tests whether a Get_errhandler following a Set_errhandler retrieves the same value as was set. */ #include "mpitestconf.h" #include #include #include "mpitestcxx.h" /* #define VERBOSE */ template void efn(T &obj, int *, ...) { } /* returns number of errors found */ template int testRetrieveErrhandler(T &obj) { int errs = 0; MPI::Errhandler retrieved_handler; int errorClass = MPI::Add_error_class(); int errorCode = MPI::Add_error_code(errorClass); std::string errorString = "Internal-use Error Code"; MPI::Add_error_string(errorCode, errorString.c_str()); MPI::Errhandler custom_handler = T::Create_errhandler(&efn); obj.Set_errhandler(MPI::ERRORS_THROW_EXCEPTIONS); retrieved_handler = obj.Get_errhandler(); if (retrieved_handler != MPI::ERRORS_THROW_EXCEPTIONS) errs++; obj.Set_errhandler(MPI::ERRORS_RETURN); retrieved_handler = obj.Get_errhandler(); if (retrieved_handler != MPI::ERRORS_RETURN) errs++; obj.Set_errhandler(MPI::ERRORS_ARE_FATAL); retrieved_handler = obj.Get_errhandler(); if (retrieved_handler != MPI::ERRORS_ARE_FATAL) errs++; obj.Set_errhandler(custom_handler); retrieved_handler = obj.Get_errhandler(); if (retrieved_handler != custom_handler) errs++; retrieved_handler.Free(); custom_handler.Free(); return errs; } int main( int argc, char *argv[] ) { int errs = 0; MPI::Win win = MPI::WIN_NULL; MTest_Init( ); const unsigned int rank = MPI::COMM_WORLD.Get_rank(); win = MPI::Win::Create(NULL, 0, 1, MPI::INFO_NULL, MPI_COMM_WORLD); if (0 == rank) { errs += testRetrieveErrhandler(MPI::COMM_WORLD); errs += testRetrieveErrhandler(win); } MTest_Finalize( errs ); win.Free(); MPI::Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/cxx/io/0000755000175000017500000000000012621010233017074 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/errors/cxx/io/testlist0000644000175000017500000000005612620254305020704 0ustar mbanckmbanckfileerrretx 1 errgetfilex 1 throwtestfilex 1 mpi-testsuite-3.2+dfsg/errors/cxx/io/Makefile.in0000644000175000017500000005001312621010233021140 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = fileerrretx$(EXEEXT) errgetfilex$(EXEEXT) \ throwtestfilex$(EXEEXT) subdir = errors/cxx/io ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) errgetfilex_SOURCES = errgetfilex.cxx errgetfilex_OBJECTS = errgetfilex.$(OBJEXT) errgetfilex_LDADD = $(LDADD) errgetfilex_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o fileerrretx_SOURCES = fileerrretx.cxx fileerrretx_OBJECTS = fileerrretx.$(OBJEXT) fileerrretx_LDADD = $(LDADD) fileerrretx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o throwtestfilex_SOURCES = throwtestfilex.cxx throwtestfilex_OBJECTS = throwtestfilex.$(OBJEXT) throwtestfilex_LDADD = $(LDADD) throwtestfilex_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = SOURCES = errgetfilex.cxx fileerrretx.cxx throwtestfilex.cxx DIST_SOURCES = errgetfilex.cxx fileerrretx.cxx throwtestfilex.cxx am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_cxx.mtest $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/cxx/util/mtest.o CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.cxx" lines AM_DEFAULT_SOURCE_EXT = .cxx all: all-am .SUFFIXES: .SUFFIXES: .cxx .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_cxx.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign errors/cxx/io/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign errors/cxx/io/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_cxx.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) errgetfilex$(EXEEXT): $(errgetfilex_OBJECTS) $(errgetfilex_DEPENDENCIES) $(EXTRA_errgetfilex_DEPENDENCIES) @rm -f errgetfilex$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(errgetfilex_OBJECTS) $(errgetfilex_LDADD) $(LIBS) fileerrretx$(EXEEXT): $(fileerrretx_OBJECTS) $(fileerrretx_DEPENDENCIES) $(EXTRA_fileerrretx_DEPENDENCIES) @rm -f fileerrretx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(fileerrretx_OBJECTS) $(fileerrretx_LDADD) $(LIBS) throwtestfilex$(EXEEXT): $(throwtestfilex_OBJECTS) $(throwtestfilex_DEPENDENCIES) $(EXTRA_throwtestfilex_DEPENDENCIES) @rm -f throwtestfilex$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(throwtestfilex_OBJECTS) $(throwtestfilex_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/errgetfilex.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fileerrretx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/throwtestfilex.Po@am__quote@ .cxx.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cxx.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/cxx/util/mtest.o: $(top_srcdir)/cxx/util/mtest.cxx (cd $(top_builddir)/cxx/util && $(MAKE) mtest.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/errors/cxx/io/Makefile.am0000644000175000017500000000054312620254305021143 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_cxx.mtest EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.cxx" lines AM_DEFAULT_SOURCE_EXT = .cxx noinst_PROGRAMS = fileerrretx errgetfilex throwtestfilex mpi-testsuite-3.2+dfsg/errors/cxx/io/errgetfilex.cxx0000644000175000017500000000407212620254305022154 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2008 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* errgetx.cxx Tests whether a Get_errhandler following a Set_errhandler retrieves the same value as was set. */ #include "mpitestconf.h" #include #include #include "mpitestcxx.h" /* #define VERBOSE */ template void efn(T &obj, int *, ...) { } /* returns number of errors found */ template int testRetrieveErrhandler(T &obj) { int errs = 0; MPI::Errhandler retrieved_handler; int errorClass = MPI::Add_error_class(); int errorCode = MPI::Add_error_code(errorClass); std::string errorString = "Internal-use Error Code"; MPI::Add_error_string(errorCode, errorString.c_str()); MPI::Errhandler custom_handler = T::Create_errhandler(&efn); obj.Set_errhandler(MPI::ERRORS_THROW_EXCEPTIONS); retrieved_handler = obj.Get_errhandler(); if (retrieved_handler != MPI::ERRORS_THROW_EXCEPTIONS) errs++; obj.Set_errhandler(MPI::ERRORS_RETURN); retrieved_handler = obj.Get_errhandler(); if (retrieved_handler != MPI::ERRORS_RETURN) errs++; obj.Set_errhandler(MPI::ERRORS_ARE_FATAL); retrieved_handler = obj.Get_errhandler(); if (retrieved_handler != MPI::ERRORS_ARE_FATAL) errs++; obj.Set_errhandler(custom_handler); retrieved_handler = obj.Get_errhandler(); if (retrieved_handler != custom_handler) errs++; retrieved_handler.Free(); custom_handler.Free(); return errs; } int main( int argc, char *argv[] ) { int errs = 0; MPI::File file = MPI::FILE_NULL; MTest_Init( ); const unsigned int rank = MPI::COMM_WORLD.Get_rank(); file = MPI::File::Open(MPI::COMM_WORLD, "testfile", MPI::MODE_WRONLY | MPI::MODE_CREATE | MPI::MODE_DELETE_ON_CLOSE, MPI::INFO_NULL); if (0 == rank) { errs += testRetrieveErrhandler(MPI::COMM_WORLD); errs += testRetrieveErrhandler(file); } MTest_Finalize( errs ); file.Close(); MPI::Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/cxx/io/throwtestfilex.cxx0000644000175000017500000000636612620254305022737 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2008 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* throwtest.cxx This test was based on code provided with a bug report submitted by Eric Eidson edeidso@sandia.gov */ #include #include #include "mpitestconf.h" #include "mpitestcxx.h" /* #define VERBOSE */ /* returns number of errors found */ template int testCallErrhandler(T &obj, int errorClass, int errorCode, std::string errorString) { int errs = 0; try { obj.Call_errhandler(errorCode); std::cerr << "Do Not See This" << std::endl; errs++; } catch (MPI::Exception &ex) { #ifdef VERBOSE std::cerr << "MPI Exception: " << ex.Get_error_string() << std::endl; #endif if (ex.Get_error_code() != errorCode) { std::cout << "errorCode does not match" << std::endl; errs++; } if (ex.Get_error_class() != errorClass) { std::cout << "errorClass does not match" << std::endl; errs++; } if (ex.Get_error_string() != errorString) { std::cout << "errorString does not match" << std::endl; errs++; } } catch (...) { std::cerr << "Caught Unknown Exception" << std::endl; errs++; } return errs; } int main( int argc, char *argv[] ) { int errs = 0; MPI::File file = MPI::FILE_NULL; MTest_Init( ); const unsigned int rank = MPI::COMM_WORLD.Get_rank(); const unsigned int size = MPI::COMM_WORLD.Get_size(); int errorClass = MPI::Add_error_class(); int errorCode = MPI::Add_error_code(errorClass); std::string errorString = "Internal-use Error Code"; MPI::Add_error_string(errorCode, errorString.c_str()); file = MPI::File::Open(MPI::COMM_WORLD, "testfile", MPI::MODE_WRONLY | MPI::MODE_CREATE | MPI::MODE_DELETE_ON_CLOSE, MPI::INFO_NULL); // first sanity check that ERRORS_RETURN actually returns in erroneous // conditions and doesn't throw an exception MPI::COMM_WORLD.Set_errhandler(MPI::ERRORS_RETURN); file.Set_errhandler(MPI::ERRORS_RETURN); try { // Do something that should cause an exception. file.Write(NULL, -1, MPI_DATATYPE_NULL); } catch (...) { std::cerr << "file threw when it shouldn't have" << std::endl; ++errs; } // now test that when ERRORS_THROW_EXCEPTIONS actually throws an exception MPI::COMM_WORLD.Set_errhandler(MPI::ERRORS_THROW_EXCEPTIONS); file.Set_errhandler(MPI::ERRORS_THROW_EXCEPTIONS); if (0 == rank) { errs += testCallErrhandler(MPI::COMM_WORLD, errorClass, errorCode, errorString); errs += testCallErrhandler(file, errorClass, errorCode, errorString); try { int buf[10]; file.Write_at(-2, &buf, 1, MPI::INT); std::cout << "Invalid Send did not throw" << std::endl; errs++; } catch (MPI::Exception &ex) { // expected } catch (...) { std::cout << "Caught Unknown Exception" << std::endl; errs++; } } MTest_Finalize( errs ); file.Close(); MPI::Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errors/cxx/io/fileerrretx.cxx0000644000175000017500000000503412620254305022166 0ustar mbanckmbanck/* -*- Mode: C++; c-basic-offset:4 ; -*- */ /* * * (C) 2006 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #ifdef HAVE_IOSTREAM // Not all C++ compilers have iostream instead of iostream.h #include #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #ifdef HAVE_STRING_H #include #endif #include "mpitestcxx.h" static int verbose = 0; static int ncalls = 0; void efn( MPI::File &fh, int *code, ... ) { ncalls ++; } int main( int argc, char *argv[] ) { MPI::File fh; MPI::Errhandler eh; char *filename; int errs = 0, toterrs, rank; int sawErr; MPI::Init(); // Test that the default error handler is errors return for files filename = new char[10]; strncpy( filename, "t1", 10 ); MPI::FILE_NULL.Set_errhandler(MPI::ERRORS_THROW_EXCEPTIONS); sawErr = 0; try { fh = MPI::File::Open(MPI::COMM_WORLD, filename, MPI::MODE_RDWR, MPI::INFO_NULL ); } catch (MPI::Exception ex) { if (verbose) cout << "Caught exception from open\n"; if (ex.Get_error_class() == MPI_SUCCESS) { errs++; cout << "Unexpected error from Open" << endl; } sawErr = 1; } if (!sawErr) { errs++; cout << "Did not see error when opening a non-existent file for writing and reading (without MODE_CREATE)\n"; } // Test that we can change the default error handler by changing // the error handler on MPI::FILE_NULL. eh = MPI::File::Create_errhandler( efn ); MPI::FILE_NULL.Set_errhandler( eh ); eh.Free(); sawErr = 0; try { fh = MPI::File::Open(MPI::COMM_WORLD, filename, MPI::MODE_RDWR, MPI::INFO_NULL ); } catch (MPI::Exception ex) { cout << "Caught exception from open (should have called error handler instead)\n"; errs++; if (ex.Get_error_class() == MPI_SUCCESS) { errs++; cout << "Unexpected error from Open" << endl; } sawErr = 1; } if (ncalls != 1) { errs++; cout << "Did not invoke error handler when opening a non-existent file for writing and reading (without MODE_CREATE)" << endl; } // Find out how many errors we saw MPI::COMM_WORLD.Allreduce( &errs, &toterrs, 1, MPI::INT, MPI::SUM ); if (MPI::COMM_WORLD.Get_rank() == 0) { if (toterrs == 0) { cout << " No Errors" << endl; } else { cout << " Saw " << toterrs << " errors" << endl; } } MPI::Finalize(); return 0; } mpi-testsuite-3.2+dfsg/perf/0000755000175000017500000000000012621010235015305 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/perf/dtpack.c0000644000175000017500000003452512620254305016737 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2008 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * This code may be used to test the performance of some of the * noncontiguous datatype operations, including vector and indexed * pack and unpack operations. To simplify the use of this code for * tuning an MPI implementation, it uses no communication, just the * MPI_Pack and MPI_Unpack routines. In addition, the individual tests are * in separate routines, making it easier to compare the compiler-generated * code for the user (manual) pack/unpack with the code used by * the MPI implementation. Further, to be fair to the MPI implementation, * the routines are passed the source and destination buffers; this ensures * that the compiler can't optimize for statically allocated buffers. */ #include #include #include #include "mpi.h" /* Needed for restrict and const definitions */ #include "mpitestconf.h" static int verbose = 0; #define N_REPS 1000 #define THRESHOLD 0.10 #define VARIANCE_THRESHOLD ((THRESHOLD * THRESHOLD) / 2) #define NTRIALS 10 double mean(double *list, int count); double mean(double *list, int count) { double retval; int i; retval = 0; for (i = 0; i < count; i++) retval += list[i]; retval /= count; return retval; } double noise(double *list, int count); double noise(double *list, int count) { double *margin, retval; int i; if (!(margin = malloc(count * sizeof(double)))) { printf("Unable to allocate memory\n"); return -1; } for (i = 0; i < count; i++) margin[i] = list[i] / mean(list, count); retval = 0; for (i = 0; i < count; i++) { retval += ((margin[i] - 1) * (margin[i] - 1)); } retval /= count; if (retval < 0) retval = -retval; return retval; } /* Here are the tests */ /* Test packing a vector of individual doubles */ /* We don't use restrict in the function args because assignments between restrict pointers is not valid in C and some compilers, such as the IBM xlc compilers, flag that use as an error.*/ int TestVecPackDouble(int n, int stride, double *avgTimeUser, double *avgTimeMPI, double *dest, const double *src); int TestVecPackDouble(int n, int stride, double *avgTimeUser, double *avgTimeMPI, double *dest, const double *src) { double *restrict d_dest; const double *restrict d_src; register int i, j; int rep, position; double t1, t2, t[NTRIALS]; MPI_Datatype vectype; /* User code */ if (verbose) printf("TestVecPackDouble (USER): "); for (j = 0; j < NTRIALS; j++) { t1 = MPI_Wtime(); for (rep = 0; rep < N_REPS; rep++) { i = n; d_dest = dest; d_src = src; while (i--) { *d_dest++ = *d_src; d_src += stride; } } t2 = MPI_Wtime() - t1; t[j] = t2; if (verbose) printf("%.3f ", t[j]); } if (verbose) printf("[%.3f]\n", noise(t, NTRIALS)); /* If there is too much noise, discard the test */ if (noise(t, NTRIALS) > VARIANCE_THRESHOLD) { *avgTimeUser = 0; *avgTimeMPI = 0; if (verbose) printf("Too much noise; discarding measurement\n"); return 0; } *avgTimeUser = mean(t, NTRIALS) / N_REPS; /* MPI Vector code */ MPI_Type_vector(n, 1, stride, MPI_DOUBLE, &vectype); MPI_Type_commit(&vectype); if (verbose) printf("TestVecPackDouble (MPI): "); for (j = 0; j < NTRIALS; j++) { t1 = MPI_Wtime(); for (rep = 0; rep < N_REPS; rep++) { position = 0; MPI_Pack((void *) src, 1, vectype, dest, n * sizeof(double), &position, MPI_COMM_SELF); } t2 = MPI_Wtime() - t1; t[j] = t2; if (verbose) printf("%.3f ", t[j]); } if (verbose) printf("[%.3f]\n", noise(t, NTRIALS)); /* If there is too much noise, discard the test */ if (noise(t, NTRIALS) > VARIANCE_THRESHOLD) { *avgTimeUser = 0; *avgTimeMPI = 0; if (verbose) printf("Too much noise; discarding measurement\n"); } else { *avgTimeMPI = mean(t, NTRIALS) / N_REPS; } MPI_Type_free(&vectype); return 0; } /* Test unpacking a vector of individual doubles */ /* See above for why restrict is not used in the function args */ int TestVecUnPackDouble(int n, int stride, double *avgTimeUser, double *avgTimeMPI, double *dest, const double *src); int TestVecUnPackDouble(int n, int stride, double *avgTimeUser, double *avgTimeMPI, double *dest, const double *src) { double *restrict d_dest; const double *restrict d_src; register int i, j; int rep, position; double t1, t2, t[NTRIALS]; MPI_Datatype vectype; /* User code */ if (verbose) printf("TestVecUnPackDouble (USER): "); for (j = 0; j < NTRIALS; j++) { t1 = MPI_Wtime(); for (rep = 0; rep < N_REPS; rep++) { i = n; d_dest = dest; d_src = src; while (i--) { *d_dest = *d_src++; d_dest += stride; } } t2 = MPI_Wtime() - t1; t[j] = t2; if (verbose) printf("%.3f ", t[j]); } if (verbose) printf("[%.3f]\n", noise(t, NTRIALS)); /* If there is too much noise, discard the test */ if (noise(t, NTRIALS) > VARIANCE_THRESHOLD) { *avgTimeUser = 0; *avgTimeMPI = 0; if (verbose) printf("Too much noise; discarding measurement\n"); return 0; } *avgTimeUser = mean(t, NTRIALS) / N_REPS; /* MPI Vector code */ MPI_Type_vector(n, 1, stride, MPI_DOUBLE, &vectype); MPI_Type_commit(&vectype); if (verbose) printf("TestVecUnPackDouble (MPI): "); for (j = 0; j < NTRIALS; j++) { t1 = MPI_Wtime(); for (rep = 0; rep < N_REPS; rep++) { position = 0; MPI_Unpack((void *) src, n * sizeof(double), &position, dest, 1, vectype, MPI_COMM_SELF); } t2 = MPI_Wtime() - t1; t[j] = t2; if (verbose) printf("%.3f ", t[j]); } if (verbose) printf("[%.3f]\n", noise(t, NTRIALS)); /* If there is too much noise, discard the test */ if (noise(t, NTRIALS) > VARIANCE_THRESHOLD) { *avgTimeUser = 0; *avgTimeMPI = 0; if (verbose) printf("Too much noise; discarding measurement\n"); } else { *avgTimeMPI = mean(t, NTRIALS) / N_REPS; } MPI_Type_free(&vectype); return 0; } /* Test packing a vector of 2-individual doubles */ /* See above for why restrict is not used in the function args */ int TestVecPack2Double(int n, int stride, double *avgTimeUser, double *avgTimeMPI, double *dest, const double *src); int TestVecPack2Double(int n, int stride, double *avgTimeUser, double *avgTimeMPI, double *dest, const double *src) { double *restrict d_dest; const double *restrict d_src; register int i, j; int rep, position; double t1, t2, t[NTRIALS]; MPI_Datatype vectype; /* User code */ if (verbose) printf("TestVecPack2Double (USER): "); for (j = 0; j < NTRIALS; j++) { t1 = MPI_Wtime(); for (rep = 0; rep < N_REPS; rep++) { i = n; d_dest = dest; d_src = src; while (i--) { *d_dest++ = d_src[0]; *d_dest++ = d_src[1]; d_src += stride; } } t2 = MPI_Wtime() - t1; t[j] = t2; if (verbose) printf("%.3f ", t[j]); } if (verbose) printf("[%.3f]\n", noise(t, NTRIALS)); /* If there is too much noise, discard the test */ if (noise(t, NTRIALS) > VARIANCE_THRESHOLD) { *avgTimeUser = 0; *avgTimeMPI = 0; if (verbose) printf("Too much noise; discarding measurement\n"); return 0; } *avgTimeUser = mean(t, NTRIALS) / N_REPS; /* MPI Vector code */ MPI_Type_vector(n, 2, stride, MPI_DOUBLE, &vectype); MPI_Type_commit(&vectype); if (verbose) printf("TestVecPack2Double (MPI): "); for (j = 0; j < NTRIALS; j++) { t1 = MPI_Wtime(); for (rep = 0; rep < N_REPS; rep++) { position = 0; MPI_Pack((void *) src, 1, vectype, dest, 2 * n * sizeof(double), &position, MPI_COMM_SELF); } t2 = MPI_Wtime() - t1; t[j] = t2; if (verbose) printf("%.3f ", t[j]); } if (verbose) printf("[%.3f]\n", noise(t, NTRIALS)); /* If there is too much noise, discard the test */ if (noise(t, NTRIALS) > VARIANCE_THRESHOLD) { *avgTimeUser = 0; *avgTimeMPI = 0; if (verbose) printf("Too much noise; discarding measurement\n"); } else { *avgTimeMPI = mean(t, NTRIALS) / N_REPS; } MPI_Type_free(&vectype); return 0; } /* This creates an indexed type that is like a vector (for simplicity of construction). There is a possibility that the MPI implementation will recognize and simplify this (e.g., in MPI_Type_commit); if so, let us know and we'll add a version that is not as regular */ /* See above for why restrict is not used in the function args */ int TestIndexPackDouble(int n, int stride, double *avgTimeUser, double *avgTimeMPI, double *dest, const double *src); int TestIndexPackDouble(int n, int stride, double *avgTimeUser, double *avgTimeMPI, double *dest, const double *src) { double *restrict d_dest; const double *restrict d_src; register int i, j; int rep, position; int *restrict displs = 0; double t1, t2, t[NTRIALS]; MPI_Datatype indextype; displs = (int *) malloc(n * sizeof(int)); for (i = 0; i < n; i++) displs[i] = i * stride; /* User code */ if (verbose) printf("TestIndexPackDouble (USER): "); for (j = 0; j < NTRIALS; j++) { t1 = MPI_Wtime(); for (rep = 0; rep < N_REPS; rep++) { i = n; d_dest = dest; d_src = src; for (i = 0; i < n; i++) { *d_dest++ = d_src[displs[i]]; } } t2 = MPI_Wtime() - t1; t[j] = t2; if (verbose) printf("%.3f ", t[j]); } if (verbose) printf("[%.3f]\n", noise(t, NTRIALS)); /* If there is too much noise, discard the test */ if (noise(t, NTRIALS) > VARIANCE_THRESHOLD) { *avgTimeUser = 0; *avgTimeMPI = 0; if (verbose) printf("Too much noise; discarding measurement\n"); return 0; } *avgTimeUser = mean(t, NTRIALS) / N_REPS; /* MPI Index code */ MPI_Type_create_indexed_block(n, 1, displs, MPI_DOUBLE, &indextype); MPI_Type_commit(&indextype); free(displs); if (verbose) printf("TestIndexPackDouble (MPI): "); for (j = 0; j < NTRIALS; j++) { t1 = MPI_Wtime(); for (rep = 0; rep < N_REPS; rep++) { position = 0; MPI_Pack((void *) src, 1, indextype, dest, n * sizeof(double), &position, MPI_COMM_SELF); } t2 = MPI_Wtime() - t1; t[j] = t2; if (verbose) printf("%.3f ", t[j]); } if (verbose) printf("[%.3f]\n", noise(t, NTRIALS)); /* If there is too much noise, discard the test */ if (noise(t, NTRIALS) > VARIANCE_THRESHOLD) { *avgTimeUser = 0; *avgTimeMPI = 0; if (verbose) printf("Too much noise; discarding measurement\n"); } else { *avgTimeMPI = mean(t, NTRIALS) / N_REPS; } MPI_Type_free(&indextype); return 0; } int Report(const char *name, const char *packname, double avgTimeMPI, double avgTimeUser); int Report(const char *name, const char *packname, double avgTimeMPI, double avgTimeUser) { double diffTime, maxTime; int errs = 0; /* Move this into a common routine */ diffTime = avgTimeMPI - avgTimeUser; if (diffTime < 0) diffTime = -diffTime; if (avgTimeMPI > avgTimeUser) maxTime = avgTimeMPI; else maxTime = avgTimeUser; if (verbose) { printf("%-30s:\t%g\t%g\t(%g%%)\n", name, avgTimeMPI, avgTimeUser, 100 * (diffTime / maxTime)); fflush(stdout); } if (avgTimeMPI > avgTimeUser && (diffTime > THRESHOLD * maxTime)) { errs++; printf("%s:\tMPI %s code is too slow: MPI %g\t User %g\n", name, packname, avgTimeMPI, avgTimeUser); } return errs; } /* Finally, here's the main program */ int main(int argc, char *argv[]) { int n, stride, err, errs = 0; void *dest, *src; double avgTimeUser, avgTimeMPI; MPI_Init(&argc, &argv); if (getenv("MPITEST_VERBOSE")) verbose = 1; n = 30000; stride = 4; dest = (void *) malloc(n * sizeof(double)); src = (void *) malloc(n * ((1 + stride) * sizeof(double))); /* Touch the source and destination arrays */ memset(src, 0, n * (1 + stride) * sizeof(double)); memset(dest, 0, n * sizeof(double)); err = TestVecPackDouble(n, stride, &avgTimeUser, &avgTimeMPI, dest, src); errs += Report("VecPackDouble", "Pack", avgTimeMPI, avgTimeUser); err = TestVecUnPackDouble(n, stride, &avgTimeUser, &avgTimeMPI, src, dest); errs += Report("VecUnPackDouble", "Unpack", avgTimeMPI, avgTimeUser); err = TestIndexPackDouble(n, stride, &avgTimeUser, &avgTimeMPI, dest, src); errs += Report("VecIndexDouble", "Pack", avgTimeMPI, avgTimeUser); free(dest); free(src); dest = (void *) malloc(2 * n * sizeof(double)); src = (void *) malloc((1 + n) * ((1 + stride) * sizeof(double))); memset(dest, 0, 2 * n * sizeof(double)); memset(src, 0, (1 + n) * (1 + stride) * sizeof(double)); err = TestVecPack2Double(n, stride, &avgTimeUser, &avgTimeMPI, dest, src); errs += Report("VecPack2Double", "Pack", avgTimeMPI, avgTimeUser); free(dest); free(src); if (errs == 0) { printf(" No Errors\n"); } else { printf(" Found %d performance problems\n", errs); } fflush(stdout); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/perf/sendrecvl.c0000644000175000017500000002042512620254305017450 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2006 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* This program provides a simple test of send-receive performance between two (or more) processes. This sometimes called head-to-head or ping-ping test, as both processes send at the same time. */ #include "mpi.h" #include #include #define MAXTESTS 32 #define ERROR_MARGIN 1.0 /* FIXME: This number is pretty much randomly chosen */ static int verbose = 0; int main(int argc, char *argv[]) { int wsize, wrank, partner, len, maxlen, k, reps, repsleft; double t1; MPI_Request rreq; char *rbuf, *sbuf; double times[3][MAXTESTS]; MPI_Init(&argc, &argv); if (getenv("MPITEST_VERBOSE")) verbose = 1; MPI_Comm_size(MPI_COMM_WORLD, &wsize); MPI_Comm_rank(MPI_COMM_WORLD, &wrank); if (wsize < 2) { fprintf(stderr, "This program requires at least 2 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } /* Set partner based on whether rank is odd or even */ if (wrank & 0x1) { partner = wrank - 1; } else if (wrank < wsize - 1) { partner = wrank + 1; } else /* Handle wsize odd */ partner = MPI_PROC_NULL; /* Allocate and initialize buffers */ maxlen = 1024 * 1024; rbuf = (char *) malloc(maxlen); sbuf = (char *) malloc(maxlen); if (!rbuf || !sbuf) { fprintf(stderr, "Could not allocate %d byte buffers\n", maxlen); MPI_Abort(MPI_COMM_WORLD, 2); } for (k = 0; k < maxlen; k++) { rbuf[k] = 0; sbuf[k] = 0; } MPI_Barrier(MPI_COMM_WORLD); /* Test Irecv and send, head to head */ if (wrank == 0 && verbose) { printf("Irecv-send\n"); printf("len\ttime \trate\n"); } /* Send powers of 2 bytes */ len = 1; for (k = 0; k < 20; k++) { /* We use a simple linear form for the number of tests to * reduce the impact of the granularity of the timer */ reps = 50 - k; repsleft = reps; /* Make sure that both processes are ready to start */ MPI_Sendrecv(MPI_BOTTOM, 0, MPI_BYTE, partner, 0, MPI_BOTTOM, 0, MPI_BYTE, partner, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); t1 = MPI_Wtime(); while (repsleft--) { MPI_Irecv(rbuf, len, MPI_BYTE, partner, k, MPI_COMM_WORLD, &rreq); MPI_Send(sbuf, len, MPI_BYTE, partner, k, MPI_COMM_WORLD); MPI_Wait(&rreq, MPI_STATUS_IGNORE); } t1 = MPI_Wtime() - t1; times[0][k] = t1 / reps; if (wrank == 0) { t1 = t1 / reps; if (t1 > 0) { double rate; rate = (len / t1) / 1.e6; t1 = t1 * 1.e6; if (verbose) printf("%d\t%g\t%g\n", len, t1, len / t1); } else { t1 = t1 * 1.e6; if (verbose) printf("%d\t%g\tINF\n", len, t1); } if (verbose) fflush(stdout); } len *= 2; } MPI_Barrier(MPI_COMM_WORLD); /* Test Sendrecv, head to head */ if (wrank == 0 && verbose) { printf("Sendrecv\n"); printf("len\ttime (usec)\trate (MB/s)\n"); } /* Send powers of 2 bytes */ len = 1; for (k = 0; k < 20; k++) { /* We use a simple linear form for the number of tests to * reduce the impact of the granularity of the timer */ reps = 50 - k; repsleft = reps; /* Make sure that both processes are ready to start */ MPI_Sendrecv(MPI_BOTTOM, 0, MPI_BYTE, partner, 0, MPI_BOTTOM, 0, MPI_BYTE, partner, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); t1 = MPI_Wtime(); while (repsleft--) { MPI_Sendrecv(sbuf, len, MPI_BYTE, partner, k, rbuf, len, MPI_BYTE, partner, k, MPI_COMM_WORLD, MPI_STATUS_IGNORE); } t1 = MPI_Wtime() - t1; times[1][k] = t1 / reps; if (wrank == 0) { t1 = t1 / reps; if (t1 > 0) { double rate; rate = (len / t1) / 1.e6; t1 = t1 * 1.e6; if (verbose) printf("%d\t%g\t%g\n", len, t1, len / t1); } else { t1 = t1 * 1.e6; if (verbose) printf("%d\t%g\tINF\n", len, t1); } if (verbose) fflush(stdout); } len *= 2; } MPI_Barrier(MPI_COMM_WORLD); /* Test Send/recv, ping-pong */ if (wrank == 0 && verbose) { printf("Pingpong\n"); printf("len\ttime (usec)\trate (MB/s)\n"); } /* Send powers of 2 bytes */ len = 1; for (k = 0; k < 20; k++) { /* We use a simple linear form for the number of tests to * reduce the impact of the granularity of the timer */ reps = 50 - k; repsleft = reps; /* Make sure that both processes are ready to start */ MPI_Sendrecv(MPI_BOTTOM, 0, MPI_BYTE, partner, 0, MPI_BOTTOM, 0, MPI_BYTE, partner, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); t1 = MPI_Wtime(); while (repsleft--) { if (wrank & 0x1) { MPI_Send(sbuf, len, MPI_BYTE, partner, k, MPI_COMM_WORLD); MPI_Recv(rbuf, len, MPI_BYTE, partner, k, MPI_COMM_WORLD, MPI_STATUS_IGNORE); } else { MPI_Recv(rbuf, len, MPI_BYTE, partner, k, MPI_COMM_WORLD, MPI_STATUS_IGNORE); MPI_Send(sbuf, len, MPI_BYTE, partner, k, MPI_COMM_WORLD); } } t1 = MPI_Wtime() - t1; times[2][k] = t1 / reps; if (wrank == 0) { t1 = t1 / reps; if (t1 > 0) { double rate; rate = (len / t1) / 1.e6; t1 = t1 * 1.e6; if (verbose) printf("%d\t%g\t%g\n", len, t1, len / t1); } else { t1 = t1 * 1.e6; if (verbose) printf("%d\t%g\tINF\n", len, t1); } if (verbose) fflush(stdout); } len *= 2; } /* At this point, we could optionally analyze the results and report * success or failure based on some criteria, such as near monotone * increases in bandwidth. This test was created because of a * fall-off in performance noted in the ch3:sock device:channel */ if (wrank == 0) { int nPerfErrors = 0; len = 1; for (k = 0; k < 20; k++) { double T0, T1, T2; T0 = times[0][k] * 1.e6; T1 = times[1][k] * 1.e6; T2 = times[2][k] * 1.e6; if (verbose) printf("%d\t%12.2f\t%12.2f\t%12.2f\n", len, T0, T1, T2); /* Lets look at long messages only */ if (k > 10) { double T0Old, T1Old, T2Old; T0Old = times[0][k - 1] * 1.0e6; T1Old = times[1][k - 1] * 1.0e6; T2Old = times[2][k - 1] * 1.0e6; if (T0 > (2 + ERROR_MARGIN) * T0Old) { nPerfErrors++; if (verbose) printf("Irecv-Send:\t%d\t%12.2f\t%12.2f\n", len, T0Old, T0); } if (T1 > (2 + ERROR_MARGIN) * T1Old) { nPerfErrors++; if (verbose) printf("Sendrecv:\t%d\t%12.2f\t%12.2f\n", len, T1Old, T1); } if (T2 > (2 + ERROR_MARGIN) * T2Old) { nPerfErrors++; if (verbose) printf("Pingpong:\t%d\t%12.2f\t%12.2f\n", len, T2Old, T2); } } len *= 2; } if (nPerfErrors > 8) { /* Allow for 1-2 errors for eager-rendezvous shifting * point and cache effects. There should be a better way * of doing this. */ printf(" Found %d performance errors\n", nPerfErrors); } else { printf(" No Errors\n"); } fflush(stdout); } free(sbuf); free(rbuf); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/perf/non_zero_root.c0000644000175000017500000000407712620254305020364 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2008 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include #define SIZE 100000 #define ITER 1000 #define ERROR_MARGIN 0.5 static int verbose = 0; int main(int argc, char *argv[]) { char *sbuf, *rbuf; int i, j; double t1, t2, t, ts; int rank, size; MPI_Status status; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); if (getenv("MPITEST_VERBOSE")) verbose = 1; /* Allocate memory regions to communicate */ sbuf = (char *) malloc(SIZE); rbuf = (char *) malloc(size * SIZE); /* Touch the buffers to make sure they are allocated */ for (i = 0; i < SIZE; i++) sbuf[i] = '0'; for (i = 0; i < SIZE * size; i++) rbuf[i] = '0'; /* Time when rank 0 gathers the data */ MPI_Barrier(MPI_COMM_WORLD); t1 = MPI_Wtime(); for (i = 0; i < ITER; i++) { MPI_Gather(sbuf, SIZE, MPI_BYTE, rbuf, SIZE, MPI_BYTE, 0, MPI_COMM_WORLD); MPI_Barrier(MPI_COMM_WORLD); } t2 = MPI_Wtime(); t = (t2 - t1) / ITER; /* Time when rank 1 gathers the data */ MPI_Barrier(MPI_COMM_WORLD); t1 = MPI_Wtime(); for (j = 0; j < ITER; j++) { MPI_Gather(sbuf, SIZE, MPI_BYTE, rbuf, SIZE, MPI_BYTE, 1, MPI_COMM_WORLD); MPI_Barrier(MPI_COMM_WORLD); } t2 = MPI_Wtime(); ts = (t2 - t1) / ITER; if (rank == 1) MPI_Send(&ts, 1, MPI_DOUBLE, 0, 0, MPI_COMM_WORLD); if (rank == 0) MPI_Recv(&ts, 1, MPI_DOUBLE, 1, 0, MPI_COMM_WORLD, &status); /* Print out the results */ if (!rank) { if ((ts / t) > (1 + ERROR_MARGIN)) { /* If the difference is more than 10%, it's an error */ printf("%.3f\t%.3f\n", 1000000.0 * ts, 1000000.0 * t); printf("Too much difference in performance\n"); } else printf(" No Errors\n"); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/perf/testlist0000644000175000017500000000047012620254305017113 0ustar mbanckmbancktransp-datatype 2 xfail=ticket1788 sendrecvl 2 twovec 1 xfail=ticket1788 dtpack 1 xfail=ticket1789 nestvec 1 xfail=ticket1788 nestvec2 1 xfail=ticket1788 indexperf 1 xfail=ticket1788 non_zero_root 4 timer 1 # The commcreatep test looks at how communicator creation scales with group # size. commcreatep 16 mpi-testsuite-3.2+dfsg/perf/Makefile.in0000644000175000017500000010160212621010235017352 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = transp-datatype$(EXEEXT) non_zero_root$(EXEEXT) \ sendrecvl$(EXEEXT) twovec$(EXEEXT) dtpack$(EXEEXT) \ allredtrace$(EXEEXT) commcreatep$(EXEEXT) allredtrace$(EXEEXT) \ commcreatep$(EXEEXT) timer$(EXEEXT) manyrma$(EXEEXT) \ nestvec$(EXEEXT) nestvec2$(EXEEXT) indexperf$(EXEEXT) subdir = perf ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) allredtrace_SOURCES = allredtrace.c allredtrace_OBJECTS = allredtrace.$(OBJEXT) allredtrace_LDADD = $(LDADD) allredtrace_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o commcreatep_SOURCES = commcreatep.c commcreatep_OBJECTS = commcreatep.$(OBJEXT) commcreatep_LDADD = $(LDADD) commcreatep_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o dtpack_SOURCES = dtpack.c dtpack_OBJECTS = dtpack-dtpack.$(OBJEXT) dtpack_LDADD = $(LDADD) dtpack_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o dtpack_LINK = $(CCLD) $(dtpack_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ indexperf_SOURCES = indexperf.c indexperf_OBJECTS = indexperf-indexperf.$(OBJEXT) indexperf_LDADD = $(LDADD) indexperf_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o indexperf_LINK = $(CCLD) $(indexperf_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ manyrma_SOURCES = manyrma.c manyrma_OBJECTS = manyrma.$(OBJEXT) manyrma_LDADD = $(LDADD) manyrma_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o nestvec_SOURCES = nestvec.c nestvec_OBJECTS = nestvec-nestvec.$(OBJEXT) nestvec_LDADD = $(LDADD) nestvec_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o nestvec_LINK = $(CCLD) $(nestvec_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ nestvec2_SOURCES = nestvec2.c nestvec2_OBJECTS = nestvec2-nestvec2.$(OBJEXT) nestvec2_LDADD = $(LDADD) nestvec2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o nestvec2_LINK = $(CCLD) $(nestvec2_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ non_zero_root_SOURCES = non_zero_root.c non_zero_root_OBJECTS = non_zero_root.$(OBJEXT) non_zero_root_LDADD = $(LDADD) non_zero_root_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o sendrecvl_SOURCES = sendrecvl.c sendrecvl_OBJECTS = sendrecvl.$(OBJEXT) sendrecvl_LDADD = $(LDADD) sendrecvl_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o timer_SOURCES = timer.c timer_OBJECTS = timer.$(OBJEXT) timer_LDADD = $(LDADD) timer_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o transp_datatype_SOURCES = transp-datatype.c transp_datatype_OBJECTS = transp-datatype.$(OBJEXT) transp_datatype_LDADD = $(LDADD) transp_datatype_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o twovec_SOURCES = twovec.c twovec_OBJECTS = twovec.$(OBJEXT) twovec_DEPENDENCIES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = allredtrace.c commcreatep.c dtpack.c indexperf.c manyrma.c \ nestvec.c nestvec2.c non_zero_root.c sendrecvl.c timer.c \ transp-datatype.c twovec.c DIST_SOURCES = allredtrace.c commcreatep.c dtpack.c indexperf.c \ manyrma.c nestvec.c nestvec2.c non_zero_root.c sendrecvl.c \ timer.c transp-datatype.c twovec.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.mtest \ $(top_srcdir)/confdb/depcomp README DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist # Force all tests to be compiled with optimization AM_CFLAGS = -O # While the AM_CFLAGS should be sufficient, to make this Makefile more # robust, indicate that these specific programs *must* be compiled with # optimization dtpack_CFLAGS = -O nestvec_CFLAGS = -O nestvec2_CFLAGS = -O indexperf_CFLAGS = -O twovec_LDADD = -lm all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign perf/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign perf/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) allredtrace$(EXEEXT): $(allredtrace_OBJECTS) $(allredtrace_DEPENDENCIES) $(EXTRA_allredtrace_DEPENDENCIES) @rm -f allredtrace$(EXEEXT) $(AM_V_CCLD)$(LINK) $(allredtrace_OBJECTS) $(allredtrace_LDADD) $(LIBS) commcreatep$(EXEEXT): $(commcreatep_OBJECTS) $(commcreatep_DEPENDENCIES) $(EXTRA_commcreatep_DEPENDENCIES) @rm -f commcreatep$(EXEEXT) $(AM_V_CCLD)$(LINK) $(commcreatep_OBJECTS) $(commcreatep_LDADD) $(LIBS) dtpack$(EXEEXT): $(dtpack_OBJECTS) $(dtpack_DEPENDENCIES) $(EXTRA_dtpack_DEPENDENCIES) @rm -f dtpack$(EXEEXT) $(AM_V_CCLD)$(dtpack_LINK) $(dtpack_OBJECTS) $(dtpack_LDADD) $(LIBS) indexperf$(EXEEXT): $(indexperf_OBJECTS) $(indexperf_DEPENDENCIES) $(EXTRA_indexperf_DEPENDENCIES) @rm -f indexperf$(EXEEXT) $(AM_V_CCLD)$(indexperf_LINK) $(indexperf_OBJECTS) $(indexperf_LDADD) $(LIBS) manyrma$(EXEEXT): $(manyrma_OBJECTS) $(manyrma_DEPENDENCIES) $(EXTRA_manyrma_DEPENDENCIES) @rm -f manyrma$(EXEEXT) $(AM_V_CCLD)$(LINK) $(manyrma_OBJECTS) $(manyrma_LDADD) $(LIBS) nestvec$(EXEEXT): $(nestvec_OBJECTS) $(nestvec_DEPENDENCIES) $(EXTRA_nestvec_DEPENDENCIES) @rm -f nestvec$(EXEEXT) $(AM_V_CCLD)$(nestvec_LINK) $(nestvec_OBJECTS) $(nestvec_LDADD) $(LIBS) nestvec2$(EXEEXT): $(nestvec2_OBJECTS) $(nestvec2_DEPENDENCIES) $(EXTRA_nestvec2_DEPENDENCIES) @rm -f nestvec2$(EXEEXT) $(AM_V_CCLD)$(nestvec2_LINK) $(nestvec2_OBJECTS) $(nestvec2_LDADD) $(LIBS) non_zero_root$(EXEEXT): $(non_zero_root_OBJECTS) $(non_zero_root_DEPENDENCIES) $(EXTRA_non_zero_root_DEPENDENCIES) @rm -f non_zero_root$(EXEEXT) $(AM_V_CCLD)$(LINK) $(non_zero_root_OBJECTS) $(non_zero_root_LDADD) $(LIBS) sendrecvl$(EXEEXT): $(sendrecvl_OBJECTS) $(sendrecvl_DEPENDENCIES) $(EXTRA_sendrecvl_DEPENDENCIES) @rm -f sendrecvl$(EXEEXT) $(AM_V_CCLD)$(LINK) $(sendrecvl_OBJECTS) $(sendrecvl_LDADD) $(LIBS) timer$(EXEEXT): $(timer_OBJECTS) $(timer_DEPENDENCIES) $(EXTRA_timer_DEPENDENCIES) @rm -f timer$(EXEEXT) $(AM_V_CCLD)$(LINK) $(timer_OBJECTS) $(timer_LDADD) $(LIBS) transp-datatype$(EXEEXT): $(transp_datatype_OBJECTS) $(transp_datatype_DEPENDENCIES) $(EXTRA_transp_datatype_DEPENDENCIES) @rm -f transp-datatype$(EXEEXT) $(AM_V_CCLD)$(LINK) $(transp_datatype_OBJECTS) $(transp_datatype_LDADD) $(LIBS) twovec$(EXEEXT): $(twovec_OBJECTS) $(twovec_DEPENDENCIES) $(EXTRA_twovec_DEPENDENCIES) @rm -f twovec$(EXEEXT) $(AM_V_CCLD)$(LINK) $(twovec_OBJECTS) $(twovec_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/allredtrace.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/commcreatep.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dtpack-dtpack.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/indexperf-indexperf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/manyrma.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nestvec-nestvec.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nestvec2-nestvec2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/non_zero_root.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendrecvl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timer.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/transp-datatype.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/twovec.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` dtpack-dtpack.o: dtpack.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dtpack_CFLAGS) $(CFLAGS) -MT dtpack-dtpack.o -MD -MP -MF $(DEPDIR)/dtpack-dtpack.Tpo -c -o dtpack-dtpack.o `test -f 'dtpack.c' || echo '$(srcdir)/'`dtpack.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dtpack-dtpack.Tpo $(DEPDIR)/dtpack-dtpack.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dtpack.c' object='dtpack-dtpack.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dtpack_CFLAGS) $(CFLAGS) -c -o dtpack-dtpack.o `test -f 'dtpack.c' || echo '$(srcdir)/'`dtpack.c dtpack-dtpack.obj: dtpack.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dtpack_CFLAGS) $(CFLAGS) -MT dtpack-dtpack.obj -MD -MP -MF $(DEPDIR)/dtpack-dtpack.Tpo -c -o dtpack-dtpack.obj `if test -f 'dtpack.c'; then $(CYGPATH_W) 'dtpack.c'; else $(CYGPATH_W) '$(srcdir)/dtpack.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dtpack-dtpack.Tpo $(DEPDIR)/dtpack-dtpack.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dtpack.c' object='dtpack-dtpack.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dtpack_CFLAGS) $(CFLAGS) -c -o dtpack-dtpack.obj `if test -f 'dtpack.c'; then $(CYGPATH_W) 'dtpack.c'; else $(CYGPATH_W) '$(srcdir)/dtpack.c'; fi` indexperf-indexperf.o: indexperf.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(indexperf_CFLAGS) $(CFLAGS) -MT indexperf-indexperf.o -MD -MP -MF $(DEPDIR)/indexperf-indexperf.Tpo -c -o indexperf-indexperf.o `test -f 'indexperf.c' || echo '$(srcdir)/'`indexperf.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/indexperf-indexperf.Tpo $(DEPDIR)/indexperf-indexperf.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='indexperf.c' object='indexperf-indexperf.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(indexperf_CFLAGS) $(CFLAGS) -c -o indexperf-indexperf.o `test -f 'indexperf.c' || echo '$(srcdir)/'`indexperf.c indexperf-indexperf.obj: indexperf.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(indexperf_CFLAGS) $(CFLAGS) -MT indexperf-indexperf.obj -MD -MP -MF $(DEPDIR)/indexperf-indexperf.Tpo -c -o indexperf-indexperf.obj `if test -f 'indexperf.c'; then $(CYGPATH_W) 'indexperf.c'; else $(CYGPATH_W) '$(srcdir)/indexperf.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/indexperf-indexperf.Tpo $(DEPDIR)/indexperf-indexperf.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='indexperf.c' object='indexperf-indexperf.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(indexperf_CFLAGS) $(CFLAGS) -c -o indexperf-indexperf.obj `if test -f 'indexperf.c'; then $(CYGPATH_W) 'indexperf.c'; else $(CYGPATH_W) '$(srcdir)/indexperf.c'; fi` nestvec-nestvec.o: nestvec.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(nestvec_CFLAGS) $(CFLAGS) -MT nestvec-nestvec.o -MD -MP -MF $(DEPDIR)/nestvec-nestvec.Tpo -c -o nestvec-nestvec.o `test -f 'nestvec.c' || echo '$(srcdir)/'`nestvec.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nestvec-nestvec.Tpo $(DEPDIR)/nestvec-nestvec.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nestvec.c' object='nestvec-nestvec.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(nestvec_CFLAGS) $(CFLAGS) -c -o nestvec-nestvec.o `test -f 'nestvec.c' || echo '$(srcdir)/'`nestvec.c nestvec-nestvec.obj: nestvec.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(nestvec_CFLAGS) $(CFLAGS) -MT nestvec-nestvec.obj -MD -MP -MF $(DEPDIR)/nestvec-nestvec.Tpo -c -o nestvec-nestvec.obj `if test -f 'nestvec.c'; then $(CYGPATH_W) 'nestvec.c'; else $(CYGPATH_W) '$(srcdir)/nestvec.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nestvec-nestvec.Tpo $(DEPDIR)/nestvec-nestvec.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nestvec.c' object='nestvec-nestvec.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(nestvec_CFLAGS) $(CFLAGS) -c -o nestvec-nestvec.obj `if test -f 'nestvec.c'; then $(CYGPATH_W) 'nestvec.c'; else $(CYGPATH_W) '$(srcdir)/nestvec.c'; fi` nestvec2-nestvec2.o: nestvec2.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(nestvec2_CFLAGS) $(CFLAGS) -MT nestvec2-nestvec2.o -MD -MP -MF $(DEPDIR)/nestvec2-nestvec2.Tpo -c -o nestvec2-nestvec2.o `test -f 'nestvec2.c' || echo '$(srcdir)/'`nestvec2.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nestvec2-nestvec2.Tpo $(DEPDIR)/nestvec2-nestvec2.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nestvec2.c' object='nestvec2-nestvec2.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(nestvec2_CFLAGS) $(CFLAGS) -c -o nestvec2-nestvec2.o `test -f 'nestvec2.c' || echo '$(srcdir)/'`nestvec2.c nestvec2-nestvec2.obj: nestvec2.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(nestvec2_CFLAGS) $(CFLAGS) -MT nestvec2-nestvec2.obj -MD -MP -MF $(DEPDIR)/nestvec2-nestvec2.Tpo -c -o nestvec2-nestvec2.obj `if test -f 'nestvec2.c'; then $(CYGPATH_W) 'nestvec2.c'; else $(CYGPATH_W) '$(srcdir)/nestvec2.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nestvec2-nestvec2.Tpo $(DEPDIR)/nestvec2-nestvec2.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nestvec2.c' object='nestvec2-nestvec2.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(nestvec2_CFLAGS) $(CFLAGS) -c -o nestvec2-nestvec2.obj `if test -f 'nestvec2.c'; then $(CYGPATH_W) 'nestvec2.c'; else $(CYGPATH_W) '$(srcdir)/nestvec2.c'; fi` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/perf/manyrma.c0000644000175000017500000003044612620254305017133 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2010 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* This test measures the performance of many rma operations to a single target process. It uses a number of operations (put or accumulate) to different locations in the target window This is one of the ways that RMA may be used, and is used in the reference implementation of the graph500 benchmark. */ #include "mpi.h" #include #include #include #define MAX_COUNT 65536*4 #define MAX_RMA_SIZE 16 #define MAX_RUNS 10 typedef enum { SYNC_NONE = 0, SYNC_ALL = -1, SYNC_FENCE = 1, SYNC_LOCK = 2, SYNC_PSCW = 4 } sync_t; typedef enum { RMA_NONE = 0, RMA_ALL = -1, RMA_PUT = 1, RMA_ACC = 2, RMA_GET = 4 } rma_t; /* Note GET not yet implemented */ sync_t syncChoice = SYNC_ALL; rma_t rmaChoice = RMA_ALL; typedef struct { double startOp, endOp, endSync; } timing; static int verbose = 1; static int barrierSync = 0; static double tickThreshold = 0.0; void PrintResults(int cnt, timing t[]); void RunAccFence(MPI_Win win, int destRank, int cnt, int sz, timing t[]); void RunAccLock(MPI_Win win, int destRank, int cnt, int sz, timing t[]); void RunPutFence(MPI_Win win, int destRank, int cnt, int sz, timing t[]); void RunPutLock(MPI_Win win, int destRank, int cnt, int sz, timing t[]); void RunAccPSCW(MPI_Win win, int destRank, int cnt, int sz, MPI_Group exposureGroup, MPI_Group accessGroup, timing t[]); void RunPutPSCW(MPI_Win win, int destRank, int cnt, int sz, MPI_Group exposureGroup, MPI_Group accessGroup, timing t[]); int main(int argc, char *argv[]) { int arraysize, i, cnt, sz, maxCount = MAX_COUNT, *arraybuffer; int wrank, wsize, destRank, srcRank; MPI_Win win; MPI_Group wgroup, accessGroup, exposureGroup; timing t[MAX_RUNS]; int maxSz = MAX_RMA_SIZE; MPI_Init(&argc, &argv); /* Determine clock accuracy */ tickThreshold = 10.0 * MPI_Wtick(); MPI_Allreduce(MPI_IN_PLACE, &tickThreshold, 1, MPI_DOUBLE, MPI_MAX, MPI_COMM_WORLD); for (i = 1; i < argc; i++) { if (strcmp(argv[i], "-put") == 0) { if (rmaChoice == RMA_ALL) rmaChoice = RMA_NONE; rmaChoice |= RMA_PUT; } else if (strcmp(argv[i], "-acc") == 0) { if (rmaChoice == RMA_ALL) rmaChoice = RMA_NONE; rmaChoice |= RMA_ACC; } else if (strcmp(argv[i], "-fence") == 0) { if (syncChoice == SYNC_ALL) syncChoice = SYNC_NONE; syncChoice |= SYNC_FENCE; } else if (strcmp(argv[i], "-lock") == 0) { if (syncChoice == SYNC_ALL) syncChoice = SYNC_NONE; syncChoice |= SYNC_LOCK; } else if (strcmp(argv[i], "-pscw") == 0) { if (syncChoice == SYNC_ALL) syncChoice = SYNC_NONE; syncChoice |= SYNC_PSCW; } else if (strcmp(argv[i], "-maxsz") == 0) { i++; maxSz = atoi(argv[i]); } else if (strcmp(argv[i], "-maxcount") == 0) { i++; maxCount = atoi(argv[i]); } else if (strcmp(argv[i], "-barrier") == 0) { barrierSync = 1; } else { fprintf(stderr, "Unrecognized argument %s\n", argv[i]); fprintf(stderr, "%s [ -put ] [ -acc ] [ -lock ] [ -fence ] [ -pscw ] [ -barrier ] [ -maxsz msgsize ]\n", argv[0]); MPI_Abort(MPI_COMM_WORLD, 1); } } MPI_Comm_rank(MPI_COMM_WORLD, &wrank); MPI_Comm_size(MPI_COMM_WORLD, &wsize); destRank = wrank + 1; while (destRank >= wsize) destRank = destRank - wsize; srcRank = wrank - 1; if (srcRank < 0) srcRank += wsize; /* Create groups for PSCW */ MPI_Comm_group(MPI_COMM_WORLD, &wgroup); MPI_Group_incl(wgroup, 1, &destRank, &accessGroup); MPI_Group_incl(wgroup, 1, &srcRank, &exposureGroup); MPI_Group_free(&wgroup); arraysize = maxSz * MAX_COUNT; arraybuffer = (int *) malloc(arraysize * sizeof(int)); if (!arraybuffer) { fprintf(stderr, "Unable to allocate %d words\n", arraysize); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Win_create(arraybuffer, arraysize * sizeof(int), (int) sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &win); /* FIXME: we need a test on performance consistency. * The test needs to have both a relative growth limit and * an absolute limit. */ if (maxCount > MAX_COUNT) { fprintf(stderr, "MaxCount must not exceed %d\n", MAX_COUNT); MPI_Abort(MPI_COMM_WORLD, 1); } if ((syncChoice & SYNC_FENCE) && (rmaChoice & RMA_ACC)) { for (sz = 1; sz <= maxSz; sz = sz + sz) { if (wrank == 0) printf("Accumulate with fence, %d elements\n", sz); cnt = 1; while (cnt <= maxCount) { RunAccFence(win, destRank, cnt, sz, t); if (wrank == 0) { PrintResults(cnt, t); } cnt = 2 * cnt; } } } if ((syncChoice & SYNC_LOCK) && (rmaChoice & RMA_ACC)) { for (sz = 1; sz <= maxSz; sz = sz + sz) { if (wrank == 0) printf("Accumulate with lock, %d elements\n", sz); cnt = 1; while (cnt <= maxCount) { RunAccLock(win, destRank, cnt, sz, t); if (wrank == 0) { PrintResults(cnt, t); } cnt = 2 * cnt; } } } if ((syncChoice & SYNC_FENCE) && (rmaChoice & RMA_PUT)) { for (sz = 1; sz <= maxSz; sz = sz + sz) { if (wrank == 0) printf("Put with fence, %d elements\n", sz); cnt = 1; while (cnt <= maxCount) { RunPutFence(win, destRank, cnt, sz, t); if (wrank == 0) { PrintResults(cnt, t); } cnt = 2 * cnt; } } } if ((syncChoice & SYNC_LOCK) && (rmaChoice & RMA_PUT)) { for (sz = 1; sz <= maxSz; sz = sz + sz) { if (wrank == 0) printf("Put with lock, %d elements\n", sz); cnt = 1; while (cnt <= maxCount) { RunPutLock(win, destRank, cnt, sz, t); if (wrank == 0) { PrintResults(cnt, t); } cnt = 2 * cnt; } } } if ((syncChoice & SYNC_PSCW) && (rmaChoice & RMA_PUT)) { for (sz = 1; sz <= maxSz; sz = sz + sz) { if (wrank == 0) printf("Put with pscw, %d elements\n", sz); cnt = 1; while (cnt <= maxCount) { RunPutPSCW(win, destRank, cnt, sz, exposureGroup, accessGroup, t); if (wrank == 0) { PrintResults(cnt, t); } cnt = 2 * cnt; } } } if ((syncChoice & SYNC_PSCW) && (rmaChoice & RMA_ACC)) { for (sz = 1; sz <= maxSz; sz = sz + sz) { if (wrank == 0) printf("Accumulate with pscw, %d elements\n", sz); cnt = 1; while (cnt <= maxCount) { RunAccPSCW(win, destRank, cnt, sz, exposureGroup, accessGroup, t); if (wrank == 0) { PrintResults(cnt, t); } cnt = 2 * cnt; } } } MPI_Win_free(&win); MPI_Group_free(&accessGroup); MPI_Group_free(&exposureGroup); MPI_Finalize(); return 0; } void RunAccFence(MPI_Win win, int destRank, int cnt, int sz, timing t[]) { int k, i, j, one = 1; for (k = 0; k < MAX_RUNS; k++) { MPI_Barrier(MPI_COMM_WORLD); MPI_Win_fence(0, win); j = 0; t[k].startOp = MPI_Wtime(); for (i = 0; i < cnt; i++) { MPI_Accumulate(&one, sz, MPI_INT, destRank, j, sz, MPI_INT, MPI_SUM, win); j += sz; } t[k].endOp = MPI_Wtime(); if (barrierSync) MPI_Barrier(MPI_COMM_WORLD); MPI_Win_fence(0, win); t[k].endSync = MPI_Wtime(); } } void RunAccLock(MPI_Win win, int destRank, int cnt, int sz, timing t[]) { int k, i, j, one = 1; for (k = 0; k < MAX_RUNS; k++) { MPI_Barrier(MPI_COMM_WORLD); MPI_Win_lock(MPI_LOCK_SHARED, destRank, 0, win); j = 0; t[k].startOp = MPI_Wtime(); for (i = 0; i < cnt; i++) { MPI_Accumulate(&one, sz, MPI_INT, destRank, j, sz, MPI_INT, MPI_SUM, win); j += sz; } t[k].endOp = MPI_Wtime(); if (barrierSync) MPI_Barrier(MPI_COMM_WORLD); MPI_Win_unlock(destRank, win); t[k].endSync = MPI_Wtime(); } } void RunPutFence(MPI_Win win, int destRank, int cnt, int sz, timing t[]) { int k, i, j, one = 1; for (k = 0; k < MAX_RUNS; k++) { MPI_Barrier(MPI_COMM_WORLD); MPI_Win_fence(0, win); j = 0; t[k].startOp = MPI_Wtime(); for (i = 0; i < cnt; i++) { MPI_Put(&one, sz, MPI_INT, destRank, j, sz, MPI_INT, win); j += sz; } t[k].endOp = MPI_Wtime(); if (barrierSync) MPI_Barrier(MPI_COMM_WORLD); MPI_Win_fence(0, win); t[k].endSync = MPI_Wtime(); } } void RunPutLock(MPI_Win win, int destRank, int cnt, int sz, timing t[]) { int k, i, j, one = 1; for (k = 0; k < MAX_RUNS; k++) { MPI_Barrier(MPI_COMM_WORLD); MPI_Win_lock(MPI_LOCK_SHARED, destRank, 0, win); j = 0; t[k].startOp = MPI_Wtime(); for (i = 0; i < cnt; i++) { MPI_Put(&one, sz, MPI_INT, destRank, j, sz, MPI_INT, win); j += sz; } t[k].endOp = MPI_Wtime(); if (barrierSync) MPI_Barrier(MPI_COMM_WORLD); MPI_Win_unlock(destRank, win); t[k].endSync = MPI_Wtime(); } } void RunPutPSCW(MPI_Win win, int destRank, int cnt, int sz, MPI_Group exposureGroup, MPI_Group accessGroup, timing t[]) { int k, i, j, one = 1; for (k = 0; k < MAX_RUNS; k++) { MPI_Barrier(MPI_COMM_WORLD); MPI_Win_post(exposureGroup, 0, win); MPI_Win_start(accessGroup, 0, win); j = 0; t[k].startOp = MPI_Wtime(); for (i = 0; i < cnt; i++) { MPI_Put(&one, sz, MPI_INT, destRank, j, sz, MPI_INT, win); j += sz; } t[k].endOp = MPI_Wtime(); if (barrierSync) MPI_Barrier(MPI_COMM_WORLD); MPI_Win_complete(win); MPI_Win_wait(win); t[k].endSync = MPI_Wtime(); } } void RunAccPSCW(MPI_Win win, int destRank, int cnt, int sz, MPI_Group exposureGroup, MPI_Group accessGroup, timing t[]) { int k, i, j, one = 1; for (k = 0; k < MAX_RUNS; k++) { MPI_Barrier(MPI_COMM_WORLD); MPI_Win_post(exposureGroup, 0, win); MPI_Win_start(accessGroup, 0, win); j = 0; t[k].startOp = MPI_Wtime(); for (i = 0; i < cnt; i++) { MPI_Accumulate(&one, sz, MPI_INT, destRank, j, sz, MPI_INT, MPI_SUM, win); j += sz; } t[k].endOp = MPI_Wtime(); if (barrierSync) MPI_Barrier(MPI_COMM_WORLD); MPI_Win_complete(win); MPI_Win_wait(win); t[k].endSync = MPI_Wtime(); } } void PrintResults(int cnt, timing t[]) { int k; double d1 = 0, d2 = 0; double minD1 = 1e10, minD2 = 1e10; double tOp, tSync; for (k = 0; k < MAX_RUNS; k++) { tOp = t[k].endOp - t[k].startOp; tSync = t[k].endSync - t[k].endOp; d1 += tOp; d2 += tSync; if (tOp < minD1) minD1 = tOp; if (tSync < minD2) minD2 = tSync; } if (verbose) { long rate = 0; /* Use the minimum times because they are more stable - if timing * accuracy is an issue, use the min over multiple trials */ d1 = minD1; d2 = minD2; /* d1 = d1 / MAX_RUNS; d2 = d2 / MAX_RUNS); */ if (d2 > 0) rate = (long) (cnt) / d2; /* count, op, sync, op/each, sync/each, rate */ printf("%d\t%e\t%e\t%e\t%e\t%ld\n", cnt, d1, d2, d1 / cnt, d2 / cnt, rate); } } mpi-testsuite-3.2+dfsg/perf/indexperf.c0000644000175000017500000001303512620254305017446 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * Tests that basic optimizations are performed on indexed datatypes. * * If PACK_IS_NATIVE is defined, MPI_Pack stores exactly the same bytes as the * user would pack manually; in that case, there is a consistency check. */ #ifdef MPICH /* MPICH (as of 6/2012) packs the native bytes */ #define PACK_IS_NATIVE #endif #include "mpi.h" #include #include #include static int verbose = 0; int main(int argc, char **argv) { double *inbuf, *outbuf, *outbuf2; MPI_Aint lb, extent; int *index_displacement; int icount, errs = 0; int i, packsize, position, inbufsize; MPI_Datatype itype1, stype1; double t0, t1; double tpack, tspack, tmanual; int ntry; MPI_Init(&argc, &argv); icount = 2014; /* Create a simple block indexed datatype */ index_displacement = (int *) malloc(icount * sizeof(int)); if (!index_displacement) { fprintf(stderr, "Unable to allocated index array of size %d\n", icount); MPI_Abort(MPI_COMM_WORLD, 1); } for (i = 0; i < icount; i++) { index_displacement[i] = (i * 3 + (i % 3)); } MPI_Type_create_indexed_block(icount, 1, index_displacement, MPI_DOUBLE, &itype1); MPI_Type_commit(&itype1); #if defined(MPICH) && defined(PRINT_DATATYPE_INTERNALS) /* To use MPIDU_Datatype_debug to print the datatype internals, * you must configure MPICH with --enable-g=log */ if (verbose) { printf("Block index datatype:\n"); MPIDU_Datatype_debug(itype1, 10); } #endif MPI_Type_get_extent(itype1, &lb, &extent); MPI_Pack_size(1, itype1, MPI_COMM_WORLD, &packsize); inbufsize = extent / sizeof(double); inbuf = (double *) malloc(extent); outbuf = (double *) malloc(packsize); outbuf2 = (double *) malloc(icount * sizeof(double)); if (!inbuf) { fprintf(stderr, "Unable to allocate %ld for inbuf\n", (long) extent); MPI_Abort(MPI_COMM_WORLD, 1); } if (!outbuf) { fprintf(stderr, "Unable to allocate %ld for outbuf\n", (long) packsize); MPI_Abort(MPI_COMM_WORLD, 1); } if (!outbuf2) { fprintf(stderr, "Unable to allocate %ld for outbuf2\n", (long) packsize); MPI_Abort(MPI_COMM_WORLD, 1); } for (i = 0; i < inbufsize; i++) { inbuf[i] = (double) i; } position = 0; /* Warm up the code and data */ MPI_Pack(inbuf, 1, itype1, outbuf, packsize, &position, MPI_COMM_WORLD); tpack = 1e12; for (ntry = 0; ntry < 5; ntry++) { position = 0; t0 = MPI_Wtime(); MPI_Pack(inbuf, 1, itype1, outbuf, packsize, &position, MPI_COMM_WORLD); t1 = MPI_Wtime() - t0; if (t1 < tpack) tpack = t1; } { int one = 1; MPI_Aint displ = (MPI_Aint) inbuf; MPI_Type_create_struct(1, &one, &displ, &itype1, &stype1); MPI_Type_commit(&stype1); } position = 0; /* Warm up the code and data */ MPI_Pack(MPI_BOTTOM, 1, stype1, outbuf, packsize, &position, MPI_COMM_WORLD); tspack = 1e12; for (ntry = 0; ntry < 5; ntry++) { position = 0; t0 = MPI_Wtime(); MPI_Pack(MPI_BOTTOM, 1, stype1, outbuf, packsize, &position, MPI_COMM_WORLD); t1 = MPI_Wtime() - t0; if (t1 < tspack) tspack = t1; } /* * Simple manual pack (without explicitly unrolling the index block) */ tmanual = 1e12; for (ntry = 0; ntry < 5; ntry++) { const double *ppe = (const double *) inbuf; const int *id = (const int *) index_displacement; int k, j; t0 = MPI_Wtime(); position = 0; for (i = 0; i < icount; i++) { outbuf2[position++] = ppe[id[i]]; } t1 = MPI_Wtime() - t0; if (t1 < tmanual) tmanual = t1; /* Check on correctness */ #ifdef PACK_IS_NATIVE if (memcmp(outbuf, outbuf2, position) != 0) { printf("Panic - pack buffers differ\n"); } #endif } if (verbose) { printf("Bytes packed = %d\n", position); printf("MPI_Pack time = %e, manual pack time = %e\n", tpack, tmanual); printf("Pack with struct = %e\n", tspack); } /* The threshold here permits the MPI datatype to perform at up to * only one half the performance of simple user code. Note that the * example code above may be made faster through careful use of const, * restrict, and unrolling if the compiler doesn't already do that. */ if (2 * tmanual < tpack) { errs++; printf("MPI_Pack (block index) time = %e, manual pack time = %e\n", tpack, tmanual); printf("MPI_Pack time should be less than 2 times the manual time\n"); printf("For most informative results, be sure to compile this test with optimization\n"); } if (2 * tmanual < tspack) { errs++; printf("MPI_Pack (struct of block index)) time = %e, manual pack time = %e\n", tspack, tmanual); printf("MPI_Pack time should be less than 2 times the manual time\n"); printf("For most informative results, be sure to compile this test with optimization\n"); } if (errs) { printf(" Found %d errors\n", errs); } else { printf(" No Errors\n"); } MPI_Type_free(&itype1); MPI_Type_free(&stype1); free(inbuf); free(outbuf); free(outbuf2); free(index_displacement); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/perf/Makefile.am0000644000175000017500000000136012620254305017350 0ustar mbanckmbanck## -*- Mode: Makefile; -*- ## vim: set ft=automake : ## ## (C) 2011 by Argonne National Laboratory. ## See COPYRIGHT in top-level directory. ## include $(top_srcdir)/Makefile.mtest EXTRA_DIST = testlist noinst_PROGRAMS = transp-datatype non_zero_root sendrecvl twovec dtpack \ allredtrace commcreatep allredtrace commcreatep timer \ manyrma nestvec nestvec2 indexperf # Force all tests to be compiled with optimization AM_CFLAGS = -O # While the AM_CFLAGS should be sufficient, to make this Makefile more # robust, indicate that these specific programs *must* be compiled with # optimization dtpack_CFLAGS = -O nestvec_CFLAGS = -O nestvec2_CFLAGS = -O indexperf_CFLAGS = -O twovec_LDADD = -lm mpi-testsuite-3.2+dfsg/perf/allredtrace.c0000644000175000017500000000761212620254305017750 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2008 by University of Illinois * See COPYRIGHT in top-level directory. */ /* * This code is intended to test the trace overhead when using an * MPI tracing package. To perform the test, follow these steps: * * 1) Run with the versbose mode selected to determine the delay argument * to use in subsequent tests: * mpiexec -n 4096 allredtrace -v * Assume that the computed delay count is 6237; that value is used in * the following. * * 2) Run with an explicit delay count, without tracing enabled: * mpiexec -n 4096 allredtrace -delaycount 6237 * * 3) Build allredtrace with tracing enabled, then run: * mpiexec -n 4096 allredtrace -delaycount 6237 * * Compare the total times. The tracing version should take slightly * longer but no more than, for example, 15%. */ #include "mpi.h" #include #include #include static int verbose = 0; static int lCount = 0; void Delay(int); void SetupDelay(double); int main(int argc, char *argv[]) { double usecPerCall = 100; double t, t1, tsum; int i, nLoop = 100; int rank; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); /* Process arguments. We allow the delay count to be set from the * command line to ensure reproducibility */ for (i = 1; i < argc; i++) { if (strcmp(argv[i], "-delaycount") == 0) { i++; lCount = atoi(argv[i]); } else if (strcmp(argv[i], "-v") == 0) { verbose = 1; } else { fprintf(stderr, "Unrecognized argument %s\n", argv[i]); exit(1); } } if (lCount == 0) { SetupDelay(usecPerCall); } MPI_Barrier(MPI_COMM_WORLD); t = MPI_Wtime(); for (i = 0; i < nLoop; i++) { MPI_Allreduce(&t1, &tsum, 1, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD); Delay(lCount); } t = MPI_Wtime() - t; MPI_Barrier(MPI_COMM_WORLD); if (rank == 0) { printf("For delay count %d, time is %e\n", lCount, t); } MPI_Barrier(MPI_COMM_WORLD); MPI_Finalize(); return 0; } void SetupDelay(double usec) { double t, tick; double sec = 1.0e-6 * usec; int nLoop, i, direction; /* Compute the number of times to run the tests to get an accurate * number given the timer resolution. */ nLoop = 1; tick = 100 * MPI_Wtick(); do { nLoop = 2 * nLoop; t = MPI_Wtime(); for (i = 0; i < nLoop; i++) { MPI_Wtime(); } t = MPI_Wtime() - t; } while (t < tick && nLoop < 100000); if (verbose) printf("nLoop = %d\n", nLoop); /* Start with an estimated count */ lCount = 128; direction = 0; while (1) { t = MPI_Wtime(); for (i = 0; i < nLoop; i++) { Delay(lCount); } t = MPI_Wtime() - t; t = t / nLoop; if (verbose) printf("lCount = %d, time = %e\n", lCount, t); if (t > 10 * tick) nLoop = nLoop / 2; /* Compare measured delay */ if (t > 2 * sec) { lCount = lCount / 2; if (direction == 1) break; direction = -1; } else if (t < sec / 2) { lCount = lCount * 2; if (direction == -1) break; direction = 1; } else if (t < sec) { /* sec/2 <= t < sec , so estimate the lCount to hit sec */ lCount = (sec / t) * lCount; } else break; } if (verbose) printf("lCount = %d, t = %e\n", lCount, t); /* Should coordinate with the other processes - take the max? */ } volatile double delayCounter = 0; void Delay(int count) { int i; delayCounter = 0.0; for (i = 0; i < count; i++) { delayCounter += 2.73; } } mpi-testsuite-3.2+dfsg/perf/nestvec.c0000644000175000017500000001416612620254305017137 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * Tests that basic optimizations are performed on vector of vector datatypes. * As the "leaf" element is a large block (when properly optimized), the * performance of an MPI datatype should be nearly as good (if not better) * than manual packing (the threshold used in this test is *very* forgiving). * This test may be run with one process. * * If PACK_IS_NATIVE is defined, MPI_Pack stores exactly the same bytes as the * user would pack manually; in that case, there is a consistency check. */ #include "mpi.h" #include #include #include #include "mpitestconf.h" #ifdef MPICH /* MPICH (as of 6/2012) packs the native bytes */ #define PACK_IS_NATIVE #endif static int verbose = 0; int main(int argc, char **argv) { int vcount = 16, vblock = vcount * vcount / 2, vstride = 2 * vcount * vblock; int v2stride, typesize, packsize, i, position, errs = 0; char *inbuf, *outbuf, *outbuf2; MPI_Datatype ft1type, ft2type, ft3type; MPI_Datatype ftopttype; MPI_Aint lb, extent; double t0, t1; double tpack, tmanual, tpackopt; int ntry; MPI_Init(&argc, &argv); MPI_Type_contiguous(6, MPI_FLOAT, &ft1type); MPI_Type_size(ft1type, &typesize); v2stride = vcount * vcount * vcount * vcount * typesize; MPI_Type_vector(vcount, vblock, vstride, ft1type, &ft2type); MPI_Type_create_hvector(2, 1, v2stride, ft2type, &ft3type); MPI_Type_commit(&ft3type); MPI_Type_free(&ft1type); MPI_Type_free(&ft2type); #if defined(MPICH) && defined(PRINT_DATATYPE_INTERNALS) /* To use MPIDU_Datatype_debug to print the datatype internals, * you must configure MPICH with --enable-g=log */ if (verbose) { printf("Original datatype:\n"); MPIDU_Datatype_debug(ft3type, 10); } #endif /* The same type, but without using the contiguous type */ MPI_Type_vector(vcount, 6 * vblock, 6 * vstride, MPI_FLOAT, &ft2type); MPI_Type_create_hvector(2, 1, v2stride, ft2type, &ftopttype); MPI_Type_commit(&ftopttype); MPI_Type_free(&ft2type); #if defined(MPICH) && defined(PRINT_DATATYPE_INTERNALS) if (verbose) { printf("\n\nMerged datatype:\n"); MPIDU_Datatype_debug(ftopttype, 10); } #endif MPI_Type_get_extent(ft3type, &lb, &extent); MPI_Type_size(ft3type, &typesize); MPI_Pack_size(1, ft3type, MPI_COMM_WORLD, &packsize); inbuf = (char *) malloc(extent); outbuf = (char *) malloc(packsize); outbuf2 = (char *) malloc(packsize); if (!inbuf) { fprintf(stderr, "Unable to allocate %ld for inbuf\n", (long) extent); MPI_Abort(MPI_COMM_WORLD, 1); } if (!outbuf) { fprintf(stderr, "Unable to allocate %ld for outbuf\n", (long) packsize); MPI_Abort(MPI_COMM_WORLD, 1); } if (!outbuf2) { fprintf(stderr, "Unable to allocate %ld for outbuf2\n", (long) packsize); MPI_Abort(MPI_COMM_WORLD, 1); } for (i = 0; i < extent; i++) { inbuf[i] = i & 0x7f; } position = 0; /* Warm up the code and data */ MPI_Pack(inbuf, 1, ft3type, outbuf, packsize, &position, MPI_COMM_WORLD); /* Pack using the vector of vector of contiguous */ tpack = 1e12; for (ntry = 0; ntry < 5; ntry++) { position = 0; t0 = MPI_Wtime(); MPI_Pack(inbuf, 1, ft3type, outbuf, packsize, &position, MPI_COMM_WORLD); t1 = MPI_Wtime() - t0; if (t1 < tpack) tpack = t1; } MPI_Type_free(&ft3type); /* Pack using vector of vector with big blocks (same type map) */ tpackopt = 1e12; for (ntry = 0; ntry < 5; ntry++) { position = 0; t0 = MPI_Wtime(); MPI_Pack(inbuf, 1, ftopttype, outbuf, packsize, &position, MPI_COMM_WORLD); t1 = MPI_Wtime() - t0; if (t1 < tpackopt) tpackopt = t1; } MPI_Type_free(&ftopttype); /* User (manual) packing code. * Note that we exploit the fact that the vector type contains vblock * instances of a contiguous type of size 24, or equivalently a * single block of 24*vblock bytes. */ tmanual = 1e12; for (ntry = 0; ntry < 5; ntry++) { const char *ppe = (const char *) inbuf; int k, j; t0 = MPI_Wtime(); position = 0; for (k = 0; k < 2; k++) { /* hvector count; blocksize is 1 */ const char *ptr = ppe; for (j = 0; j < vcount; j++) { /* vector count */ memcpy(outbuf2 + position, ptr, 24 * vblock); ptr += vstride * 24; position += 24 * vblock; } ppe += v2stride; } t1 = MPI_Wtime() - t0; if (t1 < tmanual) tmanual = t1; /* Check on correctness */ #ifdef PACK_IS_NATIVE if (memcmp(outbuf, outbuf2, position) != 0) { printf("Panic - pack buffers differ\n"); } #endif } if (verbose) { printf("Bytes packed = %d\n", position); printf("MPI_Pack time = %e, opt version = %e, manual pack time = %e\n", tpack, tpackopt, tmanual); } /* A factor of 4 is extremely generous, especially since the test suite * no longer builds any of the tests with optimization */ if (4 * tmanual < tpack) { errs++; printf("MPI_Pack time = %e, manual pack time = %e\n", tpack, tmanual); printf("MPI_Pack time should be less than 4 times the manual time\n"); printf("For most informative results, be sure to compile this test with optimization\n"); } if (4 * tmanual < tpackopt) { errs++; printf("MPI_Pack with opt = %e, manual pack time = %e\n", tpackopt, tmanual); printf("MPI_Pack time should be less than 4 times the manual time\n"); printf("For most informative results, be sure to compile this test with optimization\n"); } if (errs) { printf(" Found %d errors\n", errs); } else { printf(" No Errors\n"); } free(inbuf); free(outbuf); free(outbuf2); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/perf/twovec.c0000644000175000017500000000671712620254305017002 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include "mpi.h" /* Make sure datatype creation is independent of data size Note, however, that there is no guarantee or expectation that the time would be constant. In particular, some optimizations might take more time than others. The real goal of this is to ensure that the time to create a datatype doesn't increase strongly with the number of elements within the datatype, particularly for these datatypes that are quite simple patterns. */ #define SKIP 4 #define NUM_SIZES 16 #define FRACTION 1.0 /* Don't make the number of loops too high; we create so many * datatypes before trying to free them */ #define LOOPS 1024 int main(int argc, char *argv[]) { MPI_Datatype column[LOOPS], xpose[LOOPS]; double t[NUM_SIZES], ttmp, tmin, tmax, tmean, tdiff; double tMeanLower, tMeanHigher; int size; int i, j, errs = 0, nrows, ncols; MPI_Init(&argc, &argv); tmean = 0; size = 1; for (i = -SKIP; i < NUM_SIZES; i++) { nrows = ncols = size; ttmp = MPI_Wtime(); for (j = 0; j < LOOPS; j++) { MPI_Type_vector(nrows, 1, ncols, MPI_INT, &column[j]); MPI_Type_hvector(ncols, 1, sizeof(int), column[j], &xpose[j]); MPI_Type_commit(&xpose[j]); } if (i >= 0) { t[i] = MPI_Wtime() - ttmp; if (t[i] < 100 * MPI_Wtick()) { /* Time is too inaccurate to use. Set to zero. * Consider increasing the LOOPS value to make this * time large enough */ t[i] = 0; } tmean += t[i]; } for (j = 0; j < LOOPS; j++) { MPI_Type_free(&xpose[j]); MPI_Type_free(&column[j]); } if (i >= 0) size *= 2; } tmean /= NUM_SIZES; /* Now, analyze the times to see that they do not grow too fast * as a function of size. As that is a vague criteria, we do the * following as a simple test: * Compute the mean of the first half and the second half of the * data * Compare the two means * If the mean of the second half is more than FRACTION times the * mean of the first half, then the time may be growing too fast. */ tMeanLower = tMeanHigher = 0; for (i = 0; i < NUM_SIZES / 2; i++) tMeanLower += t[i]; tMeanLower /= (NUM_SIZES / 2); for (i = NUM_SIZES / 2; i < NUM_SIZES; i++) tMeanHigher += t[i]; tMeanHigher /= (NUM_SIZES - NUM_SIZES / 2); /* A large value (even 1 or greater) is a good choice for * FRACTION here - the goal is to detect significant growth in * execution time as the size increases, and there is no MPI * standard requirement here to meet. * * If the times were too small, then the test also passes - the * goal is to find implementation problems that lead to excessive * time in these routines. */ if (tMeanLower > 0 && tMeanHigher > (1 + FRACTION) * tMeanLower) errs++; if (errs) { fprintf(stderr, "too much difference in performance: "); for (i = 0; i < NUM_SIZES; i++) fprintf(stderr, "%.3f ", t[i] * 1e6); fprintf(stderr, "\n"); } else printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/perf/README0000644000175000017500000000052612620254305016177 0ustar mbanckmbanckThis directory contains some performance tests. These are not general performance tests; rather, they reflect our experience with particular performance articfacts that users (or ourselves) haver reported or experienced. The tests include: sendrecvl - Send and receive (head to head) large messages. mattrans - Matrix transpose example mpi-testsuite-3.2+dfsg/perf/commcreatep.c0000644000175000017500000000433212620254305017761 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2009 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #define MAX_LOG_WSIZE 31 #define MAX_LOOP 20 int main(int argc, char *argv[]) { MPI_Group gworld, g; MPI_Comm comm, newcomm[MAX_LOOP]; int wsize, wrank, range[1][3], errs = 0; double t[MAX_LOG_WSIZE], tf; int maxi, i, k, ts, gsize[MAX_LOG_WSIZE]; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &wsize); MPI_Comm_rank(MPI_COMM_WORLD, &wrank); if (wrank == 0) MTestPrintfMsg(1, "size\ttime\n"); MPI_Comm_group(MPI_COMM_WORLD, &gworld); ts = 1; comm = MPI_COMM_WORLD; for (i = 0; ts <= wsize; i++, ts = ts + ts) { /* Create some groups with at most ts members */ range[0][0] = ts - 1; range[0][1] = 0; range[0][2] = -1; MPI_Group_range_incl(gworld, 1, range, &g); MPI_Barrier(MPI_COMM_WORLD); tf = MPI_Wtime(); for (k = 0; k < MAX_LOOP; k++) MPI_Comm_create(comm, g, &newcomm[k]); tf = MPI_Wtime() - tf; MPI_Allreduce(&tf, &t[i], 1, MPI_DOUBLE, MPI_MAX, MPI_COMM_WORLD); t[i] = t[i] / MAX_LOOP; gsize[i] = ts; if (wrank == 0) MTestPrintfMsg(1, "%d\t%e\n", ts, t[i]); MPI_Group_free(&g); if (newcomm[0] != MPI_COMM_NULL) for (k = 0; k < MAX_LOOP; k++) MPI_Comm_free(&newcomm[k]); } MPI_Group_free(&gworld); maxi = i - 1; /* The cost should be linear or at worst ts*log(ts). * We can check this in a number of ways. */ if (wrank == 0) { for (i = 4; i <= maxi; i++) { double rdiff; if (t[i] > 0) { rdiff = (t[i] - t[i - 1]) / t[i]; if (rdiff >= 4) { errs++; fprintf(stderr, "Relative difference between group of size %d and %d is %e exceeds 4\n", gsize[i - 1], gsize[i], rdiff); } } } } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/perf/timer.c0000644000175000017500000000322712620254305016604 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2006 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * Check that the timer produces monotone nondecreasing times and that * the Tick is reasonable */ #include "mpi.h" #include #include "mpitest.h" static int verbose = 0; #define MAX_TIMER_TEST 5000 int main(int argc, char *argv[]) { double t1[MAX_TIMER_TEST], tick[MAX_TIMER_TEST], tickval; double minDiff, maxDiff, diff; int i, nZeros = 0; int errs = 0; MTest_Init(&argc, &argv); for (i = 0; i < MAX_TIMER_TEST; i++) { t1[i] = MPI_Wtime(); } for (i = 0; i < MAX_TIMER_TEST; i++) { tick[i] = MPI_Wtick(); } /* Look at the values */ /* Look at the tick */ tickval = MPI_Wtick(); for (i = 0; i < MAX_TIMER_TEST; i++) { if (tickval != tick[i]) { fprintf(stderr, "Nonconstant value for MPI_Wtick: %e != %e\n", tickval, tick[i]); errs++; } } /* Look at the timer */ minDiff = 1.e20; maxDiff = -1.0; nZeros = 0; for (i = 1; i < MAX_TIMER_TEST; i++) { diff = t1[i] - t1[i - 1]; if (diff == 0.0) nZeros++; else if (diff < minDiff) minDiff = diff; if (diff > maxDiff) maxDiff = diff; } /* Are the time diff values and tick values consistent */ if (verbose) { printf("Tick = %e, timer range = [%e,%e]\n", tickval, minDiff, maxDiff); if (nZeros) printf("Wtime difference was 0 %d times\n", nZeros); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/perf/nestvec2.c0000644000175000017500000001500012620254305017205 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * Tests that the performance of a struct that contains a vector type * exploits the vector type correctly * * If PACK_IS_NATIVE is defined, MPI_Pack stores exactly the same bytes as the * user would pack manually; in that case, there is a consistency check. */ #include "mpi.h" #include #include #include #include "mpitestconf.h" #ifdef HAVE_STDINT_H #include #endif #ifdef MPICH /* MPICH (as of 6/2012) packs the native bytes */ #define PACK_IS_NATIVE #endif static int verbose = 0; int main(int argc, char **argv) { int vcount, vstride; int32_t counts[2]; int v2stride, typesize, packsize, i, position, errs = 0; double *outbuf, *outbuf2; double *vsource; MPI_Datatype vtype, stype; MPI_Aint lb, extent; double t0, t1; double tspack, tvpack, tmanual; int ntry; int blocklengths[2]; MPI_Aint displacements[2]; MPI_Datatype typesArray[2]; MPI_Init(&argc, &argv); /* Create a struct consisting of a two 32-bit ints, followed by a * vector of stride 3 but count 128k (less than a few MB of data area) */ vcount = 128000; vstride = 3; MPI_Type_vector(vcount, 1, vstride, MPI_DOUBLE, &vtype); vsource = (double *) malloc((vcount + 1) * (vstride + 1) * sizeof(double)); if (!vsource) { fprintf(stderr, "Unable to allocate vsource\n"); MPI_Abort(MPI_COMM_WORLD, 1); } for (i = 0; i < vcount * vstride; i++) { vsource[i] = i; } blocklengths[0] = 2; MPI_Get_address(&counts[0], &displacements[0]); blocklengths[1] = 1; MPI_Get_address(vsource, &displacements[1]); if (verbose) { printf("%p = %p?\n", vsource, (void *) displacements[1]); } typesArray[0] = MPI_INT32_T; typesArray[1] = vtype; MPI_Type_create_struct(2, blocklengths, displacements, typesArray, &stype); MPI_Type_commit(&stype); MPI_Type_commit(&vtype); #if defined(MPICH) && defined(PRINT_DATATYPE_INTERNALS) /* To use MPIDU_Datatype_debug to print the datatype internals, * you must configure MPICH with --enable-g=log */ if (verbose) { printf("Original struct datatype:\n"); MPIDU_Datatype_debug(stype, 10); } #endif MPI_Pack_size(1, stype, MPI_COMM_WORLD, &packsize); outbuf = (double *) malloc(packsize); outbuf2 = (double *) malloc(packsize); if (!outbuf) { fprintf(stderr, "Unable to allocate %ld for outbuf\n", (long) packsize); MPI_Abort(MPI_COMM_WORLD, 1); } if (!outbuf2) { fprintf(stderr, "Unable to allocate %ld for outbuf2\n", (long) packsize); MPI_Abort(MPI_COMM_WORLD, 1); } position = 0; /* Warm up the code and data */ MPI_Pack(MPI_BOTTOM, 1, stype, outbuf, packsize, &position, MPI_COMM_WORLD); tspack = 1e12; for (ntry = 0; ntry < 5; ntry++) { position = 0; t0 = MPI_Wtime(); MPI_Pack(MPI_BOTTOM, 1, stype, outbuf, packsize, &position, MPI_COMM_WORLD); t1 = MPI_Wtime() - t0; if (t1 < tspack) tspack = t1; } MPI_Type_free(&stype); /* An equivalent packing, using the 2 ints and the vector separately */ tvpack = 1e12; for (ntry = 0; ntry < 5; ntry++) { position = 0; t0 = MPI_Wtime(); MPI_Pack(counts, 2, MPI_INT32_T, outbuf, packsize, &position, MPI_COMM_WORLD); MPI_Pack(vsource, 1, vtype, outbuf, packsize, &position, MPI_COMM_WORLD); t1 = MPI_Wtime() - t0; if (t1 < tvpack) tvpack = t1; } MPI_Type_free(&vtype); /* Note that we exploit the fact that the vector type contains vblock * instances of a contiguous type of size 24, or a single block of 24*vblock * bytes. */ tmanual = 1e12; for (ntry = 0; ntry < 5; ntry++) { const double *restrict ppe = (const double *) vsource; double *restrict ppo = outbuf2; int j; t0 = MPI_Wtime(); position = 0; *(int32_t *) ppo = counts[0]; *(((int32_t *) ppo) + 1) = counts[1]; ppo++; /* Some hand optimization because this file is not normally * compiled with optimization by the test suite */ j = vcount; while (j) { *ppo++ = *ppe; ppe += vstride; *ppo++ = *ppe; ppe += vstride; *ppo++ = *ppe; ppe += vstride; *ppo++ = *ppe; ppe += vstride; j -= 4; } position += (1 + vcount); position *= sizeof(double); t1 = MPI_Wtime() - t0; if (t1 < tmanual) tmanual = t1; /* Check on correctness */ #ifdef PACK_IS_NATIVE if (memcmp(outbuf, outbuf2, position) != 0) { printf("Panic(manual) - pack buffers differ\n"); for (j = 0; j < 8; j++) { printf("%d: %llx\t%llx\n", j, (long long unsigned) outbuf[j], (long long unsigned) outbuf2[j]); } } #endif } if (verbose) { printf("Bytes packed = %d\n", position); printf("MPI_Pack time = %e (struct), = %e (vector), manual pack time = %e\n", tspack, tvpack, tmanual); } if (4 * tmanual < tspack) { errs++; printf("MPI_Pack time using struct with vector = %e, manual pack time = %e\n", tspack, tmanual); printf("MPI_Pack time should be less than 4 times the manual time\n"); printf("For most informative results, be sure to compile this test with optimization\n"); } if (4 * tmanual < tvpack) { errs++; printf("MPI_Pack using vector = %e, manual pack time = %e\n", tvpack, tmanual); printf("MPI_Pack time should be less than 4 times the manual time\n"); printf("For most informative results, be sure to compile this test with optimization\n"); } if (4 * tvpack < tspack) { errs++; printf("MPI_Pack using a vector = %e, using a struct with vector = %e\n", tvpack, tspack); printf ("MPI_Pack time using vector should be about the same as the struct containing the vector\n"); printf("For most informative results, be sure to compile this test with optimization\n"); } if (errs) { printf(" Found %d errors\n", errs); } else { printf(" No Errors\n"); } free(vsource); free(outbuf); free(outbuf2); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/perf/transp-datatype.c0000644000175000017500000000711112620254305020600 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2006 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* modified 01/23/2011 by Jim Hoekstra - ISU * changed test to follow mtest_init/mtest_finalize convention * The following changes are based on suggestions from Chris Sadlo: * variable row changed to col. * manual transpose - code added to perform 'swap'. * MPI_Send/MPI_Recv involving xpose changed. */ /* This is based on an example in the MPI standard and a bug report submitted by Alexandr Konovalov of Intel */ #include "mpi.h" #include #include "mpitest.h" #define SIZE 100 #define ITER 100 int main(int argc, char *argv[]) { int i, j, k; static double a[SIZE][SIZE], b[SIZE][SIZE]; double t1, t2, t, ts, tst; double temp; int myrank, mysize, errs = 0; MPI_Status status; MPI_Aint sizeofreal; MPI_Datatype col, xpose; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &myrank); MPI_Comm_size(MPI_COMM_WORLD, &mysize); if (mysize != 2) { fprintf(stderr, "This test must be run with 2 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Type_extent(MPI_DOUBLE, &sizeofreal); MPI_Type_vector(SIZE, 1, SIZE, MPI_DOUBLE, &col); MPI_Type_hvector(SIZE, 1, sizeofreal, col, &xpose); MPI_Type_commit(&xpose); /* Preset the arrays so that they're in memory */ for (i = 0; i < SIZE; i++) for (j = 0; j < SIZE; j++) { a[i][j] = 0; b[i][j] = 0; } a[SIZE - 1][0] = 1; /* Time the transpose example */ MPI_Barrier(MPI_COMM_WORLD); t1 = MPI_Wtime(); for (i = 0; i < ITER; i++) { if (myrank == 0) MPI_Send(&a[0][0], SIZE * SIZE, MPI_DOUBLE, 1, 0, MPI_COMM_WORLD); else MPI_Recv(&b[0][0], 1, xpose, 0, 0, MPI_COMM_WORLD, &status); } t2 = MPI_Wtime(); t = (t2 - t1) / ITER; /* Time sending the same amount of data, but without the transpose */ MPI_Barrier(MPI_COMM_WORLD); t1 = MPI_Wtime(); for (i = 0; i < ITER; i++) { if (myrank == 0) { MPI_Send(&a[0][0], sizeof(a), MPI_BYTE, 1, 0, MPI_COMM_WORLD); } else { MPI_Recv(&b[0][0], sizeof(b), MPI_BYTE, 0, 0, MPI_COMM_WORLD, &status); } } t2 = MPI_Wtime(); ts = (t2 - t1) / ITER; /* Time sending the same amount of data, with the transpose done * as a separate step */ MPI_Barrier(MPI_COMM_WORLD); t1 = MPI_Wtime(); for (k = 0; k < ITER; k++) { if (myrank == 0) { MPI_Send(&a[0][0], sizeof(a), MPI_BYTE, 1, 0, MPI_COMM_WORLD); } else { MPI_Recv(&b[0][0], sizeof(b), MPI_BYTE, 0, 0, MPI_COMM_WORLD, &status); for (i = 0; i < SIZE; i++) for (j = i; j < SIZE; j++) { temp = b[j][i]; b[j][i] = b[i][j]; b[i][j] = temp; } } } t2 = MPI_Wtime(); tst = (t2 - t1) / ITER; /* Print out the results */ if (myrank == 1) { /* if t and tst are too different, then there is a performance * problem in the handling of the datatypes */ if (t > 2 * tst) { errs++; fprintf(stderr, "Transpose time with datatypes is more than twice time without datatypes\n"); fprintf(stderr, "%f\t%f\t%f\n", t, ts, tst); } } MPI_Type_free(&col); MPI_Type_free(&xpose); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/Makefile_cxx.mtest0000644000175000017500000000165412620254305020043 0ustar mbanckmbanck## -*- Mode: Makefile; -*- ## vim: set ft=automake : ## ## (C) 2011 by Argonne National Laboratory. ## See COPYRIGHT in top-level directory. ## ## This is an automake makefile fragment that should be included by: ## ## include $(top_srcdir)/Makefile_cxx.mtest ## ## see Makefile.mtest for a description why this file exists, but for C++ AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/cxx/util/mtest.o ## FIXME "DEPADD" is a simplemake concept, which we can handle on a per-target ## prog_DEPENDENCIES variable, but it would be better to figure out the right ## way to do this ##DEPADD = @MPILIBLOC@ ../util/cxx/mtest.o $(top_builddir)/cxx/util/mtest.o: $(top_srcdir)/cxx/util/mtest.cxx (cd $(top_builddir)/cxx/util && $(MAKE) mtest.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml CLEANFILES = summary.xml summary.tap mpi-testsuite-3.2+dfsg/COPYRIGHT0000644000175000017500000000263712620254305015663 0ustar mbanckmbanck COPYRIGHT The following is a notice of limited availability of the code, and disclaimer which must be included in the prologue of the code and in all source listings of the code. Copyright Notice + 2002 University of Chicago Permission is hereby granted to use, reproduce, prepare derivative works, and to redistribute to others. This software was authored by: Mathematics and Computer Science Division Argonne National Laboratory, Argonne IL 60439 (and) Department of Computer Science University of Illinois at Urbana-Champaign GOVERNMENT LICENSE Portions of this material resulted from work developed under a U.S. Government Contract and are subject to the following license: the Government is granted for itself and others acting on its behalf a paid-up, nonexclusive, irrevocable worldwide license in this computer software to reproduce, prepare derivative works, and perform publicly and display publicly. DISCLAIMER This computer code material was prepared, in part, as an account of work sponsored by an agency of the United States Government. Neither the United States, nor the University of Chicago, nor any of their employees, makes any warranty express or implied, or assumes any legal liability or responsibility for the accuracy, completeness, or usefulness of any information, apparatus, product, or process disclosed, or represents that its use would not infringe privately owned rights. mpi-testsuite-3.2+dfsg/attr/0000755000175000017500000000000012621010232015320 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/attr/attrerrcomm.c0000644000175000017500000000765412620254305020051 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Exercise attribute routines. This version checks for correct behavior of the copy and delete functions on an attribute, particularly the correct behavior when the routine returns failure. */ #include #include "mpi.h" #include "mpitest.h" int test_communicators(void); void abort_msg(const char *, int); int copybomb_fn(MPI_Comm, int, void *, void *, void *, int *); int deletebomb_fn(MPI_Comm, int, void *, void *); int main(int argc, char **argv) { int errs; MTest_Init(&argc, &argv); errs = test_communicators(); MTest_Finalize(errs); MPI_Finalize(); return 0; } /* * MPI 1.2 Clarification: Clarification of Error Behavior of * Attribute Callback Functions * Any return value other than MPI_SUCCESS is erroneous. The specific value * returned to the user is undefined (other than it can't be MPI_SUCCESS). * Proposals to specify particular values (e.g., user's value) failed. */ /* Return an error as the value */ int copybomb_fn(MPI_Comm oldcomm, int keyval, void *extra_state, void *attribute_val_in, void *attribute_val_out, int *flag) { /* Note that if (sizeof(int) < sizeof(void *), just setting the int * part of attribute_val_out may leave some dirty bits */ *flag = 1; return MPI_ERR_OTHER; } /* Set delete flag to 1 to allow the attribute to be deleted */ static int delete_flag = 0; int deletebomb_fn(MPI_Comm comm, int keyval, void *attribute_val, void *extra_state) { if (delete_flag) return MPI_SUCCESS; return MPI_ERR_OTHER; } void abort_msg(const char *str, int code) { fprintf(stderr, "%s, err = %d\n", str, code); MPI_Abort(MPI_COMM_WORLD, code); } int test_communicators(void) { MPI_Comm dup_comm_world, d2; int world_rank, world_size, key_1; int err, errs = 0; MPI_Aint value; MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); MPI_Comm_size(MPI_COMM_WORLD, &world_size); #ifdef DEBUG if (world_rank == 0) { printf("*** Attribute copy/delete return codes ***\n"); } #endif MPI_Comm_dup(MPI_COMM_WORLD, &dup_comm_world); MPI_Barrier(dup_comm_world); MPI_Errhandler_set(dup_comm_world, MPI_ERRORS_RETURN); value = -11; if ((err = MPI_Comm_create_keyval(copybomb_fn, deletebomb_fn, &key_1, &value))) abort_msg("Keyval_create", err); err = MPI_Comm_set_attr(dup_comm_world, key_1, (void *) (MPI_Aint) world_rank); if (err) { errs++; printf("Error with first put\n"); } err = MPI_Comm_set_attr(dup_comm_world, key_1, (void *) (MPI_Aint) (2 * world_rank)); if (err == MPI_SUCCESS) { errs++; printf("delete function return code was MPI_SUCCESS in put\n"); } /* Because the attribute delete function should fail, the attribute * should *not be removed* */ err = MPI_Comm_delete_attr(dup_comm_world, key_1); if (err == MPI_SUCCESS) { errs++; printf("delete function return code was MPI_SUCCESS in delete\n"); } err = MPI_Comm_dup(dup_comm_world, &d2); if (err == MPI_SUCCESS) { errs++; printf("copy function return code was MPI_SUCCESS in dup\n"); } if (err != MPI_ERR_OTHER) { int lerrclass; MPI_Error_class(err, &lerrclass); if (lerrclass != MPI_ERR_OTHER) { errs++; printf("dup did not return an error code of class ERR_OTHER; "); printf("err = %d, class = %d\n", err, lerrclass); } } #ifndef USE_STRICT_MPI /* Another interpretation is to leave d2 unchanged on error */ if (err && d2 != MPI_COMM_NULL) { errs++; printf("dup did not return MPI_COMM_NULL on error\n"); } #endif delete_flag = 1; MPI_Comm_free(&dup_comm_world); MPI_Comm_free_keyval(&key_1); return errs; } mpi-testsuite-3.2+dfsg/attr/attrend.c0000644000175000017500000000403312620254305017137 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2008 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* The MPI-2 specification makes it clear that delect attributes are called on MPI_COMM_WORLD and MPI_COMM_SELF at the very beginning of MPI_Finalize. This is useful for tools that want to perform the MPI equivalent of an "at_exit" action. */ #include #include "mpi.h" #include "mpitest.h" int exit_key = MPI_KEYVAL_INVALID; int wasCalled = 0; int foundError = 0; /* #define DEBUG */ int delete_fn(MPI_Comm, int, void *, void *); #ifdef DEBUG #define FFLUSH fflush(stdout); #else #define FFLUSH #endif int main(int argc, char **argv) { int errs = 0, wrank; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &wrank); /* create the keyval for the exit handler */ MPI_Keyval_create(MPI_NULL_COPY_FN, delete_fn, &exit_key, (void *) 0); /* Attach to comm_self */ MPI_Attr_put(MPI_COMM_SELF, exit_key, (void *) 0); /* We can free the key now */ MPI_Keyval_free(&exit_key); /* Now, exit MPI */ /* MTest_Finalize(errs); */ MPI_Finalize(); /* Check that the exit handler was called, and without error */ if (wrank == 0) { /* In case more than one process exits MPI_Finalize */ if (wasCalled != 1) { errs++; printf("Attribute delete function on MPI_COMM_SELF was not called\n"); } if (foundError != 0) { errs++; printf("Found %d errors while executing delete function in MPI_COMM_SELF\n", foundError); } if (errs == 0) { printf(" No Errors\n"); } else { printf(" Found %d errors\n", errs); } fflush(stdout); } return 0; } int delete_fn(MPI_Comm comm, int keyval, void *attribute_val, void *extra_state) { int flag; wasCalled++; MPI_Finalized(&flag); if (flag) { foundError++; } return MPI_SUCCESS; } mpi-testsuite-3.2+dfsg/attr/attrerrtype.c0000644000175000017500000000746212620254305020074 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Exercise attribute routines. This version checks for correct behavior of the copy and delete functions on an attribute, particularly the correct behavior when the routine returns failure. */ #include #include "mpi.h" #include "mpitest.h" int test_attrs(void); void abort_msg(const char *, int); int copybomb_fn(MPI_Datatype, int, void *, void *, void *, int *); int deletebomb_fn(MPI_Datatype, int, void *, void *); int main(int argc, char **argv) { int errs; MTest_Init(&argc, &argv); errs = test_attrs(); MTest_Finalize(errs); MPI_Finalize(); return 0; } /* * MPI 1.2 Clarification: Clarification of Error Behavior of * Attribute Callback Functions * Any return value other than MPI_SUCCESS is erroneous. The specific value * returned to the user is undefined (other than it can't be MPI_SUCCESS). * Proposals to specify particular values (e.g., user's value) failed. */ /* Return an error as the value */ int copybomb_fn(MPI_Datatype oldtype, int keyval, void *extra_state, void *attribute_val_in, void *attribute_val_out, int *flag) { /* Note that if (sizeof(int) < sizeof(void *), just setting the int * part of attribute_val_out may leave some dirty bits */ *flag = 1; return MPI_ERR_OTHER; } /* Set delete flag to 1 to allow the attribute to be deleted */ static int delete_flag = 0; static int deleteCalled = 0; int deletebomb_fn(MPI_Datatype type, int keyval, void *attribute_val, void *extra_state) { deleteCalled++; if (delete_flag) return MPI_SUCCESS; return MPI_ERR_OTHER; } void abort_msg(const char *str, int code) { fprintf(stderr, "%s, err = %d\n", str, code); MPI_Abort(MPI_COMM_WORLD, code); } int test_attrs(void) { MPI_Datatype dup_type, d2; int world_rank, world_size, key_1; int err, errs = 0; MPI_Aint value; MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); MPI_Comm_size(MPI_COMM_WORLD, &world_size); #ifdef DEBUG if (world_rank == 0) { printf("*** Attribute copy/delete return codes ***\n"); } #endif MPI_Type_dup(MPI_DOUBLE, &dup_type); MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_RETURN); value = -11; if ((err = MPI_Type_create_keyval(copybomb_fn, deletebomb_fn, &key_1, &value))) abort_msg("Keyval_create", err); err = MPI_Type_set_attr(dup_type, key_1, (void *) (MPI_Aint) world_rank); if (err) { errs++; printf("Error with first put\n"); } err = MPI_Type_set_attr(dup_type, key_1, (void *) (MPI_Aint) (2 * world_rank)); if (err == MPI_SUCCESS) { errs++; printf("delete function return code was MPI_SUCCESS in put\n"); } /* Because the attribute delete function should fail, the attribute * should *not be removed* */ err = MPI_Type_delete_attr(dup_type, key_1); if (err == MPI_SUCCESS) { errs++; printf("delete function return code was MPI_SUCCESS in delete\n"); } err = MPI_Type_dup(dup_type, &d2); if (err == MPI_SUCCESS) { errs++; printf("copy function return code was MPI_SUCCESS in dup\n"); } #ifndef USE_STRICT_MPI /* Another interpretation is to leave d2 unchanged on error */ if (err && d2 != MPI_DATATYPE_NULL) { errs++; printf("dup did not return MPI_DATATYPE_NULL on error\n"); } #endif delete_flag = 1; deleteCalled = 0; if (d2 != MPI_DATATYPE_NULL) MPI_Type_free(&d2); MPI_Type_free(&dup_type); if (deleteCalled == 0) { errs++; printf("Free of a datatype did not invoke the attribute delete routine\n"); } MPI_Type_free_keyval(&key_1); return errs; } mpi-testsuite-3.2+dfsg/attr/baseattrcomm.c0000644000175000017500000000665212620254305020170 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include "mpi.h" #include "mpitest.h" int main(int argc, char **argv) { int errs = 0; void *v; int flag; int vval; int rank, size; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_get_attr(MPI_COMM_WORLD, MPI_TAG_UB, &v, &flag); if (!flag) { errs++; fprintf(stderr, "Could not get TAG_UB\n"); } else { vval = *(int *) v; if (vval < 32767) { errs++; fprintf(stderr, "Got too-small value (%d) for TAG_UB\n", vval); } } MPI_Comm_get_attr(MPI_COMM_WORLD, MPI_HOST, &v, &flag); if (!flag) { errs++; fprintf(stderr, "Could not get HOST\n"); } else { vval = *(int *) v; if ((vval < 0 || vval >= size) && vval != MPI_PROC_NULL) { errs++; fprintf(stderr, "Got invalid value %d for HOST\n", vval); } } MPI_Comm_get_attr(MPI_COMM_WORLD, MPI_IO, &v, &flag); if (!flag) { errs++; fprintf(stderr, "Could not get IO\n"); } else { vval = *(int *) v; if ((vval < 0 || vval >= size) && vval != MPI_ANY_SOURCE && vval != MPI_PROC_NULL) { errs++; fprintf(stderr, "Got invalid value %d for IO\n", vval); } } MPI_Comm_get_attr(MPI_COMM_WORLD, MPI_WTIME_IS_GLOBAL, &v, &flag); if (flag) { /* Wtime need not be set */ vval = *(int *) v; if (vval < 0 || vval > 1) { errs++; fprintf(stderr, "Invalid value for WTIME_IS_GLOBAL (got %d)\n", vval); } } /* MPI 2.0, section 5.5.3 - MPI_APPNUM should be set if the program is * started with more than one executable name (e.g., in MPMD instead * of SPMD mode). This is independent of the dynamic process routines, * and should be supported even if MPI_COMM_SPAWN and friends are not. */ MPI_Comm_get_attr(MPI_COMM_WORLD, MPI_APPNUM, &v, &flag); /* appnum need not be set */ if (flag) { vval = *(int *) v; if (vval < 0) { errs++; fprintf(stderr, "MPI_APPNUM is defined as %d but must be nonnegative\n", vval); } } /* MPI 2.0 section 5.5.1. MPI_UNIVERSE_SIZE need not be set, but * should be present. */ MPI_Comm_get_attr(MPI_COMM_WORLD, MPI_UNIVERSE_SIZE, &v, &flag); /* MPI_UNIVERSE_SIZE need not be set */ if (flag) { /* But if it is set, it must be at least the size of comm_world */ vval = *(int *) v; if (vval < size) { errs++; fprintf(stderr, "MPI_UNIVERSE_SIZE = %d, less than comm world (%d)\n", vval, size); } } MPI_Comm_get_attr(MPI_COMM_WORLD, MPI_LASTUSEDCODE, &v, &flag); /* Last used code must be defined and >= MPI_ERR_LASTCODE */ if (flag) { vval = *(int *) v; if (vval < MPI_ERR_LASTCODE) { errs++; fprintf(stderr, "MPI_LASTUSEDCODE points to an integer (%d) smaller than MPI_ERR_LASTCODE (%d)\n", vval, MPI_ERR_LASTCODE); } } else { errs++; fprintf(stderr, "MPI_LASTUSECODE is not defined\n"); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/attr/attrt.c0000644000175000017500000002053712620254305016643 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Exercise communicator routines. This C version derived from a Fortran test program from .... */ #include #include "mpi.h" #include "mpitest.h" /* #define DEBUG */ int test_communicators(void); int copy_fn(MPI_Comm, int, void *, void *, void *, int *); int delete_fn(MPI_Comm, int, void *, void *); #ifdef DEBUG #define FFLUSH fflush(stdout); #else #define FFLUSH #endif int main(int argc, char **argv) { int errs = 0; MTest_Init(&argc, &argv); errs = test_communicators(); MTest_Finalize(errs); MPI_Finalize(); return 0; } int copy_fn(MPI_Comm oldcomm, int keyval, void *extra_state, void *attribute_val_in, void *attribute_val_out, int *flag) { /* Note that if (sizeof(int) < sizeof(void *), just setting the int * part of attribute_val_out may leave some dirty bits */ *(MPI_Aint *) attribute_val_out = (MPI_Aint) attribute_val_in; *flag = 1; return MPI_SUCCESS; } int delete_fn(MPI_Comm comm, int keyval, void *attribute_val, void *extra_state) { int world_rank; MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); if ((MPI_Aint) attribute_val != (MPI_Aint) world_rank) { printf("incorrect attribute value %d\n", *(int *) attribute_val); MPI_Abort(MPI_COMM_WORLD, 1005); } return MPI_SUCCESS; } int test_communicators(void) { MPI_Comm dup_comm_world, lo_comm, rev_comm, dup_comm, split_comm, world_comm; MPI_Group world_group, lo_group, rev_group; void *vvalue; int ranges[1][3]; int flag, world_rank, world_size, rank, size, n, key_1, key_3; int color, key, result; int errs = 0; MPI_Aint value; MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); MPI_Comm_size(MPI_COMM_WORLD, &world_size); #ifdef DEBUG if (world_rank == 0) { printf("*** Communicators ***\n"); fflush(stdout); } #endif MPI_Comm_dup(MPI_COMM_WORLD, &dup_comm_world); /* * Exercise Comm_create by creating an equivalent to dup_comm_world * (sans attributes) and a half-world communicator. */ #ifdef DEBUG if (world_rank == 0) { printf(" Comm_create\n"); fflush(stdout); } #endif MPI_Comm_group(dup_comm_world, &world_group); MPI_Comm_create(dup_comm_world, world_group, &world_comm); MPI_Comm_rank(world_comm, &rank); if (rank != world_rank) { errs++; printf("incorrect rank in world comm: %d\n", rank); MPI_Abort(MPI_COMM_WORLD, 3001); } n = world_size / 2; ranges[0][0] = 0; ranges[0][1] = (world_size - n) - 1; ranges[0][2] = 1; #ifdef DEBUG printf("world rank = %d before range incl\n", world_rank); FFLUSH; #endif MPI_Group_range_incl(world_group, 1, ranges, &lo_group); #ifdef DEBUG printf("world rank = %d after range incl\n", world_rank); FFLUSH; #endif MPI_Comm_create(world_comm, lo_group, &lo_comm); #ifdef DEBUG printf("world rank = %d before group free\n", world_rank); FFLUSH; #endif MPI_Group_free(&lo_group); #ifdef DEBUG printf("world rank = %d after group free\n", world_rank); FFLUSH; #endif if (world_rank < (world_size - n)) { MPI_Comm_rank(lo_comm, &rank); if (rank == MPI_UNDEFINED) { errs++; printf("incorrect lo group rank: %d\n", rank); fflush(stdout); MPI_Abort(MPI_COMM_WORLD, 3002); } else { /* printf("lo in\n");FFLUSH; */ MPI_Barrier(lo_comm); /* printf("lo out\n");FFLUSH; */ } } else { if (lo_comm != MPI_COMM_NULL) { errs++; printf("incorrect lo comm:\n"); fflush(stdout); MPI_Abort(MPI_COMM_WORLD, 3003); } } #ifdef DEBUG printf("worldrank = %d\n", world_rank); FFLUSH; #endif MPI_Barrier(world_comm); #ifdef DEBUG printf("bar!\n"); FFLUSH; #endif /* * Check Comm_dup by adding attributes to lo_comm & duplicating */ #ifdef DEBUG if (world_rank == 0) { printf(" Comm_dup\n"); fflush(stdout); } #endif if (lo_comm != MPI_COMM_NULL) { value = 9; MPI_Keyval_create(copy_fn, delete_fn, &key_1, &value); value = 8; value = 7; MPI_Keyval_create(MPI_NULL_COPY_FN, MPI_NULL_DELETE_FN, &key_3, &value); /* This may generate a compilation warning; it is, however, an * easy way to cache a value instead of a pointer */ /* printf("key1 = %x key3 = %x\n", key_1, key_3); */ MPI_Attr_put(lo_comm, key_1, (void *) (MPI_Aint) world_rank); MPI_Attr_put(lo_comm, key_3, (void *) 0); MPI_Comm_dup(lo_comm, &dup_comm); /* Note that if sizeof(int) < sizeof(void *), we can't use * (void **)&value to get the value we passed into Attr_put. To avoid * problems (e.g., alignment errors), we recover the value into * a (void *) and cast to int. Note that this may generate warning * messages from the compiler. */ MPI_Attr_get(dup_comm, key_1, (void **) &vvalue, &flag); value = (MPI_Aint) vvalue; if (!flag) { errs++; printf("dup_comm key_1 not found on %d\n", world_rank); fflush(stdout); MPI_Abort(MPI_COMM_WORLD, 3004); } if (value != world_rank) { errs++; printf("dup_comm key_1 value incorrect: %ld, expected %d\n", (long) value, world_rank); fflush(stdout); MPI_Abort(MPI_COMM_WORLD, 3005); } MPI_Attr_get(dup_comm, key_3, (void **) &vvalue, &flag); value = (MPI_Aint) vvalue; if (flag) { errs++; printf("dup_comm key_3 found!\n"); fflush(stdout); MPI_Abort(MPI_COMM_WORLD, 3008); } MPI_Keyval_free(&key_1); MPI_Keyval_free(&key_3); } /* * Split the world into even & odd communicators with reversed ranks. */ #ifdef DEBUG if (world_rank == 0) { printf(" Comm_split\n"); fflush(stdout); } #endif color = world_rank % 2; key = world_size - world_rank; MPI_Comm_split(dup_comm_world, color, key, &split_comm); MPI_Comm_size(split_comm, &size); MPI_Comm_rank(split_comm, &rank); if (rank != ((size - world_rank / 2) - 1)) { errs++; printf("incorrect split rank: %d\n", rank); fflush(stdout); MPI_Abort(MPI_COMM_WORLD, 3009); } MPI_Barrier(split_comm); /* * Test each possible Comm_compare result */ #ifdef DEBUG if (world_rank == 0) { printf(" Comm_compare\n"); fflush(stdout); } #endif MPI_Comm_compare(world_comm, world_comm, &result); if (result != MPI_IDENT) { errs++; printf("incorrect ident result: %d\n", result); MPI_Abort(MPI_COMM_WORLD, 3010); } if (lo_comm != MPI_COMM_NULL) { MPI_Comm_compare(lo_comm, dup_comm, &result); if (result != MPI_CONGRUENT) { errs++; printf("incorrect congruent result: %d\n", result); MPI_Abort(MPI_COMM_WORLD, 3011); } } ranges[0][0] = world_size - 1; ranges[0][1] = 0; ranges[0][2] = -1; MPI_Group_range_incl(world_group, 1, ranges, &rev_group); MPI_Comm_create(world_comm, rev_group, &rev_comm); MPI_Comm_compare(world_comm, rev_comm, &result); if (result != MPI_SIMILAR && world_size != 1) { errs++; printf("incorrect similar result: %d\n", result); MPI_Abort(MPI_COMM_WORLD, 3012); } if (lo_comm != MPI_COMM_NULL) { MPI_Comm_compare(world_comm, lo_comm, &result); if (result != MPI_UNEQUAL && world_size != 1) { errs++; printf("incorrect unequal result: %d\n", result); MPI_Abort(MPI_COMM_WORLD, 3013); } } /* * Free all communicators created */ #ifdef DEBUG if (world_rank == 0) printf(" Comm_free\n"); #endif MPI_Comm_free(&world_comm); MPI_Comm_free(&dup_comm_world); MPI_Comm_free(&rev_comm); MPI_Comm_free(&split_comm); MPI_Group_free(&world_group); MPI_Group_free(&rev_group); if (lo_comm != MPI_COMM_NULL) { MPI_Comm_free(&lo_comm); MPI_Comm_free(&dup_comm); } return errs; } mpi-testsuite-3.2+dfsg/attr/fkeyvalcomm.c0000644000175000017500000000673412620254305020025 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* static char MTestDescrip[] = "Test freeing keyvals while still attached to \ a communicator, then make sure that the keyval delete and copy code are still \ executed"; */ /* Function prototypes to keep compilers happy */ int copy_fn(MPI_Comm oldcomm, int keyval, void *extra_state, void *attribute_val_in, void *attribute_val_out, int *flag); int delete_fn(MPI_Comm comm, int keyval, void *attribute_val, void *extra_state); /* Copy increments the attribute value */ int copy_fn(MPI_Comm oldcomm, int keyval, void *extra_state, void *attribute_val_in, void *attribute_val_out, int *flag) { /* Copy the address of the attribute */ *(void **) attribute_val_out = attribute_val_in; /* Change the value */ *(int *) attribute_val_in = *(int *) attribute_val_in + 1; /* set flag to 1 to tell comm dup to insert this attribute * into the new communicator */ *flag = 1; return MPI_SUCCESS; } /* Delete decrements the attribute value */ int delete_fn(MPI_Comm comm, int keyval, void *attribute_val, void *extra_state) { *(int *) attribute_val = *(int *) attribute_val - 1; return MPI_SUCCESS; } int main(int argc, char *argv[]) { int errs = 0; int attrval; int i, key[32], keyval, saveKeyval; MPI_Comm comm, dupcomm; MTest_Init(&argc, &argv); while (MTestGetIntracomm(&comm, 1)) { if (comm == MPI_COMM_NULL) continue; MPI_Comm_create_keyval(copy_fn, delete_fn, &keyval, (void *) 0); saveKeyval = keyval; /* in case we need to free explicitly */ attrval = 1; MPI_Comm_set_attr(comm, keyval, (void *) &attrval); /* See MPI-1, 5.7.1. Freeing the keyval does not remove it if it * is in use in an attribute */ MPI_Comm_free_keyval(&keyval); /* We create some dummy keyvals here in case the same keyval * is reused */ for (i = 0; i < 32; i++) { MPI_Comm_create_keyval(MPI_NULL_COPY_FN, MPI_NULL_DELETE_FN, &key[i], (void *) 0); } MPI_Comm_dup(comm, &dupcomm); /* Check that the attribute was copied */ if (attrval != 2) { errs++; printf("Attribute not incremented when comm dup'ed (%s)\n", MTestGetIntracommName()); } MPI_Comm_free(&dupcomm); if (attrval != 1) { errs++; printf("Attribute not decremented when dupcomm %s freed\n", MTestGetIntracommName()); } /* Check that the attribute was freed in the dupcomm */ if (comm != MPI_COMM_WORLD && comm != MPI_COMM_SELF) { MPI_Comm_free(&comm); /* Check that the original attribute was freed */ if (attrval != 0) { errs++; printf("Attribute not decremented when comm %s freed\n", MTestGetIntracommName()); } } else { /* Explicitly delete the attributes from world and self */ MPI_Comm_delete_attr(comm, saveKeyval); } /* Free those other keyvals */ for (i = 0; i < 32; i++) { MPI_Comm_free_keyval(&key[i]); } } MTest_Finalize(errs); MPI_Finalize(); /* The attributes on comm self and world were deleted by finalize * (see separate test) */ return 0; } mpi-testsuite-3.2+dfsg/attr/keyval_double_free_type.c0000644000175000017500000000247012620254305022370 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include "mpitest.h" /* tests multiple invocations of MPI_Type_free_keyval on the same keyval */ int delete_fn(MPI_Comm comm, int keyval, void *attr, void *extra); int delete_fn(MPI_Comm comm, int keyval, void *attr, void *extra) { MPI_Type_free_keyval(&keyval); return MPI_SUCCESS; } int main(int argc, char **argv) { MPI_Datatype type; MPI_Datatype type_dup; int keyval = MPI_KEYVAL_INVALID; int keyval_copy = MPI_KEYVAL_INVALID; int errs = 0; MTest_Init(&argc, &argv); MPI_Type_dup(MPI_INT, &type); MPI_Type_dup(MPI_INT, &type_dup); MPI_Type_create_keyval(MPI_NULL_COPY_FN, delete_fn, &keyval, NULL); keyval_copy = keyval; MPI_Type_set_attr(type, keyval, NULL); MPI_Type_set_attr(type_dup, keyval, NULL); MPI_Type_free(&type); /* first MPI_Type_free_keyval */ MPI_Type_free_keyval(&keyval); /* second MPI_Type_free_keyval */ MPI_Type_free_keyval(&keyval_copy); /* third MPI_Type_free_keyval */ MPI_Type_free(&type_dup); /* fourth MPI_Type_free_keyval */ MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/attr/testlist0000644000175000017500000000051412620254305017130 0ustar mbanckmbanckattrt 2 attric 4 attrerr 1 attrend 1 attrend 4 attrend2 1 attrend2 5 attrerrcomm 1 attrerrtype 1 attrdeleteget 1 attr2type 1 attrorder 1 attrordercomm 1 attrordertype 1 baseattr2 1 baseattrcomm 1 fkeyval 1 fkeyvalcomm 1 fkeyvaltype 1 keyval_double_free 1 keyval_double_free_comm 1 keyval_double_free_type 1 keyval_double_free_win 1 mpi-testsuite-3.2+dfsg/attr/keyval_double_free.c0000644000175000017500000000225112620254305021324 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2009 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include "mpitest.h" /* tests multiple invocations of Keyval_free on the same keyval */ int delete_fn(MPI_Comm comm, int keyval, void *attr, void *extra); int delete_fn(MPI_Comm comm, int keyval, void *attr, void *extra) { MPI_Keyval_free(&keyval); return MPI_SUCCESS; } int main(int argc, char **argv) { MPI_Comm duped; int keyval = MPI_KEYVAL_INVALID; int keyval_copy = MPI_KEYVAL_INVALID; int errs = 0; MTest_Init(&argc, &argv); MPI_Comm_dup(MPI_COMM_SELF, &duped); MPI_Keyval_create(MPI_NULL_COPY_FN, delete_fn, &keyval, NULL); keyval_copy = keyval; MPI_Attr_put(MPI_COMM_SELF, keyval, NULL); MPI_Attr_put(duped, keyval, NULL); MPI_Comm_free(&duped); /* first MPI_Keyval_free */ MPI_Keyval_free(&keyval); /* second MPI_Keyval_free */ MPI_Keyval_free(&keyval_copy); /* third MPI_Keyval_free */ MTest_Finalize(errs); MPI_Finalize(); /* fourth MPI_Keyval_free */ return 0; } mpi-testsuite-3.2+dfsg/attr/Makefile.in0000644000175000017500000007574012621010232017402 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = attrt$(EXEEXT) attrend$(EXEEXT) attrend2$(EXEEXT) \ attric$(EXEEXT) attrerr$(EXEEXT) attrerrcomm$(EXEEXT) \ attrerrtype$(EXEEXT) attrdeleteget$(EXEEXT) attr2type$(EXEEXT) \ attrorder$(EXEEXT) attrordercomm$(EXEEXT) \ attrordertype$(EXEEXT) baseattr2$(EXEEXT) \ baseattrcomm$(EXEEXT) fkeyval$(EXEEXT) fkeyvalcomm$(EXEEXT) \ fkeyvaltype$(EXEEXT) keyval_double_free$(EXEEXT) \ keyval_double_free_comm$(EXEEXT) \ keyval_double_free_type$(EXEEXT) \ keyval_double_free_win$(EXEEXT) subdir = attr ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) attr2type_SOURCES = attr2type.c attr2type_OBJECTS = attr2type.$(OBJEXT) attr2type_LDADD = $(LDADD) attr2type_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o attrdeleteget_SOURCES = attrdeleteget.c attrdeleteget_OBJECTS = attrdeleteget.$(OBJEXT) attrdeleteget_LDADD = $(LDADD) attrdeleteget_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o attrend_SOURCES = attrend.c attrend_OBJECTS = attrend.$(OBJEXT) attrend_LDADD = $(LDADD) attrend_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o attrend2_SOURCES = attrend2.c attrend2_OBJECTS = attrend2.$(OBJEXT) attrend2_LDADD = $(LDADD) attrend2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o attrerr_SOURCES = attrerr.c attrerr_OBJECTS = attrerr.$(OBJEXT) attrerr_LDADD = $(LDADD) attrerr_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o attrerrcomm_SOURCES = attrerrcomm.c attrerrcomm_OBJECTS = attrerrcomm.$(OBJEXT) attrerrcomm_LDADD = $(LDADD) attrerrcomm_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o attrerrtype_SOURCES = attrerrtype.c attrerrtype_OBJECTS = attrerrtype.$(OBJEXT) attrerrtype_LDADD = $(LDADD) attrerrtype_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o attric_SOURCES = attric.c attric_OBJECTS = attric.$(OBJEXT) attric_LDADD = $(LDADD) attric_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o attrorder_SOURCES = attrorder.c attrorder_OBJECTS = attrorder.$(OBJEXT) attrorder_LDADD = $(LDADD) attrorder_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o attrordercomm_SOURCES = attrordercomm.c attrordercomm_OBJECTS = attrordercomm.$(OBJEXT) attrordercomm_LDADD = $(LDADD) attrordercomm_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o attrordertype_SOURCES = attrordertype.c attrordertype_OBJECTS = attrordertype.$(OBJEXT) attrordertype_LDADD = $(LDADD) attrordertype_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o attrt_SOURCES = attrt.c attrt_OBJECTS = attrt.$(OBJEXT) attrt_LDADD = $(LDADD) attrt_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o baseattr2_SOURCES = baseattr2.c baseattr2_OBJECTS = baseattr2.$(OBJEXT) baseattr2_LDADD = $(LDADD) baseattr2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o baseattrcomm_SOURCES = baseattrcomm.c baseattrcomm_OBJECTS = baseattrcomm.$(OBJEXT) baseattrcomm_LDADD = $(LDADD) baseattrcomm_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o fkeyval_SOURCES = fkeyval.c fkeyval_OBJECTS = fkeyval.$(OBJEXT) fkeyval_LDADD = $(LDADD) fkeyval_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o fkeyvalcomm_SOURCES = fkeyvalcomm.c fkeyvalcomm_OBJECTS = fkeyvalcomm.$(OBJEXT) fkeyvalcomm_LDADD = $(LDADD) fkeyvalcomm_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o fkeyvaltype_SOURCES = fkeyvaltype.c fkeyvaltype_OBJECTS = fkeyvaltype.$(OBJEXT) fkeyvaltype_LDADD = $(LDADD) fkeyvaltype_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o keyval_double_free_SOURCES = keyval_double_free.c keyval_double_free_OBJECTS = keyval_double_free.$(OBJEXT) keyval_double_free_LDADD = $(LDADD) keyval_double_free_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o keyval_double_free_comm_SOURCES = keyval_double_free_comm.c keyval_double_free_comm_OBJECTS = keyval_double_free_comm.$(OBJEXT) keyval_double_free_comm_LDADD = $(LDADD) keyval_double_free_comm_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o keyval_double_free_type_SOURCES = keyval_double_free_type.c keyval_double_free_type_OBJECTS = keyval_double_free_type.$(OBJEXT) keyval_double_free_type_LDADD = $(LDADD) keyval_double_free_type_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o keyval_double_free_win_SOURCES = keyval_double_free_win.c keyval_double_free_win_OBJECTS = keyval_double_free_win.$(OBJEXT) keyval_double_free_win_LDADD = $(LDADD) keyval_double_free_win_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = attr2type.c attrdeleteget.c attrend.c attrend2.c attrerr.c \ attrerrcomm.c attrerrtype.c attric.c attrorder.c \ attrordercomm.c attrordertype.c attrt.c baseattr2.c \ baseattrcomm.c fkeyval.c fkeyvalcomm.c fkeyvaltype.c \ keyval_double_free.c keyval_double_free_comm.c \ keyval_double_free_type.c keyval_double_free_win.c DIST_SOURCES = attr2type.c attrdeleteget.c attrend.c attrend2.c \ attrerr.c attrerrcomm.c attrerrtype.c attric.c attrorder.c \ attrordercomm.c attrordertype.c attrt.c baseattr2.c \ baseattrcomm.c fkeyval.c fkeyvalcomm.c fkeyvaltype.c \ keyval_double_free.c keyval_double_free_comm.c \ keyval_double_free_type.c keyval_double_free_win.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.mtest \ $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign attr/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign attr/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) attr2type$(EXEEXT): $(attr2type_OBJECTS) $(attr2type_DEPENDENCIES) $(EXTRA_attr2type_DEPENDENCIES) @rm -f attr2type$(EXEEXT) $(AM_V_CCLD)$(LINK) $(attr2type_OBJECTS) $(attr2type_LDADD) $(LIBS) attrdeleteget$(EXEEXT): $(attrdeleteget_OBJECTS) $(attrdeleteget_DEPENDENCIES) $(EXTRA_attrdeleteget_DEPENDENCIES) @rm -f attrdeleteget$(EXEEXT) $(AM_V_CCLD)$(LINK) $(attrdeleteget_OBJECTS) $(attrdeleteget_LDADD) $(LIBS) attrend$(EXEEXT): $(attrend_OBJECTS) $(attrend_DEPENDENCIES) $(EXTRA_attrend_DEPENDENCIES) @rm -f attrend$(EXEEXT) $(AM_V_CCLD)$(LINK) $(attrend_OBJECTS) $(attrend_LDADD) $(LIBS) attrend2$(EXEEXT): $(attrend2_OBJECTS) $(attrend2_DEPENDENCIES) $(EXTRA_attrend2_DEPENDENCIES) @rm -f attrend2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(attrend2_OBJECTS) $(attrend2_LDADD) $(LIBS) attrerr$(EXEEXT): $(attrerr_OBJECTS) $(attrerr_DEPENDENCIES) $(EXTRA_attrerr_DEPENDENCIES) @rm -f attrerr$(EXEEXT) $(AM_V_CCLD)$(LINK) $(attrerr_OBJECTS) $(attrerr_LDADD) $(LIBS) attrerrcomm$(EXEEXT): $(attrerrcomm_OBJECTS) $(attrerrcomm_DEPENDENCIES) $(EXTRA_attrerrcomm_DEPENDENCIES) @rm -f attrerrcomm$(EXEEXT) $(AM_V_CCLD)$(LINK) $(attrerrcomm_OBJECTS) $(attrerrcomm_LDADD) $(LIBS) attrerrtype$(EXEEXT): $(attrerrtype_OBJECTS) $(attrerrtype_DEPENDENCIES) $(EXTRA_attrerrtype_DEPENDENCIES) @rm -f attrerrtype$(EXEEXT) $(AM_V_CCLD)$(LINK) $(attrerrtype_OBJECTS) $(attrerrtype_LDADD) $(LIBS) attric$(EXEEXT): $(attric_OBJECTS) $(attric_DEPENDENCIES) $(EXTRA_attric_DEPENDENCIES) @rm -f attric$(EXEEXT) $(AM_V_CCLD)$(LINK) $(attric_OBJECTS) $(attric_LDADD) $(LIBS) attrorder$(EXEEXT): $(attrorder_OBJECTS) $(attrorder_DEPENDENCIES) $(EXTRA_attrorder_DEPENDENCIES) @rm -f attrorder$(EXEEXT) $(AM_V_CCLD)$(LINK) $(attrorder_OBJECTS) $(attrorder_LDADD) $(LIBS) attrordercomm$(EXEEXT): $(attrordercomm_OBJECTS) $(attrordercomm_DEPENDENCIES) $(EXTRA_attrordercomm_DEPENDENCIES) @rm -f attrordercomm$(EXEEXT) $(AM_V_CCLD)$(LINK) $(attrordercomm_OBJECTS) $(attrordercomm_LDADD) $(LIBS) attrordertype$(EXEEXT): $(attrordertype_OBJECTS) $(attrordertype_DEPENDENCIES) $(EXTRA_attrordertype_DEPENDENCIES) @rm -f attrordertype$(EXEEXT) $(AM_V_CCLD)$(LINK) $(attrordertype_OBJECTS) $(attrordertype_LDADD) $(LIBS) attrt$(EXEEXT): $(attrt_OBJECTS) $(attrt_DEPENDENCIES) $(EXTRA_attrt_DEPENDENCIES) @rm -f attrt$(EXEEXT) $(AM_V_CCLD)$(LINK) $(attrt_OBJECTS) $(attrt_LDADD) $(LIBS) baseattr2$(EXEEXT): $(baseattr2_OBJECTS) $(baseattr2_DEPENDENCIES) $(EXTRA_baseattr2_DEPENDENCIES) @rm -f baseattr2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(baseattr2_OBJECTS) $(baseattr2_LDADD) $(LIBS) baseattrcomm$(EXEEXT): $(baseattrcomm_OBJECTS) $(baseattrcomm_DEPENDENCIES) $(EXTRA_baseattrcomm_DEPENDENCIES) @rm -f baseattrcomm$(EXEEXT) $(AM_V_CCLD)$(LINK) $(baseattrcomm_OBJECTS) $(baseattrcomm_LDADD) $(LIBS) fkeyval$(EXEEXT): $(fkeyval_OBJECTS) $(fkeyval_DEPENDENCIES) $(EXTRA_fkeyval_DEPENDENCIES) @rm -f fkeyval$(EXEEXT) $(AM_V_CCLD)$(LINK) $(fkeyval_OBJECTS) $(fkeyval_LDADD) $(LIBS) fkeyvalcomm$(EXEEXT): $(fkeyvalcomm_OBJECTS) $(fkeyvalcomm_DEPENDENCIES) $(EXTRA_fkeyvalcomm_DEPENDENCIES) @rm -f fkeyvalcomm$(EXEEXT) $(AM_V_CCLD)$(LINK) $(fkeyvalcomm_OBJECTS) $(fkeyvalcomm_LDADD) $(LIBS) fkeyvaltype$(EXEEXT): $(fkeyvaltype_OBJECTS) $(fkeyvaltype_DEPENDENCIES) $(EXTRA_fkeyvaltype_DEPENDENCIES) @rm -f fkeyvaltype$(EXEEXT) $(AM_V_CCLD)$(LINK) $(fkeyvaltype_OBJECTS) $(fkeyvaltype_LDADD) $(LIBS) keyval_double_free$(EXEEXT): $(keyval_double_free_OBJECTS) $(keyval_double_free_DEPENDENCIES) $(EXTRA_keyval_double_free_DEPENDENCIES) @rm -f keyval_double_free$(EXEEXT) $(AM_V_CCLD)$(LINK) $(keyval_double_free_OBJECTS) $(keyval_double_free_LDADD) $(LIBS) keyval_double_free_comm$(EXEEXT): $(keyval_double_free_comm_OBJECTS) $(keyval_double_free_comm_DEPENDENCIES) $(EXTRA_keyval_double_free_comm_DEPENDENCIES) @rm -f keyval_double_free_comm$(EXEEXT) $(AM_V_CCLD)$(LINK) $(keyval_double_free_comm_OBJECTS) $(keyval_double_free_comm_LDADD) $(LIBS) keyval_double_free_type$(EXEEXT): $(keyval_double_free_type_OBJECTS) $(keyval_double_free_type_DEPENDENCIES) $(EXTRA_keyval_double_free_type_DEPENDENCIES) @rm -f keyval_double_free_type$(EXEEXT) $(AM_V_CCLD)$(LINK) $(keyval_double_free_type_OBJECTS) $(keyval_double_free_type_LDADD) $(LIBS) keyval_double_free_win$(EXEEXT): $(keyval_double_free_win_OBJECTS) $(keyval_double_free_win_DEPENDENCIES) $(EXTRA_keyval_double_free_win_DEPENDENCIES) @rm -f keyval_double_free_win$(EXEEXT) $(AM_V_CCLD)$(LINK) $(keyval_double_free_win_OBJECTS) $(keyval_double_free_win_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/attr2type.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/attrdeleteget.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/attrend.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/attrend2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/attrerr.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/attrerrcomm.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/attrerrtype.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/attric.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/attrorder.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/attrordercomm.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/attrordertype.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/attrt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/baseattr2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/baseattrcomm.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fkeyval.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fkeyvalcomm.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fkeyvaltype.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keyval_double_free.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keyval_double_free_comm.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keyval_double_free_type.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keyval_double_free_win.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/attr/attric.c0000644000175000017500000001075212620254305016771 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Exercise communicator routines for intercommunicators This C version derived from attrt, which in turn was derived from a Fortran test program from ... */ #include #include "mpi.h" #include "mpitest.h" /* #define DEBUG */ int test_communicators(void); int copy_fn(MPI_Comm, int, void *, void *, void *, int *); int delete_fn(MPI_Comm, int, void *, void *); #ifdef DEBUG #define FFLUSH fflush(stdout); #else #define FFLUSH #endif int main(int argc, char **argv) { int errs = 0; MTest_Init(&argc, &argv); errs = test_communicators(); MTest_Finalize(errs); MPI_Finalize(); return 0; } int copy_fn(MPI_Comm oldcomm, int keyval, void *extra_state, void *attribute_val_in, void *attribute_val_out, int *flag) { /* Note that if (sizeof(int) < sizeof(void *), just setting the int * part of attribute_val_out may leave some dirty bits */ *(MPI_Aint *) attribute_val_out = (MPI_Aint) attribute_val_in; *flag = 1; return MPI_SUCCESS; } int delete_fn(MPI_Comm comm, int keyval, void *attribute_val, void *extra_state) { int world_rank; MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); if ((MPI_Aint) attribute_val != (MPI_Aint) world_rank) { printf("incorrect attribute value %d\n", *(int *) attribute_val); MPI_Abort(MPI_COMM_WORLD, 1005); } return MPI_SUCCESS; } int test_communicators(void) { MPI_Comm dup_comm, comm; void *vvalue; int flag, world_rank, world_size, key_1, key_3; int errs = 0; MPI_Aint value; int isLeft; MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); MPI_Comm_size(MPI_COMM_WORLD, &world_size); #ifdef DEBUG if (world_rank == 0) { printf("*** Communicators ***\n"); fflush(stdout); } #endif while (MTestGetIntercomm(&comm, &isLeft, 2)) { MTestPrintfMsg(1, "start while loop, isLeft=%s\n", (isLeft ? "TRUE" : "FALSE")); if (comm == MPI_COMM_NULL) { MTestPrintfMsg(1, "got COMM_NULL, skipping\n"); continue; } /* * Check Comm_dup by adding attributes to comm & duplicating */ value = 9; MPI_Keyval_create(copy_fn, delete_fn, &key_1, &value); MTestPrintfMsg(1, "Keyval_create key=%#x value=%d\n", key_1, value); value = 7; MPI_Keyval_create(MPI_NULL_COPY_FN, MPI_NULL_DELETE_FN, &key_3, &value); MTestPrintfMsg(1, "Keyval_create key=%#x value=%d\n", key_3, value); /* This may generate a compilation warning; it is, however, an * easy way to cache a value instead of a pointer */ /* printf("key1 = %x key3 = %x\n", key_1, key_3); */ MPI_Attr_put(comm, key_1, (void *) (MPI_Aint) world_rank); MPI_Attr_put(comm, key_3, (void *) 0); MTestPrintfMsg(1, "Comm_dup\n"); MPI_Comm_dup(comm, &dup_comm); /* Note that if sizeof(int) < sizeof(void *), we can't use * (void **)&value to get the value we passed into Attr_put. To avoid * problems (e.g., alignment errors), we recover the value into * a (void *) and cast to int. Note that this may generate warning * messages from the compiler. */ MPI_Attr_get(dup_comm, key_1, (void **) &vvalue, &flag); value = (MPI_Aint) vvalue; if (!flag) { errs++; printf("dup_comm key_1 not found on %d\n", world_rank); fflush(stdout); MPI_Abort(MPI_COMM_WORLD, 3004); } if (value != world_rank) { errs++; printf("dup_comm key_1 value incorrect: %ld\n", (long) value); fflush(stdout); MPI_Abort(MPI_COMM_WORLD, 3005); } MPI_Attr_get(dup_comm, key_3, (void **) &vvalue, &flag); value = (MPI_Aint) vvalue; if (flag) { errs++; printf("dup_comm key_3 found!\n"); fflush(stdout); MPI_Abort(MPI_COMM_WORLD, 3008); } MTestPrintfMsg(1, "Keyval_free key=%#x\n", key_1); MPI_Keyval_free(&key_1); MTestPrintfMsg(1, "Keyval_free key=%#x\n", key_3); MPI_Keyval_free(&key_3); /* * Free all communicators created */ MTestPrintfMsg(1, "Comm_free comm\n"); MPI_Comm_free(&comm); MTestPrintfMsg(1, "Comm_free dup_comm\n"); MPI_Comm_free(&dup_comm); } return errs; } mpi-testsuite-3.2+dfsg/attr/attrorder.c0000644000175000017500000000577712620254305017524 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* static char MTestDescrip[] = "Test creating and inserting attributes in \ different orders to ensure that the list management code handles all cases."; */ int checkAttrs(MPI_Comm comm, int n, int key[], int attrval[]); int checkNoAttrs(MPI_Comm comm, int n, int key[]); int main(int argc, char *argv[]) { int errs = 0; int key[3], attrval[3]; int i; MPI_Comm comm; MTest_Init(&argc, &argv); { comm = MPI_COMM_WORLD; /* Create key values */ for (i = 0; i < 3; i++) { MPI_Keyval_create(MPI_NULL_COPY_FN, MPI_NULL_DELETE_FN, &key[i], (void *) 0); attrval[i] = 1024 * i; } /* Insert attribute in several orders. Test after put with get, * then delete, then confirm delete with get. */ MPI_Attr_put(comm, key[2], &attrval[2]); MPI_Attr_put(comm, key[1], &attrval[1]); MPI_Attr_put(comm, key[0], &attrval[0]); errs += checkAttrs(comm, 3, key, attrval); MPI_Attr_delete(comm, key[0]); MPI_Attr_delete(comm, key[1]); MPI_Attr_delete(comm, key[2]); errs += checkNoAttrs(comm, 3, key); MPI_Attr_put(comm, key[1], &attrval[1]); MPI_Attr_put(comm, key[2], &attrval[2]); MPI_Attr_put(comm, key[0], &attrval[0]); errs += checkAttrs(comm, 3, key, attrval); MPI_Attr_delete(comm, key[2]); MPI_Attr_delete(comm, key[1]); MPI_Attr_delete(comm, key[0]); errs += checkNoAttrs(comm, 3, key); MPI_Attr_put(comm, key[0], &attrval[0]); MPI_Attr_put(comm, key[1], &attrval[1]); MPI_Attr_put(comm, key[2], &attrval[2]); errs += checkAttrs(comm, 3, key, attrval); MPI_Attr_delete(comm, key[1]); MPI_Attr_delete(comm, key[2]); MPI_Attr_delete(comm, key[0]); errs += checkNoAttrs(comm, 3, key); for (i = 0; i < 3; i++) { MPI_Keyval_free(&key[i]); } } MTest_Finalize(errs); MPI_Finalize(); return 0; } int checkAttrs(MPI_Comm comm, int n, int key[], int attrval[]) { int errs = 0; int i, flag, *val_p; for (i = 0; i < n; i++) { MPI_Attr_get(comm, key[i], &val_p, &flag); if (!flag) { errs++; fprintf(stderr, "Attribute for key %d not set\n", i); } else if (val_p != &attrval[i]) { errs++; fprintf(stderr, "Atribute value for key %d not correct\n", i); } } return errs; } int checkNoAttrs(MPI_Comm comm, int n, int key[]) { int errs = 0; int i, flag, *val_p; for (i = 0; i < n; i++) { MPI_Attr_get(comm, key[i], &val_p, &flag); if (flag) { errs++; fprintf(stderr, "Attribute for key %d set but should be deleted\n", i); } } return errs; } mpi-testsuite-3.2+dfsg/attr/keyval_double_free_win.c0000644000175000017500000000321712620254305022204 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include "mpitest.h" #define NUM_WIN 2 #define DATA_SZ sizeof(int) /* tests multiple invocations of MPI_Win_free_keyval on the same keyval */ int delete_fn(MPI_Comm comm, int keyval, void *attr, void *extra); int delete_fn(MPI_Comm comm, int keyval, void *attr, void *extra) { MPI_Win_free_keyval(&keyval); return MPI_SUCCESS; } int main(int argc, char **argv) { void *base_ptr[NUM_WIN]; MPI_Win windows[NUM_WIN]; int keyval = MPI_KEYVAL_INVALID; int keyval_copy = MPI_KEYVAL_INVALID; int errs = 0; MTest_Init(&argc, &argv); MPI_Alloc_mem(DATA_SZ, MPI_INFO_NULL, &base_ptr[0]); MPI_Win_create(base_ptr[0], DATA_SZ, 1, MPI_INFO_NULL, MPI_COMM_WORLD, &windows[0]); MPI_Alloc_mem(DATA_SZ, MPI_INFO_NULL, &base_ptr[1]); MPI_Win_create(base_ptr[1], DATA_SZ, 1, MPI_INFO_NULL, MPI_COMM_WORLD, &windows[1]); MPI_Win_create_keyval(MPI_NULL_COPY_FN, delete_fn, &keyval, NULL); keyval_copy = keyval; MPI_Win_set_attr(windows[0], keyval, NULL); MPI_Win_set_attr(windows[1], keyval, NULL); MPI_Win_free(&windows[0]); /* first MPI_Win_free_keyval */ MPI_Free_mem(base_ptr[0]); MPI_Win_free_keyval(&keyval); /* second MPI_Win_free_keyval */ MPI_Win_free_keyval(&keyval_copy); /* third MPI_Win_free_keyval */ MPI_Win_free(&windows[1]); /* fourth MPI_Win_free_keyval */ MPI_Free_mem(base_ptr[1]); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/attr/Makefile.am0000644000175000017500000000165212620254305017372 0ustar mbanckmbanck## -*- Mode: Makefile; -*- ## vim: set ft=automake : ## ## (C) 2011 by Argonne National Laboratory. ## See COPYRIGHT in top-level directory. ## include $(top_srcdir)/Makefile.mtest ## for all programs that are just built from the single corresponding source ## file, we don't need per-target _SOURCES rules, automake will infer them ## correctly noinst_PROGRAMS = \ attrt \ attrend \ attrend2 \ attric \ attrerr \ attrerrcomm \ attrerrtype \ attrdeleteget \ attr2type \ attrorder \ attrordercomm \ attrordertype \ baseattr2 \ baseattrcomm \ fkeyval \ fkeyvalcomm \ fkeyvaltype \ keyval_double_free \ keyval_double_free_comm \ keyval_double_free_type \ keyval_double_free_win EXTRA_DIST = testlist mpi-testsuite-3.2+dfsg/attr/attr2type.c0000644000175000017500000000561412620254305017442 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2007 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include static int foo_keyval = MPI_KEYVAL_INVALID; int foo_initialize(void); void foo_finalize(void); int foo_copy_attr_function(MPI_Datatype type, int type_keyval, void *extra_state, void *attribute_val_in, void *attribute_val_out, int *flag); int foo_delete_attr_function(MPI_Datatype type, int type_keyval, void *attribute_val, void *extra_state); static const char *my_func = 0; static int verbose = 0; static int delete_called = 0; static int copy_called = 0; int main(int argc, char *argv[]) { int mpi_errno; MPI_Datatype type, duptype; int rank; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); foo_initialize(); mpi_errno = MPI_Type_contiguous(2, MPI_INT, &type); mpi_errno = MPI_Type_set_attr(type, foo_keyval, NULL); mpi_errno = MPI_Type_dup(type, &duptype); my_func = "Free of type"; mpi_errno = MPI_Type_free(&type); my_func = "free of duptype"; mpi_errno = MPI_Type_free(&duptype); foo_finalize(); if (rank == 0) { int errs = 0; if (copy_called != 1) { printf("Copy called %d times; expected once\n", copy_called); errs++; } if (delete_called != 2) { printf("Delete called %d times; expected twice\n", delete_called); errs++; } if (errs == 0) { printf(" No Errors\n"); } else { printf(" Found %d errors\n", errs); } fflush(stdout); } MPI_Finalize(); return 0; } int foo_copy_attr_function(MPI_Datatype type, int type_keyval, void *extra_state, void *attribute_val_in, void *attribute_val_out, int *flag) { if (verbose) printf("copy fn. called\n"); copy_called++; *(char **) attribute_val_out = NULL; *flag = 1; return MPI_SUCCESS; } int foo_delete_attr_function(MPI_Datatype type, int type_keyval, void *attribute_val, void *extra_state) { if (verbose) printf("delete fn. called in %s\n", my_func); delete_called++; return MPI_SUCCESS; } int foo_initialize(void) { int mpi_errno; /* create keyval for use later */ mpi_errno = MPI_Type_create_keyval(foo_copy_attr_function, foo_delete_attr_function, &foo_keyval, NULL); if (verbose) printf("created keyval\n"); return 0; } void foo_finalize(void) { int mpi_errno; /* remove keyval */ mpi_errno = MPI_Type_free_keyval(&foo_keyval); if (verbose) printf("freed keyval\n"); return; } mpi-testsuite-3.2+dfsg/attr/attrend2.c0000644000175000017500000000775512620254305017237 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2009 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* The MPI-2.2 specification makes it clear that attributes are called on MPI_COMM_WORLD and MPI_COMM_SELF at the very beginning of MPI_Finalize in LIFO order with respect to the order in which they are set. This is useful for tools that want to perform the MPI equivalent of an "at_exit" action. */ #include #include "mpi.h" #include "mpitest.h" /* 20 ought to be enough attributes to ensure that hash-table based MPI * implementations do not accidentally pass the test except by being extremely * "lucky". There are (20!) possible permutations which means that there is * about a 1 in 2.43e18 chance of getting LIFO ordering out of a hash table, * assuming a decent hash function is used. */ #define NUM_TEST_ATTRS (20) static int exit_keys[NUM_TEST_ATTRS]; /* init to MPI_KEYVAL_INVALID */ static int was_called[NUM_TEST_ATTRS]; int foundError = 0; int delete_fn(MPI_Comm, int, void *, void *); int main(int argc, char **argv) { int errs = 0, wrank; int i; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &wrank); #if MTEST_HAVE_MIN_MPI_VERSION(2,2) for (i = 0; i < NUM_TEST_ATTRS; ++i) { exit_keys[i] = MPI_KEYVAL_INVALID; was_called[i] = 0; /* create the keyval for the exit handler */ MPI_Comm_create_keyval(MPI_COMM_NULL_COPY_FN, delete_fn, &exit_keys[i], NULL); /* attach to comm_self */ MPI_Comm_set_attr(MPI_COMM_SELF, exit_keys[i], (void *) (long) i); } /* we can free the keys now */ for (i = 0; i < NUM_TEST_ATTRS; ++i) { MPI_Comm_free_keyval(&exit_keys[i]); } /* now, exit MPI */ MPI_Finalize(); /* check that the exit handlers were called in LIFO order, and without error */ if (wrank == 0) { /* In case more than one process exits MPI_Finalize */ for (i = 0; i < NUM_TEST_ATTRS; ++i) { if (was_called[i] < 1) { errs++; printf("Attribute delete function on MPI_COMM_SELF was not called for idx=%d\n", i); } else if (was_called[i] > 1) { errs++; printf ("Attribute delete function on MPI_COMM_SELF was called multiple times for idx=%d\n", i); } } if (foundError != 0) { errs++; printf("Found %d errors while executing delete function in MPI_COMM_SELF\n", foundError); } if (errs == 0) { printf(" No Errors\n"); } else { printf(" Found %d errors\n", errs); } fflush(stdout); } #else /* this is a pre-MPI-2.2 implementation, ordering is not defined */ MPI_Finalize(); if (wrank == 0) printf(" No Errors\n"); #endif return 0; } int delete_fn(MPI_Comm comm, int keyval, void *attribute_val, void *extra_state) { int flag; int i; int my_idx = (int) (long) attribute_val; if (my_idx < 0 || my_idx > NUM_TEST_ATTRS) { printf("internal error, my_idx=%d is invalid!\n", my_idx); fflush(stdout); } was_called[my_idx]++; MPI_Finalized(&flag); if (flag) { printf("my_idx=%d, MPI_Finalized returned %d, should have been 0", my_idx, flag); foundError++; } /* since attributes were added in 0..(NUM_TEST_ATTRS-1) order, they will be * called in (NUM_TEST_ATTRS-1)..0 order */ for (i = 0; i < my_idx; ++i) { if (was_called[i] != 0) { printf("my_idx=%d, was_called[%d]=%d but should be 0\n", my_idx, i, was_called[i]); foundError++; } } for (i = my_idx; i < NUM_TEST_ATTRS; ++i) { if (was_called[i] != 1) { printf("my_idx=%d, was_called[%d]=%d but should be 1\n", my_idx, i, was_called[i]); foundError++; } } return MPI_SUCCESS; } mpi-testsuite-3.2+dfsg/attr/fkeyval.c0000644000175000017500000000667512620254305017155 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* static char MTestDescrip[] = "Test freeing keyvals while still attached to \ a communicator, then make sure that the keyval delete and copy code are still \ executed"; */ /* Function prototypes to keep compilers happy */ int copy_fn(MPI_Comm oldcomm, int keyval, void *extra_state, void *attribute_val_in, void *attribute_val_out, int *flag); int delete_fn(MPI_Comm comm, int keyval, void *attribute_val, void *extra_state); /* Copy increments the attribute value */ int copy_fn(MPI_Comm oldcomm, int keyval, void *extra_state, void *attribute_val_in, void *attribute_val_out, int *flag) { /* Copy the address of the attribute */ *(void **) attribute_val_out = attribute_val_in; /* Change the value */ *(int *) attribute_val_in = *(int *) attribute_val_in + 1; /* set flag to 1 to tell comm dup to insert this attribute * into the new communicator */ *flag = 1; return MPI_SUCCESS; } /* Delete decrements the attribute value */ int delete_fn(MPI_Comm comm, int keyval, void *attribute_val, void *extra_state) { *(int *) attribute_val = *(int *) attribute_val - 1; return MPI_SUCCESS; } int main(int argc, char *argv[]) { int errs = 0; int attrval; int i, key[32], keyval, saveKeyval; MPI_Comm comm, dupcomm; MTest_Init(&argc, &argv); while (MTestGetIntracomm(&comm, 1)) { if (comm == MPI_COMM_NULL) continue; MPI_Keyval_create(copy_fn, delete_fn, &keyval, (void *) 0); saveKeyval = keyval; /* in case we need to free explicitly */ attrval = 1; MPI_Attr_put(comm, keyval, (void *) &attrval); /* See MPI-1, 5.7.1. Freeing the keyval does not remove it if it * is in use in an attribute */ MPI_Keyval_free(&keyval); /* We create some dummy keyvals here in case the same keyval * is reused */ for (i = 0; i < 32; i++) { MPI_Keyval_create(MPI_NULL_COPY_FN, MPI_NULL_DELETE_FN, &key[i], (void *) 0); } MPI_Comm_dup(comm, &dupcomm); /* Check that the attribute was copied */ if (attrval != 2) { errs++; printf("Attribute not incremented when comm dup'ed (%s)\n", MTestGetIntracommName()); } MPI_Comm_free(&dupcomm); if (attrval != 1) { errs++; printf("Attribute not decremented when dupcomm %s freed\n", MTestGetIntracommName()); } /* Check that the attribute was freed in the dupcomm */ if (comm != MPI_COMM_WORLD && comm != MPI_COMM_SELF) { MPI_Comm_free(&comm); /* Check that the original attribute was freed */ if (attrval != 0) { errs++; printf("Attribute not decremented when comm %s freed\n", MTestGetIntracommName()); } } else { /* Explicitly delete the attributes from world and self */ MPI_Attr_delete(comm, saveKeyval); } /* Free those other keyvals */ for (i = 0; i < 32; i++) { MPI_Keyval_free(&key[i]); } } MTest_Finalize(errs); MPI_Finalize(); /* The attributes on comm self and world were deleted by finalize * (see separate test) */ return 0; } mpi-testsuite-3.2+dfsg/attr/attrerr.c0000644000175000017500000000713012620254305017162 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Exercise attribute routines. This version checks for correct behavior of the copy and delete functions on an attribute, particularly the correct behavior when the routine returns failure. */ #include #include "mpi.h" #include "mpitest.h" int test_communicators(void); void abort_msg(const char *, int); int copybomb_fn(MPI_Comm, int, void *, void *, void *, int *); int deletebomb_fn(MPI_Comm, int, void *, void *); int main(int argc, char **argv) { int errs; MTest_Init(&argc, &argv); errs = test_communicators(); MTest_Finalize(errs); MPI_Finalize(); return 0; } /* * MPI 1.2 Clarification: Clarification of Error Behavior of * Attribute Callback Functions * Any return value other than MPI_SUCCESS is erroneous. The specific value * returned to the user is undefined (other than it can't be MPI_SUCCESS). * Proposals to specify particular values (e.g., user's value) failed. */ /* Return an error as the value */ int copybomb_fn(MPI_Comm oldcomm, int keyval, void *extra_state, void *attribute_val_in, void *attribute_val_out, int *flag) { /* Note that if (sizeof(int) < sizeof(void *), just setting the int * part of attribute_val_out may leave some dirty bits */ *flag = 1; return MPI_ERR_OTHER; } /* Set delete flag to 1 to allow the attribute to be deleted */ static int delete_flag = 0; int deletebomb_fn(MPI_Comm comm, int keyval, void *attribute_val, void *extra_state) { if (delete_flag) return MPI_SUCCESS; return MPI_ERR_OTHER; } void abort_msg(const char *str, int code) { fprintf(stderr, "%s, err = %d\n", str, code); MPI_Abort(MPI_COMM_WORLD, code); } int test_communicators(void) { MPI_Comm dup_comm_world, d2; int world_rank, world_size, key_1; int err, errs = 0; MPI_Aint value; MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); MPI_Comm_size(MPI_COMM_WORLD, &world_size); #ifdef DEBUG if (world_rank == 0) { printf("*** Attribute copy/delete return codes ***\n"); } #endif MPI_Comm_dup(MPI_COMM_WORLD, &dup_comm_world); MPI_Barrier(dup_comm_world); MPI_Errhandler_set(dup_comm_world, MPI_ERRORS_RETURN); value = -11; if ((err = MPI_Keyval_create(copybomb_fn, deletebomb_fn, &key_1, &value))) abort_msg("Keyval_create", err); err = MPI_Attr_put(dup_comm_world, key_1, (void *) (MPI_Aint) world_rank); if (err) { errs++; printf("Error with first put\n"); } err = MPI_Attr_put(dup_comm_world, key_1, (void *) (MPI_Aint) (2 * world_rank)); if (err == MPI_SUCCESS) { errs++; printf("delete function return code was MPI_SUCCESS in put\n"); } /* Because the attribute delete function should fail, the attribute * should *not be removed* */ err = MPI_Attr_delete(dup_comm_world, key_1); if (err == MPI_SUCCESS) { errs++; printf("delete function return code was MPI_SUCCESS in delete\n"); } err = MPI_Comm_dup(dup_comm_world, &d2); if (err == MPI_SUCCESS) { errs++; printf("copy function return code was MPI_SUCCESS in dup\n"); } #ifndef USE_STRICT_MPI /* Another interpretation is to leave d2 unchanged on error */ if (err && d2 != MPI_COMM_NULL) { errs++; printf("dup did not return MPI_COMM_NULL on error\n"); } #endif delete_flag = 1; MPI_Comm_free(&dup_comm_world); MPI_Keyval_free(&key_1); return errs; } mpi-testsuite-3.2+dfsg/attr/attrordertype.c0000644000175000017500000000617212620254305020414 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* static char MTestDescrip[] = "Test creating and inserting attributes in \ different orders to ensure that the list management code handles all cases."; */ int checkAttrs(MPI_Datatype type, int n, int key[], int attrval[]); int checkNoAttrs(MPI_Datatype type, int n, int key[]); int main(int argc, char *argv[]) { int errs = 0; int key[3], attrval[3]; int i; MPI_Datatype type; MTest_Init(&argc, &argv); { type = MPI_INT; /* Create key values */ for (i = 0; i < 3; i++) { MPI_Type_create_keyval(MPI_NULL_COPY_FN, MPI_NULL_DELETE_FN, &key[i], (void *) 0); attrval[i] = 1024 * i; } /* Insert attribute in several orders. Test after put with get, * then delete, then confirm delete with get. */ MPI_Type_set_attr(type, key[2], &attrval[2]); MPI_Type_set_attr(type, key[1], &attrval[1]); MPI_Type_set_attr(type, key[0], &attrval[0]); errs += checkAttrs(type, 3, key, attrval); MPI_Type_delete_attr(type, key[0]); MPI_Type_delete_attr(type, key[1]); MPI_Type_delete_attr(type, key[2]); errs += checkNoAttrs(type, 3, key); MPI_Type_set_attr(type, key[1], &attrval[1]); MPI_Type_set_attr(type, key[2], &attrval[2]); MPI_Type_set_attr(type, key[0], &attrval[0]); errs += checkAttrs(type, 3, key, attrval); MPI_Type_delete_attr(type, key[2]); MPI_Type_delete_attr(type, key[1]); MPI_Type_delete_attr(type, key[0]); errs += checkNoAttrs(type, 3, key); MPI_Type_set_attr(type, key[0], &attrval[0]); MPI_Type_set_attr(type, key[1], &attrval[1]); MPI_Type_set_attr(type, key[2], &attrval[2]); errs += checkAttrs(type, 3, key, attrval); MPI_Type_delete_attr(type, key[1]); MPI_Type_delete_attr(type, key[2]); MPI_Type_delete_attr(type, key[0]); errs += checkNoAttrs(type, 3, key); for (i = 0; i < 3; i++) { MPI_Type_free_keyval(&key[i]); } } MTest_Finalize(errs); MPI_Finalize(); return 0; } int checkAttrs(MPI_Datatype type, int n, int key[], int attrval[]) { int errs = 0; int i, flag, *val_p; for (i = 0; i < n; i++) { MPI_Type_get_attr(type, key[i], &val_p, &flag); if (!flag) { errs++; fprintf(stderr, "Attribute for key %d not set\n", i); } else if (val_p != &attrval[i]) { errs++; fprintf(stderr, "Atribute value for key %d not correct\n", i); } } return errs; } int checkNoAttrs(MPI_Datatype type, int n, int key[]) { int errs = 0; int i, flag, *val_p; for (i = 0; i < n; i++) { MPI_Type_get_attr(type, key[i], &val_p, &flag); if (flag) { errs++; fprintf(stderr, "Attribute for key %d set but should be deleted\n", i); } } return errs; } mpi-testsuite-3.2+dfsg/attr/baseattr2.c0000644000175000017500000001077112620254305017373 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include "mpi.h" #include "mpitest.h" void MissingKeyval(int rc, const char keyname[]); int main(int argc, char **argv) { int errs = 0; int rc; void *v; int flag; int vval; int rank, size; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); /* Set errors return so that we can provide better information * should a routine reject one of the attribute values */ MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_RETURN); rc = MPI_Attr_get(MPI_COMM_WORLD, MPI_TAG_UB, &v, &flag); if (rc) { MissingKeyval(rc, "MPI_TAG_UB"); errs++; } else { if (!flag) { errs++; fprintf(stderr, "Could not get TAG_UB\n"); } else { vval = *(int *) v; if (vval < 32767) { errs++; fprintf(stderr, "Got too-small value (%d) for TAG_UB\n", vval); } } } rc = MPI_Attr_get(MPI_COMM_WORLD, MPI_HOST, &v, &flag); if (rc) { MissingKeyval(rc, "MPI_HOST"); errs++; } else { if (!flag) { errs++; fprintf(stderr, "Could not get HOST\n"); } else { vval = *(int *) v; if ((vval < 0 || vval >= size) && vval != MPI_PROC_NULL) { errs++; fprintf(stderr, "Got invalid value %d for HOST\n", vval); } } } rc = MPI_Attr_get(MPI_COMM_WORLD, MPI_IO, &v, &flag); if (rc) { MissingKeyval(rc, "MPI_IO"); errs++; } else { if (!flag) { errs++; fprintf(stderr, "Could not get IO\n"); } else { vval = *(int *) v; if ((vval < 0 || vval >= size) && vval != MPI_ANY_SOURCE && vval != MPI_PROC_NULL) { errs++; fprintf(stderr, "Got invalid value %d for IO\n", vval); } } } rc = MPI_Attr_get(MPI_COMM_WORLD, MPI_WTIME_IS_GLOBAL, &v, &flag); if (rc) { MissingKeyval(rc, "MPI_WTIME_IS_GLOBAL"); errs++; } else { if (flag) { /* Wtime need not be set */ vval = *(int *) v; if (vval < 0 || vval > 1) { errs++; fprintf(stderr, "Invalid value for WTIME_IS_GLOBAL (got %d)\n", vval); } } } rc = MPI_Attr_get(MPI_COMM_WORLD, MPI_APPNUM, &v, &flag); if (rc) { MissingKeyval(rc, "MPI_APPNUM"); errs++; } else { /* appnum need not be set */ if (flag) { vval = *(int *) v; if (vval < 0) { errs++; fprintf(stderr, "MPI_APPNUM is defined as %d but must be nonnegative\n", vval); } } } rc = MPI_Attr_get(MPI_COMM_WORLD, MPI_UNIVERSE_SIZE, &v, &flag); if (rc) { MissingKeyval(rc, "MPI_UNIVERSE_SIZE"); errs++; } else { /* MPI_UNIVERSE_SIZE need not be set */ if (flag) { vval = *(int *) v; if (vval < size) { errs++; fprintf(stderr, "MPI_UNIVERSE_SIZE = %d, less than comm world (%d)\n", vval, size); } } } rc = MPI_Attr_get(MPI_COMM_WORLD, MPI_LASTUSEDCODE, &v, &flag); if (rc) { MissingKeyval(rc, "MPI_LASTUSEDCODE"); errs++; } else { /* Last used code must be defined and >= MPI_ERR_LASTCODE */ if (flag) { vval = *(int *) v; if (vval < MPI_ERR_LASTCODE) { errs++; fprintf(stderr, "MPI_LASTUSEDCODE points to an integer (%d) smaller than MPI_ERR_LASTCODE (%d)\n", vval, MPI_ERR_LASTCODE); } } else { errs++; fprintf(stderr, "MPI_LASTUSECODE is not defined\n"); } } MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_ARE_FATAL); MTest_Finalize(errs); MPI_Finalize(); return 0; } void MissingKeyval(int errcode, const char keyname[]) { int errclass, slen; char string[MPI_MAX_ERROR_STRING]; MPI_Error_class(errcode, &errclass); MPI_Error_string(errcode, string, &slen); printf("For key %s: Error class %d (%s)\n", keyname, errclass, string); fflush(stdout); } mpi-testsuite-3.2+dfsg/attr/keyval_double_free_comm.c0000644000175000017500000000234412620254305022342 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include "mpitest.h" /* tests multiple invocations of MPI_Comm_free_keyval on the same keyval */ int delete_fn(MPI_Comm comm, int keyval, void *attr, void *extra); int delete_fn(MPI_Comm comm, int keyval, void *attr, void *extra) { MPI_Comm_free_keyval(&keyval); return MPI_SUCCESS; } int main(int argc, char **argv) { MPI_Comm duped; int keyval = MPI_KEYVAL_INVALID; int keyval_copy = MPI_KEYVAL_INVALID; int errs = 0; MTest_Init(&argc, &argv); MPI_Comm_dup(MPI_COMM_SELF, &duped); MPI_Comm_create_keyval(MPI_NULL_COPY_FN, delete_fn, &keyval, NULL); keyval_copy = keyval; MPI_Comm_set_attr(MPI_COMM_SELF, keyval, NULL); MPI_Comm_set_attr(duped, keyval, NULL); MPI_Comm_free(&duped); /* first MPI_Comm_free_keyval */ MPI_Comm_free_keyval(&keyval); /* second MPI_Comm_free_keyval */ MPI_Comm_free_keyval(&keyval_copy); /* third MPI_Comm_free_keyval */ MTest_Finalize(errs); MPI_Finalize(); /* fourth MPI_Comm_free_keyval */ return 0; } mpi-testsuite-3.2+dfsg/attr/fkeyvaltype.c0000644000175000017500000000756212620254305020053 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" #include "stdlib.h" /* static char MTestDescrip[] = "Test freeing keyvals while still attached to \ a datatype, then make sure that the keyval delete and copy code are still \ executed"; */ /* Copy increments the attribute value */ int copy_fn(MPI_Datatype oldtype, int keyval, void *extra_state, void *attribute_val_in, void *attribute_val_out, int *flag); int copy_fn(MPI_Datatype oldtype, int keyval, void *extra_state, void *attribute_val_in, void *attribute_val_out, int *flag) { /* Copy the address of the attribute */ *(void **) attribute_val_out = attribute_val_in; /* Change the value */ *(int *) attribute_val_in = *(int *) attribute_val_in + 1; /* set flag to 1 to tell comm dup to insert this attribute * into the new communicator */ *flag = 1; return MPI_SUCCESS; } /* Delete decrements the attribute value */ int delete_fn(MPI_Datatype type, int keyval, void *attribute_val, void *extra_state); int delete_fn(MPI_Datatype type, int keyval, void *attribute_val, void *extra_state) { *(int *) attribute_val = *(int *) attribute_val - 1; return MPI_SUCCESS; } int main(int argc, char *argv[]) { int errs = 0; int attrval; int i, key[32], keyval, saveKeyval; MPI_Datatype type, duptype; MTestDatatype mstype, mrtype; char typename[MPI_MAX_OBJECT_NAME]; int tnlen; MTest_Init(&argc, &argv); while (MTestGetDatatypes(&mstype, &mrtype, 1)) { type = mstype.datatype; MPI_Type_create_keyval(copy_fn, delete_fn, &keyval, (void *) 0); saveKeyval = keyval; /* in case we need to free explicitly */ attrval = 1; MPI_Type_set_attr(type, keyval, (void *) &attrval); /* See MPI-1, 5.7.1. Freeing the keyval does not remove it if it * is in use in an attribute */ MPI_Type_free_keyval(&keyval); /* We create some dummy keyvals here in case the same keyval * is reused */ for (i = 0; i < 32; i++) { MPI_Type_create_keyval(MPI_NULL_COPY_FN, MPI_NULL_DELETE_FN, &key[i], (void *) 0); } if (attrval != 1) { errs++; MPI_Type_get_name(type, typename, &tnlen); printf("attrval is %d, should be 1, before dup in type %s\n", attrval, typename); } MPI_Type_dup(type, &duptype); /* Check that the attribute was copied */ if (attrval != 2) { errs++; MPI_Type_get_name(type, typename, &tnlen); printf("Attribute not incremented when type dup'ed (%s)\n", typename); } MPI_Type_free(&duptype); if (attrval != 1) { errs++; MPI_Type_get_name(type, typename, &tnlen); printf("Attribute not decremented when duptype %s freed\n", typename); } /* Check that the attribute was freed in the duptype */ if (!mstype.isBasic) { MPI_Type_get_name(type, typename, &tnlen); MTestFreeDatatype(&mstype); /* Check that the original attribute was freed */ if (attrval != 0) { errs++; printf("Attribute not decremented when type %s freed\n", typename); } } else { /* Explicitly delete the attributes from world and self */ MPI_Type_delete_attr(type, saveKeyval); if (mstype.buf) { free(mstype.buf); mstype.buf = 0; } } /* Free those other keyvals */ for (i = 0; i < 32; i++) { MPI_Type_free_keyval(&key[i]); } MTestFreeDatatype(&mrtype); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/attr/attrdeleteget.c0000644000175000017500000000253612620254305020341 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2013 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include "mpi.h" #include "mpitest.h" int key = MPI_KEYVAL_INVALID; char a[100]; int delete_fn(MPI_Comm, int, void *, void *); int main(int argc, char **argv) { MPI_Comm scomm; int errs = 0; MTest_Init(&argc, &argv); MPI_Comm_split(MPI_COMM_WORLD, 1, 0, &scomm); MPI_Comm_create_keyval(MPI_NULL_COPY_FN, delete_fn, &key, &errs); MPI_Comm_set_attr(scomm, key, a); MPI_Comm_free(&scomm); MPI_Comm_free_keyval(&key); MTest_Finalize(errs); MPI_Finalize(); return 0; } int delete_fn(MPI_Comm comm, int keyval, void *attr_val, void *extra_state) { /* The standard is not explicit that the 'comm' argument of * delete_fn must be valid, so this test is only in effect when * !USE_STRICT_MPI. */ #ifndef USE_STRICT_MPI int err, flg, *errs = extra_state; void *ptr; if (comm == MPI_COMM_NULL) { printf("MPI_COMM_NULL passed to delete_fn\n"); (*errs)++; } err = MPI_Comm_get_attr(comm, key, &ptr, &flg); if (err != MPI_SUCCESS) { printf("MPI_Comm_get_attr returned error %d, presumably due to invalid communicator\n", err); (*errs)++; } #endif return 0; } mpi-testsuite-3.2+dfsg/attr/attrordercomm.c0000644000175000017500000000615512620254305020367 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* static char MTestDescrip[] = "Test creating and inserting attributes in \ different orders to ensure that the list management code handles all cases."; */ int checkAttrs(MPI_Comm comm, int n, int key[], int attrval[]); int checkNoAttrs(MPI_Comm comm, int n, int key[]); int main(int argc, char *argv[]) { int errs = 0; int key[3], attrval[3]; int i; MPI_Comm comm; MTest_Init(&argc, &argv); { comm = MPI_COMM_WORLD; /* Create key values */ for (i = 0; i < 3; i++) { MPI_Comm_create_keyval(MPI_NULL_COPY_FN, MPI_NULL_DELETE_FN, &key[i], (void *) 0); attrval[i] = 1024 * i; } /* Insert attribute in several orders. Test after put with get, * then delete, then confirm delete with get. */ MPI_Comm_set_attr(comm, key[2], &attrval[2]); MPI_Comm_set_attr(comm, key[1], &attrval[1]); MPI_Comm_set_attr(comm, key[0], &attrval[0]); errs += checkAttrs(comm, 3, key, attrval); MPI_Comm_delete_attr(comm, key[0]); MPI_Comm_delete_attr(comm, key[1]); MPI_Comm_delete_attr(comm, key[2]); errs += checkNoAttrs(comm, 3, key); MPI_Comm_set_attr(comm, key[1], &attrval[1]); MPI_Comm_set_attr(comm, key[2], &attrval[2]); MPI_Comm_set_attr(comm, key[0], &attrval[0]); errs += checkAttrs(comm, 3, key, attrval); MPI_Comm_delete_attr(comm, key[2]); MPI_Comm_delete_attr(comm, key[1]); MPI_Comm_delete_attr(comm, key[0]); errs += checkNoAttrs(comm, 3, key); MPI_Comm_set_attr(comm, key[0], &attrval[0]); MPI_Comm_set_attr(comm, key[1], &attrval[1]); MPI_Comm_set_attr(comm, key[2], &attrval[2]); errs += checkAttrs(comm, 3, key, attrval); MPI_Comm_delete_attr(comm, key[1]); MPI_Comm_delete_attr(comm, key[2]); MPI_Comm_delete_attr(comm, key[0]); errs += checkNoAttrs(comm, 3, key); for (i = 0; i < 3; i++) { MPI_Comm_free_keyval(&key[i]); } } MTest_Finalize(errs); MPI_Finalize(); return 0; } int checkAttrs(MPI_Comm comm, int n, int key[], int attrval[]) { int errs = 0; int i, flag, *val_p; for (i = 0; i < n; i++) { MPI_Comm_get_attr(comm, key[i], &val_p, &flag); if (!flag) { errs++; fprintf(stderr, "Attribute for key %d not set\n", i); } else if (val_p != &attrval[i]) { errs++; fprintf(stderr, "Atribute value for key %d not correct\n", i); } } return errs; } int checkNoAttrs(MPI_Comm comm, int n, int key[]) { int errs = 0; int i, flag, *val_p; for (i = 0; i < n; i++) { MPI_Comm_get_attr(comm, key[i], &val_p, &flag); if (flag) { errs++; fprintf(stderr, "Attribute for key %d set but should be deleted\n", i); } } return errs; } mpi-testsuite-3.2+dfsg/Makefile_f90.mtest0000644000175000017500000000144312620254305017633 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # these CPPFLAGS are only used when building C/C++ source files, not for actual # F90 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f90/util/mtestf90.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. $(top_builddir)/f90/util/mtestf90.o: $(top_srcdir)/f90/util/mtestf90.f90 (cd $(top_builddir)/f90/util && $(MAKE) mtestf90.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml CLEANFILES = summary.xml summary.tap mpi-testsuite-3.2+dfsg/Makefile.am0000644000175000017500000000411712620254305016417 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # mix in the "make testing" rule and other boilerplate include $(top_srcdir)/Makefile.mtest ACLOCAL_AMFLAGS = -I confdb static_subdirs = util attr basic datatype coll comm errhan group info init \ pt2pt rma topo errors manual perf mpi_t impls ckpoint ft all_lang_subdirs = f77 cxx f90 f08 # DIST_SUBDIRS must be a superset of SUBDIRS, and automake must be able to # *statically* compute its contents. The good news is that we can mostly avoid # duplication because automake is able to "see" into simple variable # assignments that are not driven by a configure @-substitution variable. DIST_SUBDIRS = $(static_subdirs) io $(all_lang_subdirs) threads spawn . SUBDIRS = $(static_subdirs) $(iodir) $(otherlangs) $(threadsdir) $(spawndir) $(ckpointdir) $(ftdir) . EXTRA_DIST = maint/common.defn maint/f77tof90.in maint/testmerge.in maint/updatefiles testlist.in DISTCLEANFILES = config.system ## here are automakefile entries for the test/mpi/include dir noinst_HEADERS = include/mpitest.h include/mpitestcxx.h include/mpithreadtest.h include/dtypes.h rma/squelch.h errors/rma/win_sync.h nodist_noinst_HEADERS = include/mpitestconf.h # Need to patch some things up: # Make sure to disable rebuilding the autotools related files - the # receiver of this distribution may not have the necessary tools and # should not need them. Finally, the distributed configure must disable # maintainer targets by default - otherwise, the unsuspecting user will # see automake et al attempt to rebuild the autotools, which is likely to # fail unless the user has the correct versions of all of the tools dist-hook: cd $(distdir) && \ sed -e 's/AM_MAINTAINER_MODE.*/AM_MAINTAINER_MODE([disable])/' \ configure.ac > conftmp.ac && mv conftmp.ac configure.ac cd $(distdir) && $(AUTOMAKE) --add-missing cd $(distdir) && $(AUTOMAKE) --foreign cd $(distdir) && $(ACLOCAL) -Iconfdb cd $(distdir) && $(AUTOCONF) -Iconfdb cd $(distdir) && $(AUTOHEADER) -Iconfdb mpi-testsuite-3.2+dfsg/util/0000755000175000017500000000000012621010236015327 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/util/Makefile.in0000644000175000017500000004534012621010236017402 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ EXTRA_PROGRAMS = mtestcheck$(EXEEXT) dtypes$(EXEEXT) subdir = util ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = dtypes_SOURCES = dtypes.c dtypes_OBJECTS = dtypes.$(OBJEXT) dtypes_LDADD = $(LDADD) am_mtestcheck_OBJECTS = mtestcheck.$(OBJEXT) mtest.$(OBJEXT) mtestcheck_OBJECTS = $(am_mtestcheck_OBJECTS) mtestcheck_LDADD = $(LDADD) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = dtypes.c $(mtestcheck_SOURCES) DIST_SOURCES = dtypes.c $(mtestcheck_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CPPFLAGS = -I${srcdir}/../include -I../include mtestcheck_SOURCES = mtestcheck.c mtest.c # FIXME: mtest_datatype.h belongs with the other include files, in # ../include EXTRA_DIST = mtest_datatype.c mtest_datatype.h \ mtest_datatype_gen.c all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign util/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign util/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): dtypes$(EXEEXT): $(dtypes_OBJECTS) $(dtypes_DEPENDENCIES) $(EXTRA_dtypes_DEPENDENCIES) @rm -f dtypes$(EXEEXT) $(AM_V_CCLD)$(LINK) $(dtypes_OBJECTS) $(dtypes_LDADD) $(LIBS) mtestcheck$(EXEEXT): $(mtestcheck_OBJECTS) $(mtestcheck_DEPENDENCIES) $(EXTRA_mtestcheck_DEPENDENCIES) @rm -f mtestcheck$(EXEEXT) $(AM_V_CCLD)$(LINK) $(mtestcheck_OBJECTS) $(mtestcheck_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dtypes.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mtest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mtestcheck.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile all-local installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \ clean-generic cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile mtest.$(OBJEXT): mtest.c mtest_datatype.$(OBJEXT): mtest_datatype.c mtest_datatype.h dtypes.$(OBJEXT): dtypes.c all-local: mtest.$(OBJEXT) dtypes.$(OBJEXT) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/util/dtypes.c0000644000175000017500000003733412620254305017023 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #include "mpitest.h" #include "dtypes.h" #if defined(HAVE_STDIO_H) || defined(STDC_HEADERS) #include #endif #if defined(HAVE_STDLIB_H) || defined(STDC_HEADERS) #include #endif #if defined(HAVE_STRING_H) || defined(STDC_HEADERS) #include #endif #ifdef HAVE_STDARG_H #include #endif /* This file contains code to generate a variety of MPI datatypes for testing the various MPI routines. To simplify the test code, this generates an array of datatypes, buffers with data and buffers with no data (0 bits) for use in send and receive routines of various types. In addition, this doesn't even test all of the possibilities. For example, there is currently no test of sending more than one item defined with MPI_Type_contiguous . Note also that this test assumes that the sending and receive types are the same. MPI requires only that the type signatures match, which is a weaker requirement. This code was drawn from the MPICH-1 test suite and modified to fit the new MPICH test suite. It provides an alternative set of datatype tests to the ones in mtest.c. */ /* Change this to test only the basic, predefined types */ static int basic_only = 0; /* Arrays types, inbufs, outbufs, and counts are allocated by the CALLER. n on input is the maximum number; on output, it is the number defined. See MTestDatatype2Allocate below for a routine to allocate these arrays. We may want to add a routine to call to check that the proper data has been received. */ /* Add a predefined MPI type to the tests. _count instances of the type will be sent. */ #define SETUPBASICTYPE(_mpitype,_ctype,_count) { \ int i; _ctype *a; \ if (cnt > *n) {*n = cnt; return; } \ types[cnt] = _mpitype; \ inbufs[cnt] = (void *)calloc(_count,sizeof(_ctype)); \ outbufs[cnt] = (void *)malloc(sizeof(_ctype) * (_count)); \ a = (_ctype *)inbufs[cnt]; for (i=0; i<(_count); i++) a[i] = i; \ a = (_ctype *)outbufs[cnt]; for (i=0; i<(_count); i++) a[i] = 0; \ counts[cnt] = _count; bytesize[cnt] = sizeof(_ctype) * (_count); cnt++; } /* Add a contiguous version of a predefined type. Send one instance of the type which contains _count copies of the predefined type. */ #define SETUPCONTIGTYPE(_mpitype,_ctype,_count) { \ int i; _ctype *a; char*myname; \ char _basename[MPI_MAX_OBJECT_NAME]; int _basenamelen;\ if (cnt > *n) {*n = cnt; return; }\ MPI_Type_contiguous(_count, _mpitype, types + cnt);\ MPI_Type_commit(types + cnt);\ inbufs[cnt] = (void *)calloc(_count, sizeof(_ctype)); \ outbufs[cnt] = (void *)malloc(sizeof(_ctype) * (_count)); \ a = (_ctype *)inbufs[cnt]; for (i=0; i<(_count); i++) a[i] = i; \ a = (_ctype *)outbufs[cnt]; for (i=0; i<(_count); i++) a[i] = 0; \ myname = (char *)malloc(100);\ MPI_Type_get_name(_mpitype, _basename, &_basenamelen); \ snprintf(myname, 100, "Contig type %s", _basename); \ MPI_Type_set_name(types[cnt], myname); \ free(myname); \ counts[cnt] = 1; bytesize[cnt] = sizeof(_ctype) * (_count); cnt++; } /* Create a vector with _count elements, separated by stride _stride, of _mpitype. Each block has a single element. */ #define SETUPVECTORTYPE(_mpitype,_ctype,_count,_stride,_name) { \ int i; _ctype *a; char *myname; \ char _basename[MPI_MAX_OBJECT_NAME]; int _basenamelen;\ if (cnt > *n) {*n = cnt; return; }\ MPI_Type_vector(_count, 1, _stride, _mpitype, types + cnt); \ MPI_Type_commit(types + cnt);\ inbufs[cnt] = (void *)calloc(sizeof(_ctype) * (_count) * (_stride),1); \ outbufs[cnt] = (void *)calloc(sizeof(_ctype) * (_count) * (_stride),1); \ a = (_ctype *)inbufs[cnt]; for (i=0; i<(_count); i++) a[i*(_stride)] = i; \ a = (_ctype *)outbufs[cnt]; for (i=0; i<(_count); i++) a[i*(_stride)] = 0; \ myname = (char *)malloc(100);\ MPI_Type_get_name(_mpitype, _basename, &_basenamelen); \ snprintf(myname, 100, "Vector type %s", _basename); \ MPI_Type_set_name(types[cnt], myname); \ free(myname); \ counts[cnt] = 1; bytesize[cnt] = sizeof(_ctype) * (_count) * (_stride) ;\ cnt++; } /* This indexed type is setup like a contiguous type . Note that systems may try to convert this to contiguous, so we'll eventually need a test that has holes in it */ #define SETUPINDEXTYPE(_mpitype,_ctype,_count,_name) { \ int i; int *lens, *disp; _ctype *a; char *myname; \ char _basename[MPI_MAX_OBJECT_NAME]; int _basenamelen;\ if (cnt > *n) {*n = cnt; return; }\ lens = (int *)malloc((_count) * sizeof(int)); \ disp = (int *)malloc((_count) * sizeof(int)); \ for (i=0; i<(_count); i++) { lens[i] = 1; disp[i] = i; } \ MPI_Type_indexed((_count), lens, disp, _mpitype, types + cnt);\ free(lens); free(disp); \ MPI_Type_commit(types + cnt);\ inbufs[cnt] = (void *)calloc((_count), sizeof(_ctype)); \ outbufs[cnt] = (void *)malloc(sizeof(_ctype) * (_count)); \ a = (_ctype *)inbufs[cnt]; for (i=0; i<(_count); i++) a[i] = i; \ a = (_ctype *)outbufs[cnt]; for (i=0; i<(_count); i++) a[i] = 0; \ myname = (char *)malloc(100);\ MPI_Type_get_name(_mpitype, _basename, &_basenamelen); \ snprintf(myname, 100, "Index type %s", _basename); \ MPI_Type_set_name(types[cnt], myname); \ free(myname); \ counts[cnt] = 1; bytesize[cnt] = sizeof(_ctype) * (_count); cnt++; } /* This defines a structure of two basic members; by chosing things like (char, double), various packing and alignment tests can be made */ #define SETUPSTRUCT2TYPE(_mpitype1,_ctype1,_mpitype2,_ctype2,_count,_tname) { \ int i; char *myname; \ MPI_Datatype b[3]; int cnts[3]; \ struct name { _ctype1 a1; _ctype2 a2; } *a, samp; \ MPI_Aint disp[3]; \ if (cnt > *n) {*n = cnt; return; } \ b[0] = _mpitype1; b[1] = _mpitype2; b[2] = MPI_UB; \ cnts[0] = 1; cnts[1] = 1; cnts[2] = 1; \ MPI_Get_address(&(samp.a2), &disp[1]); \ MPI_Get_address(&(samp.a1), &disp[0]); \ MPI_Get_address(&(samp) + 1, &disp[2]); \ disp[1] = disp[1] - disp[0]; disp[2] = disp[2] - disp[0]; disp[0] = 0; \ MPI_Type_create_struct(3, cnts, disp, b, types + cnt); \ MPI_Type_commit(types + cnt); \ inbufs[cnt] = (void *)calloc(sizeof(struct name) * (_count),1); \ outbufs[cnt] = (void *)calloc(sizeof(struct name) * (_count),1); \ a = (struct name *)inbufs[cnt]; for (i=0; i<(_count); i++) { a[i].a1 = i; \ a[i].a2 = i; } \ a = (struct name *)outbufs[cnt]; for (i=0; i<(_count); i++) { a[i].a1 = 0; \ a[i].a2 = 0; } \ myname = (char *)malloc(100); \ snprintf(myname, 100, "Struct type %s", _tname); \ MPI_Type_set_name(types[cnt], myname); \ free(myname); \ counts[cnt] = (_count); bytesize[cnt] = sizeof(struct name) * (_count);cnt++; } /* This accomplished the same effect as VECTOR, but allow a count of > 1 */ #define SETUPSTRUCTTYPEUB(_mpitype,_ctype,_count,_stride) { \ int i; _ctype *a; char *myname; \ int blens[2]; MPI_Aint disps[2]; MPI_Datatype mtypes[2]; \ char _basename[MPI_MAX_OBJECT_NAME]; int _basenamelen;\ if (cnt > *n) {*n = cnt; return; } \ blens[0] = 1; blens[1] = 1; disps[0] = 0; \ disps[1] = (_stride) * sizeof(_ctype); \ mtypes[0] = _mpitype; mtypes[1] = MPI_UB; \ MPI_Type_create_struct(2, blens, disps, mtypes, types + cnt); \ MPI_Type_commit(types + cnt); \ inbufs[cnt] = (void *)calloc(sizeof(_ctype) * (_count) * (_stride),1);\ outbufs[cnt] = (void *)calloc(sizeof(_ctype) * (_count) * (_stride),1);\ a = (_ctype *)inbufs[cnt]; for (i=0; i<(_count); i++) a[i*(_stride)] = i; \ a = (_ctype *)outbufs[cnt]; for (i=0; i<(_count); i++) a[i*(_stride)] = 0; \ myname = (char *)malloc(100); \ MPI_Type_get_name(_mpitype, _basename, &_basenamelen); \ snprintf(myname, 100, "Struct (MPI_UB) type %s", _basename); \ MPI_Type_set_name(types[cnt], myname); \ free(myname); \ counts[cnt] = (_count); \ bytesize[cnt] = sizeof(_ctype) * (_count) * (_stride);\ cnt++; } /* * Set whether only the basic types should be generated */ void MTestDatatype2BasicOnly(void) { basic_only = 1; } static int nbasic_types = 0; /* On input, n is the size of the various buffers. On output, it is the number available types */ void MTestDatatype2Generate(MPI_Datatype * types, void **inbufs, void **outbufs, int *counts, int *bytesize, int *n) { int cnt = 0; /* Number of defined types */ int typecnt = 10; /* Number of instances to send in most cases */ int stride = 9; /* Number of elements in vector to stride */ /* First, generate an element of each basic type */ SETUPBASICTYPE(MPI_CHAR, char, typecnt); SETUPBASICTYPE(MPI_SHORT, short, typecnt); SETUPBASICTYPE(MPI_INT, int, typecnt); SETUPBASICTYPE(MPI_LONG, long, typecnt); SETUPBASICTYPE(MPI_UNSIGNED_CHAR, unsigned char, typecnt); SETUPBASICTYPE(MPI_UNSIGNED_SHORT, unsigned short, typecnt); SETUPBASICTYPE(MPI_UNSIGNED, unsigned, typecnt); SETUPBASICTYPE(MPI_UNSIGNED_LONG, unsigned long, typecnt); SETUPBASICTYPE(MPI_FLOAT, float, typecnt); SETUPBASICTYPE(MPI_DOUBLE, double, typecnt); SETUPBASICTYPE(MPI_BYTE, char, typecnt); #ifdef HAVE_LONG_LONG_INT SETUPBASICTYPE(MPI_LONG_LONG_INT, long long, typecnt); #endif #ifdef HAVE_LONG_DOUBLE SETUPBASICTYPE(MPI_LONG_DOUBLE, long double, typecnt); #endif nbasic_types = cnt; if (basic_only) { *n = cnt; return; } /* Generate contiguous data items */ SETUPCONTIGTYPE(MPI_CHAR, char, typecnt); SETUPCONTIGTYPE(MPI_SHORT, short, typecnt); SETUPCONTIGTYPE(MPI_INT, int, typecnt); SETUPCONTIGTYPE(MPI_LONG, long, typecnt); SETUPCONTIGTYPE(MPI_UNSIGNED_CHAR, unsigned char, typecnt); SETUPCONTIGTYPE(MPI_UNSIGNED_SHORT, unsigned short, typecnt); SETUPCONTIGTYPE(MPI_UNSIGNED, unsigned, typecnt); SETUPCONTIGTYPE(MPI_UNSIGNED_LONG, unsigned long, typecnt); SETUPCONTIGTYPE(MPI_FLOAT, float, typecnt); SETUPCONTIGTYPE(MPI_DOUBLE, double, typecnt); SETUPCONTIGTYPE(MPI_BYTE, char, typecnt); #ifdef HAVE_LONG_LONG_INT SETUPCONTIGTYPE(MPI_LONG_LONG_INT, long long, typecnt); #endif #ifdef HAVE_LONG_DOUBLE SETUPCONTIGTYPE(MPI_LONG_DOUBLE, long double, typecnt); #endif /* Generate vector items */ SETUPVECTORTYPE(MPI_CHAR, char, typecnt, stride, "MPI_CHAR"); SETUPVECTORTYPE(MPI_SHORT, short, typecnt, stride, "MPI_SHORT"); SETUPVECTORTYPE(MPI_INT, int, typecnt, stride, "MPI_INT"); SETUPVECTORTYPE(MPI_LONG, long, typecnt, stride, "MPI_LONG"); SETUPVECTORTYPE(MPI_UNSIGNED_CHAR, unsigned char, typecnt, stride, "MPI_UNSIGNED_CHAR"); SETUPVECTORTYPE(MPI_UNSIGNED_SHORT, unsigned short, typecnt, stride, "MPI_UNSIGNED_SHORT"); SETUPVECTORTYPE(MPI_UNSIGNED, unsigned, typecnt, stride, "MPI_UNSIGNED"); SETUPVECTORTYPE(MPI_UNSIGNED_LONG, unsigned long, typecnt, stride, "MPI_UNSIGNED_LONG"); SETUPVECTORTYPE(MPI_FLOAT, float, typecnt, stride, "MPI_FLOAT"); SETUPVECTORTYPE(MPI_DOUBLE, double, typecnt, stride, "MPI_DOUBLE"); SETUPVECTORTYPE(MPI_BYTE, char, typecnt, stride, "MPI_BYTE"); #ifdef HAVE_LONG_LONG_INT SETUPVECTORTYPE(MPI_LONG_LONG_INT, long long, typecnt, stride, "MPI_LONG_LONG_INT"); #endif #ifdef HAVE_LONG_DOUBLE SETUPVECTORTYPE(MPI_LONG_DOUBLE, long double, typecnt, stride, "MPI_LONG_DOUBLE"); #endif /* Generate indexed items */ SETUPINDEXTYPE(MPI_CHAR, char, typecnt, "MPI_CHAR"); SETUPINDEXTYPE(MPI_SHORT, short, typecnt, "MPI_SHORT"); SETUPINDEXTYPE(MPI_INT, int, typecnt, "MPI_INT"); SETUPINDEXTYPE(MPI_LONG, long, typecnt, "MPI_LONG"); SETUPINDEXTYPE(MPI_UNSIGNED_CHAR, unsigned char, typecnt, "MPI_UNSIGNED_CHAR"); SETUPINDEXTYPE(MPI_UNSIGNED_SHORT, unsigned short, typecnt, "MPI_UNSIGNED_SHORT"); SETUPINDEXTYPE(MPI_UNSIGNED, unsigned, typecnt, "MPI_UNSIGNED"); SETUPINDEXTYPE(MPI_UNSIGNED_LONG, unsigned long, typecnt, "MPI_UNSIGNED_LONG"); SETUPINDEXTYPE(MPI_FLOAT, float, typecnt, "MPI_FLOAT"); SETUPINDEXTYPE(MPI_DOUBLE, double, typecnt, "MPI_DOUBLE"); SETUPINDEXTYPE(MPI_BYTE, char, typecnt, "MPI_BYTE"); #ifdef HAVE_LONG_LONG_INT SETUPINDEXTYPE(MPI_LONG_LONG_INT, long long, typecnt, "MPI_LONG_LONG_INT"); #endif #ifdef HAVE_LONG_DOUBLE SETUPINDEXTYPE(MPI_LONG_DOUBLE, long double, typecnt, "MPI_LONG_DOUBLE"); #endif /* Generate struct items */ SETUPSTRUCT2TYPE(MPI_CHAR, char, MPI_DOUBLE, double, typecnt, "char-double"); SETUPSTRUCT2TYPE(MPI_DOUBLE, double, MPI_CHAR, char, typecnt, "double-char"); SETUPSTRUCT2TYPE(MPI_UNSIGNED, unsigned, MPI_DOUBLE, double, typecnt, "unsigned-double"); SETUPSTRUCT2TYPE(MPI_FLOAT, float, MPI_LONG, long, typecnt, "float-long"); SETUPSTRUCT2TYPE(MPI_UNSIGNED_CHAR, unsigned char, MPI_CHAR, char, typecnt, "unsigned char-char"); SETUPSTRUCT2TYPE(MPI_UNSIGNED_SHORT, unsigned short, MPI_DOUBLE, double, typecnt, "unsigned short-double"); /* Generate struct using MPI_UB */ SETUPSTRUCTTYPEUB(MPI_CHAR, char, typecnt, stride); SETUPSTRUCTTYPEUB(MPI_SHORT, short, typecnt, stride); SETUPSTRUCTTYPEUB(MPI_INT, int, typecnt, stride); SETUPSTRUCTTYPEUB(MPI_LONG, long, typecnt, stride); SETUPSTRUCTTYPEUB(MPI_UNSIGNED_CHAR, unsigned char, typecnt, stride); SETUPSTRUCTTYPEUB(MPI_UNSIGNED_SHORT, unsigned short, typecnt, stride); SETUPSTRUCTTYPEUB(MPI_UNSIGNED, unsigned, typecnt, stride); SETUPSTRUCTTYPEUB(MPI_UNSIGNED_LONG, unsigned long, typecnt, stride); SETUPSTRUCTTYPEUB(MPI_FLOAT, float, typecnt, stride); SETUPSTRUCTTYPEUB(MPI_DOUBLE, double, typecnt, stride); SETUPSTRUCTTYPEUB(MPI_BYTE, char, typecnt, stride); /* 60 different entries to this point + 4 for long long and * 4 for long double */ *n = cnt; } /* MAX_TEST should be 1 + actual max (allows us to check that it was, indeed, large enough) */ #define MAX_TEST 70 void MTestDatatype2Allocate(MPI_Datatype ** types, void ***inbufs, void ***outbufs, int **counts, int **bytesize, int *n) { *types = (MPI_Datatype *) malloc(MAX_TEST * sizeof(MPI_Datatype)); *inbufs = (void **) malloc(MAX_TEST * sizeof(void *)); *outbufs = (void **) malloc(MAX_TEST * sizeof(void *)); *counts = (int *) malloc(MAX_TEST * sizeof(int)); *bytesize = (int *) malloc(MAX_TEST * sizeof(int)); *n = MAX_TEST; } int MTestDatatype2Check(void *inbuf, void *outbuf, int size_bytes) { char *in = (char *) inbuf, *out = (char *) outbuf; int i; for (i = 0; i < size_bytes; i++) { if (in[i] != out[i]) { return i + 1; } } return 0; } /* * This is a version of CheckData that prints error messages */ int MtestDatatype2CheckAndPrint(void *inbuf, void *outbuf, int size_bytes, char *typename, int typenum) { int errloc, world_rank; if ((errloc = MTestDatatype2Check(inbuf, outbuf, size_bytes))) { char *p1, *p2; MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); fprintf(stderr, "Error in data with type %s (type %d on %d) at byte %d of %d\n", typename, typenum, world_rank, errloc - 1, size_bytes); p1 = (char *) inbuf; p2 = (char *) outbuf; fprintf(stderr, "Got %x expected %x\n", p2[errloc - 1], p1[errloc - 1]); } return errloc; } void MTestDatatype2Free(MPI_Datatype * types, void **inbufs, void **outbufs, int *counts, int *bytesize, int n) { int i; for (i = 0; i < n; i++) { if (inbufs[i]) free(inbufs[i]); if (outbufs[i]) free(outbufs[i]); /* Only if not basic ... */ if (i >= nbasic_types) MPI_Type_free(types + i); } free(inbufs); free(outbufs); free(counts); free(bytesize); } mpi-testsuite-3.2+dfsg/util/Makefile.am0000644000175000017500000000066712620254305017402 0ustar mbanckmbanck AM_CPPFLAGS = -I${srcdir}/../include -I../include mtest.$(OBJEXT): mtest.c mtest_datatype.$(OBJEXT): mtest_datatype.c mtest_datatype.h dtypes.$(OBJEXT): dtypes.c all-local: mtest.$(OBJEXT) dtypes.$(OBJEXT) EXTRA_PROGRAMS = mtestcheck dtypes mtestcheck_SOURCES = mtestcheck.c mtest.c # FIXME: mtest_datatype.h belongs with the other include files, in # ../include EXTRA_DIST = mtest_datatype.c mtest_datatype.h \ mtest_datatype_gen.c mpi-testsuite-3.2+dfsg/util/mtest.c0000644000175000017500000012616712620254305016652 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #include "mpitest.h" #if defined(HAVE_STDIO_H) || defined(STDC_HEADERS) #include #endif #if defined(HAVE_STDLIB_H) || defined(STDC_HEADERS) #include #endif #if defined(HAVE_STRING_H) || defined(STDC_HEADERS) #include #endif #ifdef HAVE_STDARG_H #include #endif /* The following two includes permit the collection of resource usage data in the tests */ #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_RESOURCE_H #include #endif #include /* * Utility routines for writing MPI tests. * * We check the return codes on all MPI routines (other than INIT) * to allow the program that uses these routines to select MPI_ERRORS_RETURN * as the error handler. We do *not* set MPI_ERRORS_RETURN because * the code that makes use of these routines may not check return * codes. * */ static void MTestRMACleanup(void); static void MTestResourceSummary(FILE *); /* Here is where we could put the includes and definitions to enable memory testing */ static int dbgflag = 0; /* Flag used for debugging */ static int wrank = -1; /* World rank */ static int verbose = 0; /* Message level (0 is none) */ static int returnWithVal = 0; /* Allow programs to return with a non-zero * if there was an error (may cause problems * with some runtime systems) */ static int usageOutput = 0; /* */ /* Provide backward portability to MPI 1 */ #ifndef MPI_VERSION #define MPI_VERSION 1 #endif #if MPI_VERSION < 2 #define MPI_THREAD_SINGLE 0 #endif /* * Initialize and Finalize MTest */ /* Initialize MTest, initializing MPI if necessary. Environment Variables: + MPITEST_DEBUG - If set (to any value), turns on debugging output . MPITEST_THREADLEVEL_DEFAULT - If set, use as the default "provided" level of thread support. Applies to MTest_Init but not MTest_Init_thread. - MPITEST_VERBOSE - If set to a numeric value, turns on that level of verbose output. This is used by the routine 'MTestPrintfMsg' */ void MTest_Init_thread(int *argc, char ***argv, int required, int *provided) { int flag; char *envval = 0; MPI_Initialized(&flag); if (!flag) { /* Permit an MPI that claims only MPI 1 but includes the * MPI_Init_thread routine (e.g., IBM MPI) */ #if MPI_VERSION >= 2 || defined(HAVE_MPI_INIT_THREAD) MPI_Init_thread(argc, argv, required, provided); #else MPI_Init(argc, argv); *provided = -1; #endif } /* Check for debugging control */ if (getenv("MPITEST_DEBUG")) { dbgflag = 1; MPI_Comm_rank(MPI_COMM_WORLD, &wrank); } /* Check for verbose control */ envval = getenv("MPITEST_VERBOSE"); if (envval) { char *s; long val = strtol(envval, &s, 0); if (s == envval) { /* This is the error case for strtol */ fprintf(stderr, "Warning: %s not valid for MPITEST_VERBOSE\n", envval); fflush(stderr); } else { if (val >= 0) { verbose = val; } else { fprintf(stderr, "Warning: %s not valid for MPITEST_VERBOSE\n", envval); fflush(stderr); } } } /* Check for option to return success/failure in the return value of main */ envval = getenv("MPITEST_RETURN_WITH_CODE"); if (envval) { if (strcmp(envval, "yes") == 0 || strcmp(envval, "YES") == 0 || strcmp(envval, "true") == 0 || strcmp(envval, "TRUE") == 0) { returnWithVal = 1; } else if (strcmp(envval, "no") == 0 || strcmp(envval, "NO") == 0 || strcmp(envval, "false") == 0 || strcmp(envval, "FALSE") == 0) { returnWithVal = 0; } else { fprintf(stderr, "Warning: %s not valid for MPITEST_RETURN_WITH_CODE\n", envval); fflush(stderr); } } /* Print rusage data if set */ if (getenv("MPITEST_RUSAGE")) { usageOutput = 1; } } /* * Initialize the tests, using an MPI-1 style init. Supports * MTEST_THREADLEVEL_DEFAULT to test with user-specified thread level */ void MTest_Init(int *argc, char ***argv) { int provided; #if MPI_VERSION >= 2 || defined(HAVE_MPI_INIT_THREAD) const char *str = 0; int threadLevel; threadLevel = MPI_THREAD_SINGLE; str = getenv("MTEST_THREADLEVEL_DEFAULT"); if (!str) str = getenv("MPITEST_THREADLEVEL_DEFAULT"); if (str && *str) { if (strcmp(str, "MULTIPLE") == 0 || strcmp(str, "multiple") == 0) { threadLevel = MPI_THREAD_MULTIPLE; } else if (strcmp(str, "SERIALIZED") == 0 || strcmp(str, "serialized") == 0) { threadLevel = MPI_THREAD_SERIALIZED; } else if (strcmp(str, "FUNNELED") == 0 || strcmp(str, "funneled") == 0) { threadLevel = MPI_THREAD_FUNNELED; } else if (strcmp(str, "SINGLE") == 0 || strcmp(str, "single") == 0) { threadLevel = MPI_THREAD_SINGLE; } else { fprintf(stderr, "Unrecognized thread level %s\n", str); /* Use exit since MPI_Init/Init_thread has not been called. */ exit(1); } } MTest_Init_thread(argc, argv, threadLevel, &provided); #else /* If the MPI_VERSION is 1, there is no MPI_THREAD_xxx defined */ MTest_Init_thread(argc, argv, 0, &provided); #endif } /* Finalize MTest. errs is the number of errors on the calling process; this routine will write the total number of errors over all of MPI_COMM_WORLD to the process with rank zero, or " No Errors". It does *not* finalize MPI. */ void MTest_Finalize(int errs) { int rank, toterrs, merr; merr = MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (merr) MTestPrintError(merr); merr = MPI_Reduce(&errs, &toterrs, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (merr) MTestPrintError(merr); if (rank == 0) { if (toterrs) { printf(" Found %d errors\n", toterrs); } else { printf(" No Errors\n"); } fflush(stdout); } if (usageOutput) MTestResourceSummary(stdout); /* Clean up any persistent objects that we allocated */ MTestRMACleanup(); } /* ------------------------------------------------------------------------ */ /* This routine may be used instead of "return 0;" at the end of main; it allows the program to use the return value to signal success or failure. */ int MTestReturnValue(int errors) { if (returnWithVal) return errors ? 1 : 0; return 0; } /* ------------------------------------------------------------------------ */ /* * Miscellaneous utilities, particularly to eliminate OS dependencies * from the tests. * MTestSleep(seconds) */ #ifdef HAVE_WINDOWS_H #include void MTestSleep(int sec) { Sleep(1000 * sec); } #else #include void MTestSleep(int sec) { sleep(sec); } #endif /* Other mtest subfiles read debug setting using this function. */ void MTestGetDbgInfo(int *_dbgflag, int *_verbose) { *_dbgflag = dbgflag; *_verbose = verbose; } /* ----------------------------------------------------------------------- */ /* * Create communicators. Use separate routines for inter and intra * communicators (there is a routine to give both) * Note that the routines may return MPI_COMM_NULL, so code should test for * that return value as well. * */ static int interCommIdx = 0; static int intraCommIdx = 0; static const char *intraCommName = 0; static const char *interCommName = 0; /* * Get an intracommunicator with at least min_size members. If "allowSmaller" * is true, allow the communicator to be smaller than MPI_COMM_WORLD and * for this routine to return MPI_COMM_NULL for some values. Returns 0 if * no more communicators are available. */ int MTestGetIntracommGeneral(MPI_Comm * comm, int min_size, int allowSmaller) { int size, rank, merr; int done = 0; int isBasic = 0; /* The while loop allows us to skip communicators that are too small. * MPI_COMM_NULL is always considered large enough */ while (!done) { isBasic = 0; intraCommName = ""; switch (intraCommIdx) { case 0: *comm = MPI_COMM_WORLD; isBasic = 1; intraCommName = "MPI_COMM_WORLD"; break; case 1: /* dup of world */ merr = MPI_Comm_dup(MPI_COMM_WORLD, comm); if (merr) MTestPrintError(merr); intraCommName = "Dup of MPI_COMM_WORLD"; break; case 2: /* reverse ranks */ merr = MPI_Comm_size(MPI_COMM_WORLD, &size); if (merr) MTestPrintError(merr); merr = MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (merr) MTestPrintError(merr); merr = MPI_Comm_split(MPI_COMM_WORLD, 0, size - rank, comm); if (merr) MTestPrintError(merr); intraCommName = "Rank reverse of MPI_COMM_WORLD"; break; case 3: /* subset of world, with reversed ranks */ merr = MPI_Comm_size(MPI_COMM_WORLD, &size); if (merr) MTestPrintError(merr); merr = MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (merr) MTestPrintError(merr); merr = MPI_Comm_split(MPI_COMM_WORLD, ((rank < size / 2) ? 1 : MPI_UNDEFINED), size - rank, comm); if (merr) MTestPrintError(merr); intraCommName = "Rank reverse of half of MPI_COMM_WORLD"; break; case 4: *comm = MPI_COMM_SELF; isBasic = 1; intraCommName = "MPI_COMM_SELF"; break; case 5: { /* Dup of the world using MPI_Intercomm_merge */ int rleader, isLeft; MPI_Comm local_comm, inter_comm; MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (size > 1) { merr = MPI_Comm_split(MPI_COMM_WORLD, (rank < size / 2), rank, &local_comm); if (merr) MTestPrintError(merr); if (rank == 0) { rleader = size / 2; } else if (rank == size / 2) { rleader = 0; } else { rleader = -1; } isLeft = rank < size / 2; merr = MPI_Intercomm_create(local_comm, 0, MPI_COMM_WORLD, rleader, 99, &inter_comm); if (merr) MTestPrintError(merr); merr = MPI_Intercomm_merge(inter_comm, isLeft, comm); if (merr) MTestPrintError(merr); MPI_Comm_free(&inter_comm); MPI_Comm_free(&local_comm); intraCommName = "Dup of WORLD created by MPI_Intercomm_merge"; } else { *comm = MPI_COMM_NULL; } } break; case 6: { #if MTEST_HAVE_MIN_MPI_VERSION(3,0) /* Even of the world using MPI_Comm_create_group */ int i; MPI_Group world_group, even_group; int *excl = NULL; MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (allowSmaller && (size + 1) / 2 >= min_size) { /* exclude the odd ranks */ excl = malloc((size / 2) * sizeof(int)); for (i = 0; i < size / 2; i++) excl[i] = (2 * i) + 1; MPI_Comm_group(MPI_COMM_WORLD, &world_group); MPI_Group_excl(world_group, size / 2, excl, &even_group); MPI_Group_free(&world_group); free(excl); if (rank % 2 == 0) { /* Even processes create a comm. for themselves */ MPI_Comm_create_group(MPI_COMM_WORLD, even_group, 0, comm); intraCommName = "Even of WORLD created by MPI_Comm_create_group"; } else { *comm = MPI_COMM_NULL; } MPI_Group_free(&even_group); } else { *comm = MPI_COMM_NULL; } #else *comm = MPI_COMM_NULL; #endif } break; case 7: { /* High half of the world using MPI_Comm_create */ int ranges[1][3]; MPI_Group world_group, high_group; MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); ranges[0][0] = size / 2; ranges[0][1] = size - 1; ranges[0][2] = 1; if (allowSmaller && (size + 1) / 2 >= min_size) { MPI_Comm_group(MPI_COMM_WORLD, &world_group); merr = MPI_Group_range_incl(world_group, 1, ranges, &high_group); if (merr) MTestPrintError(merr); merr = MPI_Comm_create(MPI_COMM_WORLD, high_group, comm); if (merr) MTestPrintError(merr); MPI_Group_free(&world_group); MPI_Group_free(&high_group); intraCommName = "High half of WORLD created by MPI_Comm_create"; } else { *comm = MPI_COMM_NULL; } } break; /* These next cases are communicators that include some * but not all of the processes */ case 8: case 9: case 10: case 11: { int newsize; merr = MPI_Comm_size(MPI_COMM_WORLD, &size); if (merr) MTestPrintError(merr); newsize = size - (intraCommIdx - 7); if (allowSmaller && newsize >= min_size) { merr = MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (merr) MTestPrintError(merr); merr = MPI_Comm_split(MPI_COMM_WORLD, rank < newsize, rank, comm); if (merr) MTestPrintError(merr); if (rank >= newsize) { merr = MPI_Comm_free(comm); if (merr) MTestPrintError(merr); *comm = MPI_COMM_NULL; } else { intraCommName = "Split of WORLD"; } } else { /* Act like default */ *comm = MPI_COMM_NULL; intraCommIdx = -1; } } break; /* Other ideas: dup of self, cart comm, graph comm */ default: *comm = MPI_COMM_NULL; intraCommIdx = -1; break; } if (*comm != MPI_COMM_NULL) { merr = MPI_Comm_size(*comm, &size); if (merr) MTestPrintError(merr); if (size >= min_size) done = 1; } else { intraCommName = "MPI_COMM_NULL"; isBasic = 1; done = 1; } /* we are only done if all processes are done */ MPI_Allreduce(MPI_IN_PLACE, &done, 1, MPI_INT, MPI_LAND, MPI_COMM_WORLD); /* Advance the comm index whether we are done or not, otherwise we could * spin forever trying to allocate a too-small communicator over and * over again. */ intraCommIdx++; if (!done && !isBasic && *comm != MPI_COMM_NULL) { /* avoid leaking communicators */ merr = MPI_Comm_free(comm); if (merr) MTestPrintError(merr); } } return intraCommIdx; } /* * Get an intracommunicator with at least min_size members. */ int MTestGetIntracomm(MPI_Comm * comm, int min_size) { return MTestGetIntracommGeneral(comm, min_size, 0); } /* Return the name of an intra communicator */ const char *MTestGetIntracommName(void) { return intraCommName; } /* * Return an intercomm; set isLeftGroup to 1 if the calling process is * a member of the "left" group. */ int MTestGetIntercomm(MPI_Comm * comm, int *isLeftGroup, int min_size) { int size, rank, remsize, merr; int done = 0; MPI_Comm mcomm = MPI_COMM_NULL; MPI_Comm mcomm2 = MPI_COMM_NULL; int rleader; /* The while loop allows us to skip communicators that are too small. * MPI_COMM_NULL is always considered large enough. The size is * the sum of the sizes of the local and remote groups */ while (!done) { *comm = MPI_COMM_NULL; *isLeftGroup = 0; interCommName = "MPI_COMM_NULL"; switch (interCommIdx) { case 0: /* Split comm world in half */ merr = MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (merr) MTestPrintError(merr); merr = MPI_Comm_size(MPI_COMM_WORLD, &size); if (merr) MTestPrintError(merr); if (size > 1) { merr = MPI_Comm_split(MPI_COMM_WORLD, (rank < size / 2), rank, &mcomm); if (merr) MTestPrintError(merr); if (rank == 0) { rleader = size / 2; } else if (rank == size / 2) { rleader = 0; } else { /* Remote leader is signficant only for the processes * designated local leaders */ rleader = -1; } *isLeftGroup = rank < size / 2; merr = MPI_Intercomm_create(mcomm, 0, MPI_COMM_WORLD, rleader, 12345, comm); if (merr) MTestPrintError(merr); interCommName = "Intercomm by splitting MPI_COMM_WORLD"; } else *comm = MPI_COMM_NULL; break; case 1: /* Split comm world in to 1 and the rest */ merr = MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (merr) MTestPrintError(merr); merr = MPI_Comm_size(MPI_COMM_WORLD, &size); if (merr) MTestPrintError(merr); if (size > 1) { merr = MPI_Comm_split(MPI_COMM_WORLD, rank == 0, rank, &mcomm); if (merr) MTestPrintError(merr); if (rank == 0) { rleader = 1; } else if (rank == 1) { rleader = 0; } else { /* Remote leader is signficant only for the processes * designated local leaders */ rleader = -1; } *isLeftGroup = rank == 0; merr = MPI_Intercomm_create(mcomm, 0, MPI_COMM_WORLD, rleader, 12346, comm); if (merr) MTestPrintError(merr); interCommName = "Intercomm by splitting MPI_COMM_WORLD into 1, rest"; } else *comm = MPI_COMM_NULL; break; case 2: /* Split comm world in to 2 and the rest */ merr = MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (merr) MTestPrintError(merr); merr = MPI_Comm_size(MPI_COMM_WORLD, &size); if (merr) MTestPrintError(merr); if (size > 3) { merr = MPI_Comm_split(MPI_COMM_WORLD, rank < 2, rank, &mcomm); if (merr) MTestPrintError(merr); if (rank == 0) { rleader = 2; } else if (rank == 2) { rleader = 0; } else { /* Remote leader is signficant only for the processes * designated local leaders */ rleader = -1; } *isLeftGroup = rank < 2; merr = MPI_Intercomm_create(mcomm, 0, MPI_COMM_WORLD, rleader, 12347, comm); if (merr) MTestPrintError(merr); interCommName = "Intercomm by splitting MPI_COMM_WORLD into 2, rest"; } else *comm = MPI_COMM_NULL; break; case 3: /* Split comm world in half, then dup */ merr = MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (merr) MTestPrintError(merr); merr = MPI_Comm_size(MPI_COMM_WORLD, &size); if (merr) MTestPrintError(merr); if (size > 1) { merr = MPI_Comm_split(MPI_COMM_WORLD, (rank < size / 2), rank, &mcomm); if (merr) MTestPrintError(merr); if (rank == 0) { rleader = size / 2; } else if (rank == size / 2) { rleader = 0; } else { /* Remote leader is signficant only for the processes * designated local leaders */ rleader = -1; } *isLeftGroup = rank < size / 2; merr = MPI_Intercomm_create(mcomm, 0, MPI_COMM_WORLD, rleader, 12345, comm); if (merr) MTestPrintError(merr); /* avoid leaking after assignment below */ merr = MPI_Comm_free(&mcomm); if (merr) MTestPrintError(merr); /* now dup, some bugs only occur for dup's of intercomms */ mcomm = *comm; merr = MPI_Comm_dup(mcomm, comm); if (merr) MTestPrintError(merr); interCommName = "Intercomm by splitting MPI_COMM_WORLD then dup'ing"; } else *comm = MPI_COMM_NULL; break; case 4: /* Split comm world in half, form intercomm, then split that intercomm */ merr = MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (merr) MTestPrintError(merr); merr = MPI_Comm_size(MPI_COMM_WORLD, &size); if (merr) MTestPrintError(merr); if (size > 1) { merr = MPI_Comm_split(MPI_COMM_WORLD, (rank < size / 2), rank, &mcomm); if (merr) MTestPrintError(merr); if (rank == 0) { rleader = size / 2; } else if (rank == size / 2) { rleader = 0; } else { /* Remote leader is signficant only for the processes * designated local leaders */ rleader = -1; } *isLeftGroup = rank < size / 2; merr = MPI_Intercomm_create(mcomm, 0, MPI_COMM_WORLD, rleader, 12345, comm); if (merr) MTestPrintError(merr); /* avoid leaking after assignment below */ merr = MPI_Comm_free(&mcomm); if (merr) MTestPrintError(merr); /* now split, some bugs only occur for splits of intercomms */ mcomm = *comm; merr = MPI_Comm_rank(mcomm, &rank); if (merr) MTestPrintError(merr); /* this split is effectively a dup but tests the split code paths */ merr = MPI_Comm_split(mcomm, 0, rank, comm); if (merr) MTestPrintError(merr); interCommName = "Intercomm by splitting MPI_COMM_WORLD then then splitting again"; } else *comm = MPI_COMM_NULL; break; case 5: /* split comm world in half discarding rank 0 on the "left" * communicator, then form them into an intercommunicator */ merr = MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (merr) MTestPrintError(merr); merr = MPI_Comm_size(MPI_COMM_WORLD, &size); if (merr) MTestPrintError(merr); if (size >= 4) { int color = (rank < size / 2 ? 0 : 1); if (rank == 0) color = MPI_UNDEFINED; merr = MPI_Comm_split(MPI_COMM_WORLD, color, rank, &mcomm); if (merr) MTestPrintError(merr); if (rank == 1) { rleader = size / 2; } else if (rank == (size / 2)) { rleader = 1; } else { /* Remote leader is signficant only for the processes * designated local leaders */ rleader = -1; } *isLeftGroup = rank < size / 2; if (rank != 0) { /* 0's mcomm is MPI_COMM_NULL */ merr = MPI_Intercomm_create(mcomm, 0, MPI_COMM_WORLD, rleader, 12345, comm); if (merr) MTestPrintError(merr); } interCommName = "Intercomm by splitting MPI_COMM_WORLD (discarding rank 0 in the left group) then MPI_Intercomm_create'ing"; } else { *comm = MPI_COMM_NULL; } break; case 6: /* Split comm world in half then form them into an * intercommunicator. Then discard rank 0 from each group of the * intercomm via MPI_Comm_create. */ merr = MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (merr) MTestPrintError(merr); merr = MPI_Comm_size(MPI_COMM_WORLD, &size); if (merr) MTestPrintError(merr); if (size >= 4) { MPI_Group oldgroup, newgroup; int ranks[1]; int color = (rank < size / 2 ? 0 : 1); merr = MPI_Comm_split(MPI_COMM_WORLD, color, rank, &mcomm); if (merr) MTestPrintError(merr); if (rank == 0) { rleader = size / 2; } else if (rank == (size / 2)) { rleader = 0; } else { /* Remote leader is signficant only for the processes * designated local leaders */ rleader = -1; } *isLeftGroup = rank < size / 2; merr = MPI_Intercomm_create(mcomm, 0, MPI_COMM_WORLD, rleader, 12345, &mcomm2); if (merr) MTestPrintError(merr); /* We have an intercomm between the two halves of comm world. Now create * a new intercomm that removes rank 0 on each side. */ merr = MPI_Comm_group(mcomm2, &oldgroup); if (merr) MTestPrintError(merr); ranks[0] = 0; merr = MPI_Group_excl(oldgroup, 1, ranks, &newgroup); if (merr) MTestPrintError(merr); merr = MPI_Comm_create(mcomm2, newgroup, comm); if (merr) MTestPrintError(merr); merr = MPI_Group_free(&oldgroup); if (merr) MTestPrintError(merr); merr = MPI_Group_free(&newgroup); if (merr) MTestPrintError(merr); interCommName = "Intercomm by splitting MPI_COMM_WORLD then discarding 0 ranks with MPI_Comm_create"; } else { *comm = MPI_COMM_NULL; } break; default: *comm = MPI_COMM_NULL; interCommIdx = -1; break; } if (*comm != MPI_COMM_NULL) { merr = MPI_Comm_size(*comm, &size); if (merr) MTestPrintError(merr); merr = MPI_Comm_remote_size(*comm, &remsize); if (merr) MTestPrintError(merr); if (size + remsize >= min_size) done = 1; } else { interCommName = "MPI_COMM_NULL"; done = 1; } /* we are only done if all processes are done */ MPI_Allreduce(MPI_IN_PLACE, &done, 1, MPI_INT, MPI_LAND, MPI_COMM_WORLD); /* Advance the comm index whether we are done or not, otherwise we could * spin forever trying to allocate a too-small communicator over and * over again. */ interCommIdx++; if (!done && *comm != MPI_COMM_NULL) { /* avoid leaking communicators */ merr = MPI_Comm_free(comm); if (merr) MTestPrintError(merr); } /* cleanup for common temp objects */ if (mcomm != MPI_COMM_NULL) { merr = MPI_Comm_free(&mcomm); if (merr) MTestPrintError(merr); } if (mcomm2 != MPI_COMM_NULL) { merr = MPI_Comm_free(&mcomm2); if (merr) MTestPrintError(merr); } } return interCommIdx; } int MTestTestIntercomm(MPI_Comm comm) { int local_size, remote_size, rank, **bufs, *bufmem, rbuf[2], j; int errs = 0, wrank, nsize; char commname[MPI_MAX_OBJECT_NAME + 1]; MPI_Request *reqs; MPI_Comm_rank(MPI_COMM_WORLD, &wrank); MPI_Comm_size(comm, &local_size); MPI_Comm_remote_size(comm, &remote_size); MPI_Comm_rank(comm, &rank); MPI_Comm_get_name(comm, commname, &nsize); MTestPrintfMsg(1, "Testing communication on intercomm '%s', remote_size=%d\n", commname, remote_size); reqs = (MPI_Request *) malloc(remote_size * sizeof(MPI_Request)); if (!reqs) { printf("[%d] Unable to allocated %d requests for testing intercomm %s\n", wrank, remote_size, commname); errs++; return errs; } bufs = (int **) malloc(remote_size * sizeof(int *)); if (!bufs) { printf("[%d] Unable to allocated %d int pointers for testing intercomm %s\n", wrank, remote_size, commname); errs++; return errs; } bufmem = (int *) malloc(remote_size * 2 * sizeof(int)); if (!bufmem) { printf("[%d] Unable to allocated %d int data for testing intercomm %s\n", wrank, 2 * remote_size, commname); errs++; return errs; } /* Each process sends a message containing its own rank and the * rank of the destination with a nonblocking send. Because we're using * nonblocking sends, we need to use different buffers for each isend */ /* NOTE: the send buffer access restriction was relaxed in MPI-2.2, although * it doesn't really hurt to keep separate buffers for our purposes */ for (j = 0; j < remote_size; j++) { bufs[j] = &bufmem[2 * j]; bufs[j][0] = rank; bufs[j][1] = j; MPI_Isend(bufs[j], 2, MPI_INT, j, 0, comm, &reqs[j]); } MTestPrintfMsg(2, "isends posted, about to recv\n"); for (j = 0; j < remote_size; j++) { MPI_Recv(rbuf, 2, MPI_INT, j, 0, comm, MPI_STATUS_IGNORE); if (rbuf[0] != j) { printf("[%d] Expected rank %d but saw %d in %s\n", wrank, j, rbuf[0], commname); errs++; } if (rbuf[1] != rank) { printf("[%d] Expected target rank %d but saw %d from %d in %s\n", wrank, rank, rbuf[1], j, commname); errs++; } } if (errs) fflush(stdout); MTestPrintfMsg(2, "my recvs completed, about to waitall\n"); MPI_Waitall(remote_size, reqs, MPI_STATUSES_IGNORE); free(reqs); free(bufs); free(bufmem); return errs; } int MTestTestIntracomm(MPI_Comm comm) { int i, errs = 0; int size; int in[16], out[16], sol[16]; MPI_Comm_size(comm, &size); /* Set input, output and sol-values */ for (i = 0; i < 16; i++) { in[i] = i; out[i] = 0; sol[i] = i * size; } MPI_Allreduce(in, out, 16, MPI_INT, MPI_SUM, comm); /* Test results */ for (i = 0; i < 16; i++) { if (sol[i] != out[i]) errs++; } return errs; } int MTestTestComm(MPI_Comm comm) { int is_inter; if (comm == MPI_COMM_NULL) return 0; MPI_Comm_test_inter(comm, &is_inter); if (is_inter) return MTestTestIntercomm(comm); else return MTestTestIntracomm(comm); } /* Return the name of an intercommunicator */ const char *MTestGetIntercommName(void) { return interCommName; } /* Get a communicator of a given minimum size. Both intra and inter communicators are provided */ int MTestGetComm(MPI_Comm * comm, int min_size) { int idx = 0; static int getinter = 0; if (!getinter) { idx = MTestGetIntracomm(comm, min_size); if (idx == 0) { getinter = 1; } } if (getinter) { int isLeft; idx = MTestGetIntercomm(comm, &isLeft, min_size); if (idx == 0) { getinter = 0; } } return idx; } /* Free a communicator. It may be called with a predefined communicator or MPI_COMM_NULL */ void MTestFreeComm(MPI_Comm * comm) { int merr; if (*comm != MPI_COMM_WORLD && *comm != MPI_COMM_SELF && *comm != MPI_COMM_NULL) { merr = MPI_Comm_free(comm); if (merr) MTestPrintError(merr); } } /* ------------------------------------------------------------------------ */ void MTestPrintError(int errcode) { int errclass, slen; char string[MPI_MAX_ERROR_STRING]; MPI_Error_class(errcode, &errclass); MPI_Error_string(errcode, string, &slen); printf("Error class %d (%s)\n", errclass, string); fflush(stdout); } void MTestPrintErrorMsg(const char msg[], int errcode) { int errclass, slen; char string[MPI_MAX_ERROR_STRING]; MPI_Error_class(errcode, &errclass); MPI_Error_string(errcode, string, &slen); printf("%s: Error class %d (%s)\n", msg, errclass, string); fflush(stdout); } /* ------------------------------------------------------------------------ */ /* If verbose output is selected and the level is at least that of the value of the verbose flag, then perform printf(format, ...); */ void MTestPrintfMsg(int level, const char format[], ...) { va_list list; int n; if (verbose && level >= verbose) { va_start(list, format); n = vprintf(format, list); va_end(list); fflush(stdout); } } /* Fatal error. Report and exit */ void MTestError(const char *msg) { fprintf(stderr, "%s\n", msg); fflush(stderr); MPI_Abort(MPI_COMM_WORLD, 1); } /* ------------------------------------------------------------------------ */ static void MTestResourceSummary(FILE * fp) { #ifdef HAVE_GETRUSAGE struct rusage ru; static int pfThreshold = -2; int doOutput = 1; if (getrusage(RUSAGE_SELF, &ru) == 0) { /* There is an option to generate output only when a resource * exceeds a threshold. To date, only page faults supported. */ if (pfThreshold == -2) { char *p = getenv("MPITEST_RUSAGE_PF"); pfThreshold = -1; if (p) { pfThreshold = strtol(p, 0, 0); } } if (pfThreshold > 0) { doOutput = ru.ru_minflt > pfThreshold; } if (doOutput) { /* Cast values to long in case some system has defined them * as another integer type */ fprintf(fp, "RUSAGE: max resident set = %ldKB\n", (long) ru.ru_maxrss); fprintf(fp, "RUSAGE: page faults = %ld : %ld\n", (long) ru.ru_minflt, (long) ru.ru_majflt); /* Not every Unix provides useful information for the xxrss fields */ fprintf(fp, "RUSAGE: memory in text/data/stack = %ld : %ld : %ld\n", (long) ru.ru_ixrss, (long) ru.ru_idrss, (long) ru.ru_isrss); fprintf(fp, "RUSAGE: I/O in and out = %ld : %ld\n", (long) ru.ru_inblock, (long) ru.ru_oublock); fprintf(fp, "RUSAGE: context switch = %ld : %ld\n", (long) ru.ru_nvcsw, (long) ru.ru_nivcsw); } } else { fprintf(fp, "RUSAGE: return error %d\n", errno); } #endif } /* ------------------------------------------------------------------------ */ #ifdef HAVE_MPI_WIN_CREATE /* * Create MPI Windows */ static int win_index = 0; static const char *winName; /* Use an attribute to remember the type of memory allocation (static, malloc, or MPI_Alloc_mem) */ static int mem_keyval = MPI_KEYVAL_INVALID; int MTestGetWin(MPI_Win * win, int mustBePassive) { static char actbuf[1024]; static char *pasbuf; char *buf; int n, rank, merr; MPI_Info info; if (mem_keyval == MPI_KEYVAL_INVALID) { /* Create the keyval */ merr = MPI_Win_create_keyval(MPI_WIN_NULL_COPY_FN, MPI_WIN_NULL_DELETE_FN, &mem_keyval, 0); if (merr) MTestPrintError(merr); } switch (win_index) { case 0: /* Active target window */ merr = MPI_Win_create(actbuf, 1024, 1, MPI_INFO_NULL, MPI_COMM_WORLD, win); if (merr) MTestPrintError(merr); winName = "active-window"; merr = MPI_Win_set_attr(*win, mem_keyval, (void *) 0); if (merr) MTestPrintError(merr); break; case 1: /* Passive target window */ merr = MPI_Alloc_mem(1024, MPI_INFO_NULL, &pasbuf); if (merr) MTestPrintError(merr); merr = MPI_Win_create(pasbuf, 1024, 1, MPI_INFO_NULL, MPI_COMM_WORLD, win); if (merr) MTestPrintError(merr); winName = "passive-window"; merr = MPI_Win_set_attr(*win, mem_keyval, (void *) 2); if (merr) MTestPrintError(merr); break; case 2: /* Active target; all windows different sizes */ merr = MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (merr) MTestPrintError(merr); n = rank * 64; if (n) buf = (char *) malloc(n); else buf = 0; merr = MPI_Win_create(buf, n, 1, MPI_INFO_NULL, MPI_COMM_WORLD, win); if (merr) MTestPrintError(merr); winName = "active-all-different-win"; merr = MPI_Win_set_attr(*win, mem_keyval, (void *) 1); if (merr) MTestPrintError(merr); break; case 3: /* Active target, no locks set */ merr = MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (merr) MTestPrintError(merr); n = rank * 64; if (n) buf = (char *) malloc(n); else buf = 0; merr = MPI_Info_create(&info); if (merr) MTestPrintError(merr); merr = MPI_Info_set(info, (char *) "nolocks", (char *) "true"); if (merr) MTestPrintError(merr); merr = MPI_Win_create(buf, n, 1, info, MPI_COMM_WORLD, win); if (merr) MTestPrintError(merr); merr = MPI_Info_free(&info); if (merr) MTestPrintError(merr); winName = "active-nolocks-all-different-win"; merr = MPI_Win_set_attr(*win, mem_keyval, (void *) 1); if (merr) MTestPrintError(merr); break; default: win_index = -1; } win_index++; return win_index; } /* Return a pointer to the name associated with a window object */ const char *MTestGetWinName(void) { return winName; } /* Free the storage associated with a window object */ void MTestFreeWin(MPI_Win * win) { void *addr; int flag, merr; merr = MPI_Win_get_attr(*win, MPI_WIN_BASE, &addr, &flag); if (merr) MTestPrintError(merr); if (!flag) { MTestError("Could not get WIN_BASE from window"); } if (addr) { void *val; merr = MPI_Win_get_attr(*win, mem_keyval, &val, &flag); if (merr) MTestPrintError(merr); if (flag) { if (val == (void *) 1) { free(addr); } else if (val == (void *) 2) { merr = MPI_Free_mem(addr); if (merr) MTestPrintError(merr); } /* if val == (void *)0, then static data that must not be freed */ } } merr = MPI_Win_free(win); if (merr) MTestPrintError(merr); } static void MTestRMACleanup(void) { if (mem_keyval != MPI_KEYVAL_INVALID) { MPI_Win_free_keyval(&mem_keyval); } } #else static void MTestRMACleanup(void) { } #endif /* ------------------------------------------------------------------------ */ /* This function determines if it is possible to spawn addition MPI * processes using MPI_COMM_SPAWN and MPI_COMM_SPAWN_MULTIPLE. * * It sets the can_spawn value to one of the following: * 1 = yes, additional processes can be spawned * 0 = no, MPI_UNIVERSE_SIZE <= the size of MPI_COMM_WORLD * -1 = it is unknown whether or not processes can be spawned * due to errors in the necessary query functions * */ int MTestSpawnPossible(int *can_spawn) { int errs = 0; void *v = NULL; int flag = -1; int vval = -1; int rc; rc = MPI_Comm_get_attr(MPI_COMM_WORLD, MPI_UNIVERSE_SIZE, &v, &flag); if (rc != MPI_SUCCESS) { /* MPI_UNIVERSE_SIZE keyval missing from MPI_COMM_WORLD attributes */ *can_spawn = -1; errs++; } else { /* MPI_UNIVERSE_SIZE need not be set */ if (flag) { int size = -1; rc = MPI_Comm_size(MPI_COMM_WORLD, &size); if (rc != MPI_SUCCESS) { /* MPI_Comm_size failed for MPI_COMM_WORLD */ *can_spawn = -1; errs++; } vval = *(int *) v; if (vval <= size) { /* no additional processes can be spawned */ *can_spawn = 0; } else { *can_spawn = 1; } } else { /* No attribute associated with key MPI_UNIVERSE_SIZE of MPI_COMM_WORLD */ *can_spawn = -1; } } return errs; } /* ------------------------------------------------------------------------ */ mpi-testsuite-3.2+dfsg/util/mtest_datatype_gen.c0000644000175000017500000005224012620254305021364 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mtest_datatype.h" #if defined(HAVE_STDIO_H) || defined(STDC_HEADERS) #include #endif #if defined(HAVE_STDLIB_H) || defined(STDC_HEADERS) #include #endif #if defined(HAVE_STRING_H) || defined(STDC_HEADERS) #include #endif #ifdef HAVE_STDARG_H #include #endif /* The following two includes permit the collection of resource usage data in the tests */ #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_RESOURCE_H #include #endif #include static int dbgflag = 0; /* Flag used for debugging */ static int wrank = -1; /* World rank */ static int verbose = 0; /* Message level (0 is none) */ /* * Utility routines for writing MPI datatype communication tests. * * Both basic and derived datatype are included. * For basic datatypes, every type has a test case that both the send and * receive buffer use the same datatype and count. * * For derived datatypes: * All the test cases are defined in this file, and the datatype definitions * are in file mtest_datatype.c. Each test case will be automatically called * by every datatype. * * Test case generation: * Every datatype tests derived datatype send buffer and * derived datatype receive buffer separately. Each test contains various sub * tests for different structures (i.e., different value of count or block * length). The following four structures are defined: * L count & S block length & S stride * S count & L block length & S stride * L count & S block length & L stride * S count & L block length & L stride * S count & L block length & S stride & S lower-bound * contiguous (stride = block length) * contiguous (stride = block length) & S lower-bound * * How to add a new structure for each datatype: * 1. Add structure definition in function MTestDdtStructDefine. * 2. Increase MTEST_DDT_NUM_SUBTESTS * * Datatype definition: * Every type is initialized by the creation function stored in * mtestDdtCreators variable, all of their create/init/check functions are * defined in file mtest_datatype.c. * * How to add a new derived datatype: * 1. Add the new datatype in enum MTEST_DERIVED_DT. * 2. Add its create/init/check functions in file mtest_datatype.c * 3. Add its creator function to mtestDdtCreators variable * * Following three test levels of datatype are defined. * 1. Basic * All basic datatypes * 2. Minimum * All basic datatypes | Vector | Indexed * 3. Full * All basic datatypes | Vector | Hvector | Indexed | Hindexed | * Indexed-block | Hindexed-block | Subarray with order-C | Subarray with order-Fortran * * There are two ways to specify the test level of datatype. The second way has * higher priority (means the value specified by the first way will be overwritten * by that in the second way). * 1. Specify global test level by setting the MPITEST_DATATYPE_TEST_LEVEL * environment variable before execution (basic,min,full|full by default). * 2. Initialize a special level for a datatype loop by calling the corresponding * initialization function before that loop, otherwise the default value specified * in the first way is used. * Basic : MTestInitBasicDatatypes * Minimum : MTestInitMinDatatypes * Full : MTestInitFullDatatypes */ static int datatype_index = 0; /* ------------------------------------------------------------------------ */ /* Routine and internal parameters to define the range of datatype tests */ /* ------------------------------------------------------------------------ */ #define MTEST_DDT_NUM_SUBTESTS 7 /* 7 kinds of derived datatype structure */ static MTestDdtCreator mtestDdtCreators[MTEST_DDT_MAX]; static int MTEST_BDT_START_IDX = -1; static int MTEST_BDT_NUM_TESTS = 0; static int MTEST_BDT_RANGE = 0; static int MTEST_DDT_NUM_TYPES = 0; static int MTEST_SEND_DDT_START_IDX = 0; static int MTEST_SEND_DDT_NUM_TESTS = 0; static int MTEST_SEND_DDT_RANGE = 0; static int MTEST_RECV_DDT_START_IDX = 0; static int MTEST_RECV_DDT_NUM_TESTS = 0; static int MTEST_RECV_DDT_RANGE = 0; enum { MTEST_DATATYPE_TEST_LEVEL_FULL, MTEST_DATATYPE_TEST_LEVEL_MIN, MTEST_DATATYPE_TEST_LEVEL_BASIC }; /* current datatype test level */ static int MTEST_DATATYPE_TEST_LEVEL = MTEST_DATATYPE_TEST_LEVEL_FULL; /* default datatype test level specified by environment variable */ static int MTEST_DATATYPE_TEST_LEVEL_ENV = -1; /* default datatype initialization function */ static void (*MTestInitDefaultTestFunc) (void) = NULL; static void MTestInitDatatypeGen(int basic_dt_num, int derived_dt_num) { MTEST_BDT_START_IDX = 0; MTEST_BDT_NUM_TESTS = basic_dt_num; MTEST_BDT_RANGE = MTEST_BDT_START_IDX + MTEST_BDT_NUM_TESTS; MTEST_DDT_NUM_TYPES = derived_dt_num; MTEST_SEND_DDT_START_IDX = MTEST_BDT_NUM_TESTS; MTEST_SEND_DDT_NUM_TESTS = MTEST_DDT_NUM_TYPES * MTEST_DDT_NUM_SUBTESTS; MTEST_SEND_DDT_RANGE = MTEST_SEND_DDT_START_IDX + MTEST_SEND_DDT_NUM_TESTS; MTEST_RECV_DDT_START_IDX = MTEST_SEND_DDT_START_IDX + MTEST_SEND_DDT_NUM_TESTS; MTEST_RECV_DDT_NUM_TESTS = MTEST_DDT_NUM_TYPES * MTEST_DDT_NUM_SUBTESTS; MTEST_RECV_DDT_RANGE = MTEST_RECV_DDT_START_IDX + MTEST_RECV_DDT_NUM_TESTS; } static int MTestIsDatatypeGenInited() { return (MTEST_BDT_START_IDX < 0) ? 0 : 1; } static void MTestPrintDatatypeGen() { MTestPrintfMsg(1, "MTest datatype test level : %s. %d basic datatype tests, " "%d derived datatype tests will be generated\n", (MTEST_DATATYPE_TEST_LEVEL == MTEST_DATATYPE_TEST_LEVEL_FULL) ? "FULL" : "MIN", MTEST_BDT_NUM_TESTS, MTEST_SEND_DDT_NUM_TESTS + MTEST_RECV_DDT_NUM_TESTS); } static void MTestResetDatatypeGen() { MTEST_BDT_START_IDX = -1; } void MTestInitFullDatatypes(void) { /* Do not allow to change datatype test level during loop. * Otherwise indexes will be wrong. * Test must explicitly call reset or wait for current datatype loop being * done before changing to another test level. */ if (!MTestIsDatatypeGenInited()) { MTEST_DATATYPE_TEST_LEVEL = MTEST_DATATYPE_TEST_LEVEL_FULL; MTestTypeCreatorInit((MTestDdtCreator *) mtestDdtCreators); MTestInitDatatypeGen(MTEST_BDT_MAX, MTEST_DDT_MAX); } else { printf("Warning: trying to reinitialize mtest datatype during " "datatype iteration!"); } } void MTestInitMinDatatypes(void) { /* Do not allow to change datatype test level during loop. * Otherwise indexes will be wrong. * Test must explicitly call reset or wait for current datatype loop being * done before changing to another test level. */ if (!MTestIsDatatypeGenInited()) { MTEST_DATATYPE_TEST_LEVEL = MTEST_DATATYPE_TEST_LEVEL_MIN; MTestTypeMinCreatorInit((MTestDdtCreator *) mtestDdtCreators); MTestInitDatatypeGen(MTEST_BDT_MAX, MTEST_MIN_DDT_MAX); } else { printf("Warning: trying to reinitialize mtest datatype during " "datatype iteration!"); } } void MTestInitBasicDatatypes(void) { /* Do not allow to change datatype test level during loop. * Otherwise indexes will be wrong. * Test must explicitly call reset or wait for current datatype loop being * done before changing to another test level. */ if (!MTestIsDatatypeGenInited()) { MTEST_DATATYPE_TEST_LEVEL = MTEST_DATATYPE_TEST_LEVEL_BASIC; MTestInitDatatypeGen(MTEST_BDT_MAX, 0); } else { printf("Warning: trying to reinitialize mtest datatype during " "datatype iteration!"); } } static inline void MTestInitDatatypeEnv() { char *envval = 0; /* Read global test level specified by user environment variable. * Only initialize once at the first time that test calls datatype routine. */ if (MTEST_DATATYPE_TEST_LEVEL_ENV > -1) return; /* default full */ MTEST_DATATYPE_TEST_LEVEL_ENV = MTEST_DATATYPE_TEST_LEVEL_FULL; MTestInitDefaultTestFunc = MTestInitFullDatatypes; envval = getenv("MPITEST_DATATYPE_TEST_LEVEL"); if (envval && strlen(envval)) { if (!strncmp(envval, "min", strlen("min"))) { MTEST_DATATYPE_TEST_LEVEL_ENV = MTEST_DATATYPE_TEST_LEVEL_MIN; MTestInitDefaultTestFunc = MTestInitMinDatatypes; } else if (!strncmp(envval, "basic", strlen("basic"))) { MTEST_DATATYPE_TEST_LEVEL_ENV = MTEST_DATATYPE_TEST_LEVEL_BASIC; MTestInitDefaultTestFunc = MTestInitBasicDatatypes; } else if (strncmp(envval, "full", strlen("full"))) { fprintf(stderr, "Unknown MPITEST_DATATYPE_TEST_LEVEL %s\n", envval); } } } /* -------------------------------------------------------------------------------*/ /* Routine to define various sets of blocklen/count/stride for derived datatypes. */ /* ------------------------------------------------------------------------------ */ static inline int MTestDdtStructDefine(int ddt_index, MPI_Aint tot_count, MPI_Aint * count, MPI_Aint * blen, MPI_Aint * stride, MPI_Aint * align_tot_count, MPI_Aint * lb) { int merr = 0; int ddt_c_st; MPI_Aint _short = 0, _align_tot_count = 0, _count = 0, _blen = 0, _stride = 0; MPI_Aint _lb = 0; ddt_c_st = ddt_index % MTEST_DDT_NUM_SUBTESTS; /* Get short value according to user specified tot_count. * It is used as count for large-block-length structure, or block length * for large-count structure. */ if (tot_count < 2) { _short = 1; } else if (tot_count < 64) { _short = 2; } else { _short = 64; } _align_tot_count = (tot_count + _short - 1) & ~(_short - 1); switch (ddt_c_st) { case 0: /* Large block length. */ _count = _short; _blen = _align_tot_count / _short; _stride = _blen * 2; break; case 1: /* Large count */ _count = _align_tot_count / _short; _blen = _short; _stride = _blen * 2; break; case 2: /* Large block length and large stride */ _count = _short; _blen = _align_tot_count / _short; _stride = _blen * 10; break; case 3: /* Large count and large stride */ _count = _align_tot_count / _short; _blen = _short; _stride = _blen * 10; break; case 4: /* Large block length with lb */ _count = _short; _blen = _align_tot_count / _short; _stride = _blen * 2; _lb = _short / 2; /* make sure lb < blen */ break; case 5: /* Contig ddt (stride = block length) without lb */ _count = _align_tot_count / _short; _blen = _short; _stride = _blen; break; case 6: /* Contig ddt (stride = block length) with lb */ _count = _short; _blen = _align_tot_count / _short; _stride = _blen; _lb = _short / 2; /* make sure lb < blen */ break; default: /* Undefined index */ merr = 1; break; } *align_tot_count = _align_tot_count; *count = _count; *blen = _blen; *stride = _stride; *lb = _lb; return merr; } /* ------------------------------------------------------------------------ */ /* Routine to generate basic datatypes */ /* ------------------------------------------------------------------------ */ static inline int MTestGetBasicDatatypes(MTestDatatype * sendtype, MTestDatatype * recvtype, MPI_Aint tot_count) { int merr = 0; int bdt_index = datatype_index - MTEST_BDT_START_IDX; if (bdt_index >= MTEST_BDT_MAX) { printf("Wrong index: global %d, bst %d in %s\n", datatype_index, bdt_index, __FUNCTION__); merr++; return merr; } switch (bdt_index) { case MTEST_BDT_INT: merr = MTestTypeBasicCreate(MPI_INT, sendtype); merr = MTestTypeBasicCreate(MPI_INT, recvtype); break; case MTEST_BDT_DOUBLE: merr = MTestTypeBasicCreate(MPI_DOUBLE, sendtype); merr = MTestTypeBasicCreate(MPI_DOUBLE, recvtype); break; case MTEST_BDT_FLOAT_INT: merr = MTestTypeBasicCreate(MPI_FLOAT_INT, sendtype); merr = MTestTypeBasicCreate(MPI_FLOAT_INT, recvtype); break; case MTEST_BDT_SHORT: merr = MTestTypeBasicCreate(MPI_SHORT, sendtype); merr = MTestTypeBasicCreate(MPI_SHORT, recvtype); break; case MTEST_BDT_LONG: merr = MTestTypeBasicCreate(MPI_LONG, sendtype); merr = MTestTypeBasicCreate(MPI_LONG, recvtype); break; case MTEST_BDT_CHAR: merr = MTestTypeBasicCreate(MPI_CHAR, sendtype); merr = MTestTypeBasicCreate(MPI_CHAR, recvtype); break; case MTEST_BDT_UINT64_T: merr = MTestTypeBasicCreate(MPI_UINT64_T, sendtype); merr = MTestTypeBasicCreate(MPI_UINT64_T, recvtype); break; case MTEST_BDT_FLOAT: merr = MTestTypeBasicCreate(MPI_FLOAT, sendtype); merr = MTestTypeBasicCreate(MPI_FLOAT, recvtype); break; case MTEST_BDT_BYTE: merr = MTestTypeBasicCreate(MPI_BYTE, sendtype); merr = MTestTypeBasicCreate(MPI_BYTE, recvtype); break; } sendtype->count = tot_count; recvtype->count = tot_count; return merr; } /* ------------------------------------------------------------------------ */ /* Routine to generate send/receive derived datatypes */ /* ------------------------------------------------------------------------ */ static inline int MTestGetSendDerivedDatatypes(MTestDatatype * sendtype, MTestDatatype * recvtype, MPI_Aint tot_count) { int merr = 0; int ddt_datatype_index, ddt_c_dt; MPI_Aint blen, stride, count, align_tot_count, lb; MPI_Datatype old_type = MPI_DOUBLE; /* Check index */ ddt_datatype_index = datatype_index - MTEST_SEND_DDT_START_IDX; ddt_c_dt = ddt_datatype_index / MTEST_DDT_NUM_SUBTESTS; if (ddt_c_dt >= MTEST_DDT_MAX || !mtestDdtCreators[ddt_c_dt]) { printf("Wrong index: global %d, send %d send-ddt %d, or undefined creator in %s\n", datatype_index, ddt_datatype_index, ddt_c_dt, __FUNCTION__); merr++; return merr; } /* Set datatype structure */ merr = MTestDdtStructDefine(ddt_datatype_index, tot_count, &count, &blen, &stride, &align_tot_count, &lb); if (merr) { printf("Wrong index: global %d, send %d send-ddt %d, or undefined ddt structure in %s\n", datatype_index, ddt_datatype_index, ddt_c_dt, __FUNCTION__); merr++; return merr; } /* Create send datatype */ merr = mtestDdtCreators[ddt_c_dt] (count, blen, stride, lb, old_type, "send", sendtype); if (merr) return merr; sendtype->count = 1; /* Create receive datatype */ merr = MTestTypeBasicCreate(old_type, recvtype); if (merr) return merr; recvtype->count = sendtype->count * align_tot_count; return merr; } static inline int MTestGetRecvDerivedDatatypes(MTestDatatype * sendtype, MTestDatatype * recvtype, MPI_Aint tot_count) { int merr = 0; int ddt_datatype_index, ddt_c_dt; MPI_Aint blen, stride, count, align_tot_count, lb; MPI_Datatype old_type = MPI_DOUBLE; /* Check index */ ddt_datatype_index = datatype_index - MTEST_RECV_DDT_START_IDX; ddt_c_dt = ddt_datatype_index / MTEST_DDT_NUM_SUBTESTS; if (ddt_c_dt >= MTEST_DDT_MAX || !mtestDdtCreators[ddt_c_dt]) { printf("Wrong index: global %d, recv %d recv-ddt %d, or undefined creator in %s\n", datatype_index, ddt_datatype_index, ddt_c_dt, __FUNCTION__); merr++; return merr; } /* Set datatype structure */ merr = MTestDdtStructDefine(ddt_datatype_index, tot_count, &count, &blen, &stride, &align_tot_count, &lb); if (merr) { printf("Wrong index: global %d, recv %d recv-ddt %d, or undefined ddt structure in %s\n", datatype_index, ddt_datatype_index, ddt_c_dt, __FUNCTION__); return merr; } /* Create receive datatype */ merr = mtestDdtCreators[ddt_c_dt] (count, blen, stride, lb, old_type, "recv", recvtype); if (merr) return merr; recvtype->count = 1; /* Create send datatype */ merr = MTestTypeBasicCreate(old_type, sendtype); if (merr) return merr; sendtype->count = recvtype->count * align_tot_count; return merr; } /* ------------------------------------------------------------------------ */ /* Exposed routine to external tests */ /* ------------------------------------------------------------------------ */ int MTestGetDatatypes(MTestDatatype * sendtype, MTestDatatype * recvtype, MPI_Aint tot_count) { int merr = 0; MTestGetDbgInfo(&dbgflag, &verbose); MTestInitDatatypeEnv(); MPI_Comm_rank(MPI_COMM_WORLD, &wrank); /* Initialize the default test level if test does not specify. */ if (!MTestIsDatatypeGenInited()) { MTestInitDefaultTestFunc(); } if (datatype_index == 0) { MTestPrintDatatypeGen(); } /* Start generating tests */ if (datatype_index < MTEST_BDT_RANGE) { merr = MTestGetBasicDatatypes(sendtype, recvtype, tot_count); } else if (datatype_index < MTEST_SEND_DDT_RANGE) { merr = MTestGetSendDerivedDatatypes(sendtype, recvtype, tot_count); } else if (datatype_index < MTEST_RECV_DDT_RANGE) { merr = MTestGetRecvDerivedDatatypes(sendtype, recvtype, tot_count); } else { /* out of range */ datatype_index = -1; MTestResetDatatypeGen(); } /* stop if error reported */ if (merr) { datatype_index = -1; } if (datatype_index > 0) { /* general initialization for receive buffer. */ recvtype->InitBuf = MTestTypeInitRecv; } datatype_index++; if (verbose >= 2 && datatype_index > 0) { MPI_Count ssize, rsize; MPI_Aint slb, rlb, sextent, rextent; const char *sendtype_nm = MTestGetDatatypeName(sendtype); const char *recvtype_nm = MTestGetDatatypeName(recvtype); MPI_Type_size_x(sendtype->datatype, &ssize); MPI_Type_size_x(recvtype->datatype, &rsize); MPI_Type_get_extent(sendtype->datatype, &slb, &sextent); MPI_Type_get_extent(recvtype->datatype, &rlb, &rextent); MTestPrintfMsg(2, "Get datatypes: send = %s(size %d ext %ld lb %ld count %d basesize %d), " "recv = %s(size %d ext %ld lb %ld count %d basesize %d), tot_count=%d\n", sendtype_nm, ssize, sextent, slb, sendtype->count, sendtype->basesize, recvtype_nm, rsize, rextent, rlb, recvtype->count, recvtype->basesize, tot_count); fflush(stdout); } return datatype_index; } /* Reset the datatype index (start from the initial data type. Note: This routine is rarely needed; MTestGetDatatypes automatically starts over after the last available datatype is used. */ void MTestResetDatatypes(void) { datatype_index = 0; MTestResetDatatypeGen(); } /* Return the index of the current datatype. This is rarely needed and is provided mostly to enable debugging of the MTest package itself */ int MTestGetDatatypeIndex(void) { return datatype_index; } /* Free the storage associated with a datatype */ void MTestFreeDatatype(MTestDatatype * mtype) { int merr; /* Invoke a datatype-specific free function to handle * both the datatype and the send/receive buffers */ if (mtype->FreeBuf) { (mtype->FreeBuf) (mtype); } /* Free the datatype itself if it was created */ if (!mtype->isBasic) { merr = MPI_Type_free(&mtype->datatype); if (merr) MTestPrintError(merr); } } /* Check that a message was received correctly. Returns the number of errors detected. Status may be NULL or MPI_STATUS_IGNORE */ int MTestCheckRecv(MPI_Status * status, MTestDatatype * recvtype) { int count; int errs = 0, merr; if (status && status != MPI_STATUS_IGNORE) { merr = MPI_Get_count(status, recvtype->datatype, &count); if (merr) MTestPrintError(merr); /* Check count against expected count */ if (count != recvtype->count) { errs++; } } /* Check received data */ if (!errs && recvtype->CheckBuf(recvtype)) { errs++; } return errs; } /* This next routine uses a circular buffer of static name arrays just to simplify the use of the routine */ const char *MTestGetDatatypeName(MTestDatatype * dtype) { static char name[4][MPI_MAX_OBJECT_NAME]; static int sp = 0; int rlen, merr; if (sp >= 4) sp = 0; merr = MPI_Type_get_name(dtype->datatype, name[sp], &rlen); if (merr) MTestPrintError(merr); return (const char *) name[sp++]; } mpi-testsuite-3.2+dfsg/util/mtest_datatype.c0000644000175000017500000012542712620254305020543 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mtest_datatype.h" #if defined(HAVE_STDIO_H) || defined(STDC_HEADERS) #include #endif #if defined(HAVE_STDLIB_H) || defined(STDC_HEADERS) #include #endif #if defined(HAVE_STRING_H) || defined(STDC_HEADERS) #include #endif #ifdef HAVE_STDARG_H #include #endif /* The following two includes permit the collection of resource usage data in the tests */ #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_RESOURCE_H #include #endif #include /* ------------------------------------------------------------------------ */ /* General datatype routines */ /* ------------------------------------------------------------------------ */ static void *MTestTypeFree(MTestDatatype * mtype) { if (mtype->buf) free(mtype->buf); if (mtype->displs) free(mtype->displs); if (mtype->displ_in_bytes) free(mtype->displ_in_bytes); if (mtype->index) free(mtype->index); if (mtype->old_datatypes) free(mtype->old_datatypes); mtype->buf = NULL; mtype->displs = NULL; mtype->displ_in_bytes = NULL; mtype->index = NULL; mtype->old_datatypes = NULL; return 0; } static inline void MTestTypeReset(MTestDatatype * mtype) { mtype->isBasic = 0; mtype->printErrors = 0; mtype->buf = NULL; mtype->datatype = MPI_DATATYPE_NULL; mtype->count = 0; mtype->nblock = 0; mtype->index = NULL; mtype->stride = 0; mtype->blksize = 0; mtype->displ_in_bytes = NULL; mtype->displs = NULL; mtype->basesize = 0; mtype->old_datatypes = NULL; mtype->arr_sizes[0] = 0; mtype->arr_sizes[1] = 0; mtype->arr_subsizes[0] = 0; mtype->arr_subsizes[1] = 0; mtype->arr_starts[0] = 0; mtype->arr_starts[1] = 0; mtype->order = 0; mtype->InitBuf = NULL; mtype->FreeBuf = NULL; mtype->CheckBuf = NULL; } /* ------------------------------------------------------------------------ */ /* Datatype routines for contiguous datatypes */ /* ------------------------------------------------------------------------ */ /* * Initialize buffer of basic datatype */ static void *MTestTypeContigInit(MTestDatatype * mtype) { MPI_Aint extent = 0, lb = 0, size; int merr; if (mtype->count > 0) { unsigned char *p; MPI_Aint i, totsize; merr = MPI_Type_get_extent(mtype->datatype, &lb, &extent); if (merr) MTestPrintError(merr); size = extent + lb; totsize = size * mtype->count; if (!mtype->buf) { mtype->buf = (void *) malloc(totsize); } p = (unsigned char *) (mtype->buf); if (!p) { char errmsg[128] = { 0 }; sprintf(errmsg, "Out of memory in %s", __FUNCTION__); MTestError(errmsg); } for (i = 0; i < totsize; i++) { p[i] = (unsigned char) (0xff ^ (i & 0xff)); } } else { if (mtype->buf) { free(mtype->buf); } mtype->buf = 0; } return mtype->buf; } /* * Check value of received basic datatype buffer. */ static int MTestTypeContigCheckbuf(MTestDatatype * mtype) { unsigned char *p; unsigned char expected; int err = 0, merr; MPI_Aint i, totsize, size, extent = 0, lb = 0; p = (unsigned char *) mtype->buf; if (p) { merr = MPI_Type_get_extent(mtype->datatype, &lb, &extent); if (merr) MTestPrintError(merr); size = lb + extent; totsize = size * mtype->count; for (i = 0; i < totsize; i++) { expected = (unsigned char) (0xff ^ (i & 0xff)); if (p[i] != expected) { err++; if (mtype->printErrors && err < 10) { printf("Data expected = %x but got p[%ld] = %x\n", expected, i, p[i]); fflush(stdout); } } } } return err; } /* ------------------------------------------------------------------------ */ /* Datatype routines for vector datatypes */ /* ------------------------------------------------------------------------ */ /* * Initialize buffer of vector datatype */ static void *MTestTypeVectorInit(MTestDatatype * mtype) { MPI_Aint extent = 0, lb = 0, size, totsize, dt_offset, byte_offset; int merr; if (mtype->count > 0) { unsigned char *p; MPI_Aint k, j; int i, nc; merr = MPI_Type_get_extent(mtype->datatype, &lb, &extent); if (merr) MTestPrintError(merr); size = extent + lb; totsize = mtype->count * size; if (!mtype->buf) { mtype->buf = (void *) malloc(totsize); } p = (unsigned char *) (mtype->buf); if (!p) { char errmsg[128] = { 0 }; sprintf(errmsg, "Out of memory in %s", __FUNCTION__); MTestError(errmsg); } /* First, set to -1 */ for (k = 0; k < totsize; k++) p[k] = 0xff; /* Now, set the actual elements to the successive values. * We require that the base type is a contiguous type */ nc = 0; dt_offset = 0; /* For each datatype */ for (k = 0; k < mtype->count; k++) { /* For each block */ for (i = 0; i < mtype->nblock; i++) { byte_offset = dt_offset + i * mtype->stride; /* For each byte */ for (j = 0; j < mtype->blksize; j++) { p[byte_offset + j] = (unsigned char) (0xff ^ (nc & 0xff)); nc++; } } dt_offset += size; } } else { mtype->buf = 0; } return mtype->buf; } /* * Check value of received vector datatype buffer */ static int MTestTypeVectorCheckbuf(MTestDatatype * mtype) { unsigned char *p; unsigned char expected; int i, err = 0, merr; MPI_Aint size = 0, byte_offset, dt_offset, extent, lb; p = (unsigned char *) mtype->buf; if (p) { MPI_Aint k, j; int nc; merr = MPI_Type_get_extent(mtype->datatype, &lb, &extent); if (merr) MTestPrintError(merr); size = extent + lb; nc = 0; dt_offset = 0; /* For each datatype */ for (k = 0; k < mtype->count; k++) { /* For each block */ for (i = 0; i < mtype->nblock; i++) { byte_offset = dt_offset + i * mtype->stride; /* For each byte */ for (j = 0; j < mtype->blksize; j++) { expected = (unsigned char) (0xff ^ (nc & 0xff)); if (p[byte_offset + j] != expected) { err++; if (mtype->printErrors && err < 10) { printf("Data expected = %x but got p[%d,%ld] = %x\n", expected, i, j, p[byte_offset + j]); fflush(stdout); } } nc++; } } dt_offset += size; } } return err; } /* ------------------------------------------------------------------------ */ /* Datatype routines for indexed datatypes */ /* ------------------------------------------------------------------------ */ /* * Initialize buffer of indexed datatype */ static void *MTestTypeIndexedInit(MTestDatatype * mtype) { MPI_Aint extent = 0, lb = 0, size, totsize, dt_offset, offset; int merr; if (mtype->count > 0) { unsigned char *p; MPI_Aint k, b; int i, j, nc; /* Allocate buffer */ merr = MPI_Type_get_extent(mtype->datatype, &lb, &extent); if (merr) MTestPrintError(merr); size = extent + lb; totsize = size * mtype->count; if (!mtype->buf) { mtype->buf = (void *) malloc(totsize); } p = (unsigned char *) (mtype->buf); if (!p) { char errmsg[128] = { 0 }; sprintf(errmsg, "Out of memory in %s", __FUNCTION__); MTestError(errmsg); } /* First, set to -1 */ for (k = 0; k < totsize; k++) p[k] = 0xff; /* Now, set the actual elements to the successive values. * We require that the base type is a contiguous type */ nc = 0; dt_offset = 0; /* For each datatype */ for (k = 0; k < mtype->count; k++) { /* For each block */ for (i = 0; i < mtype->nblock; i++) { /* For each element in the block */ for (j = 0; j < mtype->index[i]; j++) { offset = dt_offset + mtype->displ_in_bytes[i] + j * mtype->basesize; /* For each byte in the element */ for (b = 0; b < mtype->basesize; b++) { p[offset + b] = (unsigned char) (0xff ^ (nc++ & 0xff)); } } } dt_offset += size; } } else { /* count == 0 */ if (mtype->buf) { free(mtype->buf); } mtype->buf = 0; } return mtype->buf; } /* * Check value of received indexed datatype buffer */ static int MTestTypeIndexedCheckbuf(MTestDatatype * mtype) { unsigned char *p; unsigned char expected; int err = 0, merr; MPI_Aint size = 0, offset, dt_offset, extent = 0, lb = 0; p = (unsigned char *) mtype->buf; if (p) { MPI_Aint k, b; int i, j, nc; merr = MPI_Type_get_extent(mtype->datatype, &lb, &extent); if (merr) MTestPrintError(merr); size = lb + extent; nc = 0; dt_offset = 0; /* For each datatype */ for (k = 0; k < mtype->count; k++) { /* For each block */ for (i = 0; i < mtype->nblock; i++) { /* For each element in the block */ for (j = 0; j < mtype->index[i]; j++) { offset = dt_offset + mtype->displ_in_bytes[i] + j * mtype->basesize; /* For each byte in the element */ for (b = 0; b < mtype->basesize; b++) { expected = (unsigned char) (0xff ^ (nc++ & 0xff)); if (p[offset + b] != expected) { err++; if (mtype->printErrors && err < 10) { printf("Data expected = %x but got p[%d,%d] = %x\n", expected, i, j, p[offset + b]); fflush(stdout); } } } } } dt_offset += size; } } return err; } /* ------------------------------------------------------------------------ */ /* Datatype routines for indexed-block datatypes */ /* ------------------------------------------------------------------------ */ /* * Initialize buffer of indexed-block datatype */ static void *MTestTypeIndexedBlockInit(MTestDatatype * mtype) { MPI_Aint extent = 0, lb = 0, size, totsize, offset, dt_offset; int merr; if (mtype->count > 0) { unsigned char *p; MPI_Aint k, j; int i, nc; /* Allocate the send/recv buffer */ merr = MPI_Type_get_extent(mtype->datatype, &lb, &extent); if (merr) MTestPrintError(merr); size = extent + lb; totsize = size * mtype->count; if (!mtype->buf) { mtype->buf = (void *) malloc(totsize); } p = (unsigned char *) (mtype->buf); if (!p) { char errmsg[128] = { 0 }; sprintf(errmsg, "Out of memory in %s", __FUNCTION__); MTestError(errmsg); } /* First, set to -1 */ for (k = 0; k < totsize; k++) p[k] = 0xff; /* Now, set the actual elements to the successive values. * We require that the base type is a contiguous type */ nc = 0; dt_offset = 0; /* For each datatype */ for (k = 0; k < mtype->count; k++) { /* For each block */ for (i = 0; i < mtype->nblock; i++) { offset = dt_offset + mtype->displ_in_bytes[i]; /* For each byte in the block */ for (j = 0; j < mtype->blksize; j++) { p[offset + j] = (unsigned char) (0xff ^ (nc++ & 0xff)); } } dt_offset += size; } } else { /* count == 0 */ if (mtype->buf) { free(mtype->buf); } mtype->buf = 0; } return mtype->buf; } /* * Check value of received indexed-block datatype buffer */ static int MTestTypeIndexedBlockCheckbuf(MTestDatatype * mtype) { unsigned char *p; unsigned char expected; int err = 0, merr; MPI_Aint size = 0, offset, dt_offset, lb = 0, extent = 0; p = (unsigned char *) mtype->buf; if (p) { MPI_Aint j, k; int i, nc; merr = MPI_Type_get_extent(mtype->datatype, &lb, &extent); if (merr) MTestPrintError(merr); size = lb + extent; nc = 0; dt_offset = 0; /* For each datatype */ for (k = 0; k < mtype->count; k++) { /* For each block */ for (i = 0; i < mtype->nblock; i++) { offset = dt_offset + mtype->displ_in_bytes[i]; /* For each byte in the block */ for (j = 0; j < mtype->blksize; j++) { expected = (unsigned char) (0xff ^ (nc++ & 0xff)); if (p[offset + j] != expected) { err++; if (mtype->printErrors && err < 10) { printf("Data expected = %x but got p[%d,%ld] = %x\n", expected, i, j, p[offset + j]); fflush(stdout); } } } } dt_offset += size; } } return err; } /* ------------------------------------------------------------------------ */ /* Datatype routines for subarray datatypes with order Fortran */ /* ------------------------------------------------------------------------ */ /* * Initialize buffer of subarray datatype. */ static void *MTestTypeSubarrayInit(MTestDatatype * mtype) { MPI_Aint extent = 0, lb = 0, size, totsize, offset, dt_offset, byte_offset; int merr; if (mtype->count > 0) { unsigned char *p; MPI_Aint k; int j, b, i, nc; /* Allocate the send/recv buffer */ merr = MPI_Type_get_extent(mtype->datatype, &lb, &extent); if (merr) MTestPrintError(merr); size = extent + lb; totsize = size * mtype->count; if (!mtype->buf) { mtype->buf = (void *) malloc(totsize); } p = (unsigned char *) (mtype->buf); if (!p) { char errmsg[128] = { 0 }; sprintf(errmsg, "Out of memory in %s", __FUNCTION__); MTestError(errmsg); } /* First, set to -1 */ for (k = 0; k < totsize; k++) p[k] = 0xff; /* Now, set the actual elements to the successive values. * We require that the base type is a contiguous type. */ int ncol, sub_ncol, sub_nrow, sub_col_start, sub_row_start; ncol = mtype->arr_sizes[1]; sub_nrow = mtype->arr_subsizes[0]; sub_ncol = mtype->arr_subsizes[1]; sub_row_start = mtype->arr_starts[0]; sub_col_start = mtype->arr_starts[1]; nc = 0; dt_offset = 0; /* For each datatype */ for (k = 0; k < mtype->count; k++) { /* For each row */ for (i = 0; i < sub_nrow; i++) { offset = (sub_row_start + i) * ncol + sub_col_start; /* For each element in row */ for (j = 0; j < sub_ncol; j++) { byte_offset = dt_offset + (offset + j) * mtype->basesize; /* For each byte in element */ for (b = 0; b < mtype->basesize; b++) p[byte_offset + b] = (unsigned char) (0xff ^ (nc++ & 0xff)); } } dt_offset += size; } } else { /* count == 0 */ if (mtype->buf) { free(mtype->buf); } mtype->buf = 0; } return mtype->buf; } /* * Check value of received subarray datatype buffer */ static int MTestTypeSubarrayCheckbuf(MTestDatatype * mtype) { unsigned char *p; unsigned char expected; int err = 0, merr; MPI_Aint size, offset, dt_offset, byte_offset, lb = 0, extent = 0; p = (unsigned char *) mtype->buf; if (p) { MPI_Aint k; int j, b, i, nc; merr = MPI_Type_get_extent(mtype->datatype, &lb, &extent); if (merr) MTestPrintError(merr); size = lb + extent; int ncol, sub_ncol, sub_nrow, sub_col_start, sub_row_start; ncol = mtype->arr_sizes[1]; sub_nrow = mtype->arr_subsizes[0]; sub_ncol = mtype->arr_subsizes[1]; sub_row_start = mtype->arr_starts[0]; sub_col_start = mtype->arr_starts[1]; nc = 0; dt_offset = 0; /* For each datatype */ for (k = 0; k < mtype->count; k++) { /* For each row */ for (i = 0; i < sub_nrow; i++) { offset = (sub_row_start + i) * ncol + sub_col_start; /* For each element in row */ for (j = 0; j < sub_ncol; j++) { byte_offset = dt_offset + (offset + j) * mtype->basesize; /* For each byte in element */ for (b = 0; b < mtype->basesize; b++) { expected = (unsigned char) (0xff ^ (nc++ & 0xff)); if (p[byte_offset + b] != expected) { err++; if (mtype->printErrors && err < 10) { printf("Data expected = %x but got p[%d,%d,%d] = %x\n", expected, i, j, b, p[byte_offset + b]); fflush(stdout); } } } } } dt_offset += size; } } if (err) printf("%s error\n", __FUNCTION__); return err; } /* ------------------------------------------------------------------------ */ /* Datatype creators */ /* ------------------------------------------------------------------------ */ /* * Setup contiguous type info and handlers. * * A contiguous datatype is created by using following parameters (stride is unused). * nblock: Number of blocks. * blocklen: Number of elements in each block. The total number of elements in * this datatype is set as (nblock * blocklen). * lb: Lower bound of the new datatype (ignored). * oldtype: Datatype of element. */ static int MTestTypeContiguousCreate(int nblock, int blocklen, int stride, int lb, MPI_Datatype oldtype, const char *typename_prefix, MTestDatatype * mtype) { int merr = 0; char type_name[128]; MTestTypeReset(mtype); merr = MPI_Type_size(oldtype, &mtype->basesize); if (merr) MTestPrintError(merr); mtype->nblock = nblock; mtype->blksize = blocklen * mtype->basesize; merr = MPI_Type_contiguous(nblock * blocklen, oldtype, &mtype->datatype); if (merr) MTestPrintError(merr); merr = MPI_Type_commit(&mtype->datatype); if (merr) MTestPrintError(merr); memset(type_name, 0, sizeof(type_name)); sprintf(type_name, "%s %s (%d count)", typename_prefix, "contiguous", nblock * blocklen); merr = MPI_Type_set_name(mtype->datatype, (char *) type_name); if (merr) MTestPrintError(merr); mtype->InitBuf = MTestTypeContigInit; mtype->FreeBuf = MTestTypeFree; mtype->CheckBuf = MTestTypeContigCheckbuf; return merr; } /* * Setup vector type info and handlers. * * A vector datatype is created by using following parameters. * nblock: Number of blocks. * blocklen: Number of elements in each block. * stride: Strided number of elements between blocks. * lb: Lower bound of the new datatype (ignored). * oldtype: Datatype of element. */ static int MTestTypeVectorCreate(int nblock, int blocklen, int stride, int lb, MPI_Datatype oldtype, const char *typename_prefix, MTestDatatype * mtype) { int merr = 0; char type_name[128]; MTestTypeReset(mtype); merr = MPI_Type_size(oldtype, &mtype->basesize); if (merr) MTestPrintError(merr); /* These sizes are in bytes (see the VectorInit code) */ mtype->stride = stride * mtype->basesize; mtype->blksize = blocklen * mtype->basesize; mtype->nblock = nblock; /* Vector uses stride in oldtypes */ merr = MPI_Type_vector(nblock, blocklen, stride, oldtype, &mtype->datatype); if (merr) MTestPrintError(merr); merr = MPI_Type_commit(&mtype->datatype); if (merr) MTestPrintError(merr); memset(type_name, 0, sizeof(type_name)); sprintf(type_name, "%s %s (%d nblock %d blocklen %d stride)", typename_prefix, "vector", nblock, blocklen, stride); merr = MPI_Type_set_name(mtype->datatype, (char *) type_name); if (merr) MTestPrintError(merr); mtype->InitBuf = MTestTypeVectorInit; mtype->FreeBuf = MTestTypeFree; mtype->CheckBuf = MTestTypeVectorCheckbuf; return merr; } /* * Setup hvector type info and handlers. * * A hvector datatype is created by using following parameters. * nblock: Number of blocks. * blocklen: Number of elements in each block. * stride: Strided number of elements between blocks. * lb: Lower bound of the new datatype (ignored). * oldtype: Datatype of element. */ static int MTestTypeHvectorCreate(int nblock, int blocklen, int stride, int lb, MPI_Datatype oldtype, const char *typename_prefix, MTestDatatype * mtype) { int merr; char type_name[128]; MTestTypeReset(mtype); merr = MPI_Type_size(oldtype, &mtype->basesize); if (merr) MTestPrintError(merr); /* These sizes are in bytes (see the VectorInit code) */ mtype->stride = stride * mtype->basesize; mtype->blksize = blocklen * mtype->basesize; mtype->nblock = nblock; /* Hvector uses stride in bytes */ merr = MPI_Type_create_hvector(nblock, blocklen, mtype->stride, oldtype, &mtype->datatype); if (merr) MTestPrintError(merr); merr = MPI_Type_commit(&mtype->datatype); if (merr) MTestPrintError(merr); memset(type_name, 0, sizeof(type_name)); sprintf(type_name, "%s %s (%d nblock %d blocklen %d stride)", typename_prefix, "hvector", nblock, blocklen, stride); merr = MPI_Type_set_name(mtype->datatype, (char *) type_name); if (merr) MTestPrintError(merr); /* User the same functions as vector, because mtype->stride is in bytes */ mtype->InitBuf = MTestTypeVectorInit; mtype->FreeBuf = MTestTypeFree; mtype->CheckBuf = MTestTypeVectorCheckbuf; return merr; } /* * Setup indexed type info and handlers. * * A indexed datatype is created by using following parameters. * nblock: Number of blocks. * blocklen: Number of elements in each block. Each block has the same length. * stride: Strided number of elements between two adjacent blocks. The * displacement of each block is set as (index of current block * stride). * lb: Lower bound of the new datatype. * oldtype: Datatype of element. */ static int MTestTypeIndexedCreate(int nblock, int blocklen, int stride, int lb, MPI_Datatype oldtype, const char *typename_prefix, MTestDatatype * mtype) { int merr = 0; char type_name[128]; int i; MTestTypeReset(mtype); merr = MPI_Type_size(oldtype, &mtype->basesize); if (merr) MTestPrintError(merr); mtype->displs = (int *) malloc(nblock * sizeof(int)); mtype->displ_in_bytes = (MPI_Aint *) malloc(nblock * sizeof(MPI_Aint)); mtype->index = (int *) malloc(nblock * sizeof(int)); if (!mtype->displs || !mtype->displ_in_bytes || !mtype->index) { char errmsg[128] = { 0 }; sprintf(errmsg, "Out of memory in %s", __FUNCTION__); MTestError(errmsg); } mtype->nblock = nblock; for (i = 0; i < nblock; i++) { mtype->index[i] = blocklen; mtype->displs[i] = lb + stride * i; /*stride between the start of two blocks */ mtype->displ_in_bytes[i] = (lb + stride * i) * mtype->basesize; } /* Indexed uses displacement in oldtypes */ merr = MPI_Type_indexed(nblock, mtype->index, mtype->displs, oldtype, &mtype->datatype); if (merr) MTestPrintError(merr); merr = MPI_Type_commit(&mtype->datatype); if (merr) MTestPrintError(merr); memset(type_name, 0, sizeof(type_name)); sprintf(type_name, "%s %s (%d nblock %d blocklen %d stride %d lb)", typename_prefix, "index", nblock, blocklen, stride, lb); merr = MPI_Type_set_name(mtype->datatype, (char *) type_name); if (merr) MTestPrintError(merr); mtype->InitBuf = MTestTypeIndexedInit; mtype->FreeBuf = MTestTypeFree; mtype->CheckBuf = MTestTypeIndexedCheckbuf; return merr; } /* * Setup hindexed type info and handlers. * * A hindexed datatype is created by using following parameters. * nblock: Number of blocks. * blocklen: Number of elements in each block. Each block has the same length. * stride: Strided number of elements between two adjacent blocks. The byte * displacement of each block is set as (index of current block * stride * size of oldtype). * lb: Lower bound of the new datatype. * oldtype: Datatype of element. */ static inline int MTestTypeHindexedCreate(int nblock, int blocklen, int stride, int lb, MPI_Datatype oldtype, const char *typename_prefix, MTestDatatype * mtype) { int merr; char type_name[128]; int i; MTestTypeReset(mtype); merr = MPI_Type_size(oldtype, &mtype->basesize); if (merr) MTestPrintError(merr); mtype->index = (int *) malloc(nblock * sizeof(int)); mtype->displ_in_bytes = (MPI_Aint *) malloc(nblock * sizeof(MPI_Aint)); if (!mtype->displ_in_bytes || !mtype->index) { char errmsg[128] = { 0 }; sprintf(errmsg, "Out of memory in %s", __FUNCTION__); MTestError(errmsg); } mtype->nblock = nblock; for (i = 0; i < nblock; i++) { mtype->index[i] = blocklen; mtype->displ_in_bytes[i] = (lb + stride * i) * mtype->basesize; } /* Hindexed uses displacement in bytes */ merr = MPI_Type_create_hindexed(nblock, mtype->index, mtype->displ_in_bytes, oldtype, &mtype->datatype); if (merr) MTestPrintError(merr); merr = MPI_Type_commit(&mtype->datatype); if (merr) MTestPrintError(merr); memset(type_name, 0, sizeof(type_name)); sprintf(type_name, "%s %s (%d nblock %d blocklen %d stride %d lb)", typename_prefix, "hindex", nblock, blocklen, stride, lb); merr = MPI_Type_set_name(mtype->datatype, (char *) type_name); if (merr) MTestPrintError(merr); /* Reuse indexed functions, because all of them only use displ_in_bytes */ mtype->InitBuf = MTestTypeIndexedInit; mtype->FreeBuf = MTestTypeFree; mtype->CheckBuf = MTestTypeIndexedCheckbuf; return merr; } /* * Setup indexed-block type info and handlers. * * A indexed-block datatype is created by using following parameters. * nblock: Number of blocks. * blocklen: Number of elements in each block. * stride: Strided number of elements between two adjacent blocks. The * displacement of each block is set as (index of current block * stride). * lb: Lower bound of the new datatype. * oldtype: Datatype of element. */ static int MTestTypeIndexedBlockCreate(int nblock, int blocklen, int stride, int lb, MPI_Datatype oldtype, const char *typename_prefix, MTestDatatype * mtype) { int merr; char type_name[128]; int i; MTestTypeReset(mtype); merr = MPI_Type_size(oldtype, &mtype->basesize); if (merr) MTestPrintError(merr); mtype->displs = (int *) malloc(nblock * sizeof(int)); mtype->displ_in_bytes = (MPI_Aint *) malloc(nblock * sizeof(MPI_Aint)); if (!mtype->displs || !mtype->displ_in_bytes) { char errmsg[128] = { 0 }; sprintf(errmsg, "Out of memory in %s", __FUNCTION__); MTestError(errmsg); } mtype->nblock = nblock; mtype->blksize = blocklen * mtype->basesize; for (i = 0; i < nblock; i++) { mtype->displs[i] = lb + stride * i; mtype->displ_in_bytes[i] = (lb + stride * i) * mtype->basesize; } /* Indexed-block uses displacement in oldtypes */ merr = MPI_Type_create_indexed_block(nblock, blocklen, mtype->displs, oldtype, &mtype->datatype); if (merr) MTestPrintError(merr); merr = MPI_Type_commit(&mtype->datatype); if (merr) MTestPrintError(merr); memset(type_name, 0, sizeof(type_name)); sprintf(type_name, "%s %s (%d nblock %d blocklen %d stride %d lb)", typename_prefix, "index_block", nblock, blocklen, stride, lb); merr = MPI_Type_set_name(mtype->datatype, (char *) type_name); if (merr) MTestPrintError(merr); mtype->InitBuf = MTestTypeIndexedBlockInit; mtype->FreeBuf = MTestTypeFree; mtype->CheckBuf = MTestTypeIndexedBlockCheckbuf; return merr; } /* * Setup hindexed-block type info and handlers. * * A hindexed-block datatype is created by using following parameters. * nblock: Number of blocks. * blocklen: Number of elements in each block. * stride: Strided number of elements between two adjacent blocks. The byte * displacement of each block is set as (index of current block * stride * size of oldtype). * lb: Lower bound of the new datatype. * oldtype: Datatype of element. */ static int MTestTypeHindexedBlockCreate(int nblock, int blocklen, int stride, int lb, MPI_Datatype oldtype, const char *typename_prefix, MTestDatatype * mtype) { int merr; char type_name[128]; int i; MTestTypeReset(mtype); merr = MPI_Type_size(oldtype, &mtype->basesize); if (merr) MTestPrintError(merr); mtype->displ_in_bytes = (MPI_Aint *) malloc(nblock * sizeof(MPI_Aint)); if (!mtype->displ_in_bytes) { char errmsg[128] = { 0 }; sprintf(errmsg, "Out of memory in %s", __FUNCTION__); MTestError(errmsg); } mtype->nblock = nblock; mtype->blksize = blocklen * mtype->basesize; for (i = 0; i < nblock; i++) { mtype->displ_in_bytes[i] = (lb + stride * i) * mtype->basesize; } /* Hindexed-block uses displacement in bytes */ merr = MPI_Type_create_hindexed_block(nblock, blocklen, mtype->displ_in_bytes, oldtype, &mtype->datatype); if (merr) MTestPrintError(merr); merr = MPI_Type_commit(&mtype->datatype); if (merr) MTestPrintError(merr); memset(type_name, 0, sizeof(type_name)); sprintf(type_name, "%s %s (%d nblock %d blocklen %d stride %d lb)", typename_prefix, "hindex_block", nblock, blocklen, stride, lb); merr = MPI_Type_set_name(mtype->datatype, (char *) type_name); if (merr) MTestPrintError(merr); /* Reuse indexed-block functions, because all of them only use displ_in_bytes */ mtype->InitBuf = MTestTypeIndexedBlockInit; mtype->FreeBuf = MTestTypeFree; mtype->CheckBuf = MTestTypeIndexedBlockCheckbuf; return merr; } /* * Setup struct type info and handlers. * * A struct datatype is created by using following parameters. * nblock: Number of blocks. * blocklen: Number of elements in each block. Each block has the same length. * stride: Strided number of elements between two adjacent blocks. The byte * displacement of each block is set as (index of current block * stride * size of oldtype). * lb: Lower bound of the new datatype. * oldtype: Datatype of element. Each block has the same oldtype. */ static int MTestTypeStructCreate(int nblock, int blocklen, int stride, int lb, MPI_Datatype oldtype, const char *typename_prefix, MTestDatatype * mtype) { int merr; char type_name[128]; int i; MTestTypeReset(mtype); merr = MPI_Type_size(oldtype, &mtype->basesize); if (merr) MTestPrintError(merr); mtype->old_datatypes = (MPI_Datatype *) malloc(nblock * sizeof(MPI_Datatype)); mtype->displ_in_bytes = (MPI_Aint *) malloc(nblock * sizeof(MPI_Aint)); mtype->index = (int *) malloc(nblock * sizeof(int)); if (!mtype->displ_in_bytes || !mtype->old_datatypes) { char errmsg[128] = { 0 }; sprintf(errmsg, "Out of memory in %s", __FUNCTION__); MTestError(errmsg); } mtype->nblock = nblock; mtype->blksize = blocklen * mtype->basesize; for (i = 0; i < nblock; i++) { mtype->displ_in_bytes[i] = (lb + stride * i) * mtype->basesize; mtype->old_datatypes[i] = oldtype; mtype->index[i] = blocklen; } /* Struct uses displacement in bytes */ merr = MPI_Type_create_struct(nblock, mtype->index, mtype->displ_in_bytes, mtype->old_datatypes, &mtype->datatype); if (merr) MTestPrintError(merr); merr = MPI_Type_commit(&mtype->datatype); if (merr) MTestPrintError(merr); memset(type_name, 0, sizeof(type_name)); sprintf(type_name, "%s %s (%d nblock %d blocklen %d stride %d lb)", typename_prefix, "struct", nblock, blocklen, stride, lb); merr = MPI_Type_set_name(mtype->datatype, (char *) type_name); if (merr) MTestPrintError(merr); /* Reuse indexed functions, because they use the same displ_in_bytes and index */ mtype->InitBuf = MTestTypeIndexedInit; mtype->FreeBuf = MTestTypeFree; mtype->CheckBuf = MTestTypeIndexedCheckbuf; return merr; } /* * Setup order-C subarray type info and handlers. * * A 2D-subarray datatype specified with order C and located in the right-bottom * of the full array is created by using input parameters. * Number of elements in the dimensions of the full array: {nblock + lb, stride} * Number of elements in the dimensions of the subarray: {nblock, blocklen} * Starting of the subarray in each dimension: {1, stride - blocklen} * order: MPI_ORDER_C * oldtype: oldtype */ static int MTestTypeSubArrayOrderCCreate(int nblock, int blocklen, int stride, int lb, MPI_Datatype oldtype, const char *typename_prefix, MTestDatatype * mtype) { int merr; char type_name[128]; MTestTypeReset(mtype); merr = MPI_Type_size(oldtype, &mtype->basesize); if (merr) MTestPrintError(merr); mtype->arr_sizes[0] = nblock + lb; /* {row, col} */ mtype->arr_sizes[1] = stride; mtype->arr_subsizes[0] = nblock; /* {row, col} */ mtype->arr_subsizes[1] = blocklen; mtype->arr_starts[0] = lb; /* {row, col} */ mtype->arr_starts[1] = stride - blocklen; mtype->order = MPI_ORDER_C; merr = MPI_Type_create_subarray(2, mtype->arr_sizes, mtype->arr_subsizes, mtype->arr_starts, mtype->order, oldtype, &mtype->datatype); if (merr) MTestPrintError(merr); merr = MPI_Type_commit(&mtype->datatype); if (merr) MTestPrintError(merr); memset(type_name, 0, sizeof(type_name)); sprintf(type_name, "%s %s (full{%d,%d}, sub{%d,%d},start{%d,%d})", typename_prefix, "subarray-c", mtype->arr_sizes[0], mtype->arr_sizes[1], mtype->arr_subsizes[0], mtype->arr_subsizes[1], mtype->arr_starts[0], mtype->arr_starts[1]); merr = MPI_Type_set_name(mtype->datatype, (char *) type_name); if (merr) MTestPrintError(merr); mtype->InitBuf = MTestTypeSubarrayInit; mtype->FreeBuf = MTestTypeFree; mtype->CheckBuf = MTestTypeSubarrayCheckbuf; return merr; } /* * Setup order-Fortran subarray type info and handlers. * * A 2D-subarray datatype specified with order Fortran and located in the right * bottom of the full array is created by using input parameters. * Number of elements in the dimensions of the full array: {stride, nblock + lb} * Number of elements in the dimensions of the subarray: {blocklen, nblock} * Starting of the subarray in each dimension: {stride - blocklen, lb} * order: MPI_ORDER_FORTRAN * oldtype: oldtype */ static int MTestTypeSubArrayOrderFortranCreate(int nblock, int blocklen, int stride, int lb, MPI_Datatype oldtype, const char *typename_prefix, MTestDatatype * mtype) { int merr; char type_name[128]; MTestTypeReset(mtype); merr = MPI_Type_size(oldtype, &mtype->basesize); if (merr) MTestPrintError(merr); /* use the same row and col as that of order-c subarray for buffer * initialization and check because we access buffer in order-c */ mtype->arr_sizes[0] = nblock + lb; /* {row, col} */ mtype->arr_sizes[1] = stride; mtype->arr_subsizes[0] = nblock; /* {row, col} */ mtype->arr_subsizes[1] = blocklen; mtype->arr_starts[0] = lb; /* {row, col} */ mtype->arr_starts[1] = stride - blocklen; mtype->order = MPI_ORDER_FORTRAN; /* reverse row and col when create datatype so that we can get the same * packed data on the other side in order to reuse the contig check function */ int arr_sizes[2] = { mtype->arr_sizes[1], mtype->arr_sizes[0] }; int arr_subsizes[2] = { mtype->arr_subsizes[1], mtype->arr_subsizes[0] }; int arr_starts[2] = { mtype->arr_starts[1], mtype->arr_starts[0] }; merr = MPI_Type_create_subarray(2, arr_sizes, arr_subsizes, arr_starts, mtype->order, oldtype, &mtype->datatype); if (merr) MTestPrintError(merr); merr = MPI_Type_commit(&mtype->datatype); if (merr) MTestPrintError(merr); memset(type_name, 0, sizeof(type_name)); sprintf(type_name, "%s %s (full{%d,%d}, sub{%d,%d},start{%d,%d})", typename_prefix, "subarray-f", arr_sizes[0], arr_sizes[1], arr_subsizes[0], arr_subsizes[1], arr_starts[0], arr_starts[1]); merr = MPI_Type_set_name(mtype->datatype, (char *) type_name); if (merr) MTestPrintError(merr); mtype->InitBuf = MTestTypeSubarrayInit; mtype->FreeBuf = MTestTypeFree; mtype->CheckBuf = MTestTypeSubarrayCheckbuf; return merr; } /* ------------------------------------------------------------------------ */ /* Datatype routines exposed to test generator */ /* ------------------------------------------------------------------------ */ /* * Setup basic type info and handlers. */ int MTestTypeBasicCreate(MPI_Datatype oldtype, MTestDatatype * mtype) { int merr = 0; MTestTypeReset(mtype); merr = MPI_Type_size(oldtype, &mtype->basesize); if (merr) MTestPrintError(merr); mtype->datatype = oldtype; mtype->isBasic = 1; mtype->InitBuf = MTestTypeContigInit; mtype->FreeBuf = MTestTypeFree; mtype->CheckBuf = MTestTypeContigCheckbuf; return merr; } /* * Setup dup type info and handlers. * * A dup datatype is created by using following parameters. * oldtype: Datatype of element. */ int MTestTypeDupCreate(MPI_Datatype oldtype, MTestDatatype * mtype) { int merr = 0; MTestTypeReset(mtype); merr = MPI_Type_size(oldtype, &mtype->basesize); if (merr) MTestPrintError(merr); merr = MPI_Type_dup(oldtype, &mtype->datatype); if (merr) MTestPrintError(merr); /* dup'ed types are already committed if the original type * was committed (MPI-2, section 8.8) */ mtype->InitBuf = MTestTypeContigInit; mtype->FreeBuf = MTestTypeFree; mtype->CheckBuf = MTestTypeContigCheckbuf; return merr; } /* * General initialization for receive buffer. * Allocate buffer and initialize for reception (e.g., set initial data to detect failure) * Both basic and derived datatype can be handled by using extent as buffer size. */ void *MTestTypeInitRecv(MTestDatatype * mtype) { MPI_Aint size, extent = 0, lb = 0; int merr; if (mtype->count > 0) { signed char *p; MPI_Aint i, totsize; merr = MPI_Type_get_extent(mtype->datatype, &lb, &extent); if (merr) MTestPrintError(merr); size = extent + lb; totsize = size * mtype->count; if (!mtype->buf) { mtype->buf = (void *) malloc(totsize); } p = (signed char *) (mtype->buf); if (!p) { char errmsg[128] = { 0 }; sprintf(errmsg, "Out of memory in %s", __FUNCTION__); MTestError(errmsg); } for (i = 0; i < totsize; i++) { p[i] = 0xff; } } else { if (mtype->buf) { free(mtype->buf); } mtype->buf = 0; } return mtype->buf; } void MTestTypeCreatorInit(MTestDdtCreator * creators) { memset(creators, 0, sizeof(MTestDdtCreator) * MTEST_DDT_MAX); creators[MTEST_DDT_CONTIGUOUS] = MTestTypeContiguousCreate; creators[MTEST_DDT_VECTOR] = MTestTypeVectorCreate; creators[MTEST_DDT_HVECTOR] = MTestTypeHvectorCreate; creators[MTEST_DDT_INDEXED] = MTestTypeIndexedCreate; creators[MTEST_DDT_HINDEXED] = MTestTypeHindexedCreate; creators[MTEST_DDT_INDEXED_BLOCK] = MTestTypeIndexedBlockCreate; creators[MTEST_DDT_HINDEXED_BLOCK] = MTestTypeHindexedBlockCreate; creators[MTEST_DDT_STRUCT] = MTestTypeStructCreate; creators[MTEST_DDT_SUBARRAY_ORDER_C] = MTestTypeSubArrayOrderCCreate; creators[MTEST_DDT_SUBARRAY_ORDER_FORTRAN] = MTestTypeSubArrayOrderFortranCreate; } void MTestTypeMinCreatorInit(MTestDdtCreator * creators) { memset(creators, 0, sizeof(MTestDdtCreator) * MTEST_DDT_MAX); creators[MTEST_MIN_DDT_VECTOR] = MTestTypeVectorCreate; creators[MTEST_MIN_DDT_INDEXED] = MTestTypeIndexedCreate; } mpi-testsuite-3.2+dfsg/util/mtestcheck.c0000644000175000017500000000171112620254305017633 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2008 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" int main(int argc, char *argv[]) { int errs = 0; MPI_Comm comm; int minsize = 2, csize, count; MTest_Init(&argc, &argv); while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; MPI_Comm_size(comm, &csize); count = 128000; { int *ap, *bp; int root; ap = (int *) malloc(count * sizeof(int)); bp = (int *) malloc(count * sizeof(int)); root = 0; MPI_Reduce(ap, bp, count, MPI_INT, MPI_SUM, root, comm); free(ap); free(bp); } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/util/mtest_datatype.h0000644000175000017500000000274012620254305020540 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #ifndef MTEST_DATATYPE_H_ #define MTEST_DATATYPE_H_ #include "mpi.h" #include "mpitestconf.h" #include "mpitest.h" /* Provide backward portability to MPI 1 */ #ifndef MPI_VERSION #define MPI_VERSION 1 #endif enum MTEST_BASIC_DT { MTEST_BDT_INT, MTEST_BDT_DOUBLE, MTEST_BDT_FLOAT_INT, MTEST_BDT_SHORT, MTEST_BDT_LONG, MTEST_BDT_CHAR, MTEST_BDT_UINT64_T, MTEST_BDT_FLOAT, MTEST_BDT_BYTE, MTEST_BDT_MAX }; enum MTEST_DERIVED_DT { MTEST_DDT_CONTIGUOUS, MTEST_DDT_VECTOR, MTEST_DDT_HVECTOR, MTEST_DDT_INDEXED, MTEST_DDT_HINDEXED, MTEST_DDT_INDEXED_BLOCK, MTEST_DDT_HINDEXED_BLOCK, MTEST_DDT_STRUCT, MTEST_DDT_SUBARRAY_ORDER_C, MTEST_DDT_SUBARRAY_ORDER_FORTRAN, MTEST_DDT_MAX }; enum MTEST_MIN_DERIVED_DT { MTEST_MIN_DDT_VECTOR, MTEST_MIN_DDT_INDEXED, MTEST_MIN_DDT_MAX }; typedef int (*MTestDdtCreator) (int, int, int, int, MPI_Datatype, const char *, MTestDatatype *); extern void MTestTypeCreatorInit(MTestDdtCreator * creators); extern void MTestTypeMinCreatorInit(MTestDdtCreator * creators); extern void *MTestTypeInitRecv(MTestDatatype * mtype); extern int MTestTypeBasicCreate(MPI_Datatype oldtype, MTestDatatype * mtype); extern int MTestTypeDupCreate(MPI_Datatype oldtype, MTestDatatype * mtype); #endif /* MTEST_DATATYPE_H_ */ mpi-testsuite-3.2+dfsg/threads/0000755000175000017500000000000012621010236016004 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/threads/init/0000755000175000017500000000000012621010236016747 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/threads/init/testlist0000644000175000017500000000002112620254305020544 0ustar mbanckmbanckinitth 1 initth 2mpi-testsuite-3.2+dfsg/threads/init/Makefile.in0000644000175000017500000004704512621010236021026 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = initth$(EXEEXT) subdir = threads/init ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) initth_SOURCES = initth.c initth_OBJECTS = initth.$(OBJEXT) initth_LDADD = $(LDADD) initth_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o \ $(top_builddir)/threads/util/mtestthread.$(OBJEXT) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = initth.c DIST_SOURCES = initth.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.mtest \ $(top_srcdir)/confdb/depcomp \ $(top_srcdir)/threads/Makefile_threads.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o \ $(top_builddir)/threads/util/mtestthread.$(OBJEXT) @threadlib@ CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/threads/Makefile_threads.mtest $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign threads/init/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign threads/init/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/threads/Makefile_threads.mtest $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) initth$(EXEEXT): $(initth_OBJECTS) $(initth_DEPENDENCIES) $(EXTRA_initth_DEPENDENCIES) @rm -f initth$(EXEEXT) $(AM_V_CCLD)$(LINK) $(initth_OBJECTS) $(initth_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/initth.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml $(top_builddir)/threads/util/mtestthread.$(OBJEXT): $(top_srcdir)/threads/util/mtestthread.c (cd $(top_builddir)/threads/util && $(MAKE) mtestthread.$(OBJEXT)) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/threads/init/Makefile.am0000644000175000017500000000037412620254305021015 0ustar mbanckmbanck## -*- Mode: Makefile; -*- ## vim: set ft=automake : ## ## (C) 2011 by Argonne National Laboratory. ## See COPYRIGHT in top-level directory. ## include $(top_srcdir)/threads/Makefile_threads.mtest EXTRA_DIST = testlist noinst_PROGRAMS = initth mpi-testsuite-3.2+dfsg/threads/init/initth.c0000644000175000017500000000110312620254305020413 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2006 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "stdio.h" #include "mpi.h" int main(int argc, char *argv[]) { int provided, rank; MPI_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &provided); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Finalize(); /* The test here is a simple one that Finalize exits, so the only action * is to write no errors */ if (rank == 0) { printf(" No Errors\n"); } return 0; } mpi-testsuite-3.2+dfsg/threads/Makefile.in0000644000175000017500000005212712621010236020060 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = threads ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = testlist CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/testlist.in \ $(top_srcdir)/Makefile.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist.in SUBDIRS = util pt2pt comm init mpi_t $(spawndir) rma coll DIST_SUBDIRS = util pt2pt comm init mpi_t spawn rma coll all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign threads/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign threads/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): testlist: $(top_builddir)/config.status $(srcdir)/testlist.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic cscopelist-am ctags ctags-am \ distclean distclean-generic distclean-tags distdir dvi dvi-am \ html html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/threads/spawn/0000755000175000017500000000000012621010236017134 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/threads/spawn/testlist0000644000175000017500000000011112620254305020731 0ustar mbanckmbanckmultispawn 1 th_taskmaster 1 timeLimit=600 th_taskmaster 2 timeLimit=600 mpi-testsuite-3.2+dfsg/threads/spawn/Makefile.in0000644000175000017500000005041612621010236021207 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = multispawn$(EXEEXT) th_taskmaster$(EXEEXT) subdir = threads/spawn ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) multispawn_SOURCES = multispawn.c multispawn_OBJECTS = multispawn.$(OBJEXT) multispawn_LDADD = $(LDADD) multispawn_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o \ $(top_builddir)/threads/util/mtestthread.$(OBJEXT) th_taskmaster_SOURCES = th_taskmaster.c th_taskmaster_OBJECTS = th_taskmaster.$(OBJEXT) th_taskmaster_LDADD = $(LDADD) th_taskmaster_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o \ $(top_builddir)/threads/util/mtestthread.$(OBJEXT) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = multispawn.c th_taskmaster.c DIST_SOURCES = multispawn.c th_taskmaster.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.mtest \ $(top_srcdir)/confdb/depcomp \ $(top_srcdir)/threads/Makefile_threads.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o \ $(top_builddir)/threads/util/mtestthread.$(OBJEXT) @threadlib@ CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/threads/Makefile_threads.mtest $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign threads/spawn/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign threads/spawn/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/threads/Makefile_threads.mtest $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) multispawn$(EXEEXT): $(multispawn_OBJECTS) $(multispawn_DEPENDENCIES) $(EXTRA_multispawn_DEPENDENCIES) @rm -f multispawn$(EXEEXT) $(AM_V_CCLD)$(LINK) $(multispawn_OBJECTS) $(multispawn_LDADD) $(LIBS) th_taskmaster$(EXEEXT): $(th_taskmaster_OBJECTS) $(th_taskmaster_DEPENDENCIES) $(EXTRA_th_taskmaster_DEPENDENCIES) @rm -f th_taskmaster$(EXEEXT) $(AM_V_CCLD)$(LINK) $(th_taskmaster_OBJECTS) $(th_taskmaster_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multispawn.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/th_taskmaster.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml $(top_builddir)/threads/util/mtestthread.$(OBJEXT): $(top_srcdir)/threads/util/mtestthread.c (cd $(top_builddir)/threads/util && $(MAKE) mtestthread.$(OBJEXT)) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/threads/spawn/Makefile.am0000644000175000017500000000041612620254305021177 0ustar mbanckmbanck## -*- Mode: Makefile; -*- ## vim: set ft=automake : ## ## (C) 2011 by Argonne National Laboratory. ## See COPYRIGHT in top-level directory. ## include $(top_srcdir)/threads/Makefile_threads.mtest EXTRA_DIST = testlist noinst_PROGRAMS = multispawn th_taskmaster mpi-testsuite-3.2+dfsg/threads/spawn/multispawn.c0000644000175000017500000000731012620254305021512 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2008 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * This (is a placeholder for a) test that creates 4 threads, each of which * does a concurrent spawn of 4 more processes, for a total of 17 MPI processes * The resulting intercomms are tested for consistency (to ensure that the * spawns didn't get confused among the threads). * * As an option, it will time the Spawn calls. If the spawn calls block the * calling thread, this may show up in the timing of the calls */ #include "mpi.h" #include #include #include "mpitest.h" #include "mpithreadtest.h" /* static char MTEST_Descrip[] = "Spawn jobs from multiple threads"; */ #define NTHREADS 4 #define NPERTHREAD 4 int activeThreads = 0; MPI_Comm intercomms[NTHREADS]; MTEST_THREAD_RETURN_TYPE spawnProcess(void *p); MTEST_THREAD_RETURN_TYPE spawnProcess(void *p) { int rank, i; int errcodes[NPERTHREAD]; MPI_Comm_rank(MPI_COMM_WORLD, &rank); /* The thread number is passed into this routine through the value of the * argument */ i = (int) (long) p; /* Synchronize */ MTest_thread_barrier(NTHREADS); /* Spawn */ MPI_Comm_spawn((char *) "./multispawn", MPI_ARGV_NULL, NPERTHREAD, MPI_INFO_NULL, 0, MPI_COMM_SELF, &intercomms[i], errcodes); MPI_Bcast(&i, 1, MPI_INT, MPI_ROOT, intercomms[i]); return MTEST_THREAD_RETVAL_IGN; } int main(int argc, char *argv[]) { int rank, size, i, wasParent = 0; int provided; int err; MPI_Comm parentcomm; MPI_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &provided); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); if (provided != MPI_THREAD_MULTIPLE) { if (rank == 0) { printf ("MPI_Init_thread must return MPI_THREAD_MULTIPLE in order for this test to run.\n"); fflush(stdout); } MPI_Finalize(); return -1; } MPI_Comm_get_parent(&parentcomm); if (parentcomm == MPI_COMM_NULL) { wasParent = 1; err = MTest_thread_barrier_init(); if (err) { printf("barrier_init failed\n"); fflush(stdout); MPI_Finalize(); return 1; } for (i = 0; i < NTHREADS - 1; i++) { MTest_Start_thread(spawnProcess, (void *) (long) i); } /* spawn the processes */ spawnProcess((void *) (NTHREADS - 1)); /* Exit the threads (but the spawned processes remain) */ MTest_Join_threads(); err = MTest_thread_barrier_free(); if (err) { printf("barrier_free failed\n"); fflush(stdout); MPI_Finalize(); return 1; } /* The master thread (this thread) checks the created communicators */ for (i = 0; i < NTHREADS; i++) { MPI_Bcast(&i, 1, MPI_INT, MPI_ROOT, intercomms[i]); } /* Free the created processes */ for (i = 0; i < NTHREADS; i++) { MPI_Comm_disconnect(&intercomms[i]); } } else { int num, threadnum; /* I'm the created process */ MPI_Bcast(&threadnum, 1, MPI_INT, 0, parentcomm); /* Form an intra comm with my parent */ /* receive from my parent */ MPI_Bcast(&num, 1, MPI_INT, 0, parentcomm); if (num != threadnum) { fprintf(stderr, "Unexpected thread num (%d != %d)\n", threadnum, num); } /* Let the parent free the intercomms */ MPI_Comm_disconnect(&parentcomm); } if (wasParent) MTest_Finalize(0); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/threads/spawn/th_taskmaster.c0000644000175000017500000001072512620254305022164 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include "mpithreadtest.h" #define DEFAULT_TASKS 128 #define DEFAULT_TASK_WINDOW 2 #define USE_THREADS int comm_world_rank; int comm_world_size; #ifdef USE_THREADS MPI_Comm th_comms[DEFAULT_TASK_WINDOW]; #endif #define CHECK_SUCCESS(status) \ { \ if (status != MPI_SUCCESS) { \ fprintf(stderr, "Routine on line %d returned with error status\n", __LINE__); \ MPI_Abort(MPI_COMM_WORLD, -1); \ } \ } void process_spawn(MPI_Comm * comm, int thread_id); void process_spawn(MPI_Comm * comm, int thread_id) { CHECK_SUCCESS(MPI_Comm_spawn((char *) "./th_taskmaster", (char **) NULL, 1, MPI_INFO_NULL, 0, th_comms[thread_id], comm, NULL)); } void process_disconnect(MPI_Comm * comm, int thread_id); void process_disconnect(MPI_Comm * comm, int thread_id) { if (comm_world_rank == 0) { CHECK_SUCCESS(MPI_Recv(NULL, 0, MPI_CHAR, 0, 1, *comm, MPI_STATUS_IGNORE)); CHECK_SUCCESS(MPI_Send(NULL, 0, MPI_CHAR, 0, 1, *comm)); } CHECK_SUCCESS(MPI_Comm_disconnect(comm)); } #ifdef USE_THREADS MTEST_THREAD_RETURN_TYPE main_thread(void *arg); MTEST_THREAD_RETURN_TYPE main_thread(void *arg) { MPI_Comm child_comm; int thread_id = (int) (size_t) arg; process_spawn(&child_comm, thread_id); CHECK_SUCCESS(MPI_Comm_set_errhandler(child_comm, MPI_ERRORS_RETURN)); process_disconnect(&child_comm, thread_id); return MTEST_THREAD_RETVAL_IGN; } #endif /* USE_THREADS */ int main(int argc, char *argv[]) { int tasks = 0, provided, i, j; MPI_Comm parent; #ifndef USE_THREADS MPI_Comm *child; #endif /* USE_THREADS */ #ifdef USE_THREADS CHECK_SUCCESS(MPI_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &provided)); if (provided != MPI_THREAD_MULTIPLE) { fprintf(stderr, "MPI does not provide THREAD_MULTIPLE support\n"); MPI_Abort(MPI_COMM_WORLD, -1); } #else CHECK_SUCCESS(MPI_Init(&argc, &argv)); #endif CHECK_SUCCESS(MPI_Comm_get_parent(&parent)); if (parent == MPI_COMM_NULL) { /* Parent communicator */ if (argc == 2) { tasks = atoi(argv[1]); } else if (argc == 1) { tasks = DEFAULT_TASKS; } else { fprintf(stderr, "Usage: %s {number_of_tasks}\n", argv[0]); MPI_Abort(MPI_COMM_WORLD, -1); } CHECK_SUCCESS(MPI_Comm_rank(MPI_COMM_WORLD, &comm_world_rank)); CHECK_SUCCESS(MPI_Comm_size(MPI_COMM_WORLD, &comm_world_size)); #ifndef USE_THREADS child = (MPI_Comm *) malloc(tasks * sizeof(MPI_Comm)); if (!child) { fprintf(stderr, "Unable to allocate memory for child communicators\n"); MPI_Abort(MPI_COMM_WORLD, -1); } #endif /* USE_THREADS */ #ifdef USE_THREADS /* We need different communicators per thread */ for (i = 0; i < DEFAULT_TASK_WINDOW; i++) CHECK_SUCCESS(MPI_Comm_dup(MPI_COMM_WORLD, &th_comms[i])); /* Create a thread for each task. Each thread will spawn a * child process to perform its task. */ for (i = 0; i < tasks;) { for (j = 0; j < DEFAULT_TASK_WINDOW; j++) { MTest_Start_thread(main_thread, (void *) (size_t) j); } MTest_Join_threads(); i += DEFAULT_TASK_WINDOW; } for (i = 0; i < DEFAULT_TASK_WINDOW; i++) CHECK_SUCCESS(MPI_Comm_free(&th_comms[i])); #else /* Directly spawn a child process to perform each task */ for (i = 0; i < tasks;) { for (j = 0; j < DEFAULT_TASK_WINDOW; j++) process_spawn(&child[j], -1); for (j = 0; j < DEFAULT_TASK_WINDOW; j++) process_disconnect(&child[j], -1); i += DEFAULT_TASK_WINDOW; } #endif /* USE_THREADS */ CHECK_SUCCESS(MPI_Barrier(MPI_COMM_WORLD)); if (comm_world_rank == 0) printf(" No Errors\n"); } else { /* Child communicator */ /* Do some work here and send a message to the root process in * the parent communicator. */ CHECK_SUCCESS(MPI_Send(NULL, 0, MPI_CHAR, 0, 1, parent)); CHECK_SUCCESS(MPI_Recv(NULL, 0, MPI_CHAR, 0, 1, parent, MPI_STATUS_IGNORE)); CHECK_SUCCESS(MPI_Comm_disconnect(&parent)); } fn_exit: MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/threads/coll/0000755000175000017500000000000012621010236016735 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/threads/coll/Makefile.in0000644000175000017500000005037612621010236021015 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = iallred$(EXEEXT) allred$(EXEEXT) subdir = threads/coll ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = testlist CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) allred_SOURCES = allred.c allred_OBJECTS = allred.$(OBJEXT) allred_LDADD = $(LDADD) allred_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o \ $(top_builddir)/threads/util/mtestthread.$(OBJEXT) iallred_SOURCES = iallred.c iallred_OBJECTS = iallred.$(OBJEXT) iallred_LDADD = $(LDADD) iallred_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o \ $(top_builddir)/threads/util/mtestthread.$(OBJEXT) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = allred.c iallred.c DIST_SOURCES = allred.c iallred.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/testlist.in \ $(top_srcdir)/Makefile.mtest $(top_srcdir)/confdb/depcomp \ $(top_srcdir)/threads/Makefile_threads.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o \ $(top_builddir)/threads/util/mtestthread.$(OBJEXT) @threadlib@ CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist.in all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/threads/Makefile_threads.mtest $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign threads/coll/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign threads/coll/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/threads/Makefile_threads.mtest $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): testlist: $(top_builddir)/config.status $(srcdir)/testlist.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) allred$(EXEEXT): $(allred_OBJECTS) $(allred_DEPENDENCIES) $(EXTRA_allred_DEPENDENCIES) @rm -f allred$(EXEEXT) $(AM_V_CCLD)$(LINK) $(allred_OBJECTS) $(allred_LDADD) $(LIBS) iallred$(EXEEXT): $(iallred_OBJECTS) $(iallred_DEPENDENCIES) $(EXTRA_iallred_DEPENDENCIES) @rm -f iallred$(EXEEXT) $(AM_V_CCLD)$(LINK) $(iallred_OBJECTS) $(iallred_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/allred.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iallred.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml $(top_builddir)/threads/util/mtestthread.$(OBJEXT): $(top_srcdir)/threads/util/mtestthread.c (cd $(top_builddir)/threads/util && $(MAKE) mtestthread.$(OBJEXT)) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/threads/coll/Makefile.am0000644000175000017500000000040712620254305021000 0ustar mbanckmbanck## -*- Mode: Makefile; -*- ## vim: set ft=automake : ## ## (C) 2011 by Argonne National Laboratory. ## See COPYRIGHT in top-level directory. ## include $(top_srcdir)/threads/Makefile_threads.mtest EXTRA_DIST = testlist.in noinst_PROGRAMS = iallred allred mpi-testsuite-3.2+dfsg/threads/coll/testlist.in0000644000175000017500000000010012620254305021135 0ustar mbanckmbanck@comm_overlap@ allred 2 @comm_overlap@ iallred 2 mpiversion=3.0 mpi-testsuite-3.2+dfsg/threads/coll/allred.c0000644000175000017500000000350412620254305020354 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * Test threaded overlapped collective operations. * * Create one communicator for each thread, then do collective operation * on the communicator. For different threads on different processes, try to * do the collective in a overlapped order. */ #include #include #include "mpitest.h" #include "mpithreadtest.h" #define NUM_THREADS 2 #define BUF_SIZE 1024 #define check(X_) \ do { \ if (!(X_)) { \ printf("[%s:%d] -- Assertion failed: %s\n", __FILE__, __LINE__, #X_);\ MPI_Abort(MPI_COMM_WORLD, 1); \ } \ } while (0) MPI_Comm comms[NUM_THREADS]; int rank, size; MTEST_THREAD_RETURN_TYPE test_iallred(void *arg) { MPI_Request req; int tid = *(int *) arg; int buf[BUF_SIZE]; if (tid == rank) MTestSleep(1); MPI_Allreduce(MPI_IN_PLACE, buf, BUF_SIZE, MPI_INT, MPI_BAND, comms[tid]); return (MTEST_THREAD_RETURN_TYPE) 0; } int main(int argc, char **argv) { int thread_args[NUM_THREADS]; int i, provided; int errs = 0; MPI_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &provided); check(provided == MPI_THREAD_MULTIPLE); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); for (i = 0; i < NUM_THREADS; i++) { MPI_Comm_dup(MPI_COMM_WORLD, &comms[i]); } for (i = 0; i < NUM_THREADS; i++) { thread_args[i] = i; MTest_Start_thread(test_iallred, (void *) &thread_args[i]); } errs = MTest_Join_threads(); for (i = 0; i < NUM_THREADS; i++) { MPI_Comm_free(&comms[i]); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/threads/coll/iallred.c0000644000175000017500000000357612620254305020536 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * Test threaded overlapped nonblocking collective operations. * * Create one communicator for each thread, then do collective operation * on the communicator. For different threads on different processes, try to * do the collective in a overlapped order. */ #include #include #include "mpitest.h" #include "mpithreadtest.h" #define NUM_THREADS 2 #define BUF_SIZE 1024 #define check(X_) \ do { \ if (!(X_)) { \ printf("[%s:%d] -- Assertion failed: %s\n", __FILE__, __LINE__, #X_);\ MPI_Abort(MPI_COMM_WORLD, 1); \ } \ } while (0) MPI_Comm comms[NUM_THREADS]; int rank, size; MTEST_THREAD_RETURN_TYPE test_iallred(void *arg) { MPI_Request req; int tid = *(int *) arg; int buf[BUF_SIZE]; if (tid == rank) MTestSleep(1); MPI_Iallreduce(MPI_IN_PLACE, buf, BUF_SIZE, MPI_INT, MPI_BAND, comms[tid], &req); MPI_Wait(&req, MPI_STATUS_IGNORE); return (MTEST_THREAD_RETURN_TYPE) 0; } int main(int argc, char **argv) { int thread_args[NUM_THREADS]; int i, provided; int errs = 0; MPI_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &provided); check(provided == MPI_THREAD_MULTIPLE); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); for (i = 0; i < NUM_THREADS; i++) { MPI_Comm_dup(MPI_COMM_WORLD, &comms[i]); } for (i = 0; i < NUM_THREADS; i++) { thread_args[i] = i; MTest_Start_thread(test_iallred, (void *) &thread_args[i]); } errs = MTest_Join_threads(); for (i = 0; i < NUM_THREADS; i++) { MPI_Comm_free(&comms[i]); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/threads/Makefile_threads.mtest0000644000175000017500000000120312620254305022313 0ustar mbanckmbanck## -*- Mode: Makefile; -*- ## vim: set ft=automake : ## ## (C) 2011 by Argonne National Laboratory. ## See COPYRIGHT in top-level directory. ## ## This is an automake makefile fragment that should be included by: ## ## include $(top_srcdir)/threads/Makefile.mtest ## start with the basic rules for mtest-based C programs include $(top_srcdir)/Makefile.mtest ## then add rules/vars for mtestthread.o LDADD += $(top_builddir)/threads/util/mtestthread.$(OBJEXT) @threadlib@ $(top_builddir)/threads/util/mtestthread.$(OBJEXT): $(top_srcdir)/threads/util/mtestthread.c (cd $(top_builddir)/threads/util && $(MAKE) mtestthread.$(OBJEXT)) mpi-testsuite-3.2+dfsg/threads/Makefile.am0000644000175000017500000000051012620254305020042 0ustar mbanckmbanck## -*- Mode: Makefile; -*- ## vim: set ft=automake : ## ## (C) 2011 by Argonne National Laboratory. ## See COPYRIGHT in top-level directory. ## include $(top_srcdir)/Makefile.mtest EXTRA_DIST = testlist.in SUBDIRS = util pt2pt comm init mpi_t $(spawndir) rma coll DIST_SUBDIRS = util pt2pt comm init mpi_t spawn rma coll mpi-testsuite-3.2+dfsg/threads/util/0000755000175000017500000000000012621010236016761 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/threads/util/mtestthread.c0000644000175000017500000001725512620254305021471 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2006 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Define macro to override gcc strict flags, -D_POSIX_C_SOURCE=199506L, -std=c89 and -std=c99, that disallow pthread_barrier_t and friends. */ #if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE < 200112L #undef _POSIX_C_SOURCE #define _POSIX_C_SOURCE 200112L #endif #include "mpi.h" #include #include #include "mpitest.h" #include "mpithreadtest.h" /* This file provides a portability layer for using threads. Currently, it supports POSIX threads (pthreads) and Windows threads. Testing has been performed for pthreads. */ /* We remember all of the threads we create; this similifies terminating (joining) them. */ #ifndef MTEST_MAX_THREADS #define MTEST_MAX_THREADS 16 #endif static MTEST_THREAD_HANDLE threads[MTEST_MAX_THREADS]; /* access w/o a lock is broken, but "volatile" should help reduce the amount of * speculative loading/storing */ static volatile int nthreads = 0; #ifdef HAVE_WINDOWS_H int MTest_Start_thread(MTEST_THREAD_RETURN_TYPE(*fn) (void *p), void *arg) { if (nthreads >= MTEST_MAX_THREADS) { fprintf(stderr, "Too many threads already created: max is %d\n", MTEST_MAX_THREADS); return 1; } threads[nthreads] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) fn, (LPVOID) arg, 0, NULL); if (threads[nthreads] == NULL) { return GetLastError(); } else { nthreads++; } return 0; } int MTest_Join_threads(void) { int i, err = 0; for (i = 0; i < nthreads; i++) { if (threads[i] != INVALID_HANDLE_VALUE) { if (WaitForSingleObject(threads[i], INFINITE) == WAIT_FAILED) { err = GetLastError(); fprintf(stderr, "Error WaitForSingleObject(), err = %d\n", err); } else { CloseHandle(threads[i]); } } } nthreads = 0; return err; } int MTest_thread_lock_create(MTEST_THREAD_LOCK_TYPE * lock) { if (lock == NULL) return -1; /* Create an unnamed uninheritable mutex */ *lock = CreateMutex(NULL, FALSE, NULL); if (*lock == NULL) return -1; return 0; } int MTest_thread_lock(MTEST_THREAD_LOCK_TYPE * lock) { if (lock == NULL) return -1; /* Wait infinitely for the mutex */ if (WaitForSingleObject(*lock, INFINITE) != WAIT_OBJECT_0) { return -1; } return 0; } int MTest_thread_unlock(MTEST_THREAD_LOCK_TYPE * lock) { if (lock == NULL) return -1; if (ReleaseMutex(*lock) == 0) { return -1; } return 0; } int MTest_thread_lock_free(MTEST_THREAD_LOCK_TYPE * lock) { if (lock != NULL) { if (CloseHandle(*lock) == 0) { return -1; } } return 0; } #else int MTest_Start_thread(MTEST_THREAD_RETURN_TYPE(*fn) (void *p), void *arg) { int err; pthread_attr_t attr; pthread_attr_init(&attr); pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE); if (nthreads >= MTEST_MAX_THREADS) { fprintf(stderr, "Too many threads already created: max is %d\n", MTEST_MAX_THREADS); return 1; } err = pthread_create(threads + nthreads, &attr, fn, arg); if (!err) { nthreads++; } pthread_attr_destroy(&attr); return err; } int MTest_Join_threads(void) { int i, rc, err = 0; for (i = 0; i < nthreads; i++) { rc = pthread_join(threads[i], 0); if (rc) err = rc; } nthreads = 0; return err; } int MTest_thread_lock_create(MTEST_THREAD_LOCK_TYPE * lock) { int err; err = pthread_mutex_init(lock, NULL); if (err) { perror("Failed to initialize lock:"); } return err; } int MTest_thread_lock(MTEST_THREAD_LOCK_TYPE * lock) { int err; err = pthread_mutex_lock(lock); if (err) { perror("Failed to acquire lock:"); } return err; } int MTest_thread_unlock(MTEST_THREAD_LOCK_TYPE * lock) { int err; err = pthread_mutex_unlock(lock); if (err) { perror("Failed to release lock:"); } return err; } int MTest_thread_lock_free(MTEST_THREAD_LOCK_TYPE * lock) { int err; err = pthread_mutex_destroy(lock); if (err) { perror("Failed to free lock:"); } return err; } #endif #if defined(HAVE_PTHREAD_BARRIER_INIT) && defined(USE_PTHREADS) static MTEST_THREAD_LOCK_TYPE barrierLock; static pthread_barrier_t barrier; static int bcount = -1; int MTest_thread_barrier_init(void) { bcount = -1; /* must reset to force barrier re-creation */ return MTest_thread_lock_create(&barrierLock); } int MTest_thread_barrier_free(void) { MTest_thread_lock_free(&barrierLock); return pthread_barrier_destroy(&barrier); } /* FIXME this barrier interface should be changed to more closely match the * pthread interface. Specifically, nt should not be a barrier-time * parameter but an init-time parameter. The double-checked locking below * isn't valid according to pthreads, and it isn't guaranteed to be robust * in the presence of aggressive CPU/compiler optimization. */ int MTest_thread_barrier(int nt) { int err; if (nt < 0) nt = nthreads; if (bcount != nt) { /* One thread needs to initialize the barrier */ MTest_thread_lock(&barrierLock); /* Test again in case another thread already fixed the problem */ if (bcount != nt) { if (bcount > 0) { err = pthread_barrier_destroy(&barrier); if (err) return err; } err = pthread_barrier_init(&barrier, NULL, nt); if (err) return err; bcount = nt; } err = MTest_thread_unlock(&barrierLock); if (err) return err; } return pthread_barrier_wait(&barrier); } #else static MTEST_THREAD_LOCK_TYPE barrierLock; static volatile int phase = 0; static volatile int c[2] = { -1, -1 }; int MTest_thread_barrier_init(void) { return MTest_thread_lock_create(&barrierLock); } int MTest_thread_barrier_free(void) { return MTest_thread_lock_free(&barrierLock); } /* This is a generic barrier implementation. To ensure that tests don't silently fail, this both prints an error message and returns an error result on any failure. */ int MTest_thread_barrier(int nt) { volatile int *cntP; int err = 0; if (nt < 0) nt = nthreads; /* Force a write barrier by using lock/unlock */ err = MTest_thread_lock(&barrierLock); if (err) { fprintf(stderr, "Lock failed in barrier!\n"); return err; } cntP = &c[phase]; err = MTest_thread_unlock(&barrierLock); if (err) { fprintf(stderr, "Unlock failed in barrier!\n"); return err; } /* printf("[%d] cnt = %d, phase = %d\n", pthread_self(), *cntP, phase); */ err = MTest_thread_lock(&barrierLock); if (err) { fprintf(stderr, "Lock failed in barrier!\n"); return err; } /* The first thread to enter will reset the counter */ if (*cntP < 0) *cntP = nt; /* printf("phase = %d, cnt = %d\n", phase, *cntP); */ /* The last thread to enter will force the counter to be negative */ if (*cntP == 1) { /* printf("[%d] changing phase from %d\n", pthread_self(), phase); */ phase = !phase; c[phase] = -1; *cntP = 0; } /* Really need a write barrier here */ *cntP = *cntP - 1; err = MTest_thread_unlock(&barrierLock); if (err) { fprintf(stderr, "Unlock failed in barrier!\n"); return err; } while (*cntP > 0); return err; } #endif /* Default barrier routine */ mpi-testsuite-3.2+dfsg/threads/util/Makefile.in0000644000175000017500000004470712621010236021042 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = threads/util ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = ARFLAGS = cru AM_V_AR = $(am__v_AR_@AM_V@) am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) am__v_AR_0 = @echo " AR " $@; am__v_AR_1 = libmtestthread_dummy_a_AR = $(AR) $(ARFLAGS) libmtestthread_dummy_a_LIBADD = am_libmtestthread_dummy_a_OBJECTS = mtestthread.$(OBJEXT) libmtestthread_dummy_a_OBJECTS = $(am_libmtestthread_dummy_a_OBJECTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libmtestthread_dummy_a_SOURCES) DIST_SOURCES = $(libmtestthread_dummy_a_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include EXTRA_LIBRARIES = libmtestthread_dummy.a libmtestthread_dummy_a_SOURCES = mtestthread.c all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign threads/util/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign threads/util/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): libmtestthread_dummy.a: $(libmtestthread_dummy_a_OBJECTS) $(libmtestthread_dummy_a_DEPENDENCIES) $(EXTRA_libmtestthread_dummy_a_DEPENDENCIES) $(AM_V_at)-rm -f libmtestthread_dummy.a $(AM_V_AR)$(libmtestthread_dummy_a_AR) libmtestthread_dummy.a $(libmtestthread_dummy_a_OBJECTS) $(libmtestthread_dummy_a_LIBADD) $(AM_V_at)$(RANLIB) libmtestthread_dummy.a mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mtestthread.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile all-local installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \ clean-generic cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile all-local: mtestthread.$(OBJEXT) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/threads/util/Makefile.am0000644000175000017500000000074012620254305021024 0ustar mbanckmbanck## -*- Mode: Makefile; -*- ## vim: set ft=automake : ## ## (C) 2011 by Argonne National Laboratory. ## See COPYRIGHT in top-level directory. ## AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include ## list a dummy library that we don't actually build in order to cause automake ## to emit a rule for building mtestthread.o from mtestthread.c EXTRA_LIBRARIES = libmtestthread_dummy.a libmtestthread_dummy_a_SOURCES = mtestthread.c all-local: mtestthread.$(OBJEXT) mpi-testsuite-3.2+dfsg/threads/comm/0000755000175000017500000000000012621010236016737 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/threads/comm/comm_create_group_threads.c0000644000175000017500000000603312620254305024317 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include "mpitest.h" #include "mpithreadtest.h" #define NUM_THREADS 4 #define NUM_ITER 100 #define check(X_) \ do { \ if (!(X_)) { \ printf("[%s:%d] -- Assertion failed: %s\n", __FILE__, __LINE__, #X_);\ MPI_Abort(MPI_COMM_WORLD, 1); \ } \ } while (0) MPI_Comm comms[NUM_THREADS]; MTEST_THREAD_LOCK_TYPE comm_lock; int rank, size; int verbose = 0; MTEST_THREAD_RETURN_TYPE test_comm_create_group(void *arg) { int i; for (i = 0; i < NUM_ITER; i++) { MPI_Group world_group; MPI_Comm comm, self_dup; MPI_Comm_group(comms[*(int *) arg], &world_group); /* Every thread paticipates in a distinct MPI_Comm_create group, * distinguished by its thread-id (used as the tag). Threads on even * ranks join an even comm and threads on odd ranks join the odd comm. */ if (verbose) printf("%d: Thread %d - Comm_create_group %d start\n", rank, *(int *) arg, i); MPI_Comm_create_group(comms[*(int *) arg], world_group, *(int *) arg /* tag */ , &comm); MPI_Barrier(comm); MPI_Comm_free(&comm); if (verbose) printf("%d: Thread %d - Comm_create_group %d finish\n", rank, *(int *) arg, i); MPI_Group_free(&world_group); /* Threads now call a collective MPI Comm routine. This is done on a * separate communicator so it can be concurrent with calls to * Comm_create_group. A lock is needed to preserve MPI's threads + * collective semantics. */ MTest_thread_lock(&comm_lock); if (verbose) printf("%d: Thread %d - Comm_dup %d start\n", rank, *(int *) arg, i); MPI_Comm_dup(MPI_COMM_SELF, &self_dup); if (verbose) printf("%d: Thread %d - Comm_dup %d finish\n", rank, *(int *) arg, i); MTest_thread_unlock(&comm_lock); MPI_Barrier(self_dup); MPI_Comm_free(&self_dup); } if (verbose) printf("%d: Thread %d - Done.\n", rank, *(int *) arg); return NULL; } int main(int argc, char **argv) { int thread_args[NUM_THREADS]; int i, err, provided; MPI_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &provided); check(provided == MPI_THREAD_MULTIPLE); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); MTest_thread_lock_create(&comm_lock); for (i = 0; i < NUM_THREADS; i++) { MPI_Comm_dup(MPI_COMM_WORLD, &comms[i]); } for (i = 0; i < NUM_THREADS; i++) { thread_args[i] = i; MTest_Start_thread(test_comm_create_group, (void *) &thread_args[i]); } MTest_Join_threads(); for (i = 0; i < NUM_THREADS; i++) { MPI_Comm_free(&comms[i]); } if (rank == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/threads/comm/comm_dup_deadlock.c0000644000175000017500000000464412620254305022552 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include "mpitest.h" #include "mpithreadtest.h" #define NUM_THREADS 2 #define NUM_ITER 1 #define check(X_) \ do { \ if (!(X_)) { \ printf("[%s:%d] -- Assertion failed: %s\n", __FILE__, __LINE__, #X_);\ MPI_Abort(MPI_COMM_WORLD, 1); \ } \ } while (0) MPI_Comm comms[NUM_THREADS]; MTEST_THREAD_LOCK_TYPE comm_lock; int rank, size; int verbose = 0; MTEST_THREAD_RETURN_TYPE test_comm_dup(void *arg) { int rank; int i; MPI_Comm_rank(comms[*(int *) arg], &rank); for (i = 0; i < NUM_ITER; i++) { MPI_Comm comm, self_dup; if (*(int *) arg == rank) { MTestSleep(1); } MTest_thread_lock(&comm_lock); if (verbose) printf("%d: Thread %d - Comm_dup %d start\n", rank, *(int *) arg, i); MPI_Comm_dup(MPI_COMM_SELF, &self_dup); if (verbose) printf("%d: Thread %d - Comm_dup %d finish\n", rank, *(int *) arg, i); MTest_thread_unlock(&comm_lock); MPI_Comm_free(&self_dup); if (verbose) printf("%d: Thread %d - comm_dup %d start\n", rank, *(int *) arg, i); MPI_Comm_dup(comms[*(int *) arg], &comm); MPI_Comm_free(&comm); if (verbose) printf("%d: Thread %d - comm_dup %d finish\n", rank, *(int *) arg, i); } if (verbose) printf("%d: Thread %d - Done.\n", rank, *(int *) arg); return (MTEST_THREAD_RETURN_TYPE) 0; } int main(int argc, char **argv) { int thread_args[NUM_THREADS]; int i, provided; MPI_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &provided); check(provided == MPI_THREAD_MULTIPLE); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); MTest_thread_lock_create(&comm_lock); for (i = 0; i < NUM_THREADS; i++) { MPI_Comm_dup(MPI_COMM_WORLD, &comms[i]); } for (i = 0; i < NUM_THREADS; i++) { thread_args[i] = i; MTest_Start_thread(test_comm_dup, (void *) &thread_args[i]); } MTest_Join_threads(); for (i = 0; i < NUM_THREADS; i++) { MPI_Comm_free(&comms[i]); } if (rank == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/threads/comm/ctxidup.c0000644000175000017500000000561312620254305020576 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2006 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include "mpithreadtest.h" /* * static char MTEST_Descrip[] = "Creating communications concurrently in different threads"; */ MTEST_THREAD_RETURN_TYPE dup_thread(void *); MTEST_THREAD_RETURN_TYPE dup_thread(void *p) { int rank; int buffer[1]; MPI_Comm *comm2_ptr = (MPI_Comm *) p; MPI_Comm comm3; MPI_Request req; MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (rank & 0x1) { /* If odd, wait for message */ MPI_Recv(buffer, 0, MPI_INT, rank, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); } MPI_Comm_idup(*comm2_ptr, &comm3, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); MPI_Barrier(comm3); MPI_Recv(buffer, 0, MPI_INT, rank, 1, MPI_COMM_WORLD, MPI_STATUS_IGNORE); MPI_Comm_free(&comm3); /* Tell the main thread that we're done */ MPI_Send(buffer, 0, MPI_INT, rank, 2, MPI_COMM_WORLD); return (MTEST_THREAD_RETURN_TYPE) 0; } int main(int argc, char *argv[]) { int rank, size; int provided; int buffer[1]; MPI_Comm comm1, comm2, comm4; MPI_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &provided); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); /* Check that we're multi-threaded */ if (provided != MPI_THREAD_MULTIPLE) { if (rank == 0) { printf ("MPI_Init_thread must return MPI_THREAD_MULTIPLE in order for this test to run.\n"); fflush(stdout); } MPI_Finalize(); return 1; } /* The test is this: * The main thread on ODD processors tells the other thread to start * a comm dup(on comm2), then starts a comm dup(on comm1) after a delay. * The main thread on even processors starts a comm dup(on comm1) * * The second thread on ODD processors waits until it gets a message * (from the same process) before starting the comm dup on comm2. */ /* Create two communicators */ MPI_Comm_dup(MPI_COMM_WORLD, &comm1); MPI_Comm_dup(MPI_COMM_WORLD, &comm2); /* Start a thread that will perform a dup comm2 */ MTest_Start_thread(dup_thread, (void *) &comm2); /* If we're odd, send to our new thread and then delay */ if (rank & 0x1) { MPI_Ssend(buffer, 0, MPI_INT, rank, 0, MPI_COMM_WORLD); MTestSleep(1); } MPI_Comm_dup(comm1, &comm4); /* Tell the threads to exit after we've created our new comm */ MPI_Barrier(comm4); MPI_Ssend(buffer, 0, MPI_INT, rank, 1, MPI_COMM_WORLD); MPI_Recv(buffer, 0, MPI_INT, rank, 2, MPI_COMM_WORLD, MPI_STATUS_IGNORE); MPI_Comm_free(&comm4); MPI_Comm_free(&comm1); MPI_Comm_free(&comm2); MTest_Finalize(0); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/threads/comm/comm_create_group_threads2.c0000644000175000017500000000556612620254305024413 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* This test test MPI_Comm_create_group tests calling by multiple threads in parallel, using the same communicator but different tags */ #include #include #include "mpitest.h" #include "mpithreadtest.h" #define NUM_THREADS 4 #define NUM_ITER 100 #define check(X_) \ do { \ if (!(X_)) { \ printf("[%s:%d] -- Assertion failed: %s\n", __FILE__, __LINE__, #X_);\ MPI_Abort(MPI_COMM_WORLD, 1); \ } \ } while (0) MPI_Group global_group; int rank, size; int verbose = 0; MTEST_THREAD_RETURN_TYPE test_comm_create_group(void *arg) { int i; MPI_Group half_group, full_group; int range[1][3]; MPI_Comm comm; range[0][0] = 0; range[0][1] = size / 2; range[0][2] = 1; for (i = 0; i < NUM_ITER; i++) { MPI_Comm_group(MPI_COMM_WORLD, &full_group); MPI_Group_range_incl(full_group, 1, range, &half_group); /* Every thread paticipates in a distinct MPI_Comm_create_group, * distinguished by its thread-id (used as the tag). */ if (verbose) printf("%d: Thread %d - Comm_create_group %d start\n", rank, *(int *) arg, i); if(rank <= size / 2){ MPI_Comm_create_group(MPI_COMM_WORLD, half_group, *(int *) arg /* tag */ , &comm); MPI_Barrier(comm); MPI_Comm_free(&comm); } if (verbose) printf("%d: Thread %d - Comm_create_group %d finish\n", rank, *(int *) arg, i); MPI_Group_free(&half_group); MPI_Group_free(&full_group); /* Repeat the test, using the same group */ if (verbose) printf("%d: Thread %d - Comm_create_group %d start\n", rank, *(int *) arg, i); MPI_Comm_create_group(MPI_COMM_WORLD, global_group, *(int *) arg /* tag */ , &comm); MPI_Barrier(comm); MPI_Comm_free(&comm); if (verbose) printf("%d: Thread %d - Comm_create_group %d finish\n", rank, *(int *) arg, i); } if (verbose) printf("%d: Thread %d - Done.\n", rank, *(int *) arg); return NULL; } int main(int argc, char **argv) { int thread_args[NUM_THREADS]; int i, err, provided; MPI_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &provided); check(provided == MPI_THREAD_MULTIPLE); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_group(MPI_COMM_WORLD, &global_group); for (i = 0; i < NUM_THREADS; i++) { thread_args[i] = i; MTest_Start_thread(test_comm_create_group, (void *) &thread_args[i]); } err = MTest_Join_threads(); MPI_Group_free(&global_group); MTest_Finalize(err); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/threads/comm/idup_nb.c0000644000175000017500000002420612620254305020535 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* This test tests the overlapping of MPI_Comm_idup with other nonblocking calls in a multithreaded setting. Each process produces a new communicator for each of its threads. A thread will duplicate it again to produce child communicators. When the first child communicator is ready, the thread duplicates it to produce grandchild communicators. Meanwhile, the thread also issues nonblocking calls, such as idup, iscan, ibcast, iallreduce, ibarrier on the communicators available. The test tests both intracommunicators and intercommunicators */ #include #include #include "mpitest.h" #include "mpithreadtest.h" #define NUM_THREADS 3 /* threads to spawn per process, must >= 1 */ #define NUM_IDUPS1 3 /* child communicators to iduplicate per thread, must >= 1 */ #define NUM_IDUPS2 3 /* grandchild communicators to iduplicate per thread, must >= 1 */ #define NUM_ITER 1 /* run the kernel this times */ #define check(X_) \ do { \ if (!(X_)) { \ printf("[%s:%d] -- Assertion failed: %s\n", __FILE__, __LINE__, #X_);\ MPI_Abort(MPI_COMM_WORLD, 1); \ } \ } while (0) int isLeft; /* Is left group of an intercomm? */ MPI_Comm parentcomms[NUM_THREADS]; MPI_Comm nbrcomms[NUM_THREADS]; int errs[NUM_THREADS] = { 0 }; int verbose = 0; /* Threads idup the communicator assigned to them NUM_IDUPS1 times. The operation is overlapped with other non-blocking operations on the same communicator or on a different communicator. */ MTEST_THREAD_RETURN_TYPE test_intracomm(void *arg) { int i, j; int root, bcastbuf; int rank, size; int ans[4], expected[4]; MPI_Request reqs[NUM_IDUPS1 + NUM_IDUPS2 + 10] = { MPI_REQUEST_NULL }; /* Preallocate enough reqs */ MPI_Comm comms[NUM_IDUPS1 + NUM_IDUPS2]; /* Hold all descendant comms */ int cnt; int tid = *(int *) arg; MPI_Comm parentcomm = parentcomms[tid]; MPI_Comm nbrcomm = nbrcomms[tid]; for (i = 0; i < NUM_ITER; i++) { cnt = 0; if (*(int *) arg == rank) MTestSleep(1); if (verbose) printf("%d: Thread %d - comm_idup %d start\n", rank, tid, i); /* Idup the parent intracomm NUM_IDUPS1 times */ for (j = 0; j < NUM_IDUPS1; j++) MPI_Comm_idup(parentcomm, &comms[j], &reqs[cnt++]); /* Issue an iscan on parent comm to overlap with the pending idups */ MPI_Comm_rank(parentcomm, &rank); MPI_Iscan(&rank, &ans[0], 1, MPI_INT, MPI_SUM, parentcomm, &reqs[cnt++]); expected[0] = rank * (rank + 1) / 2; /* Wait for the first child comm to be ready */ MPI_Wait(&reqs[0], MPI_STATUS_IGNORE); /* Do Idups & iallreduce on the first child comm simultaneously */ for (j = 0; j < NUM_IDUPS2; j++) MPI_Comm_idup(comms[0], &comms[NUM_IDUPS1 + j], &reqs[cnt++]); MPI_Comm_size(comms[0], &size); MPI_Iallreduce(&rank, &ans[1], 1, MPI_INT, MPI_SUM, comms[0], &reqs[cnt++]); expected[1] = (size - 1) * size / 2; /* Issue an ibcast on the parent comm */ MPI_Comm_rank(parentcomm, &rank); ans[2] = (rank == 0) ? 199 : 111; MPI_Ibcast(&ans[2], 1, MPI_INT, 0, parentcomm, &reqs[cnt++]); expected[2] = 199; /* Do ibarrier on the dup'ed comm */ MPI_Ibarrier(comms[0], &reqs[cnt++]); /* Issue an iscan on a neighbor comm */ MPI_Comm_rank(nbrcomm, &rank); MPI_Iscan(&rank, &ans[3], 1, MPI_INT, MPI_SUM, nbrcomm, &reqs[cnt++]); expected[3] = rank * (rank + 1) / 2; /* Pending operations include idup/iscan/ibcast on parentcomm * idup/Iallreduce/Ibarrier on comms[0], and Iscan on nbrcomm */ /* Waitall even if the first request is completed */ MPI_Waitall(cnt, reqs, MPI_STATUSES_IGNORE); /* Check the answers */ for (j = 0; j < 4; j++) { if (ans[j] != expected[j]) errs[tid]++; } for (j = 0; j < NUM_IDUPS1 + NUM_IDUPS2; j++) { errs[tid] += MTestTestComm(comms[j]); MPI_Comm_free(&comms[j]); } if (verbose) printf("\t%d: Thread %d - comm_idup %d finish\n", rank, tid, i); } if (verbose) printf("%d: Thread %d - Done.\n", rank, tid); return (MTEST_THREAD_RETURN_TYPE) 0; } /* Threads idup the communicator assigned to them NUM_IDUPS1 times. The operation is overlapped with other non-blocking operations on the same communicator or on a different communicator. */ MTEST_THREAD_RETURN_TYPE test_intercomm(void *arg) { int rank, rsize, root; int i, j; int tid = *(int *) arg; int ans[4], expected[4]; MPI_Comm parentcomm = parentcomms[tid]; MPI_Comm nbrcomm = nbrcomms[tid]; MPI_Request reqs[NUM_IDUPS1 + NUM_IDUPS2 + 10] = { MPI_REQUEST_NULL }; /* Preallocate enough reqs */ MPI_Comm comms[NUM_IDUPS1 + NUM_IDUPS2]; /* Hold all descendant comms */ int cnt; for (i = 0; i < NUM_ITER; i++) { cnt = 0; if (*(int *) arg == rank) MTestSleep(1); if (verbose) printf("%d: Thread %d - comm_idup %d start\n", rank, tid, i); /* Idup the parent intracomm multiple times */ for (j = 0; j < NUM_IDUPS1; j++) MPI_Comm_idup(parentcomm, &comms[j], &reqs[cnt++]); /* Issue an Iallreduce on parentcomm */ MPI_Comm_rank(parentcomm, &rank); MPI_Comm_remote_size(parentcomm, &rsize); MPI_Iallreduce(&rank, &ans[0], 1, MPI_INT, MPI_SUM, parentcomm, &reqs[cnt++]); expected[0] = (rsize - 1) * rsize / 2; /* Wait for the first child comm to be ready */ MPI_Wait(&reqs[0], MPI_STATUS_IGNORE); /* Do idup & iallreduce on the first child comm simultaneously */ for (j = 0; j < NUM_IDUPS2; j++) MPI_Comm_idup(comms[0], &comms[NUM_IDUPS1 + j], &reqs[cnt++]); MPI_Comm_rank(comms[0], &rank); MPI_Comm_remote_size(comms[0], &rsize); MPI_Iallreduce(&rank, &ans[1], 1, MPI_INT, MPI_SUM, comms[0], &reqs[cnt++]); expected[1] = (rsize - 1) * rsize / 2; /* Issue an ibcast on parentcomm */ MPI_Comm_rank(parentcomm, &rank); if (isLeft) { if (rank == 0) { root = MPI_ROOT; ans[2] = 199; } else { root = MPI_PROC_NULL; ans[2] = 199; /* not needed, just to make correctness checking easier */ } } else { root = 0; ans[2] = 111; /* garbage value */ } MPI_Ibcast(&ans[2], 1, MPI_INT, root, parentcomm, &reqs[cnt++]); expected[2] = 199; MPI_Ibarrier(comms[0], &reqs[cnt++]); /* Do an Iscan on a neighbor comm */ MPI_Comm_rank(nbrcomm, &rank); MPI_Comm_remote_size(nbrcomm, &rsize); MPI_Iallreduce(&rank, &ans[3], 1, MPI_INT, MPI_SUM, nbrcomm, &reqs[cnt++]); expected[3] = (rsize - 1) * rsize / 2; /* Pending operations include idup/iallreduce/ibcast on parentcomm * Iallreduce/Ibarrier on comms[0], and Iallreduce on nbrcomm */ /* Waitall even if the first request is completed */ MPI_Waitall(cnt, reqs, MPI_STATUSES_IGNORE); /* Check the answers */ for (j = 0; j < 4; j++) { if (ans[j] != expected[j]) errs[tid]++; } for (j = 0; j < NUM_IDUPS1 + NUM_IDUPS2; j++) { errs[tid] += MTestTestComm(comms[j]); MPI_Comm_free(&comms[j]); } if (verbose) printf("\t%d: Thread %d - comm_idup %d finish\n", rank, tid, i); } if (verbose) printf("%d: Thread %d - Done.\n", rank, tid); return (MTEST_THREAD_RETURN_TYPE) 0; } int main(int argc, char **argv) { int thread_args[NUM_THREADS]; MPI_Request requests[NUM_THREADS * 2]; int i, provided; MPI_Comm newcomm; int toterrs = 0; MPI_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &provided); check(provided == MPI_THREAD_MULTIPLE); check(NUM_IDUPS1 >= 1 && NUM_IDUPS2 >= 1); /* In each iteration, the process generates a new kind of intracommunicator, then * uses idup to duplicate the communicator for NUM_THREADS threads. */ while (MTestGetIntracommGeneral(&newcomm, 1, 1)) { if (newcomm == MPI_COMM_NULL) continue; for (i = 0; i < NUM_THREADS; i++) { MPI_Comm_idup(newcomm, &parentcomms[i], &requests[2 * i]); MPI_Comm_idup(newcomm, &nbrcomms[i], &requests[2 * i + 1]); } MPI_Waitall(NUM_THREADS * 2, requests, MPI_STATUSES_IGNORE); for (i = 0; i < NUM_THREADS; i++) { thread_args[i] = i; MTest_Start_thread(test_intracomm, (void *) &thread_args[i]); } MTest_Join_threads(); for (i = 0; i < NUM_THREADS; i++) { toterrs += errs[i]; MPI_Comm_free(&parentcomms[i]); MPI_Comm_free(&nbrcomms[i]); } MTestFreeComm(&newcomm); } /* In each iteration, the process generates a new kind of intercommunicator, then * uses idup to duplicate the communicator for NUM_THREADS threads. */ while (MTestGetIntercomm(&newcomm, &isLeft, 1)) { if (newcomm == MPI_COMM_NULL) continue; for (i = 0; i < NUM_THREADS; i++) { MPI_Comm_idup(newcomm, &parentcomms[i], &requests[2 * i]); MPI_Comm_idup(newcomm, &nbrcomms[i], &requests[2 * i + 1]); } MPI_Waitall(NUM_THREADS * 2, requests, MPI_STATUSES_IGNORE); for (i = 0; i < NUM_THREADS; i++) { thread_args[i] = i; MTest_Start_thread(test_intercomm, (void *) &thread_args[i]); } MTest_Join_threads(); for (i = 0; i < NUM_THREADS; i++) { toterrs += errs[i]; MPI_Comm_free(&parentcomms[i]); MPI_Comm_free(&nbrcomms[i]); } MTestFreeComm(&newcomm); } MTest_Finalize(toterrs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/threads/comm/Makefile.in0000644000175000017500000006520612621010236021015 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = ctxdup$(EXEEXT) dup_leak_test$(EXEEXT) \ comm_dup_deadlock$(EXEEXT) comm_create_threads$(EXEEXT) \ comm_create_group_threads$(EXEEXT) \ comm_create_group_threads2$(EXEEXT) comm_idup$(EXEEXT) \ idup_deadlock$(EXEEXT) ctxidup$(EXEEXT) idup_nb$(EXEEXT) \ idup_comm_gen$(EXEEXT) subdir = threads/comm ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = testlist CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) comm_create_group_threads_SOURCES = comm_create_group_threads.c comm_create_group_threads_OBJECTS = \ comm_create_group_threads.$(OBJEXT) comm_create_group_threads_LDADD = $(LDADD) comm_create_group_threads_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o \ $(top_builddir)/threads/util/mtestthread.$(OBJEXT) comm_create_group_threads2_SOURCES = comm_create_group_threads2.c comm_create_group_threads2_OBJECTS = \ comm_create_group_threads2.$(OBJEXT) comm_create_group_threads2_LDADD = $(LDADD) comm_create_group_threads2_DEPENDENCIES = \ $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o \ $(top_builddir)/threads/util/mtestthread.$(OBJEXT) comm_create_threads_SOURCES = comm_create_threads.c comm_create_threads_OBJECTS = comm_create_threads.$(OBJEXT) comm_create_threads_LDADD = $(LDADD) comm_create_threads_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o \ $(top_builddir)/threads/util/mtestthread.$(OBJEXT) comm_dup_deadlock_SOURCES = comm_dup_deadlock.c comm_dup_deadlock_OBJECTS = comm_dup_deadlock.$(OBJEXT) comm_dup_deadlock_LDADD = $(LDADD) comm_dup_deadlock_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o \ $(top_builddir)/threads/util/mtestthread.$(OBJEXT) comm_idup_SOURCES = comm_idup.c comm_idup_OBJECTS = comm_idup.$(OBJEXT) comm_idup_LDADD = $(LDADD) comm_idup_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o \ $(top_builddir)/threads/util/mtestthread.$(OBJEXT) ctxdup_SOURCES = ctxdup.c ctxdup_OBJECTS = ctxdup.$(OBJEXT) ctxdup_LDADD = $(LDADD) ctxdup_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o \ $(top_builddir)/threads/util/mtestthread.$(OBJEXT) ctxidup_SOURCES = ctxidup.c ctxidup_OBJECTS = ctxidup.$(OBJEXT) ctxidup_LDADD = $(LDADD) ctxidup_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o \ $(top_builddir)/threads/util/mtestthread.$(OBJEXT) dup_leak_test_SOURCES = dup_leak_test.c dup_leak_test_OBJECTS = dup_leak_test.$(OBJEXT) dup_leak_test_LDADD = $(LDADD) dup_leak_test_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o \ $(top_builddir)/threads/util/mtestthread.$(OBJEXT) idup_comm_gen_SOURCES = idup_comm_gen.c idup_comm_gen_OBJECTS = idup_comm_gen.$(OBJEXT) idup_comm_gen_LDADD = $(LDADD) idup_comm_gen_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o \ $(top_builddir)/threads/util/mtestthread.$(OBJEXT) idup_deadlock_SOURCES = idup_deadlock.c idup_deadlock_OBJECTS = idup_deadlock.$(OBJEXT) idup_deadlock_LDADD = $(LDADD) idup_deadlock_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o \ $(top_builddir)/threads/util/mtestthread.$(OBJEXT) idup_nb_SOURCES = idup_nb.c idup_nb_OBJECTS = idup_nb.$(OBJEXT) idup_nb_LDADD = $(LDADD) idup_nb_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o \ $(top_builddir)/threads/util/mtestthread.$(OBJEXT) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = comm_create_group_threads.c comm_create_group_threads2.c \ comm_create_threads.c comm_dup_deadlock.c comm_idup.c ctxdup.c \ ctxidup.c dup_leak_test.c idup_comm_gen.c idup_deadlock.c \ idup_nb.c DIST_SOURCES = comm_create_group_threads.c \ comm_create_group_threads2.c comm_create_threads.c \ comm_dup_deadlock.c comm_idup.c ctxdup.c ctxidup.c \ dup_leak_test.c idup_comm_gen.c idup_deadlock.c idup_nb.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/testlist.in \ $(top_srcdir)/Makefile.mtest $(top_srcdir)/confdb/depcomp \ $(top_srcdir)/threads/Makefile_threads.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o \ $(top_builddir)/threads/util/mtestthread.$(OBJEXT) @threadlib@ CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist.in all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/threads/Makefile_threads.mtest $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign threads/comm/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign threads/comm/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/threads/Makefile_threads.mtest $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): testlist: $(top_builddir)/config.status $(srcdir)/testlist.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) comm_create_group_threads$(EXEEXT): $(comm_create_group_threads_OBJECTS) $(comm_create_group_threads_DEPENDENCIES) $(EXTRA_comm_create_group_threads_DEPENDENCIES) @rm -f comm_create_group_threads$(EXEEXT) $(AM_V_CCLD)$(LINK) $(comm_create_group_threads_OBJECTS) $(comm_create_group_threads_LDADD) $(LIBS) comm_create_group_threads2$(EXEEXT): $(comm_create_group_threads2_OBJECTS) $(comm_create_group_threads2_DEPENDENCIES) $(EXTRA_comm_create_group_threads2_DEPENDENCIES) @rm -f comm_create_group_threads2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(comm_create_group_threads2_OBJECTS) $(comm_create_group_threads2_LDADD) $(LIBS) comm_create_threads$(EXEEXT): $(comm_create_threads_OBJECTS) $(comm_create_threads_DEPENDENCIES) $(EXTRA_comm_create_threads_DEPENDENCIES) @rm -f comm_create_threads$(EXEEXT) $(AM_V_CCLD)$(LINK) $(comm_create_threads_OBJECTS) $(comm_create_threads_LDADD) $(LIBS) comm_dup_deadlock$(EXEEXT): $(comm_dup_deadlock_OBJECTS) $(comm_dup_deadlock_DEPENDENCIES) $(EXTRA_comm_dup_deadlock_DEPENDENCIES) @rm -f comm_dup_deadlock$(EXEEXT) $(AM_V_CCLD)$(LINK) $(comm_dup_deadlock_OBJECTS) $(comm_dup_deadlock_LDADD) $(LIBS) comm_idup$(EXEEXT): $(comm_idup_OBJECTS) $(comm_idup_DEPENDENCIES) $(EXTRA_comm_idup_DEPENDENCIES) @rm -f comm_idup$(EXEEXT) $(AM_V_CCLD)$(LINK) $(comm_idup_OBJECTS) $(comm_idup_LDADD) $(LIBS) ctxdup$(EXEEXT): $(ctxdup_OBJECTS) $(ctxdup_DEPENDENCIES) $(EXTRA_ctxdup_DEPENDENCIES) @rm -f ctxdup$(EXEEXT) $(AM_V_CCLD)$(LINK) $(ctxdup_OBJECTS) $(ctxdup_LDADD) $(LIBS) ctxidup$(EXEEXT): $(ctxidup_OBJECTS) $(ctxidup_DEPENDENCIES) $(EXTRA_ctxidup_DEPENDENCIES) @rm -f ctxidup$(EXEEXT) $(AM_V_CCLD)$(LINK) $(ctxidup_OBJECTS) $(ctxidup_LDADD) $(LIBS) dup_leak_test$(EXEEXT): $(dup_leak_test_OBJECTS) $(dup_leak_test_DEPENDENCIES) $(EXTRA_dup_leak_test_DEPENDENCIES) @rm -f dup_leak_test$(EXEEXT) $(AM_V_CCLD)$(LINK) $(dup_leak_test_OBJECTS) $(dup_leak_test_LDADD) $(LIBS) idup_comm_gen$(EXEEXT): $(idup_comm_gen_OBJECTS) $(idup_comm_gen_DEPENDENCIES) $(EXTRA_idup_comm_gen_DEPENDENCIES) @rm -f idup_comm_gen$(EXEEXT) $(AM_V_CCLD)$(LINK) $(idup_comm_gen_OBJECTS) $(idup_comm_gen_LDADD) $(LIBS) idup_deadlock$(EXEEXT): $(idup_deadlock_OBJECTS) $(idup_deadlock_DEPENDENCIES) $(EXTRA_idup_deadlock_DEPENDENCIES) @rm -f idup_deadlock$(EXEEXT) $(AM_V_CCLD)$(LINK) $(idup_deadlock_OBJECTS) $(idup_deadlock_LDADD) $(LIBS) idup_nb$(EXEEXT): $(idup_nb_OBJECTS) $(idup_nb_DEPENDENCIES) $(EXTRA_idup_nb_DEPENDENCIES) @rm -f idup_nb$(EXEEXT) $(AM_V_CCLD)$(LINK) $(idup_nb_OBJECTS) $(idup_nb_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comm_create_group_threads.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comm_create_group_threads2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comm_create_threads.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comm_dup_deadlock.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comm_idup.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctxdup.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctxidup.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup_leak_test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/idup_comm_gen.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/idup_deadlock.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/idup_nb.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml $(top_builddir)/threads/util/mtestthread.$(OBJEXT): $(top_srcdir)/threads/util/mtestthread.c (cd $(top_builddir)/threads/util && $(MAKE) mtestthread.$(OBJEXT)) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/threads/comm/comm_idup.c0000644000175000017500000000503412620254305021067 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include "mpitest.h" #include "mpithreadtest.h" #define NUM_THREADS 2 #define NUM_ITER 1 #define check(X_) \ do { \ if (!(X_)) { \ printf("[%s:%d] -- Assertion failed: %s\n", __FILE__, __LINE__, #X_);\ MPI_Abort(MPI_COMM_WORLD, 1); \ } \ } while (0) MPI_Comm comms[NUM_THREADS]; MTEST_THREAD_LOCK_TYPE comm_lock; int rank, size; int verbose = 0; MTEST_THREAD_RETURN_TYPE test_comm_dup(void *arg) { int rank; int i; MPI_Request req; MPI_Comm comm, self_dup; MPI_Comm_rank(comms[*(int *) arg], &rank); for (i = 0; i < NUM_ITER; i++) { if (*(int *) arg == rank) { MTestSleep(1); } MTest_thread_lock(&comm_lock); if (verbose) printf("%d: Thread %d - COMM_IDUP %d start\n", rank, *(int *) arg, i); MPI_Comm_idup(MPI_COMM_SELF, &self_dup, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); if (verbose) printf("\t%d: Thread %d - COMM_IDUP %d finish\n", rank, *(int *) arg, i); MTest_thread_unlock(&comm_lock); MPI_Comm_free(&self_dup); if (verbose) printf("%d: Thread %d - comm_idup %d start\n", rank, *(int *) arg, i); MPI_Comm_idup(comms[*(int *) arg], &comm, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); MPI_Comm_free(&comm); if (verbose) printf("\t%d: Thread %d - comm_idup %d finish\n", rank, *(int *) arg, i); } if (verbose) printf("%d: Thread %d - Done.\n", rank, *(int *) arg); return (MTEST_THREAD_RETURN_TYPE) 0; } int main(int argc, char **argv) { int thread_args[NUM_THREADS]; int i, provided; MPI_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &provided); check(provided == MPI_THREAD_MULTIPLE); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); MTest_thread_lock_create(&comm_lock); for (i = 0; i < NUM_THREADS; i++) { MPI_Comm_dup(MPI_COMM_WORLD, &comms[i]); } for (i = 0; i < NUM_THREADS; i++) { thread_args[i] = i; MTest_Start_thread(test_comm_dup, (void *) &thread_args[i]); } MTest_Join_threads(); for (i = 0; i < NUM_THREADS; i++) { MPI_Comm_free(&comms[i]); } if (rank == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/threads/comm/ctxdup.c0000644000175000017500000000550412620254305020424 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2006 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include "mpithreadtest.h" /* static char MTEST_Descrip[] = "Creating communications concurrently in different threads"; */ MTEST_THREAD_RETURN_TYPE dup_thread(void *); MTEST_THREAD_RETURN_TYPE dup_thread(void *p) { int rank; int buffer[1]; MPI_Comm *comm2_ptr = (MPI_Comm *) p; MPI_Comm comm3; MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (rank & 0x1) { /* If odd, wait for message */ MPI_Recv(buffer, 0, MPI_INT, rank, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); } MPI_Comm_dup(*comm2_ptr, &comm3); MPI_Barrier(comm3); MPI_Recv(buffer, 0, MPI_INT, rank, 1, MPI_COMM_WORLD, MPI_STATUS_IGNORE); MPI_Comm_free(&comm3); /* Tell the main thread that we're done */ MPI_Send(buffer, 0, MPI_INT, rank, 2, MPI_COMM_WORLD); return (MTEST_THREAD_RETURN_TYPE) 0; } int main(int argc, char *argv[]) { int rank, size; int provided; int buffer[1]; MPI_Comm comm1, comm2, comm4; MPI_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &provided); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); /* Check that we're multi-threaded */ if (provided != MPI_THREAD_MULTIPLE) { if (rank == 0) { printf ("MPI_Init_thread must return MPI_THREAD_MULTIPLE in order for this test to run.\n"); fflush(stdout); } MPI_Finalize(); return 1; } /* The test is this: * The main thread on ODD processors tells the other thread to start * a comm dup(on comm2), then starts a comm dup(on comm1) after a delay. * The main thread on even processors starts a comm dup(on comm1) * * The second thread on ODD processors waits until it gets a message * (from the same process) before starting the comm dup on comm2. */ /* Create two communicators */ MPI_Comm_dup(MPI_COMM_WORLD, &comm1); MPI_Comm_dup(MPI_COMM_WORLD, &comm2); /* Start a thread that will perform a dup comm2 */ MTest_Start_thread(dup_thread, (void *) &comm2); /* If we're odd, send to our new thread and then delay */ if (rank & 0x1) { MPI_Ssend(buffer, 0, MPI_INT, rank, 0, MPI_COMM_WORLD); MTestSleep(1); } MPI_Comm_dup(comm1, &comm4); /* Tell the threads to exit after we've created our new comm */ MPI_Barrier(comm4); MPI_Ssend(buffer, 0, MPI_INT, rank, 1, MPI_COMM_WORLD); MPI_Recv(buffer, 0, MPI_INT, rank, 2, MPI_COMM_WORLD, MPI_STATUS_IGNORE); MPI_Comm_free(&comm4); MPI_Comm_free(&comm1); MPI_Comm_free(&comm2); MTest_Finalize(0); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/threads/comm/Makefile.am0000644000175000017500000000131612620254305021002 0ustar mbanckmbanck## -*- Mode: Makefile; -*- ## vim: set ft=automake : ## ## (C) 2011 by Argonne National Laboratory. ## See COPYRIGHT in top-level directory. ## include $(top_srcdir)/threads/Makefile_threads.mtest EXTRA_DIST = testlist.in noinst_PROGRAMS = \ ctxdup \ dup_leak_test \ comm_dup_deadlock \ comm_create_threads \ comm_create_group_threads \ comm_create_group_threads2 \ comm_idup \ idup_deadlock \ ctxidup \ idup_nb \ idup_comm_gen mpi-testsuite-3.2+dfsg/threads/comm/testlist.in0000644000175000017500000000056012620254305021151 0ustar mbanckmbanckctxdup 4 dup_leak_test 2 comm_dup_deadlock 4 comm_create_threads 4 comm_create_group_threads 4 mpiversion=3.0 comm_create_group_threads2 4 mpiversion=3.0 @comm_overlap@ idup_deadlock 4 mpiversion=3.0 @comm_overlap@ comm_idup 4 mpiversion=3.0 @comm_overlap@ ctxidup 4 mpiversion=3.0 @comm_overlap@ idup_nb 4 mpiversion=3.0 @comm_overlap@ idup_comm_gen 4 mpiversion=3.0 mpi-testsuite-3.2+dfsg/threads/comm/idup_comm_gen.c0000644000175000017500000001006312620254305021716 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* This test tries to overlap multiple Comm_idups with other communicator creation functions, either intracomm or intercomm. */ #include #include #include #include "mpitest.h" #include "mpithreadtest.h" #define NUM_THREADS 4 #define NUM_IDUPS 5 MPI_Comm comms[NUM_THREADS]; MPI_Comm errs[NUM_THREADS] = { 0 }; int verbose = 0; MTEST_THREAD_RETURN_TYPE test_idup(void *arg) { int i; int size, rank; int ranges[1][3]; int rleader, isLeft; int *excl = NULL; int tid = *(int *) arg; MPI_Group ingroup, high_group, even_group; MPI_Comm local_comm, inter_comm; MPI_Comm idupcomms[NUM_IDUPS]; MPI_Request reqs[NUM_IDUPS]; MPI_Comm outcomm; MPI_Comm incomm = comms[tid]; MPI_Comm_size(incomm, &size); MPI_Comm_rank(incomm, &rank); MPI_Comm_group(incomm, &ingroup); /* Idup incomm multiple times */ for (i = 0; i < NUM_IDUPS; i++) { MPI_Comm_idup(incomm, &idupcomms[i], &reqs[i]); } /* Overlap pending idups with various comm generation functions */ /* Comm_dup */ MPI_Comm_dup(incomm, &outcomm); errs[tid] += MTestTestComm(outcomm); MTestFreeComm(&outcomm); /* Comm_split */ MPI_Comm_split(incomm, rank % 2, size - rank, &outcomm); errs[tid] += MTestTestComm(outcomm); MTestFreeComm(&outcomm); /* Comm_create, high half of incomm */ ranges[0][0] = size / 2; ranges[0][1] = size - 1; ranges[0][2] = 1; MPI_Group_range_incl(ingroup, 1, ranges, &high_group); MPI_Comm_create(incomm, high_group, &outcomm); MPI_Group_free(&high_group); errs[tid] += MTestTestComm(outcomm); MTestFreeComm(&outcomm); /* Comm_create_group, even ranks of incomm */ /* exclude the odd ranks */ excl = malloc((size / 2) * sizeof(int)); for (i = 0; i < size / 2; i++) excl[i] = (2 * i) + 1; MPI_Group_excl(ingroup, size / 2, excl, &even_group); free(excl); if (rank % 2 == 0) { MPI_Comm_create_group(incomm, even_group, 0, &outcomm); } else { outcomm = MPI_COMM_NULL; } MPI_Group_free(&even_group); errs[tid] += MTestTestComm(outcomm); MTestFreeComm(&outcomm); /* Intercomm_create & Intercomm_merge */ MPI_Comm_split(incomm, (rank < size / 2), rank, &local_comm); if (rank == 0) { rleader = size / 2; } else if (rank == size / 2) { rleader = 0; } else { rleader = -1; } isLeft = rank < size / 2; MPI_Intercomm_create(local_comm, 0, incomm, rleader, 99, &inter_comm); MPI_Intercomm_merge(inter_comm, isLeft, &outcomm); MPI_Comm_free(&local_comm); errs[tid] += MTestTestComm(inter_comm); MTestFreeComm(&inter_comm); errs[tid] += MTestTestComm(outcomm); MTestFreeComm(&outcomm); MPI_Waitall(NUM_IDUPS, reqs, MPI_STATUSES_IGNORE); for (i = 0; i < NUM_IDUPS; i++) { errs[tid] += MTestTestComm(idupcomms[i]); MPI_Comm_free(&idupcomms[i]); } MPI_Group_free(&ingroup); return NULL; } int main(int argc, char **argv) { int thread_args[NUM_THREADS]; int i, provided; int toterrs = 0; int size; MPI_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &provided); MPI_Comm_size(MPI_COMM_WORLD, &size); if (provided < MPI_THREAD_MULTIPLE) { printf("MPI_THREAD_MULTIPLE for the test\n"); MPI_Abort(MPI_COMM_WORLD, 1); } if (size < 2) { printf("This test requires at least two processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } for (i = 0; i < NUM_THREADS; i++) { MPI_Comm_dup(MPI_COMM_WORLD, &comms[i]); } for (i = 0; i < NUM_THREADS; i++) { thread_args[i] = i; MTest_Start_thread(test_idup, (void *) &thread_args[i]); } MTest_Join_threads(); for (i = 0; i < NUM_THREADS; i++) { MPI_Comm_free(&comms[i]); toterrs += errs[i]; } MTest_Finalize(toterrs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/threads/comm/idup_deadlock.c0000644000175000017500000000376512620254305021713 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include "mpitest.h" #include "mpithreadtest.h" #define NUM_THREADS 4 #define NUM_ITER 1 #define check(X_) \ do { \ if (!(X_)) { \ printf("[%s:%d] -- Assertion failed: %s\n", __FILE__, __LINE__, #X_);\ MPI_Abort(MPI_COMM_WORLD, 1); \ } \ } while (0) MPI_Comm comms[NUM_THREADS]; MTEST_THREAD_LOCK_TYPE comm_lock; int rank, size; int verbose = 0; volatile int start_idup[NUM_THREADS]; MTEST_THREAD_RETURN_TYPE test_comm_dup(void *arg) { int rank; int i, j; int wait; int tid = *(int *) arg; MPI_Comm_rank(comms[*(int *) arg], &rank); MPI_Comm comm; MPI_Request req; if (tid % 2 == 0 && rank % 2 == 0) { do { wait = 0; for (i = 0; i < NUM_THREADS; i++) wait += start_idup[i]; } while (wait > NUM_THREADS / 2); } MPI_Comm_idup(comms[*(int *) arg], &comm, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); start_idup[tid] = 0; MPI_Comm_free(&comm); return (MTEST_THREAD_RETURN_TYPE) 0; } int main(int argc, char **argv) { int thread_args[NUM_THREADS]; int i, provided; MPI_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &provided); check(provided == MPI_THREAD_MULTIPLE); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); for (i = 0; i < NUM_THREADS; i++) { start_idup[i] = 1; MPI_Comm_dup(MPI_COMM_WORLD, &comms[i]); } for (i = 0; i < NUM_THREADS; i++) { thread_args[i] = i; MTest_Start_thread(test_comm_dup, (void *) &thread_args[i]); } MTest_Join_threads(); for (i = 0; i < NUM_THREADS; i++) { MPI_Comm_free(&comms[i]); } if (rank == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/threads/comm/comm_create_threads.c0000644000175000017500000000361412620254305023105 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include "mpitest.h" #include "mpithreadtest.h" #define NUM_THREADS 8 #define NUM_ITER 100 #define check(X_) \ do { \ if (!(X_)) { \ printf("[%s:%d] -- Assertion failed: %s\n", __FILE__, __LINE__, #X_);\ MPI_Abort(MPI_COMM_WORLD, 1); \ } \ } while (0) MPI_Comm comms[NUM_THREADS]; int rank, size; MTEST_THREAD_RETURN_TYPE test_comm_create(void *arg) { int i; for (i = 0; i < NUM_ITER; i++) { MPI_Group world_group; MPI_Comm comm; MPI_Comm_group(comms[*(int *) arg], &world_group); /* Every thread paticipates in a distinct MPI_Comm_create on distinct * communicators. Thus, there is no violation of MPI threads + * communicators semantics. */ MPI_Comm_create(comms[*(int *) arg], world_group, &comm); MPI_Barrier(comm); MPI_Comm_free(&comm); MPI_Group_free(&world_group); } return NULL; } int main(int argc, char **argv) { int thread_args[NUM_THREADS]; int i, err, provided; MPI_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &provided); check(provided == MPI_THREAD_MULTIPLE); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); for (i = 0; i < NUM_THREADS; i++) { MPI_Comm_dup(MPI_COMM_WORLD, &comms[i]); } for (i = 0; i < NUM_THREADS; i++) { thread_args[i] = i; MTest_Start_thread(test_comm_create, (void *) &thread_args[i]); } MTest_Join_threads(); for (i = 0; i < NUM_THREADS; i++) { MPI_Comm_free(&comms[i]); } if (rank == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/threads/comm/dup_leak_test.c0000644000175000017500000000437412620254305021744 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2009 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* This test repeatedly dups and frees communicators with multiple threads * concurrently to stress the multithreaded aspects of the context ID allocation * code. * * Thanks to IBM for providing the original version of this test */ #include "mpi.h" #include #include #include "mpitest.h" #include "mpithreadtest.h" #ifndef NITER #define NITER 12345 #endif /* ! NITER */ #ifndef NTHREADS #define NTHREADS 4 #endif /* ! NTHREADS */ MTEST_THREAD_RETURN_TYPE do_thread(void *v); MTEST_THREAD_RETURN_TYPE do_thread(void *v) { int x; MPI_Comm comm = *(MPI_Comm *) v; MPI_Comm newcomm; for (x = 0; x < NITER; ++x) { MPI_Comm_dup(comm, &newcomm); MPI_Comm_free(&newcomm); } return (MTEST_THREAD_RETURN_TYPE) 0; } int main(int argc, char **argv) { int x; int threaded; int err; MPI_Comm comms[NTHREADS]; int num_threads_obtained = 1; MPI_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &threaded); if (threaded != MPI_THREAD_MULTIPLE) { printf("unable to initialize with MPI_THREAD_MULTIPLE\n"); goto fn_fail; } for (x = 0; x < NTHREADS; ++x) { MPI_Comm_dup(MPI_COMM_WORLD, &comms[x]); if (x != 0) { err = MTest_Start_thread(do_thread, (void *) &comms[x]); if (err) { /* attempt to continue with fewer threads, we may be on a * thread-constrained platform like BG/P in DUAL mode */ MPI_Comm_free(&comms[x]); break; } ++num_threads_obtained; } } if (num_threads_obtained <= 1) { printf("unable to create any additional threads, exiting\n"); goto fn_fail; } do_thread((void *) &comms[0]); /* we are thread 0 */ err = MTest_Join_threads(); if (err) { printf("error joining threads, err=%d", err); goto fn_fail; } for (x = 0; x < num_threads_obtained; ++x) { MPI_Comm_free(&comms[x]); } fn_exit: MTest_Finalize(err); MPI_Finalize(); return 0; fn_fail: err = 1; goto fn_exit; } mpi-testsuite-3.2+dfsg/threads/testlist.in0000644000175000017500000000005712620254305020217 0ustar mbanckmbanckpt2pt comm init mpi_t @spawndir@ @rmadir@ coll mpi-testsuite-3.2+dfsg/threads/mpi_t/0000755000175000017500000000000012621010236017114 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/threads/mpi_t/testlist0000644000175000017500000000002112620254305020711 0ustar mbanckmbanckmpit_threading 1 mpi-testsuite-3.2+dfsg/threads/mpi_t/Makefile.in0000644000175000017500000004726012621010236021172 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = mpit_threading$(EXEEXT) subdir = threads/mpi_t ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) mpit_threading_SOURCES = mpit_threading.c mpit_threading_OBJECTS = mpit_threading.$(OBJEXT) mpit_threading_LDADD = $(LDADD) mpit_threading_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o \ $(top_builddir)/threads/util/mtestthread.$(OBJEXT) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = mpit_threading.c DIST_SOURCES = mpit_threading.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.mtest \ $(top_srcdir)/confdb/depcomp \ $(top_srcdir)/threads/Makefile_threads.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o \ $(top_builddir)/threads/util/mtestthread.$(OBJEXT) @threadlib@ CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/threads/Makefile_threads.mtest $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign threads/mpi_t/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign threads/mpi_t/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/threads/Makefile_threads.mtest $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) mpit_threading$(EXEEXT): $(mpit_threading_OBJECTS) $(mpit_threading_DEPENDENCIES) $(EXTRA_mpit_threading_DEPENDENCIES) @rm -f mpit_threading$(EXEEXT) $(AM_V_CCLD)$(LINK) $(mpit_threading_OBJECTS) $(mpit_threading_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpit_threading.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml $(top_builddir)/threads/util/mtestthread.$(OBJEXT): $(top_srcdir)/threads/util/mtestthread.c (cd $(top_builddir)/threads/util && $(MAKE) mtestthread.$(OBJEXT)) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/threads/mpi_t/Makefile.am0000644000175000017500000000040412620254305021154 0ustar mbanckmbanck## -*- Mode: Makefile; -*- ## vim: set ft=automake : ## ## (C) 2011 by Argonne National Laboratory. ## See COPYRIGHT in top-level directory. ## include $(top_srcdir)/threads/Makefile_threads.mtest EXTRA_DIST = testlist noinst_PROGRAMS = mpit_threading mpi-testsuite-3.2+dfsg/threads/mpi_t/mpit_threading.c0000644000175000017500000004547312620254305022301 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2013 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* This test is adapted from test/mpi/mpi_t/mpit_vars.c. But this is a multithreading version in which multiple threads will call MPI_T routines. If verbose is set, thread 0 will prints out MPI_T control variables, performance variables and their categories. */ #include "mpi.h" #include "mpitest.h" #include "mpithreadtest.h" #include #include #include #include /* Num of threads to spawn */ const int NTHREADS = 8; /* Use macro to control printing. Threads must define myThreadId. */ static int verbose = 0; #define DOPRINT (verbose && myThreadId == 0) char *mpit_scopeToStr(int scope); char *mpit_bindingToStr(int binding); char *mpit_validDtypeStr(MPI_Datatype datatype); char *mpit_varclassToStr(int varClass); char *mpit_verbosityToStr(int verbosity); int perfvarReadInt(int pvarIndex, int isContinuous, int *found); unsigned int perfvarReadUint(int pvarIndex, int isContinuous, int *found); double perfvarReadDouble(int pvarIndex, int isContinuous, int *found); int PrintControlVars(FILE * fp, int myThreadId); int PrintPerfVars(FILE * fp, int myThreadId); int PrintCategories(FILE * fp, int myThreadId); MTEST_THREAD_RETURN_TYPE RunTest(void *p) { int myThreadId = (int) (long) p; PrintControlVars(stdout, myThreadId); if (DOPRINT) fprintf(stdout, "\n"); PrintPerfVars(stdout, myThreadId); if (DOPRINT) fprintf(stdout, "\n"); PrintCategories(stdout, myThreadId); return MTEST_THREAD_RETVAL_IGN; } int main(int argc, char *argv[]) { int i, required, provided; required = MPI_THREAD_MULTIPLE; MPI_T_init_thread(required, &provided); if (provided != MPI_THREAD_MULTIPLE) { fprintf(stderr, "MPI_THREAD_MULTIPLE not supported by the MPI_T implementation\n"); MPI_Abort(MPI_COMM_WORLD, -1); } MPI_Init_thread(&argc, &argv, required, &provided); if (provided != MPI_THREAD_MULTIPLE) { fprintf(stderr, "MPI_THREAD_MULTIPLE not supported by the MPI implementation\n"); MPI_Abort(MPI_COMM_WORLD, -1); } if (getenv("MPITEST_VERBOSE")) verbose = 1; /* Spawn threads */ for (i = 0; i < NTHREADS; i++) { MTest_Start_thread(RunTest, (void *) (long) i); } MTest_Join_threads(); /* Put MPI_T_finalize() after MPI_Finalize() will cause mpich memory * tracing facility falsely reports memory leaks, though these memories * are freed in MPI_T_finalize(). */ MPI_T_finalize(); MPI_Finalize(); fprintf(stdout, " No Errors\n"); return 0; } int PrintControlVars(FILE * fp, int myThreadId) { int i, num_cvar, nameLen, verbosity, descLen, binding, scope; int ival, hasValue; char name[128], desc[1024]; MPI_T_enum enumtype = MPI_T_ENUM_NULL; MPI_Datatype datatype; MPI_T_cvar_get_num(&num_cvar); if (DOPRINT) fprintf(fp, "%d MPI Control Variables\n", num_cvar); for (i = 0; i < num_cvar; i++) { hasValue = 0; nameLen = sizeof(name); descLen = sizeof(desc); MPI_T_cvar_get_info(i, name, &nameLen, &verbosity, &datatype, &enumtype, desc, &descLen, &binding, &scope); if (datatype == MPI_INT && enumtype != MPI_T_ENUM_NULL) { int enameLen, enumber; char ename[128]; enameLen = sizeof(ename); /* TODO: Extract a useful string to show for an enum */ MPI_T_enum_get_info(enumtype, &enumber, ename, &enameLen); } if (datatype == MPI_INT && binding == MPI_T_BIND_NO_OBJECT) { int count; MPI_T_cvar_handle chandle; MPI_T_cvar_handle_alloc(i, NULL, &chandle, &count); if (count == 1) { MPI_T_cvar_read(chandle, &ival); hasValue = 1; } MPI_T_cvar_handle_free(&chandle); } if (hasValue && DOPRINT) { fprintf(fp, "\t%s=%d\t%s\t%s\t%s\t%s\t%s\n", name, ival, mpit_scopeToStr(scope), mpit_bindingToStr(binding), mpit_validDtypeStr(datatype), mpit_verbosityToStr(verbosity), desc); } else if (DOPRINT) { fprintf(fp, "\t%s\t%s\t%s\t%s\t%s\t%s\n", name, mpit_scopeToStr(scope), mpit_bindingToStr(binding), mpit_validDtypeStr(datatype), mpit_verbosityToStr(verbosity), desc); } } return 0; } int PrintPerfVars(FILE * fp, int myThreadId) { int i, numPvar, nameLen, descLen, verbosity, varClass; int binding, isReadonly, isContinuous, isAtomic; char name[128], desc[1024]; MPI_T_enum enumtype; MPI_Datatype datatype; MPI_T_pvar_get_num(&numPvar); if (DOPRINT) fprintf(fp, "%d MPI Performance Variables\n", numPvar); for (i = 0; i < numPvar; i++) { nameLen = sizeof(name); descLen = sizeof(desc); MPI_T_pvar_get_info(i, name, &nameLen, &verbosity, &varClass, &datatype, &enumtype, desc, &descLen, &binding, &isReadonly, &isContinuous, &isAtomic); if (DOPRINT) fprintf(fp, "\t%s\t%s\t%s\t%s\t%s\tReadonly=%s\tContinuous=%s\tAtomic=%s\t%s\n", name, mpit_varclassToStr(varClass), mpit_bindingToStr(binding), mpit_validDtypeStr(datatype), mpit_verbosityToStr(verbosity), isReadonly ? "T" : "F", isContinuous ? "T" : "F", isAtomic ? "T" : "F", desc); if (datatype == MPI_INT) { int val, isFound; val = perfvarReadInt(i, isContinuous, &isFound); if (isFound && DOPRINT) fprintf(fp, "\tValue = %d\n", val); } else if (datatype == MPI_UNSIGNED) { int isFound; unsigned int val; val = perfvarReadUint(i, isContinuous, &isFound); if (isFound && DOPRINT) fprintf(fp, "\tValue = %u\n", val); } else if (datatype == MPI_DOUBLE) { int isFound; double val; val = perfvarReadDouble(i, isContinuous, &isFound); if (isFound && DOPRINT) fprintf(fp, "\tValue = %e\n", val); } } return 0; } int PrintCategories(FILE * fp, int myThreadId) { int i, j, numCat, nameLen, descLen, numCvars, numPvars, numSubcat; char name[128], desc[1024]; MPI_T_category_get_num(&numCat); if (DOPRINT) { if (numCat > 0) fprintf(fp, "%d MPI_T categories\n", numCat); else fprintf(fp, "No categories defined\n"); } for (i = 0; i < numCat; i++) { nameLen = sizeof(name); descLen = sizeof(desc); MPI_T_category_get_info(i, name, &nameLen, desc, &descLen, &numCvars, &numPvars, &numSubcat); if (DOPRINT) fprintf(fp, "Category %s has %d control variables, %d performance variables, %d subcategories\n", name, numCvars, numPvars, numSubcat); if (numCvars > 0) { if (DOPRINT) fprintf(fp, "\tControl variables include: "); int *cvarIndex = (int *) malloc(numCvars * sizeof(int)); MPI_T_category_get_cvars(i, numCvars, cvarIndex); for (j = 0; j < numCvars; j++) { /* Get just the variable name */ int varnameLen, verb, binding, scope; MPI_Datatype datatype; char varname[128]; varnameLen = sizeof(varname); MPI_T_cvar_get_info(cvarIndex[j], varname, &varnameLen, &verb, &datatype, NULL, NULL, NULL, &binding, &scope); if (DOPRINT) fprintf(fp, "%s, ", varname); } free(cvarIndex); if (DOPRINT) fprintf(fp, "\n"); } if (numPvars > 0) { if (DOPRINT) fprintf(fp, "\tPerformance variables include: "); int *pvarIndex = (int *) malloc(numPvars * sizeof(int)); MPI_T_category_get_pvars(i, numPvars, pvarIndex); for (j = 0; j < numPvars; j++) { int varnameLen, verb, varclass, binding; int isReadonly, isContinuous, isAtomic; MPI_Datatype datatype; char varname[128]; varnameLen = sizeof(varname); MPI_T_pvar_get_info(pvarIndex[j], varname, &varnameLen, &verb, &varclass, &datatype, NULL, NULL, NULL, &binding, &isReadonly, &isContinuous, &isAtomic); if (DOPRINT) fprintf(fp, "%s, ", varname); } free(pvarIndex); if (DOPRINT) fprintf(fp, "\n"); } if (numSubcat > 0) { if (DOPRINT) fprintf(fp, "\tSubcategories include: "); int *subcatIndex = (int *) malloc(numSubcat * sizeof(int)); MPI_T_category_get_categories(i, numSubcat, subcatIndex); for (j = 0; j < numSubcat; j++) { int catnameLen, ncvars, npvars, nsubcats; char catname[128]; catnameLen = sizeof(catname); MPI_T_category_get_info(subcatIndex[j], catname, &catnameLen, NULL, NULL, &ncvars, &npvars, &nsubcats); if (DOPRINT) fprintf(fp, "%s, ", catname); } free(subcatIndex); if (DOPRINT) fprintf(fp, "\n"); } } return 0; } /* --- Support routines --- */ char *mpit_validDtypeStr(MPI_Datatype datatype) { char *p = 0; if (datatype == MPI_INT) p = "MPI_INT"; else if (datatype == MPI_UNSIGNED) p = "MPI_UNSIGNED"; else if (datatype == MPI_UNSIGNED_LONG) p = "MPI_UNSIGNED_LONG"; else if (datatype == MPI_UNSIGNED_LONG_LONG) p = "MPI_UNSIGNED_LONG_LONG"; else if (datatype == MPI_COUNT) p = "MPI_COUNT"; else if (datatype == MPI_CHAR) p = "MPI_CHAR"; else if (datatype == MPI_DOUBLE) p = "MPI_DOUBLE"; else { if (datatype == MPI_DATATYPE_NULL) { p = "Invalid MPI datatype:NULL"; } else { static char typename[MPI_MAX_OBJECT_NAME + 9]; int tlen; strncpy(typename, "Invalid:", MPI_MAX_OBJECT_NAME); MPI_Type_get_name(datatype, typename + 8, &tlen); if (typename[0]) p = typename; } } return p; } char *mpit_scopeToStr(int scope) { char *p = 0; switch (scope) { case MPI_T_SCOPE_CONSTANT: p = "SCOPE_CONSTANT"; break; case MPI_T_SCOPE_READONLY: p = "SCOPE_READONLY"; break; case MPI_T_SCOPE_LOCAL: p = "SCOPE_LOCAL"; break; case MPI_T_SCOPE_GROUP: p = "SCOPE_GROUP"; break; case MPI_T_SCOPE_GROUP_EQ: p = "SCOPE_GROUP_EQ"; break; case MPI_T_SCOPE_ALL: p = "SCOPE_ALL"; break; case MPI_T_SCOPE_ALL_EQ: p = "SCOPE_ALL_EQ"; break; default: p = "Unrecoginized scope"; break; } return p; } char *mpit_bindingToStr(int binding) { char *p; switch (binding) { case MPI_T_BIND_NO_OBJECT: p = "NO_OBJECT"; break; case MPI_T_BIND_MPI_COMM: p = "MPI_COMM"; break; case MPI_T_BIND_MPI_DATATYPE: p = "MPI_DATATYPE"; break; case MPI_T_BIND_MPI_ERRHANDLER: p = "MPI_ERRHANDLER"; break; case MPI_T_BIND_MPI_FILE: p = "MPI_FILE"; break; case MPI_T_BIND_MPI_GROUP: p = "MPI_GROUP"; break; case MPI_T_BIND_MPI_OP: p = "MPI_OP"; break; case MPI_T_BIND_MPI_REQUEST: p = "MPI_REQUEST"; break; case MPI_T_BIND_MPI_WIN: p = "MPI_WIN"; break; case MPI_T_BIND_MPI_MESSAGE: p = "MPI_MESSAGE"; break; case MPI_T_BIND_MPI_INFO: p = "MPI_INFO"; break; default: p = "Unknown object binding"; } return p; } char *mpit_varclassToStr(int varClass) { char *p = 0; switch (varClass) { case MPI_T_PVAR_CLASS_STATE: p = "CLASS_STATE"; break; case MPI_T_PVAR_CLASS_LEVEL: p = "CLASS_LEVEL"; break; case MPI_T_PVAR_CLASS_SIZE: p = "CLASS_SIZE"; break; case MPI_T_PVAR_CLASS_PERCENTAGE: p = "CLASS_PERCENTAGE"; break; case MPI_T_PVAR_CLASS_HIGHWATERMARK: p = "CLASS_HIGHWATERMARK"; break; case MPI_T_PVAR_CLASS_LOWWATERMARK: p = "CLASS_LOWWATERMARK"; break; case MPI_T_PVAR_CLASS_COUNTER: p = "CLASS_COUNTER"; break; case MPI_T_PVAR_CLASS_AGGREGATE: p = "CLASS_AGGREGATE"; break; case MPI_T_PVAR_CLASS_TIMER: p = "CLASS_TIMER"; break; case MPI_T_PVAR_CLASS_GENERIC: p = "CLASS_GENERIC"; break; default: p = "Unrecognized pvar class"; break; } return p; } char *mpit_verbosityToStr(int verbosity) { char *p = 0; switch (verbosity) { case MPI_T_VERBOSITY_USER_BASIC: p = "VERBOSITY_USER_BASIC"; break; case MPI_T_VERBOSITY_USER_DETAIL: p = "VERBOSITY_USER_DETAIL"; break; case MPI_T_VERBOSITY_USER_ALL: p = "VERBOSITY_USER_ALL"; break; case MPI_T_VERBOSITY_TUNER_BASIC: p = "VERBOSITY_TUNER_BASIC"; break; case MPI_T_VERBOSITY_TUNER_DETAIL: p = "VERBOSITY_TUNER_DETAIL"; break; case MPI_T_VERBOSITY_TUNER_ALL: p = "VERBOSITY_TUNER_ALL"; break; case MPI_T_VERBOSITY_MPIDEV_BASIC: p = "VERBOSITY_MPIDEV_BASIC"; break; case MPI_T_VERBOSITY_MPIDEV_DETAIL: p = "VERBOSITY_MPIDEV_DETAIL"; break; case MPI_T_VERBOSITY_MPIDEV_ALL: p = "VERBOSITY_MPIDEV_ALL"; break; default: p = "Invalid verbosity"; break; } return p; } char *mpit_errclassToStr(int err) { char *p = 0; switch (err) { case MPI_T_ERR_MEMORY: p = "ERR_MEMORY"; break; case MPI_T_ERR_NOT_INITIALIZED: p = "ERR_NOT_INITIALIZED"; break; case MPI_T_ERR_CANNOT_INIT: p = "ERR_CANNOT_INIT"; break; case MPI_T_ERR_INVALID_INDEX: p = "ERR_INVALID_INDEX"; break; case MPI_T_ERR_INVALID_ITEM: p = "ERR_INVALID_ITEM"; break; case MPI_T_ERR_INVALID_HANDLE: p = "ERR_INVALID_HANDLE"; break; case MPI_T_ERR_OUT_OF_HANDLES: p = "ERR_OUT_OF_HANDLES"; break; case MPI_T_ERR_OUT_OF_SESSIONS: p = "ERR_OUT_OF_SESSIONS"; break; case MPI_T_ERR_INVALID_SESSION: p = "ERR_INVALID_SESSION"; break; case MPI_T_ERR_CVAR_SET_NOT_NOW: p = "ERR_CVAR_SET_NOT_NOW"; break; case MPI_T_ERR_CVAR_SET_NEVER: p = "ERR_CVAR_SET_NEVER"; break; case MPI_T_ERR_PVAR_NO_STARTSTOP: p = "ERR_PVAR_NO_STARTSTOP"; break; case MPI_T_ERR_PVAR_NO_WRITE: p = "ERR_PVAR_NO_WRITE"; break; case MPI_T_ERR_PVAR_NO_ATOMIC: p = "ERR_PVAR_NO_ATOMIC"; break; default: p = "Unknown MPI_T_ERR class"; break; } return p; } /* Return the value of the performance variable as the value */ int perfvarReadInt(int pvarIndex, int isContinuous, int *found) { int count, val = -1; int err1 = MPI_SUCCESS; int err2 = MPI_SUCCESS; MPI_T_pvar_session session; MPI_T_pvar_handle pvarHandle; MPI_T_pvar_session_create(&session); MPI_T_pvar_handle_alloc(session, pvarIndex, NULL, &pvarHandle, &count); if (count == 1) { *found = 1; if (!isContinuous) { /* start and stop the variable (just because we can) */ err1 = MPI_T_pvar_start(session, pvarHandle); err2 = MPI_T_pvar_stop(session, pvarHandle); } MPI_T_pvar_read(session, pvarHandle, &val); } MPI_T_pvar_handle_free(session, &pvarHandle); MPI_T_pvar_session_free(&session); /* Above codes imply that err1 and err2 should be MPI_SUCCESS. * If not, catch errors here, e.g., when MPI_ERR_INTERN is returned. */ if (err1 != MPI_SUCCESS || err2 != MPI_SUCCESS) { fprintf(stderr, "Unexpected MPI_T_pvar_start/stop return code\n"); abort(); } return val; } /* Return the value of the performance variable as the value */ unsigned int perfvarReadUint(int pvarIndex, int isContinuous, int *found) { int count; unsigned int val = 0; int err1 = MPI_SUCCESS; int err2 = MPI_SUCCESS; MPI_T_pvar_session session; MPI_T_pvar_handle pvarHandle; *found = 0; MPI_T_pvar_session_create(&session); MPI_T_pvar_handle_alloc(session, pvarIndex, NULL, &pvarHandle, &count); if (count == 1) { *found = 1; if (!isContinuous) { /* start and stop the variable (just because we can) */ err1 = MPI_T_pvar_start(session, pvarHandle); err2 = MPI_T_pvar_stop(session, pvarHandle); } MPI_T_pvar_read(session, pvarHandle, &val); } MPI_T_pvar_handle_free(session, &pvarHandle); MPI_T_pvar_session_free(&session); /* Above codes imply that err1 and err2 should be MPI_SUCCESS. * If not, catch errors here, e.g., when MPI_ERR_INTERN is returned. */ if (err1 != MPI_SUCCESS || err2 != MPI_SUCCESS) { fprintf(stderr, "Unexpected MPI_T_pvar_start/stop return code\n"); abort(); } return val; } double perfvarReadDouble(int pvarIndex, int isContinuous, int *found) { int count; double val = 0.0; int err1 = MPI_SUCCESS; int err2 = MPI_SUCCESS; MPI_T_pvar_session session; MPI_T_pvar_handle pvarHandle; *found = 0; MPI_T_pvar_session_create(&session); MPI_T_pvar_handle_alloc(session, pvarIndex, NULL, &pvarHandle, &count); if (count == 1) { *found = 1; if (!isContinuous) { /* start and stop the variable (just because we can) */ err1 = MPI_T_pvar_start(session, pvarHandle); err2 = MPI_T_pvar_stop(session, pvarHandle); } MPI_T_pvar_read(session, pvarHandle, &val); } MPI_T_pvar_handle_free(session, &pvarHandle); MPI_T_pvar_session_free(&session); /* Catch errors if MPI_T_pvar_start/stop are not properly implemented */ if (err1 != MPI_SUCCESS || err2 != MPI_SUCCESS) { fprintf(stderr, "Unknown MPI_T return code when starting/stopping double pvar\n"); abort(); } return val; } mpi-testsuite-3.2+dfsg/threads/pt2pt/0000755000175000017500000000000012621010236017055 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/threads/pt2pt/sendselfth.c0000644000175000017500000000267112620254305021374 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2006 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include "mpithreadtest.h" /* static char MTEST_Descrip[] = "Send to self in a threaded program"; */ MTEST_THREAD_RETURN_TYPE send_thread(void *p); MTEST_THREAD_RETURN_TYPE send_thread(void *p) { int rank; char buffer[100]; MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Send(buffer, sizeof(buffer), MPI_CHAR, rank, 0, MPI_COMM_WORLD); return MTEST_THREAD_RETVAL_IGN; } int main(int argc, char *argv[]) { int rank, size; int provided; char buffer[100]; MPI_Status status; MPI_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &provided); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); if (provided != MPI_THREAD_MULTIPLE) { if (rank == 0) { printf ("MPI_Init_thread must return MPI_THREAD_MULTIPLE in order for this test to run.\n"); fflush(stdout); } MPI_Finalize(); return -1; } MTest_Start_thread(send_thread, NULL); MPI_Probe(MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &status); MPI_Recv(buffer, sizeof(buffer), MPI_CHAR, rank, 0, MPI_COMM_WORLD, &status); MTest_Join_threads(); MTest_Finalize(0); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/threads/pt2pt/multisend3.c0000644000175000017500000000761612620254305021330 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2009 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * Run concurrent sends to different target processes. Stresses an * implementation that permits concurrent sends to different targets. * * By turning on verbose output, some simple performance data will be output. * * Use nonblocking sends, and have a single thread complete all I/O. */ #include #include #include "mpi.h" #include "mpitest.h" #include "mpithreadtest.h" /* This is the master test routine */ #define MAX_CNT 660000 /*#define MAX_LOOP 200 */ #define MAX_LOOP 10 #define MAX_NTHREAD 128 static int ownerWaits = 0; static int nthreads = -1; MTEST_THREAD_RETURN_TYPE run_test_send(void *arg); MTEST_THREAD_RETURN_TYPE run_test_send(void *arg) { int cnt, j, *buf, wsize; int thread_num = (int) (long) arg; double t; static MPI_Request r[MAX_NTHREAD]; /* Create the buf just once to avoid finding races in malloc instead * of the MPI library */ buf = (int *) malloc(MAX_CNT * sizeof(int)); MTestPrintfMsg(1, "buf address %p (size %d)\n", buf, MAX_CNT * sizeof(int)); MPI_Comm_size(MPI_COMM_WORLD, &wsize); if (wsize >= MAX_NTHREAD) wsize = MAX_NTHREAD; /* Sanity check */ if (nthreads != wsize - 1) fprintf(stderr, "Panic wsize = %d nthreads = %d\n", wsize, nthreads); for (cnt = 1; cnt < MAX_CNT; cnt = 2 * cnt) { /* Wait for all senders to be ready */ MTest_thread_barrier(nthreads); t = MPI_Wtime(); for (j = 0; j < MAX_LOOP; j++) { MTest_thread_barrier(nthreads); MPI_Isend(buf, cnt, MPI_INT, thread_num, cnt, MPI_COMM_WORLD, &r[thread_num - 1]); if (ownerWaits) { MPI_Wait(&r[thread_num - 1], MPI_STATUS_IGNORE); } else { /* Wait for all threads to start the sends */ MTest_thread_barrier(nthreads); if (thread_num == 1) { MPI_Waitall(wsize - 1, r, MPI_STATUSES_IGNORE); } } } t = MPI_Wtime() - t; if (thread_num == 1) MTestPrintfMsg(1, "buf size %d: time %f\n", cnt * sizeof(int), t / MAX_LOOP); } MTest_thread_barrier(nthreads); free(buf); return (MTEST_THREAD_RETURN_TYPE) NULL; } void run_test_recv(void); void run_test_recv(void) { int cnt, j, *buf; MPI_Status status; double t; for (cnt = 1; cnt < MAX_CNT; cnt = 2 * cnt) { buf = (int *) malloc(cnt * sizeof(int)); t = MPI_Wtime(); for (j = 0; j < MAX_LOOP; j++) MPI_Recv(buf, cnt, MPI_INT, 0, cnt, MPI_COMM_WORLD, &status); t = MPI_Wtime() - t; free(buf); } } int main(int argc, char **argv) { int i, pmode, nprocs, rank; int errs = 0, err; MTest_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &pmode); if (pmode != MPI_THREAD_MULTIPLE) { fprintf(stderr, "Thread Multiple not supported by the MPI implementation\n"); MPI_Abort(MPI_COMM_WORLD, -1); } MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (nprocs < 2) { fprintf(stderr, "Need at least two processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } if (nprocs > MAX_NTHREAD) nprocs = MAX_NTHREAD; err = MTest_thread_barrier_init(); if (err) { fprintf(stderr, "Could not create thread barrier\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Barrier(MPI_COMM_WORLD); if (rank == 0) { nthreads = nprocs - 1; for (i = 1; i < nprocs; i++) MTest_Start_thread(run_test_send, (void *) (long) i); MTest_Join_threads(); } else if (rank < MAX_NTHREAD) { run_test_recv(); } MTest_thread_barrier_free(); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/threads/pt2pt/testlist0000644000175000017500000000022212620254305020655 0ustar mbanckmbanckthreads 2 timeLimit=600 threaded_sr 2 alltoall 4 sendselfth 1 multisend 2 multisend2 5 multisend3 5 multisend4 5 greq_wait 1 greq_test 1 ibsend 2 mpi-testsuite-3.2+dfsg/threads/pt2pt/Makefile.in0000644000175000017500000006303412621010236021130 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = threads$(EXEEXT) threaded_sr$(EXEEXT) \ alltoall$(EXEEXT) sendselfth$(EXEEXT) greq_wait$(EXEEXT) \ greq_test$(EXEEXT) multisend$(EXEEXT) multisend2$(EXEEXT) \ multisend3$(EXEEXT) multisend4$(EXEEXT) ibsend$(EXEEXT) subdir = threads/pt2pt ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) alltoall_SOURCES = alltoall.c alltoall_OBJECTS = alltoall.$(OBJEXT) alltoall_LDADD = $(LDADD) alltoall_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o \ $(top_builddir)/threads/util/mtestthread.$(OBJEXT) greq_test_SOURCES = greq_test.c greq_test_OBJECTS = greq_test.$(OBJEXT) greq_test_LDADD = $(LDADD) greq_test_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o \ $(top_builddir)/threads/util/mtestthread.$(OBJEXT) greq_wait_SOURCES = greq_wait.c greq_wait_OBJECTS = greq_wait.$(OBJEXT) greq_wait_LDADD = $(LDADD) greq_wait_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o \ $(top_builddir)/threads/util/mtestthread.$(OBJEXT) ibsend_SOURCES = ibsend.c ibsend_OBJECTS = ibsend.$(OBJEXT) ibsend_LDADD = $(LDADD) ibsend_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o \ $(top_builddir)/threads/util/mtestthread.$(OBJEXT) multisend_SOURCES = multisend.c multisend_OBJECTS = multisend.$(OBJEXT) multisend_LDADD = $(LDADD) multisend_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o \ $(top_builddir)/threads/util/mtestthread.$(OBJEXT) multisend2_SOURCES = multisend2.c multisend2_OBJECTS = multisend2.$(OBJEXT) multisend2_LDADD = $(LDADD) multisend2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o \ $(top_builddir)/threads/util/mtestthread.$(OBJEXT) multisend3_SOURCES = multisend3.c multisend3_OBJECTS = multisend3.$(OBJEXT) multisend3_LDADD = $(LDADD) multisend3_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o \ $(top_builddir)/threads/util/mtestthread.$(OBJEXT) multisend4_SOURCES = multisend4.c multisend4_OBJECTS = multisend4.$(OBJEXT) multisend4_LDADD = $(LDADD) multisend4_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o \ $(top_builddir)/threads/util/mtestthread.$(OBJEXT) sendselfth_SOURCES = sendselfth.c sendselfth_OBJECTS = sendselfth.$(OBJEXT) sendselfth_LDADD = $(LDADD) sendselfth_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o \ $(top_builddir)/threads/util/mtestthread.$(OBJEXT) threaded_sr_SOURCES = threaded_sr.c threaded_sr_OBJECTS = threaded_sr.$(OBJEXT) threaded_sr_LDADD = $(LDADD) threaded_sr_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o \ $(top_builddir)/threads/util/mtestthread.$(OBJEXT) threads_SOURCES = threads.c threads_OBJECTS = threads.$(OBJEXT) threads_LDADD = $(LDADD) threads_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o \ $(top_builddir)/threads/util/mtestthread.$(OBJEXT) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = alltoall.c greq_test.c greq_wait.c ibsend.c multisend.c \ multisend2.c multisend3.c multisend4.c sendselfth.c \ threaded_sr.c threads.c DIST_SOURCES = alltoall.c greq_test.c greq_wait.c ibsend.c multisend.c \ multisend2.c multisend3.c multisend4.c sendselfth.c \ threaded_sr.c threads.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.mtest \ $(top_srcdir)/confdb/depcomp \ $(top_srcdir)/threads/Makefile_threads.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o \ $(top_builddir)/threads/util/mtestthread.$(OBJEXT) @threadlib@ CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/threads/Makefile_threads.mtest $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign threads/pt2pt/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign threads/pt2pt/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/threads/Makefile_threads.mtest $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) alltoall$(EXEEXT): $(alltoall_OBJECTS) $(alltoall_DEPENDENCIES) $(EXTRA_alltoall_DEPENDENCIES) @rm -f alltoall$(EXEEXT) $(AM_V_CCLD)$(LINK) $(alltoall_OBJECTS) $(alltoall_LDADD) $(LIBS) greq_test$(EXEEXT): $(greq_test_OBJECTS) $(greq_test_DEPENDENCIES) $(EXTRA_greq_test_DEPENDENCIES) @rm -f greq_test$(EXEEXT) $(AM_V_CCLD)$(LINK) $(greq_test_OBJECTS) $(greq_test_LDADD) $(LIBS) greq_wait$(EXEEXT): $(greq_wait_OBJECTS) $(greq_wait_DEPENDENCIES) $(EXTRA_greq_wait_DEPENDENCIES) @rm -f greq_wait$(EXEEXT) $(AM_V_CCLD)$(LINK) $(greq_wait_OBJECTS) $(greq_wait_LDADD) $(LIBS) ibsend$(EXEEXT): $(ibsend_OBJECTS) $(ibsend_DEPENDENCIES) $(EXTRA_ibsend_DEPENDENCIES) @rm -f ibsend$(EXEEXT) $(AM_V_CCLD)$(LINK) $(ibsend_OBJECTS) $(ibsend_LDADD) $(LIBS) multisend$(EXEEXT): $(multisend_OBJECTS) $(multisend_DEPENDENCIES) $(EXTRA_multisend_DEPENDENCIES) @rm -f multisend$(EXEEXT) $(AM_V_CCLD)$(LINK) $(multisend_OBJECTS) $(multisend_LDADD) $(LIBS) multisend2$(EXEEXT): $(multisend2_OBJECTS) $(multisend2_DEPENDENCIES) $(EXTRA_multisend2_DEPENDENCIES) @rm -f multisend2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(multisend2_OBJECTS) $(multisend2_LDADD) $(LIBS) multisend3$(EXEEXT): $(multisend3_OBJECTS) $(multisend3_DEPENDENCIES) $(EXTRA_multisend3_DEPENDENCIES) @rm -f multisend3$(EXEEXT) $(AM_V_CCLD)$(LINK) $(multisend3_OBJECTS) $(multisend3_LDADD) $(LIBS) multisend4$(EXEEXT): $(multisend4_OBJECTS) $(multisend4_DEPENDENCIES) $(EXTRA_multisend4_DEPENDENCIES) @rm -f multisend4$(EXEEXT) $(AM_V_CCLD)$(LINK) $(multisend4_OBJECTS) $(multisend4_LDADD) $(LIBS) sendselfth$(EXEEXT): $(sendselfth_OBJECTS) $(sendselfth_DEPENDENCIES) $(EXTRA_sendselfth_DEPENDENCIES) @rm -f sendselfth$(EXEEXT) $(AM_V_CCLD)$(LINK) $(sendselfth_OBJECTS) $(sendselfth_LDADD) $(LIBS) threaded_sr$(EXEEXT): $(threaded_sr_OBJECTS) $(threaded_sr_DEPENDENCIES) $(EXTRA_threaded_sr_DEPENDENCIES) @rm -f threaded_sr$(EXEEXT) $(AM_V_CCLD)$(LINK) $(threaded_sr_OBJECTS) $(threaded_sr_LDADD) $(LIBS) threads$(EXEEXT): $(threads_OBJECTS) $(threads_DEPENDENCIES) $(EXTRA_threads_DEPENDENCIES) @rm -f threads$(EXEEXT) $(AM_V_CCLD)$(LINK) $(threads_OBJECTS) $(threads_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alltoall.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/greq_test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/greq_wait.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibsend.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multisend.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multisend2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multisend3.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multisend4.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendselfth.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threaded_sr.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threads.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml $(top_builddir)/threads/util/mtestthread.$(OBJEXT): $(top_srcdir)/threads/util/mtestthread.c (cd $(top_builddir)/threads/util && $(MAKE) mtestthread.$(OBJEXT)) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/threads/pt2pt/ibsend.c0000644000175000017500000001101212620254305020466 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2013 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* This program performs a short test of MPI_BSEND in a multithreaded environment. It starts a single receiver thread that expects NUMSENDS messages and NUMSENDS sender threads, that use MPI_Bsend to send a message of size MSGSIZE to its right neigbour or rank 0 if (my_rank==comm_size-1), i.e. target_rank = (my_rank+1)%size . After all messages have been received, the receiver thread prints a message, the threads are joined into the main thread and the application terminates. */ #include #include #include #include #include "mpitest.h" #include "mpithreadtest.h" #define NUMSENDS 32 #define BUFSIZE 10000000 #define MSGSIZE 1024 int rank, size; void *receiver(void *ptr) { int k; char buf[MSGSIZE]; for (k = 0; k < NUMSENDS; k++) MPI_Recv(buf, MSGSIZE, MPI_CHAR, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, MPI_STATUS_IGNORE); return NULL; } void *sender_bsend(void *ptr) { char buffer[MSGSIZE]; MPI_Bsend(buffer, MSGSIZE, MPI_CHAR, (rank + 1) % size, 0, MPI_COMM_WORLD); return NULL; } void *sender_ibsend(void *ptr) { char buffer[MSGSIZE]; MPI_Request req; MPI_Ibsend(buffer, MSGSIZE, MPI_CHAR, (rank + 1) % size, 0, MPI_COMM_WORLD, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); return NULL; } void *sender_isend(void *ptr) { char buffer[MSGSIZE]; MPI_Request req; MPI_Isend(buffer, MSGSIZE, MPI_CHAR, (rank + 1) % size, 0, MPI_COMM_WORLD, &req); MPI_Wait(&req, MPI_STATUS_IGNORE); return NULL; } void *sender_send(void *ptr) { char buffer[MSGSIZE]; MPI_Send(buffer, MSGSIZE, MPI_CHAR, (rank + 1) % size, 0, MPI_COMM_WORLD); return NULL; } int main(int argc, char *argv[]) { int provided, i[2], k; char *buffer, *ptr_dt; buffer = (char *) malloc(BUFSIZE * sizeof(char)); MPI_Status status; pthread_t receiver_thread, sender_thread[NUMSENDS]; pthread_attr_t attr; MPI_Comm communicator; int bs; MPI_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &provided); if (provided != MPI_THREAD_MULTIPLE) { printf("Error\n"); MPI_Abort(911, MPI_COMM_WORLD); } MPI_Buffer_attach(buffer, BUFSIZE); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_dup(MPI_COMM_WORLD, &communicator); /* We do not use this communicator in this program, but * with this call, the problem appears more reliably. * If the MPI_Comm_dup() call is commented out, it is still * evident but does not appear that often (don't know why) */ /* Initialize and set thread detached attribute */ pthread_attr_init(&attr); pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE); pthread_create(&receiver_thread, &attr, &receiver, NULL); for (k = 0; k < NUMSENDS; k++) pthread_create(&sender_thread[k], &attr, &sender_bsend, NULL); pthread_join(receiver_thread, NULL); for (k = 0; k < NUMSENDS; k++) pthread_join(sender_thread[k], NULL); MPI_Barrier(MPI_COMM_WORLD); pthread_create(&receiver_thread, &attr, &receiver, NULL); for (k = 0; k < NUMSENDS; k++) pthread_create(&sender_thread[k], &attr, &sender_ibsend, NULL); pthread_join(receiver_thread, NULL); for (k = 0; k < NUMSENDS; k++) pthread_join(sender_thread[k], NULL); MPI_Barrier(MPI_COMM_WORLD); pthread_create(&receiver_thread, &attr, &receiver, NULL); for (k = 0; k < NUMSENDS; k++) pthread_create(&sender_thread[k], &attr, &sender_isend, NULL); pthread_join(receiver_thread, NULL); for (k = 0; k < NUMSENDS; k++) pthread_join(sender_thread[k], NULL); MPI_Barrier(MPI_COMM_WORLD); pthread_create(&receiver_thread, &attr, &receiver, NULL); for (k = 0; k < NUMSENDS; k++) pthread_create(&sender_thread[k], &attr, &sender_send, NULL); pthread_join(receiver_thread, NULL); for (k = 0; k < NUMSENDS; k++) pthread_join(sender_thread[k], NULL); MPI_Barrier(MPI_COMM_WORLD); pthread_attr_destroy(&attr); if (!rank) printf(" No Errors\n"); MPI_Comm_free(&communicator); MPI_Buffer_detach(&ptr_dt, &bs); free(buffer); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/threads/pt2pt/multisend2.c0000644000175000017500000000534212620254305021321 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2009 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * Run concurrent sends to different target processes. Stresses an * implementation that permits concurrent sends to different targets. * * By turning on verbose output, some simple performance data will be output. */ #include #include #include "mpi.h" #include "mpitest.h" #include "mpithreadtest.h" /* This is the master test routine */ #define MAX_CNT 660000 #define MAX_LOOP 200 static int nthreads = -1; MTEST_THREAD_RETURN_TYPE run_test_send(void *arg); MTEST_THREAD_RETURN_TYPE run_test_send(void *arg) { int cnt, j, *buf; int thread_num = (int) (long) arg; double t; for (cnt = 1; cnt < MAX_CNT; cnt = 2 * cnt) { buf = (int *) malloc(cnt * sizeof(int)); /* Wait for all senders to be ready */ MTest_thread_barrier(nthreads); t = MPI_Wtime(); for (j = 0; j < MAX_LOOP; j++) MPI_Send(buf, cnt, MPI_INT, thread_num, cnt, MPI_COMM_WORLD); t = MPI_Wtime() - t; free(buf); if (thread_num == 1) MTestPrintfMsg(1, "buf size %d: time %f\n", cnt, t / MAX_LOOP); } return (MTEST_THREAD_RETURN_TYPE) NULL; } void run_test_recv(void); void run_test_recv(void) { int cnt, j, *buf; MPI_Status status; double t; for (cnt = 1; cnt < MAX_CNT; cnt = 2 * cnt) { buf = (int *) malloc(cnt * sizeof(int)); t = MPI_Wtime(); for (j = 0; j < MAX_LOOP; j++) MPI_Recv(buf, cnt, MPI_INT, 0, cnt, MPI_COMM_WORLD, &status); t = MPI_Wtime() - t; free(buf); } } int main(int argc, char **argv) { int i, pmode, nprocs, rank; int errs = 0, err; MTest_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &pmode); if (pmode != MPI_THREAD_MULTIPLE) { fprintf(stderr, "Thread Multiple not supported by the MPI implementation\n"); MPI_Abort(MPI_COMM_WORLD, -1); } MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (nprocs < 2) { fprintf(stderr, "Need at least two processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } err = MTest_thread_barrier_init(); if (err) { fprintf(stderr, "Could not create thread barrier\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Barrier(MPI_COMM_WORLD); if (rank == 0) { nthreads = nprocs - 1; for (i = 1; i < nprocs; i++) MTest_Start_thread(run_test_send, (void *) (long) i); MTest_Join_threads(); } else { run_test_recv(); } MTest_thread_barrier_free(); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/threads/pt2pt/Makefile.am0000644000175000017500000000056712620254305021127 0ustar mbanckmbanck## -*- Mode: Makefile; -*- ## vim: set ft=automake : ## ## (C) 2011 by Argonne National Laboratory. ## See COPYRIGHT in top-level directory. ## include $(top_srcdir)/threads/Makefile_threads.mtest EXTRA_DIST = testlist noinst_PROGRAMS = threads threaded_sr alltoall sendselfth greq_wait greq_test \ multisend multisend2 multisend3 multisend4 ibsend mpi-testsuite-3.2+dfsg/threads/pt2pt/greq_wait.c0000644000175000017500000000544312620254305021217 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2006 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Based on test code provided by Lisandro Dalcí. */ #include #include #include #include "mpithreadtest.h" #include "mpitest.h" #ifdef HAVE_UNISTD_H #include #endif /* static char MTEST_Descrip[] = "threaded generalized request tests"; */ #define IF_VERBOSE(a) \ do { \ if (verbose) { \ printf a ; \ fflush(stdout); \ } \ } while (0) static int verbose = 0; int query_fn(void *extra_state, MPI_Status * status); int query_fn(void *extra_state, MPI_Status * status) { status->MPI_SOURCE = MPI_UNDEFINED; status->MPI_TAG = MPI_UNDEFINED; MPI_Status_set_cancelled(status, 0); MPI_Status_set_elements(status, MPI_BYTE, 0); return 0; } int free_fn(void *extra_state); int free_fn(void *extra_state) { return 0; } int cancel_fn(void *extra_state, int complete); int cancel_fn(void *extra_state, int complete) { return 0; } MPI_Request grequest; MTEST_THREAD_RETURN_TYPE do_work(void *arg); MTEST_THREAD_RETURN_TYPE do_work(void *arg) { MPI_Request *req = (MPI_Request *) arg; IF_VERBOSE(("Starting work in thread ...\n")); MTestSleep(3); IF_VERBOSE(("Work in thread done !!!\n")); MPI_Grequest_complete(*req); return MTEST_THREAD_RETVAL_IGN; } int main(int argc, char *argv[]) { int provided; MPI_Request request; int outcount = -1; int indices[1] = { -1 }; MPI_Status status; char *env; env = getenv("MPITEST_VERBOSE"); if (env) { if (*env != '0') verbose = 1; } MPI_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &provided); if (provided != MPI_THREAD_MULTIPLE) { printf("This test requires MPI_THREAD_MULTIPLE\n"); MPI_Abort(MPI_COMM_WORLD, 1); } IF_VERBOSE(("Post Init ...\n")); MPI_Grequest_start(query_fn, free_fn, cancel_fn, NULL, &request); grequest = request; /* copy the handle */ MTest_Start_thread(do_work, &grequest); IF_VERBOSE(("Waiting ...\n")); MPI_Wait(&request, &status); MTest_Join_threads(); MPI_Grequest_start(query_fn, free_fn, cancel_fn, NULL, &request); grequest = request; /* copy the handle */ MTest_Start_thread(do_work, &grequest); IF_VERBOSE(("Waiting ...\n")); MPI_Waitsome(1, &request, &outcount, indices, &status); MTest_Join_threads(); MPI_Grequest_start(query_fn, free_fn, cancel_fn, NULL, &request); grequest = request; /* copy the handle */ MTest_Start_thread(do_work, &grequest); IF_VERBOSE(("Waiting ...\n")); MPI_Waitall(1, &request, &status); MTest_Join_threads(); IF_VERBOSE(("Goodbye !!!\n")); MTest_Finalize(0); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/threads/pt2pt/multisend.c0000644000175000017500000000332612620254305021237 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2006 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include "mpi.h" #include "mpithreadtest.h" int rank; MTEST_THREAD_RETURN_TYPE run_test(void *arg); MTEST_THREAD_RETURN_TYPE run_test(void *arg) { MPI_Status reqstat; int i, j; int peer = rank ? 0 : 1; for (j = 0; j < 10; j++) { if (rank % 2) { for (i = 0; i < 16; i++) MPI_Send(NULL, 0, MPI_CHAR, peer, j, MPI_COMM_WORLD); for (i = 0; i < 16; i++) MPI_Recv(NULL, 0, MPI_CHAR, peer, j, MPI_COMM_WORLD, &reqstat); } else { for (i = 0; i < 16; i++) MPI_Recv(NULL, 0, MPI_CHAR, peer, j, MPI_COMM_WORLD, &reqstat); for (i = 0; i < 16; i++) MPI_Send(NULL, 0, MPI_CHAR, peer, j, MPI_COMM_WORLD); } } return (MTEST_THREAD_RETURN_TYPE) NULL; } int main(int argc, char **argv) { int zero = 0, pmode, nprocs; MPI_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &pmode); if (pmode != MPI_THREAD_MULTIPLE) { fprintf(stderr, "Thread Multiple not supported by the MPI implementation\n"); MPI_Abort(MPI_COMM_WORLD, -1); } MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (nprocs != 2) { fprintf(stderr, "Need two processes\n"); MPI_Abort(MPI_COMM_WORLD, -1); } MTest_Start_thread(run_test, NULL); run_test(&zero); MTest_Join_threads(); MPI_Finalize(); /* This program works if it gets here */ if (rank == 0) { printf(" No Errors\n"); } return 0; } mpi-testsuite-3.2+dfsg/threads/pt2pt/multisend4.c0000644000175000017500000000710512620254305021322 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2009 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * Run concurrent sends to different target processes. Stresses an * implementation that permits concurrent sends to different targets. * * By turning on verbose output, some simple performance data will be output. * * Use nonblocking sends, and have a single thread complete all I/O. */ #include #include #include "mpi.h" #include "mpitest.h" #include "mpithreadtest.h" /* This is the master test routine */ #define MAX_CNT 660000 /* #define MAX_LOOP 200 */ #define MAX_LOOP 10 #define MAX_NTHREAD 128 static int ownerWaits = 0; static int nthreads = -1; MTEST_THREAD_RETURN_TYPE run_test_sendrecv(void *arg); MTEST_THREAD_RETURN_TYPE run_test_sendrecv(void *arg) { int cnt, j, *buf, wsize; int thread_num = (int) (long) arg; double t; int myrloc = 2 * thread_num; static MPI_Request r[2 * MAX_NTHREAD]; MPI_Comm_size(MPI_COMM_WORLD, &wsize); if (wsize >= MAX_NTHREAD) wsize = MAX_NTHREAD; /* Sanity check */ if (nthreads != wsize) fprintf(stderr, "Panic wsize = %d nthreads = %d\n", wsize, nthreads); for (cnt = 1; cnt < MAX_CNT; cnt = 2 * cnt) { buf = (int *) malloc(2 * cnt * sizeof(int)); /* Wait for all senders to be ready */ MTest_thread_barrier(nthreads); t = MPI_Wtime(); for (j = 0; j < MAX_LOOP; j++) { MTest_thread_barrier(nthreads); MPI_Isend(buf, cnt, MPI_INT, thread_num, cnt, MPI_COMM_WORLD, &r[myrloc]); MPI_Irecv(buf + cnt, cnt, MPI_INT, thread_num, cnt, MPI_COMM_WORLD, &r[myrloc + 1]); /* Wait for all threads to start the sends */ if (ownerWaits) { MPI_Waitall(2, &r[myrloc], MPI_STATUSES_IGNORE); } else { /* Wait for all threads to create their requests */ MTest_thread_barrier(nthreads); if (thread_num == 1) MPI_Waitall(2 * wsize, r, MPI_STATUSES_IGNORE); } } t = MPI_Wtime() - t; /* can't free the buffers until the requests are completed */ MTest_thread_barrier(nthreads); free(buf); if (thread_num == 1) MTestPrintfMsg(1, "buf size %d: time %f\n", cnt, t / MAX_LOOP); } return (MTEST_THREAD_RETURN_TYPE) NULL; } int main(int argc, char **argv) { int i, pmode, nprocs, rank; int errs = 0, err; MTest_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &pmode); if (pmode != MPI_THREAD_MULTIPLE) { fprintf(stderr, "Thread Multiple not supported by the MPI implementation\n"); MPI_Abort(MPI_COMM_WORLD, -1); } MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (nprocs < 2) { fprintf(stderr, "Need at least two processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } if (nprocs > MAX_NTHREAD) nprocs = MAX_NTHREAD; err = MTest_thread_barrier_init(); if (err) { fprintf(stderr, "Could not create thread barrier\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Barrier(MPI_COMM_WORLD); if (rank < MAX_NTHREAD) { int nt = nprocs; if (nt > MAX_NTHREAD) nt = MAX_NTHREAD; nthreads = nt; for (i = 0; i < nt; i++) MTest_Start_thread(run_test_sendrecv, (void *) (long) i); } MTest_Join_threads(); MTest_thread_barrier_free(); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/threads/pt2pt/threads.c0000644000175000017500000001565312620254305020673 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitest.h" #include "mpithreadtest.h" #include #include #define MAX_THREADS 4 /* #define LOOPS 10000 */ #define LOOPS 1000 #define WINDOW 16 /* #define MAX_MSG_SIZE 16384 */ #define MAX_MSG_SIZE 4096 #define HOP 4 /* Emulated thread private storage */ struct tp { int thread_id; int use_proc_null; int use_blocking_comm; int msg_size; double latency; } tp[MAX_THREADS]; int size, rank; char sbuf[MAX_MSG_SIZE], rbuf[MAX_MSG_SIZE]; static int verbose = 0; static volatile int num_threads; static MTEST_THREAD_LOCK_TYPE num_threads_lock; #define ABORT_MSG(msg_) do { printf("%s", (msg_)); MPI_Abort(MPI_COMM_WORLD, 1); } while (0) MTEST_THREAD_RETURN_TYPE run_test(void *arg); MTEST_THREAD_RETURN_TYPE run_test(void *arg) { int thread_id = (int) (long) arg; int i, j, peer; MPI_Status status[WINDOW]; MPI_Request req[WINDOW]; double start, end; int err; int local_num_threads = -1; if (tp[thread_id].use_proc_null) peer = MPI_PROC_NULL; else peer = (rank % 2) ? rank - 1 : rank + 1; err = MTest_thread_lock(&num_threads_lock); if (err) ABORT_MSG("unable to acquire lock, aborting\n"); local_num_threads = num_threads; err = MTest_thread_unlock(&num_threads_lock); if (err) ABORT_MSG("unable to release lock, aborting\n"); MTest_thread_barrier(num_threads); start = MPI_Wtime(); if (tp[thread_id].use_blocking_comm) { if ((rank % 2) == 0) { for (i = 0; i < LOOPS; i++) for (j = 0; j < WINDOW; j++) MPI_Send(sbuf, tp[thread_id].msg_size, MPI_CHAR, peer, 0, MPI_COMM_WORLD); } else { for (i = 0; i < LOOPS; i++) for (j = 0; j < WINDOW; j++) MPI_Recv(rbuf, tp[thread_id].msg_size, MPI_CHAR, peer, 0, MPI_COMM_WORLD, &status[0]); } } else { for (i = 0; i < LOOPS; i++) { if ((rank % 2) == 0) { for (j = 0; j < WINDOW; j++) MPI_Isend(sbuf, tp[thread_id].msg_size, MPI_CHAR, peer, 0, MPI_COMM_WORLD, &req[j]); } else { for (j = 0; j < WINDOW; j++) MPI_Irecv(rbuf, tp[thread_id].msg_size, MPI_CHAR, peer, 0, MPI_COMM_WORLD, &req[j]); } MPI_Waitall(WINDOW, req, status); } } end = MPI_Wtime(); tp[thread_id].latency = 1000000.0 * (end - start) / (LOOPS * WINDOW); MTest_thread_barrier(num_threads); return MTEST_THREAD_RETVAL_IGN; } void loops(void); void loops(void) { int i, nt; double latency, mrate, avg_latency, agg_mrate; int err; err = MTest_thread_lock_create(&num_threads_lock); if (err) ABORT_MSG("unable to create lock, aborting\n"); for (nt = 1; nt <= MAX_THREADS; nt++) { err = MTest_thread_lock(&num_threads_lock); if (err) ABORT_MSG("unable to acquire lock, aborting\n"); num_threads = 1; MPI_Barrier(MPI_COMM_WORLD); MTest_thread_barrier_init(); for (i = 1; i < nt; i++) { err = MTest_Start_thread(run_test, (void *) (long) i); if (err) { /* attempt to continue with fewer threads, we may be on a * thread-constrained platform like BG/P in DUAL mode */ break; } ++num_threads; } err = MTest_thread_unlock(&num_threads_lock); if (err) ABORT_MSG("unable to release lock, aborting\n"); if (nt > 1 && num_threads <= 1) { ABORT_MSG("unable to create any additional threads, aborting\n"); } run_test((void *) 0); /* we are thread 0 */ err = MTest_Join_threads(); if (err) { printf("error joining threads, err=%d", err); MPI_Abort(MPI_COMM_WORLD, 1); } MTest_thread_barrier_free(); latency = 0; for (i = 0; i < num_threads; i++) latency += tp[i].latency; latency /= num_threads; /* Average latency */ mrate = num_threads / latency; /* Message rate */ /* Global latency and message rate */ MPI_Reduce(&latency, &avg_latency, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD); avg_latency /= size; MPI_Reduce(&mrate, &agg_mrate, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD); if (!rank && verbose) { printf("Threads: %d; Latency: %.3f; Mrate: %.3f\n", num_threads, latency, mrate); } } err = MTest_thread_lock_free(&num_threads_lock); if (err) ABORT_MSG("unable to free lock, aborting\n"); } int main(int argc, char **argv) { int pmode, i, j; MPI_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &pmode); if (pmode != MPI_THREAD_MULTIPLE) { fprintf(stderr, "Thread Multiple not supported by the MPI implementation\n"); MPI_Abort(MPI_COMM_WORLD, -1); } MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (getenv("MPITEST_VERBOSE")) verbose = 1; /* For communication, we need an even number of processes */ if (size % 2) { fprintf(stderr, "This test needs an even number of processes\n"); MPI_Abort(MPI_COMM_WORLD, -1); } /* PROC_NULL */ for (i = 0; i < MAX_THREADS; i++) { tp[i].thread_id = i; tp[i].use_proc_null = 1; tp[i].use_blocking_comm = 1; tp[i].msg_size = 0; } if (!rank && verbose) { printf("\nUsing MPI_PROC_NULL\n"); printf("-------------------\n"); } loops(); /* Blocking communication */ for (j = 0; j < MAX_MSG_SIZE; j = (!j ? 1 : j * HOP)) { for (i = 0; i < MAX_THREADS; i++) { tp[i].thread_id = i; tp[i].use_proc_null = 0; tp[i].use_blocking_comm = 1; tp[i].msg_size = j; } if (!rank && verbose) { printf("\nBlocking communication with message size %6d bytes\n", j); printf("------------------------------------------------------\n"); } loops(); } /* Non-blocking communication */ for (j = 0; j < MAX_MSG_SIZE; j = (!j ? 1 : j * HOP)) { for (i = 0; i < MAX_THREADS; i++) { tp[i].thread_id = i; tp[i].use_proc_null = 0; tp[i].use_blocking_comm = 0; tp[i].msg_size = j; } if (!rank && verbose) { printf("\nNon-blocking communication with message size %6d bytes\n", j); printf("----------------------------------------------------------\n"); } loops(); } if (rank == 0) { printf(" No Errors\n"); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/threads/pt2pt/alltoall.c0000644000175000017500000000505512620254305021040 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2006 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include "mpitest.h" #include "mpithreadtest.h" #ifdef HAVE_UNISTD_H #include #endif #include #ifdef DO_DEBUG #define DEBUG(_a){ _a ;fflush(stdout);} #else #define DEBUG(_a) #endif #define NUM_ITER 10000 const int REQ_TAG = 111; const int ANS_TAG = 222; /* MPI environment description */ int rank, size, provided; MTEST_THREAD_RETURN_TYPE listener(void *); /* LISTENER THREAD it waits for communication from any source (including calling thread) messages which it receives have tag REQ_TAG thread runs infinite loop which will stop only if every node in the MPI_COMM_WORLD send request containing -1 */ MTEST_THREAD_RETURN_TYPE listener(void *extra) { int req; int source; MPI_Status stat; int no_fins = 0; /* this must be equal to size to break loop below */ while (1) { /* wait for request */ MPI_Recv(&req, 1, MPI_INT, MPI_ANY_SOURCE, REQ_TAG, MPI_COMM_WORLD, &stat); /* get request source */ source = stat.MPI_SOURCE; DEBUG(printf("node %d got request %d from %d\n", rank, req, source)); if (req == -1) ++no_fins; /* one more node finished requesting */ /* no more requests can arrive */ if (no_fins == size) break; } DEBUG(printf("node %d has stopped listener\n", rank)); return MTEST_THREAD_RETVAL_IGN; } int main(int argc, char *argv[]) { int buf = 0; long int i, j; MPI_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &provided); if (provided != MPI_THREAD_MULTIPLE) { printf("This test requires MPI_THREAD_MULTIPLE\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); for (i = 0; i < NUM_ITER; i++) { /* create listener thread */ MTest_Start_thread(listener, NULL); /* no more requests to send * inform other in the group that we have finished */ buf = -1; for (j = 0; j < size; ++j) { MPI_Send(&buf, 1, MPI_INT, j, REQ_TAG, MPI_COMM_WORLD); } /* and wait for others to do the same */ MTest_Join_threads(); /* barrier to avoid deadlock */ MPI_Barrier(MPI_COMM_WORLD); } MPI_Finalize(); /* This program works if it gets here */ if (rank == 0) { printf(" No Errors\n"); } return 0; } mpi-testsuite-3.2+dfsg/threads/pt2pt/threaded_sr.c0000644000175000017500000000715012620254305021516 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include "mpithreadtest.h" /* static char MTEST_Descrip[] = "Threaded Send-Recv"; */ /* The buffer size needs to be large enough to cause the rndv protocol to be used. If the MPI provider doesn't use a rndv protocol then the size doesn't matter. */ #define MSG_SIZE 1024*1024 /* Keep track of whether the send succeeded. The values are: -1 (unset), 0 (failure), 1 (ok). The unset value allows us to avoid a possible race caused by reading the value before the send thread sets it. */ static volatile int sendok = -1; MTEST_THREAD_RETURN_TYPE send_thread(void *p); MTEST_THREAD_RETURN_TYPE send_thread(void *p) { int err; char *buffer; int length; int rank; buffer = malloc(sizeof(char) * MSG_SIZE); if (buffer == NULL) { printf("malloc failed to allocate %d bytes for the send buffer.\n", MSG_SIZE); fflush(stdout); sendok = 0; return (MTEST_THREAD_RETURN_TYPE) - 1; } MPI_Comm_rank(MPI_COMM_WORLD, &rank); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); err = MPI_Send(buffer, MSG_SIZE, MPI_CHAR, rank == 0 ? 1 : 0, 0, MPI_COMM_WORLD); if (err) { MPI_Error_string(err, buffer, &length); printf("MPI_Send of %d bytes from %d to %d failed, error: %s\n", MSG_SIZE, rank, rank == 0 ? 1 : 0, buffer); fflush(stdout); sendok = 0; } else { sendok = 1; } return (MTEST_THREAD_RETURN_TYPE) (long) err; } int main(int argc, char *argv[]) { int err, errs = 0; int rank, size; int provided; char *buffer; int length; MPI_Status status; err = MPI_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &provided); if (err != MPI_SUCCESS) { MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); if (provided != MPI_THREAD_MULTIPLE) { if (rank == 0) { printf ("MPI_Init_thread must return MPI_THREAD_MULTIPLE in order for this test to run.\n"); fflush(stdout); } MPI_Finalize(); return -1; } if (size > 2) { printf("please run with exactly two processes.\n"); MPI_Finalize(); return -1; } MTest_Start_thread(send_thread, NULL); /* give the send thread time to start up and begin sending the message */ MTestSleep(3); buffer = malloc(sizeof(char) * MSG_SIZE); if (buffer == NULL) { printf("malloc failed to allocate %d bytes for the recv buffer.\n", MSG_SIZE); fflush(stdout); MPI_Abort(MPI_COMM_WORLD, -1); } /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); err = MPI_Recv(buffer, MSG_SIZE, MPI_CHAR, rank == 0 ? 1 : 0, 0, MPI_COMM_WORLD, &status); if (err) { errs++; MPI_Error_string(err, buffer, &length); printf("MPI_Recv of %d bytes from %d to %d failed, error: %s\n", MSG_SIZE, rank, rank == 0 ? 1 : 0, buffer); fflush(stdout); } /* Loop until the send flag is set */ while (sendok == -1); if (!sendok) { errs++; } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/threads/pt2pt/greq_test.c0000644000175000017500000000571312620254305021232 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2006 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Based on test code provided by Lisandro Dalcí. */ #include #include #include #include "mpithreadtest.h" #include "mpitest.h" #ifdef HAVE_UNISTD_H #include #endif /* static char MTEST_Descrip[] = "threaded generalized request tests"; */ #define IF_VERBOSE(a) \ do { \ if (verbose) { \ printf a ; \ fflush(stdout); \ } \ } while (0) static int verbose = 0; int query_fn(void *extra_state, MPI_Status * status); int query_fn(void *extra_state, MPI_Status * status) { status->MPI_SOURCE = MPI_UNDEFINED; status->MPI_TAG = MPI_UNDEFINED; MPI_Status_set_cancelled(status, 0); MPI_Status_set_elements(status, MPI_BYTE, 0); return 0; } int free_fn(void *extra_state); int free_fn(void *extra_state) { return 0; } int cancel_fn(void *extra_state, int complete); int cancel_fn(void *extra_state, int complete) { return 0; } MPI_Request grequest; MTEST_THREAD_RETURN_TYPE do_work(void *arg); MTEST_THREAD_RETURN_TYPE do_work(void *arg) { MPI_Request *req = (MPI_Request *) arg; IF_VERBOSE(("Starting work in thread ...\n")); MTestSleep(3); IF_VERBOSE(("Work in thread done !!!\n")); MPI_Grequest_complete(*req); return MTEST_THREAD_RETVAL_IGN; } int main(int argc, char *argv[]) { int provided; MPI_Request request; int flag; int outcount = -1; int indices[1] = { -1 }; MPI_Status status; char *env; env = getenv("MPITEST_VERBOSE"); if (env) { if (*env != '0') verbose = 1; } MPI_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &provided); if (provided != MPI_THREAD_MULTIPLE) { printf("This test requires MPI_THREAD_MULTIPLE\n"); MPI_Abort(MPI_COMM_WORLD, 1); } IF_VERBOSE(("Post Init ...\n")); MPI_Grequest_start(query_fn, free_fn, cancel_fn, NULL, &request); grequest = request; /* copy the handle */ MTest_Start_thread(do_work, &grequest); IF_VERBOSE(("Testing ...\n")); flag = 0; while (!flag) { MPI_Test(&request, &flag, &status); } MTest_Join_threads(); MPI_Grequest_start(query_fn, free_fn, cancel_fn, NULL, &request); grequest = request; /* copy the handle */ MTest_Start_thread(do_work, &grequest); IF_VERBOSE(("Testing ...\n")); outcount = 0; while (!outcount) { MPI_Testsome(1, &request, &outcount, indices, &status); } MTest_Join_threads(); MPI_Grequest_start(query_fn, free_fn, cancel_fn, NULL, &request); grequest = request; /* copy the handle */ MTest_Start_thread(do_work, &grequest); IF_VERBOSE(("Testing ...\n")); flag = 0; while (!flag) { MPI_Testall(1, &request, &flag, &status); } MTest_Join_threads(); IF_VERBOSE(("Goodbye !!!\n")); MTest_Finalize(0); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/threads/rma/0000755000175000017500000000000012621010236016563 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/threads/rma/multiget.c0000644000175000017500000000351312620254305020571 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "stdio.h" #include "stdlib.h" #include "mpitest.h" #include "mpithreadtest.h" #define NUM_THREADS 4 #define COUNT 16 #define LOOPS 10000 MPI_Win win; MTEST_THREAD_RETURN_TYPE run_test(void *arg) { int i; double *local_b; MPI_Alloc_mem(COUNT * sizeof(double), MPI_INFO_NULL, &local_b); for (i = 0; i < LOOPS; i++) { MPI_Get(local_b, COUNT, MPI_DOUBLE, 0, 0, COUNT, MPI_DOUBLE, win); MPI_Win_flush_all(win); } MPI_Free_mem(local_b); return (MTEST_THREAD_RETURN_TYPE) NULL; } int main(int argc, char *argv[]) { int errs = 0; int rank, nprocs, i, pmode; double *win_mem; MTest_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &pmode); if (pmode != MPI_THREAD_MULTIPLE) { fprintf(stderr, "MPI_THREAD_MULTIPLE is not supported\n"); MPI_Abort(MPI_COMM_WORLD, -1); } MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); if (nprocs < 2) { printf("Run this program with 2 or more processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } if (rank == 0) { errs += MPI_Win_allocate(COUNT * sizeof(double), sizeof(double), MPI_INFO_NULL, MPI_COMM_WORLD, &win_mem, &win); } else { errs += MPI_Win_allocate(0, sizeof(double), MPI_INFO_NULL, MPI_COMM_WORLD, &win_mem, &win); } errs += MPI_Win_lock_all(0, win); for (i = 0; i < NUM_THREADS; i++) errs += MTest_Start_thread(run_test, NULL); errs += MTest_Join_threads(); errs += MPI_Win_unlock_all(win); errs += MPI_Win_free(&win); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/threads/rma/testlist0000644000175000017500000000006412620254305020367 0ustar mbanckmbanckmultirma 2 mpiversion=3.0 multiget 2 mpiversion=3.0 mpi-testsuite-3.2+dfsg/threads/rma/Makefile.in0000644000175000017500000005022112621010236020630 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = multirma$(EXEEXT) multiget$(EXEEXT) subdir = threads/rma ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) multiget_SOURCES = multiget.c multiget_OBJECTS = multiget.$(OBJEXT) multiget_LDADD = $(LDADD) multiget_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o \ $(top_builddir)/threads/util/mtestthread.$(OBJEXT) multirma_SOURCES = multirma.c multirma_OBJECTS = multirma.$(OBJEXT) multirma_LDADD = $(LDADD) multirma_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o \ $(top_builddir)/threads/util/mtestthread.$(OBJEXT) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = multiget.c multirma.c DIST_SOURCES = multiget.c multirma.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.mtest \ $(top_srcdir)/confdb/depcomp \ $(top_srcdir)/threads/Makefile_threads.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o \ $(top_builddir)/threads/util/mtestthread.$(OBJEXT) @threadlib@ CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/threads/Makefile_threads.mtest $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign threads/rma/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign threads/rma/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/threads/Makefile_threads.mtest $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) multiget$(EXEEXT): $(multiget_OBJECTS) $(multiget_DEPENDENCIES) $(EXTRA_multiget_DEPENDENCIES) @rm -f multiget$(EXEEXT) $(AM_V_CCLD)$(LINK) $(multiget_OBJECTS) $(multiget_LDADD) $(LIBS) multirma$(EXEEXT): $(multirma_OBJECTS) $(multirma_DEPENDENCIES) $(EXTRA_multirma_DEPENDENCIES) @rm -f multirma$(EXEEXT) $(AM_V_CCLD)$(LINK) $(multirma_OBJECTS) $(multirma_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multiget.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multirma.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml $(top_builddir)/threads/util/mtestthread.$(OBJEXT): $(top_srcdir)/threads/util/mtestthread.c (cd $(top_builddir)/threads/util && $(MAKE) mtestthread.$(OBJEXT)) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/threads/rma/Makefile.am0000644000175000017500000000040612620254305020625 0ustar mbanckmbanck## -*- Mode: Makefile; -*- ## vim: set ft=automake : ## ## (C) 2011 by Argonne National Laboratory. ## See COPYRIGHT in top-level directory. ## include $(top_srcdir)/threads/Makefile_threads.mtest EXTRA_DIST = testlist noinst_PROGRAMS = multirma multiget mpi-testsuite-3.2+dfsg/threads/rma/multirma.c0000644000175000017500000000320612620254305020570 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "stdio.h" #include "stdlib.h" #include "mpitest.h" #include "mpithreadtest.h" #define COUNT 1 #define NUM_THREADS 4 #define LOOPS 100000 MPI_Win win; int errs = 0, dummy; MTEST_THREAD_RETURN_TYPE run_test(void *arg) { int i; for (i = 0; i < LOOPS; i++) { /* send a global variable, rather than a stack variable, so * other threads can access the address during flush */ MPI_Put(&dummy, 1, MPI_INT, 0, 0, 1, MPI_INT, win); MPI_Win_flush(0, win); } return (MTEST_THREAD_RETURN_TYPE) NULL; } int main(int argc, char *argv[]) { int nprocs, i, pmode; char *win_buf; MTest_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &pmode); if (pmode != MPI_THREAD_MULTIPLE) { fprintf(stderr, "Thread Multiple not supported by the MPI implementation\n"); MPI_Abort(MPI_COMM_WORLD, -1); } MPI_Comm_size(MPI_COMM_WORLD, &nprocs); if (nprocs < 2) { printf("Run this program with 2 or more processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } errs += MPI_Win_allocate(COUNT * sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &win_buf, &win); errs += MPI_Win_lock_all(0, win); for (i = 0; i < NUM_THREADS; i++) errs += MTest_Start_thread(run_test, NULL); errs += MTest_Join_threads(); errs += MPI_Win_unlock_all(win); errs += MPI_Win_free(&win); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/configargs/0000755000175000017500000000000012620254305016502 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/configargs/bgp.cfg0000644000175000017500000000011412620254305017727 0ustar mbanckmbanckCC=mpixlc_r F77=mpixlf77_r FC=mpixlf90_r CXX=mpixlcxx_r cross_compiling=yes mpi-testsuite-3.2+dfsg/configargs/bgp_xl.cfg0000644000175000017500000000033412620254305020436 0ustar mbanckmbanckCC=/bgsys/drivers/ppcfloor/comm/xl/bin/mpixlc_r F77=/bgsys/drivers/ppcfloor/comm/xl/bin/mpixlf77_r FC=/bgsys/drivers/ppcfloor/comm/xl/bin/mpixlf90_r CXX=/bgsys/drivers/ppcfloor/comm/xl/bin/mpixlcxx_r cross_compiling=yes mpi-testsuite-3.2+dfsg/template.c0000644000175000017500000000507612620254305016347 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" static char MTEST_Descrip[] = ""; int main(int argc, char *argv[]) { int errs = 0, err; int rank, size, source, dest; int minsize = 2, count; MPI_Comm comm; MPI_Status status; MTestDatatype sendtype, recvtype; MTest_Init(&argc, &argv); /* The following illustrates the use of the routines to * run through a selection of communicators and datatypes. * Use subsets of these for tests that do not involve combinations * of communicators, datatypes, and counts of datatypes */ while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; /* Determine the sender and receiver */ MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); source = 0; dest = size - 1; /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(comm, MPI_ERRORS_RETURN); MTEST_DATATYPE_FOR_EACH_COUNT(count) { while (MTestGetDatatypes(&sendtype, &recvtype, count)) { if (rank == source) { sendtype.InitBuf(&sendtype); err = MPI_Send(sendtype.buf, sendtype.count, sendtype.datatype, dest, 0, comm); if (err) { errs++; MTestPrintError(err); } MTestFreeDatatype(&sendtype); } else if (rank == dest) { recvtype.InitBuf(&recvtype); err = MPI_Recv(recvtype.buf, recvtype.count, recvtype.datatype, source, 0, comm, &status); if (err) { errs++; fprintf(stderr, "Error with communicator %s and datatype %s\n", MTestGetIntracommName(), MTestGetDatatypeName(&recvtype)); MTestPrintError(err); } err = MTestCheckRecv(&status, &recvtype); if (err) { errs += errs; } MTestFreeDatatype(&recvtype); } } } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/comm/0000755000175000017500000000000012621010232015301 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/comm/comm_idup_comm.c0000644000175000017500000000630712620254305020454 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* This test tests overlapping of Comm_idups with other comm. generations calls */ #include #include #include #include "mpi.h" #include "mpitest.h" #define NUM_IDUPS 5 int main(int argc, char **argv) { int errs = 0; int i; int rank, size; int *excl; int ranges[1][3]; int isLeft, rleader; MPI_Group world_group, high_group, even_group; MPI_Comm local_comm, inter_comm, test_comm, outcomm; MPI_Comm idupcomms[NUM_IDUPS]; MPI_Request reqs[NUM_IDUPS]; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_group(MPI_COMM_WORLD, &world_group); if (size < 2) { printf("this test requires at least 2 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } /* Idup MPI_COMM_WORLD multiple times */ for (i = 0; i < NUM_IDUPS; i++) { MPI_Comm_idup(MPI_COMM_WORLD, &idupcomms[i], &reqs[i]); } /* Overlap pending idups with various comm generation functions */ /* Comm_dup */ MPI_Comm_dup(MPI_COMM_WORLD, &outcomm); errs += MTestTestComm(outcomm); MTestFreeComm(&outcomm); /* Comm_split */ MPI_Comm_split(MPI_COMM_WORLD, rank % 2, size - rank, &outcomm); errs += MTestTestComm(outcomm); MTestFreeComm(&outcomm); /* Comm_create, high half of MPI_COMM_WORLD */ ranges[0][0] = size / 2; ranges[0][1] = size - 1; ranges[0][2] = 1; MPI_Group_range_incl(world_group, 1, ranges, &high_group); MPI_Comm_create(MPI_COMM_WORLD, high_group, &outcomm); MPI_Group_free(&high_group); errs += MTestTestComm(outcomm); MTestFreeComm(&outcomm); /* Comm_create_group, even ranks of MPI_COMM_WORLD */ /* exclude the odd ranks */ excl = malloc((size / 2) * sizeof(int)); for (i = 0; i < size / 2; i++) excl[i] = (2 * i) + 1; MPI_Group_excl(world_group, size / 2, excl, &even_group); free(excl); if (rank % 2 == 0) { MPI_Comm_create_group(MPI_COMM_WORLD, even_group, 0, &outcomm); } else { outcomm = MPI_COMM_NULL; } MPI_Group_free(&even_group); errs += MTestTestComm(outcomm); MTestFreeComm(&outcomm); /* Intercomm_create & Intercomm_merge */ MPI_Comm_split(MPI_COMM_WORLD, (rank < size / 2), rank, &local_comm); if (rank == 0) { rleader = size / 2; } else if (rank == size / 2) { rleader = 0; } else { rleader = -1; } isLeft = rank < size / 2; MPI_Intercomm_create(local_comm, 0, MPI_COMM_WORLD, rleader, 99, &inter_comm); MPI_Intercomm_merge(inter_comm, isLeft, &outcomm); MPI_Comm_free(&local_comm); errs += MTestTestComm(inter_comm); MTestFreeComm(&inter_comm); errs += MTestTestComm(outcomm); MTestFreeComm(&outcomm); MPI_Waitall(NUM_IDUPS, reqs, MPI_STATUSES_IGNORE); for (i = 0; i < NUM_IDUPS; i++) { errs += MTestTestComm(idupcomms[i]); MPI_Comm_free(&idupcomms[i]); } MPI_Group_free(&world_group); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/comm/comm_idup_nb.c0000644000175000017500000001323412620254305020115 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include "mpi.h" #include "mpitest.h" #define ITERS 5 int main(int argc, char **argv) { int errs = 0; int i, isleft; MPI_Comm test_comm, new_comm[ITERS]; int in[ITERS], out[ITERS], sol; int rank, size, rsize, rrank; MPI_Request sreq[ITERS * 2]; int root; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); if (size < 2) { printf("this test requires at least 2 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } while (MTestGetIntracommGeneral(&test_comm, 1, 1)) { if (test_comm == MPI_COMM_NULL) continue; MPI_Comm_size(test_comm, &size); MPI_Comm_rank(test_comm, &rank); /* Ibarrier */ for (i = 0; i < ITERS; i++) { MPI_Ibarrier(test_comm, &sreq[i]); MPI_Comm_idup(test_comm, &new_comm[i], &sreq[i + ITERS]); } MPI_Waitall(ITERS * 2, sreq, MPI_STATUS_IGNORE); for (i = 0; i < ITERS; i++) { errs += MTestTestComm(new_comm[i]); MPI_Comm_free(&new_comm[i]); } /*Ibcast */ for (i = 0; i < ITERS; i++) { if (rank == 0) in[i] = 815; else in[i] = 10; MPI_Ibcast(&in[i], 1, MPI_INT, 0, test_comm, &sreq[i]); MPI_Comm_idup(test_comm, &new_comm[i], &sreq[i + ITERS]); } sol = 815; MPI_Waitall(ITERS * 2, sreq, MPI_STATUS_IGNORE); for (i = 0; i < ITERS; i++) { if (in[i] != sol) errs++; errs += MTestTestComm(new_comm[i]); MPI_Comm_free(&new_comm[i]); } /* Iallreduce */ for (i = 0; i < ITERS; i++) { in[i] = 1; MPI_Iallreduce(&in[i], &out[i], 1, MPI_INT, MPI_SUM, test_comm, &sreq[i]); MPI_Comm_idup(test_comm, &new_comm[i], &sreq[i + ITERS]); } sol = size; MPI_Waitall(ITERS * 2, sreq, MPI_STATUS_IGNORE); for (i = 0; i < ITERS; i++) { if (out[i] != sol) errs++; errs += MTestTestComm(new_comm[i]); MPI_Comm_free(&new_comm[i]); } /* Isann */ for (i = 0; i < ITERS; i++) { MPI_Iscan(&rank, &out[i], 1, MPI_INT, MPI_SUM, test_comm, &sreq[i]); MPI_Comm_idup(test_comm, &new_comm[i], &sreq[i + ITERS]); } sol = rank * (rank + 1) / 2; MPI_Waitall(ITERS * 2, sreq, MPI_STATUS_IGNORE); for (i = 0; i < ITERS; i++) { if (out[i] != sol) errs++; errs += MTestTestComm(new_comm[i]); MPI_Comm_free(&new_comm[i]); } /*Ibcast */ for (i = 0; i < ITERS; i++) { if (rank == 0) in[i] = 815; else in[i] = 10; MPI_Ibcast(&in[i], 1, MPI_INT, 0, test_comm, &sreq[i]); MPI_Comm_idup(test_comm, &new_comm[i], &sreq[i + ITERS]); } MPI_Waitall(ITERS * 2, sreq, MPI_STATUS_IGNORE); sol = 815; for (i = 0; i < ITERS; i++) { if (in[i] != sol) errs++; errs += MTestTestComm(new_comm[i]); MPI_Comm_free(&new_comm[i]); } MTestFreeComm(&test_comm); } /* Now the test for inter-communicators */ while (MTestGetIntercomm(&test_comm, &isleft, 1)) { if (test_comm == MPI_COMM_NULL) continue; MPI_Comm_size(test_comm, &size); MPI_Comm_rank(test_comm, &rank); MPI_Comm_remote_size(test_comm, &rsize); /* Ibarrier */ for (i = 0; i < ITERS; i++) { MPI_Ibarrier(test_comm, &sreq[i]); MPI_Comm_idup(test_comm, &new_comm[i], &sreq[i + ITERS]); } MPI_Waitall(ITERS * 2, sreq, MPI_STATUS_IGNORE); for (i = 0; i < ITERS; i++) { errs += MTestTestComm(new_comm[i]); MPI_Comm_free(&new_comm[i]); } /*Ibcast */ for (i = 0; i < ITERS; i++) { if (isleft) { if (rank == 0) { root = MPI_ROOT; in[i] = 815; } else { root = MPI_PROC_NULL; in[i] = 815; /* not needed, just to make correctness checking easier */ } } else { root = 0; in[i] = 213; /* garbage value */ } MPI_Ibcast(&in[i], 1, MPI_INT, root, test_comm, &sreq[i]); MPI_Comm_idup(test_comm, &new_comm[i], &sreq[i + ITERS]); } sol = 815; MPI_Waitall(ITERS * 2, sreq, MPI_STATUS_IGNORE); for (i = 0; i < ITERS; i++) { if (in[i] != sol) errs++; errs += MTestTestComm(new_comm[i]); MPI_Comm_free(&new_comm[i]); } /* Iallreduce */ for (i = 0; i < ITERS; i++) { in[i] = 1; MPI_Iallreduce(&in[i], &out[i], 1, MPI_INT, MPI_SUM, test_comm, &sreq[i]); MPI_Comm_idup(test_comm, &new_comm[i], &sreq[i + ITERS]); } sol = rsize; MPI_Waitall(ITERS * 2, sreq, MPI_STATUS_IGNORE); for (i = 0; i < ITERS; i++) { if (out[i] != sol) errs++; errs += MTestTestComm(new_comm[i]); MPI_Comm_free(&new_comm[i]); } MTestFreeComm(&test_comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/comm/commcreate1.c0000644000175000017500000001072312620254305017662 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2007 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* Check that Communicators can be created from various subsets of the processes in the communicator. */ void abortMsg(const char *, int); int BuildComm(MPI_Comm, MPI_Group, const char[]); void abortMsg(const char *str, int code) { char msg[MPI_MAX_ERROR_STRING]; int class, resultLen; MPI_Error_class(code, &class); MPI_Error_string(code, msg, &resultLen); fprintf(stderr, "%s: errcode = %d, class = %d, msg = %s\n", str, code, class, msg); MPI_Abort(MPI_COMM_WORLD, code); } int main(int argc, char *argv[]) { MPI_Comm dupWorld; int wrank, wsize, gsize, err, errs = 0; int ranges[1][3]; MPI_Group wGroup, godd, ghigh, geven; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &wsize); MPI_Comm_rank(MPI_COMM_WORLD, &wrank); /* Create some groups */ MPI_Comm_group(MPI_COMM_WORLD, &wGroup); MTestPrintfMsg(2, "Creating groups\n"); ranges[0][0] = 2 * (wsize / 2) - 1; ranges[0][1] = 1; ranges[0][2] = -2; err = MPI_Group_range_incl(wGroup, 1, ranges, &godd); if (err) abortMsg("Failed to create odd group: ", err); err = MPI_Group_size(godd, &gsize); if (err) abortMsg("Failed to get size of odd group: ", err); if (gsize != wsize / 2) { fprintf(stderr, "Group godd size is %d should be %d\n", gsize, wsize / 2); errs++; } ranges[0][0] = wsize / 2 + 1; ranges[0][1] = wsize - 1; ranges[0][2] = 1; err = MPI_Group_range_incl(wGroup, 1, ranges, &ghigh); if (err) abortMsg("Failed to create high group\n", err); ranges[0][0] = 0; ranges[0][1] = wsize - 1; ranges[0][2] = 2; err = MPI_Group_range_incl(wGroup, 1, ranges, &geven); if (err) abortMsg("Failed to create even group:", err); MPI_Comm_dup(MPI_COMM_WORLD, &dupWorld); MPI_Comm_set_name(dupWorld, (char *) "Dup of world"); /* First, use the groups to create communicators from world and a dup * of world */ errs += BuildComm(MPI_COMM_WORLD, ghigh, "ghigh"); errs += BuildComm(MPI_COMM_WORLD, godd, "godd"); errs += BuildComm(MPI_COMM_WORLD, geven, "geven"); errs += BuildComm(dupWorld, ghigh, "ghigh"); errs += BuildComm(dupWorld, godd, "godd"); errs += BuildComm(dupWorld, geven, "geven"); #if MTEST_HAVE_MIN_MPI_VERSION(2,2) /* check that we can create multiple communicators from a single collective * call to MPI_Comm_create as long as the groups are all disjoint */ errs += BuildComm(MPI_COMM_WORLD, (wrank % 2 ? godd : geven), "godd+geven"); errs += BuildComm(dupWorld, (wrank % 2 ? godd : geven), "godd+geven"); errs += BuildComm(MPI_COMM_WORLD, MPI_GROUP_EMPTY, "MPI_GROUP_EMPTY"); errs += BuildComm(dupWorld, MPI_GROUP_EMPTY, "MPI_GROUP_EMPTY"); #endif MPI_Comm_free(&dupWorld); MPI_Group_free(&ghigh); MPI_Group_free(&godd); MPI_Group_free(&geven); MPI_Group_free(&wGroup); MTest_Finalize(errs); MPI_Finalize(); return 0; } int BuildComm(MPI_Comm oldcomm, MPI_Group group, const char gname[]) { MPI_Comm newcomm; int grank, gsize, rank, size, errs = 0; char cname[MPI_MAX_OBJECT_NAME + 1]; int cnamelen; MPI_Group_rank(group, &grank); MPI_Group_size(group, &gsize); MPI_Comm_get_name(oldcomm, cname, &cnamelen); MTestPrintfMsg(2, "Testing comm %s from %s\n", cname, gname); MPI_Comm_create(oldcomm, group, &newcomm); if (newcomm == MPI_COMM_NULL && grank != MPI_UNDEFINED) { errs++; fprintf(stderr, "newcomm is null but process is in group\n"); } if (newcomm != MPI_COMM_NULL && grank == MPI_UNDEFINED) { errs++; fprintf(stderr, "newcomm is not null but process is not in group\n"); } if (newcomm != MPI_COMM_NULL && grank != MPI_UNDEFINED) { MPI_Comm_rank(newcomm, &rank); if (rank != grank) { errs++; fprintf(stderr, "Rank is %d should be %d in comm from %s\n", rank, grank, gname); } MPI_Comm_size(newcomm, &size); if (size != gsize) { errs++; fprintf(stderr, "Size is %d should be %d in comm from %s\n", size, gsize, gname); } MPI_Comm_free(&newcomm); MTestPrintfMsg(2, "Done testing comm %s from %s\n", cname, gname); } return errs; } mpi-testsuite-3.2+dfsg/comm/comm_group_rand.c0000644000175000017500000000260512620254305020635 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include "mpitestconf.h" #define LOOPS 100 int main(int argc, char **argv) { int rank, size, i, j, count; MPI_Group full_group, sub_group; int *included, *ranks; MPI_Comm comm; MPI_Init(NULL, NULL); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); ranks = malloc(size * sizeof(int)); included = malloc(size * sizeof(int)); MPI_Comm_group(MPI_COMM_WORLD, &full_group); for (j = 0; j < LOOPS; j++) { srand(j); /* Deterministic seed */ count = 0; for (i = 0; i < size; i++) { if (rand() % 2) { /* randomly include a rank */ included[i] = 1; ranks[count++] = i; } else included[i] = 0; } MPI_Group_incl(full_group, count, ranks, &sub_group); if (included[rank]) { MPI_Comm_create_group(MPI_COMM_WORLD, sub_group, 0, &comm); MPI_Barrier(comm); MPI_Comm_free(&comm); } MPI_Group_free(&sub_group); } MPI_Group_free(&full_group); if (rank == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/comm/comm_create_group.c0000644000175000017500000000257712620254305021164 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2011 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #include #include #include #include int main(int argc, char *argv[]) { int size, rank, i, *excl; MPI_Group world_group, even_group; MPI_Comm even_comm; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (size % 2) { fprintf(stderr, "this program requires a multiple of 2 number of processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } excl = malloc((size / 2) * sizeof(int)); assert(excl); /* exclude the odd ranks */ for (i = 0; i < size / 2; i++) excl[i] = (2 * i) + 1; /* Create some groups */ MPI_Comm_group(MPI_COMM_WORLD, &world_group); MPI_Group_excl(world_group, size / 2, excl, &even_group); MPI_Group_free(&world_group); if (rank % 2 == 0) { /* Even processes create a group for themselves */ MPI_Comm_create_group(MPI_COMM_WORLD, even_group, 0, &even_comm); MPI_Barrier(even_comm); MPI_Comm_free(&even_comm); } MPI_Group_free(&even_group); MPI_Barrier(MPI_COMM_WORLD); if (rank == 0) printf(" No errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/comm/comm_idup_iallreduce.c0000644000175000017500000001507212620254305021631 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include "mpi.h" #include "mpitest.h" #define ITERS 10 /* This test uses several scenarios to overlap iallreduce and comm_idup * 1.) Use comm_idup dublicate the COMM_WORLD and do iallreduce * on the COMM_WORLD * 2.) Do the above test in a loop * 3.) Dublicate COMM_WORLD, overalp iallreduce on one * communicator with comm_idup on the nother communicator * 4.) Split MPI_COMM_WORLD, communicate on the split communicator while dublicating COMM_WORLD * 5.) Duplicate the split communicators with comm_idup * while communicating onCOMM_WORLD * 6.) Ceate an inter-communicator and duplicate it with comm_idup while * communicating on the inter-communicator * 7.) Dublicate the inter-communicator whil communicate on COMM_WORLD * 8.) Merge the inter-communicator to an intra-communicator and idup it, * overlapping with communication on MPI_COMM_WORLD * 9.) Communicate on the merge communicator, while duplicating COMM_WORLD */ int main(int argc, char **argv) { int errs = 0; int i; int rank, size, lrank, lsize, rsize, isize; int in, out, sol; MPI_Comm newcomm, newcomm_v[ITERS], dup_comm, split, ic, merge; MPI_Request sreq[ITERS * 2]; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); if (size < 2) { printf("this test requires at least 2 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } /* set input buffer and compare buffer */ in = 1; sol = size; MPI_Comm_idup(MPI_COMM_WORLD, &newcomm, &sreq[0]); MPI_Iallreduce(&in, &out, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD, &sreq[1]); MPI_Waitall(2, sreq, MPI_STATUS_IGNORE); /* Test results of overlapping allreduce */ if (sol != out) errs++; /*Test new communicator */ errs += MTestTestComm(newcomm); MPI_Comm_free(&newcomm); for (i = 0; i < ITERS; i++) { MPI_Comm_idup(MPI_COMM_WORLD, &newcomm_v[i], &sreq[i]); MPI_Iallreduce(&in, &out, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD, &sreq[i + ITERS]); } MPI_Waitall(ITERS * 2, sreq, MPI_STATUS_IGNORE); for (i = 0; i < ITERS; i++) { errs += MTestTestComm(newcomm_v[i]); MPI_Comm_free(&newcomm_v[i]); } MPI_Comm_dup(MPI_COMM_WORLD, &dup_comm); if (rank == 0) { MPI_Iallreduce(&in, &out, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD, &sreq[0]); MPI_Comm_idup(dup_comm, &newcomm, &sreq[1]); MPI_Waitall(2, sreq, MPI_STATUS_IGNORE); } else { MPI_Comm_idup(dup_comm, &newcomm, &sreq[1]); MPI_Iallreduce(&in, &out, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD, &sreq[0]); MPI_Waitall(2, sreq, MPI_STATUS_IGNORE); } /* Test Iallreduce */ if (sol != out) errs++; /*Test new communicator */ errs += MTestTestComm(newcomm); MPI_Comm_free(&newcomm); MPI_Comm_free(&dup_comm); MPI_Comm_split(MPI_COMM_WORLD, rank % 2, rank, &split); MPI_Comm_rank(split, &lrank); MPI_Comm_size(split, &lsize); sol = lsize; if (lrank == 0) { MPI_Iallreduce(&in, &out, 1, MPI_INT, MPI_SUM, split, &sreq[0]); MPI_Comm_idup(MPI_COMM_WORLD, &newcomm, &sreq[1]); MPI_Waitall(2, sreq, MPI_STATUS_IGNORE); } else { MPI_Comm_idup(MPI_COMM_WORLD, &newcomm, &sreq[1]); MPI_Iallreduce(&in, &out, 1, MPI_INT, MPI_SUM, split, &sreq[0]); MPI_Waitall(2, sreq, MPI_STATUS_IGNORE); } /* Test Iallreduce */ if (sol != out) errs++;; /* Test new communicator */ errs += MTestTestComm(newcomm); MPI_Comm_free(&newcomm); sol = size; if (lrank == 0) { MPI_Iallreduce(&in, &out, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD, &sreq[0]); MPI_Comm_idup(split, &newcomm, &sreq[1]); MPI_Waitall(2, sreq, MPI_STATUS_IGNORE); } else { MPI_Comm_idup(split, &newcomm, &sreq[1]); MPI_Iallreduce(&in, &out, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD, &sreq[0]); MPI_Waitall(2, sreq, MPI_STATUS_IGNORE); } /* Test Iallreduce */ if (sol != out) errs++;; /* Test new communicator */ errs += MTestTestComm(newcomm); MPI_Comm_free(&newcomm); MPI_Intercomm_create(split, 0, MPI_COMM_WORLD, (rank == 0 ? 1 : 0), 1234, &ic); MPI_Comm_remote_size(ic, &rsize); sol = rsize; MPI_Comm_idup(ic, &newcomm, &sreq[1]); MPI_Iallreduce(&in, &out, 1, MPI_INT, MPI_SUM, ic, &sreq[0]); MPI_Waitall(2, sreq, MPI_STATUS_IGNORE); if (sol != out) errs++;; /* Test new inter communicator */ errs += MTestTestComm(newcomm); MPI_Comm_free(&newcomm); sol = lsize; if (lrank == 0) { MPI_Iallreduce(&in, &out, 1, MPI_INT, MPI_SUM, split, &sreq[0]); MPI_Comm_idup(ic, &newcomm, &sreq[1]); MPI_Waitall(2, sreq, MPI_STATUS_IGNORE); } else { MPI_Comm_idup(ic, &newcomm, &sreq[1]); MPI_Iallreduce(&in, &out, 1, MPI_INT, MPI_SUM, split, &sreq[0]); MPI_Waitall(2, sreq, MPI_STATUS_IGNORE); } /* Test Iallreduce resutls for split-communicator */ if (sol != out) errs++;; /* Test new inter-communicator */ errs += MTestTestComm(newcomm); MPI_Comm_free(&newcomm); MPI_Intercomm_merge(ic, rank % 2, &merge); MPI_Comm_size(merge, &isize); sol = size; if (rank == 0) { MPI_Iallreduce(&in, &out, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD, &sreq[0]); MPI_Comm_idup(merge, &newcomm, &sreq[1]); MPI_Waitall(2, sreq, MPI_STATUS_IGNORE); } else { MPI_Comm_idup(merge, &newcomm, &sreq[1]); MPI_Iallreduce(&in, &out, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD, &sreq[0]); MPI_Waitall(2, sreq, MPI_STATUS_IGNORE); } if (sol != out) errs++;; /* Test new communicator */ errs += MTestTestComm(newcomm); MPI_Comm_free(&newcomm); sol = isize; if (rank == 0) { MPI_Iallreduce(&in, &out, 1, MPI_INT, MPI_SUM, merge, &sreq[0]); MPI_Comm_idup(MPI_COMM_WORLD, &newcomm, &sreq[1]); MPI_Waitall(2, sreq, MPI_STATUS_IGNORE); } else { MPI_Comm_idup(MPI_COMM_WORLD, &newcomm, &sreq[1]); MPI_Iallreduce(&in, &out, 1, MPI_INT, MPI_SUM, merge, &sreq[0]); MPI_Waitall(2, sreq, MPI_STATUS_IGNORE); } MPI_Comm_free(&merge); MPI_Comm_free(&newcomm); MPI_Comm_free(&split); MPI_Comm_free(&ic); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/comm/probe-intercomm.c0000644000175000017500000000377412620254305020574 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test MPI_Probe() for an intercomm"; */ #define MAX_DATA_LEN 100 int main(int argc, char *argv[]) { int errs = 0, recvlen, isLeft; MPI_Status status; int rank, size; MPI_Comm intercomm; char buf[MAX_DATA_LEN]; const char *test_str = "test"; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); if (size < 2) { fprintf(stderr, "This test requires at least two processes."); MPI_Abort(MPI_COMM_WORLD, 1); } while (MTestGetIntercomm(&intercomm, &isLeft, 2)) { if (intercomm == MPI_COMM_NULL) continue; MPI_Comm_rank(intercomm, &rank); /* 0 ranks on each side communicate, everyone else does nothing */ if (rank == 0) { if (isLeft) { recvlen = -1; MPI_Probe(0, 0, intercomm, &status); MPI_Get_count(&status, MPI_CHAR, &recvlen); if (recvlen != (strlen(test_str) + 1)) { printf(" Error: recvlen (%d) != strlen(\"%s\")+1 (%d)\n", recvlen, test_str, (int) strlen(test_str) + 1); ++errs; } buf[0] = '\0'; MPI_Recv(buf, recvlen, MPI_CHAR, 0, 0, intercomm, &status); if (strcmp(test_str, buf)) { printf(" Error: strcmp(test_str,buf)!=0\n"); ++errs; } } else { strncpy(buf, test_str, 5); MPI_Send(buf, strlen(buf) + 1, MPI_CHAR, 0, 0, intercomm); } } MTestFreeComm(&intercomm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/comm/dup.c0000644000175000017500000000400312620254305016244 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" int main(int argc, char **argv) { int errs = 0; int rank, size, wrank, wsize, dest, a, b; MPI_Comm newcomm; MPI_Status status; MTest_Init(&argc, &argv); /* Can we run comm dup at all? */ MPI_Comm_dup(MPI_COMM_WORLD, &newcomm); /* Check basic properties */ MPI_Comm_size(MPI_COMM_WORLD, &wsize); MPI_Comm_rank(MPI_COMM_WORLD, &wrank); MPI_Comm_size(newcomm, &size); MPI_Comm_rank(newcomm, &rank); if (size != wsize || rank != wrank) { errs++; fprintf(stderr, "Size (%d) or rank (%d) wrong\n", size, rank); fflush(stderr); } /* Can we communicate with this new communicator? */ dest = MPI_PROC_NULL; if (rank == 0) { dest = size - 1; a = rank; b = -1; MPI_Sendrecv(&a, 1, MPI_INT, dest, 0, &b, 1, MPI_INT, dest, 0, newcomm, &status); if (b != dest) { errs++; fprintf(stderr, "Received %d expected %d on %d\n", b, dest, rank); fflush(stderr); } if (status.MPI_SOURCE != dest) { errs++; fprintf(stderr, "Source not set correctly in status on %d\n", rank); fflush(stderr); } } else if (rank == size - 1) { dest = 0; a = rank; b = -1; MPI_Sendrecv(&a, 1, MPI_INT, dest, 0, &b, 1, MPI_INT, dest, 0, newcomm, &status); if (b != dest) { errs++; fprintf(stderr, "Received %d expected %d on %d\n", b, dest, rank); fflush(stderr); } if (status.MPI_SOURCE != dest) { errs++; fprintf(stderr, "Source not set correctly in status on %d\n", rank); fflush(stderr); } } MPI_Comm_free(&newcomm); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/comm/dupic.c0000644000175000017500000000641012620254305016564 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" int main(int argc, char *argv[]) { int errs = 0; MPI_Comm comm, dupcomm, dupcomm2; MPI_Request rreq[2]; int count; int indicies[2]; int r1buf, r2buf, s1buf, s2buf; int rank, isLeft; MTest_Init(&argc, &argv); while (MTestGetIntercomm(&comm, &isLeft, 2)) { if (comm == MPI_COMM_NULL) continue; MPI_Comm_dup(comm, &dupcomm); /* Check that there are separate contexts. We do this by setting * up nonblocking received on both communicators, and then * sending to them. If the contexts are different, tests on the * unsatisfied communicator should indicate no available message */ MPI_Comm_rank(comm, &rank); if (rank == 0) { s1buf = 456; s2buf = 17; r1buf = r2buf = -1; /* These are send/receives to the process with rank zero * in the other group (these are intercommunicators) */ MPI_Irecv(&r1buf, 1, MPI_INT, 0, 0, dupcomm, &rreq[0]); MPI_Irecv(&r2buf, 1, MPI_INT, 0, 0, comm, &rreq[1]); MPI_Send(&s2buf, 1, MPI_INT, 0, 0, comm); MPI_Waitsome(2, rreq, &count, indicies, MPI_STATUSES_IGNORE); if (count != 1 || indicies[0] != 1) { /* The only valid return is that exactly one message * has been received */ errs++; if (count == 1 && indicies[0] != 1) { printf("Error in context values for intercomm\n"); } else if (count == 2) { printf("Error: two messages received!\n"); } else { int i; printf("Error: count = %d", count); for (i = 0; i < count; i++) { printf(" indicies[%d] = %d", i, indicies[i]); } printf("\n"); } } /* Make sure that we do not send the next message until * the other process (rank zero in the other group) * has also completed the first step */ MPI_Sendrecv(MPI_BOTTOM, 0, MPI_BYTE, 0, 37, MPI_BOTTOM, 0, MPI_BYTE, 0, 37, comm, MPI_STATUS_IGNORE); /* Complete the receive on dupcomm */ MPI_Send(&s1buf, 1, MPI_INT, 0, 0, dupcomm); MPI_Wait(&rreq[0], MPI_STATUS_IGNORE); if (r1buf != s1buf) { errs++; printf("Wrong value in communication on dupcomm %d != %d\n", r1buf, s1buf); } if (r2buf != s2buf) { errs++; printf("Wrong value in communication on comm %d != %d\n", r2buf, s2buf); } } /* Try to duplicate a duplicated intercomm. (This caused problems * with some MPIs) */ MPI_Comm_dup(dupcomm, &dupcomm2); MPI_Comm_free(&dupcomm2); MPI_Comm_free(&dupcomm); MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/comm/testlist0000644000175000017500000000177212620254305017120 0ustar mbanckmbanckdup 2 dupic 4 commcreate1 8 commname 4 ic1 4 # ic2 needs an unusually large number of processes (>= 33) ic2 33 icgroup 8 icm 8 icsplit 8 iccreate 8 ctxalloc 2 timeLimit=300 ctxsplit 4 timeLimit=300 cmfree 4 cmsplit 4 cmsplit2 12 probe-intercomm 2 cmsplit_type 4 mpiversion=3.0 comm_create_group 4 mpiversion=3.0 comm_create_group 8 mpiversion=3.0 comm_group_half 2 mpiversion=3.0 comm_group_half 4 mpiversion=3.0 comm_group_half 8 mpiversion=3.0 comm_group_rand 2 mpiversion=3.0 comm_group_rand 4 mpiversion=3.0 comm_group_rand 8 mpiversion=3.0 comm_idup 2 mpiversion=3.0 comm_idup 4 mpiversion=3.0 comm_idup 9 mpiversion=3.0 comm_idup_mul 2 mpiversion=3.0 comm_idup_overlap 2 mpiversion=3.0 comm_idup_iallreduce 6 mpiversion=3.0 comm_idup_nb 6 mpiversion=3.0 comm_idup_isend 6 mpiversion=3.0 comm_idup_comm 6 mpiversion=3.0 comm_idup_comm2 6 mpiversion=3.0 dup_with_info 2 mpiversion=3.0 dup_with_info 4 mpiversion=3.0 dup_with_info 9 mpiversion=3.0 comm_info 6 mpiversion=3.0 comm_create_group_idup 4 mpiversion=3.0 mpi-testsuite-3.2+dfsg/comm/Makefile.in0000644000175000017500000011055212621010232017352 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = commcreate1$(EXEEXT) dup$(EXEEXT) dupic$(EXEEXT) \ dup_with_info$(EXEEXT) ic1$(EXEEXT) ic2$(EXEEXT) \ commname$(EXEEXT) ctxalloc$(EXEEXT) ctxsplit$(EXEEXT) \ icgroup$(EXEEXT) icsplit$(EXEEXT) iccreate$(EXEEXT) \ cmfree$(EXEEXT) icm$(EXEEXT) cmsplit$(EXEEXT) \ cmsplit2$(EXEEXT) cmsplit_type$(EXEEXT) \ comm_create_group$(EXEEXT) comm_group_half$(EXEEXT) \ comm_group_rand$(EXEEXT) probe-intercomm$(EXEEXT) \ comm_idup$(EXEEXT) comm_idup_mul$(EXEEXT) \ comm_idup_overlap$(EXEEXT) comm_idup_isend$(EXEEXT) \ comm_idup_nb$(EXEEXT) comm_idup_iallreduce$(EXEEXT) \ comm_idup_comm$(EXEEXT) comm_idup_comm2$(EXEEXT) \ comm_create_group_idup$(EXEEXT) comm_info$(EXEEXT) subdir = comm ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) cmfree_SOURCES = cmfree.c cmfree_OBJECTS = cmfree.$(OBJEXT) cmfree_LDADD = $(LDADD) cmfree_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o cmsplit_SOURCES = cmsplit.c cmsplit_OBJECTS = cmsplit.$(OBJEXT) cmsplit_LDADD = $(LDADD) cmsplit_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o cmsplit2_SOURCES = cmsplit2.c cmsplit2_OBJECTS = cmsplit2.$(OBJEXT) cmsplit2_LDADD = $(LDADD) cmsplit2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o cmsplit_type_SOURCES = cmsplit_type.c cmsplit_type_OBJECTS = cmsplit_type.$(OBJEXT) cmsplit_type_LDADD = $(LDADD) cmsplit_type_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o comm_create_group_SOURCES = comm_create_group.c comm_create_group_OBJECTS = comm_create_group.$(OBJEXT) comm_create_group_LDADD = $(LDADD) comm_create_group_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o comm_create_group_idup_SOURCES = comm_create_group_idup.c comm_create_group_idup_OBJECTS = comm_create_group_idup.$(OBJEXT) comm_create_group_idup_LDADD = $(LDADD) comm_create_group_idup_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o comm_group_half_SOURCES = comm_group_half.c comm_group_half_OBJECTS = comm_group_half.$(OBJEXT) comm_group_half_LDADD = $(LDADD) comm_group_half_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o comm_group_rand_SOURCES = comm_group_rand.c comm_group_rand_OBJECTS = comm_group_rand.$(OBJEXT) comm_group_rand_LDADD = $(LDADD) comm_group_rand_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o comm_idup_SOURCES = comm_idup.c comm_idup_OBJECTS = comm_idup.$(OBJEXT) comm_idup_LDADD = $(LDADD) comm_idup_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o comm_idup_comm_SOURCES = comm_idup_comm.c comm_idup_comm_OBJECTS = comm_idup_comm.$(OBJEXT) comm_idup_comm_LDADD = $(LDADD) comm_idup_comm_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o comm_idup_comm2_SOURCES = comm_idup_comm2.c comm_idup_comm2_OBJECTS = comm_idup_comm2.$(OBJEXT) comm_idup_comm2_LDADD = $(LDADD) comm_idup_comm2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o comm_idup_iallreduce_SOURCES = comm_idup_iallreduce.c comm_idup_iallreduce_OBJECTS = comm_idup_iallreduce.$(OBJEXT) comm_idup_iallreduce_LDADD = $(LDADD) comm_idup_iallreduce_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o comm_idup_isend_SOURCES = comm_idup_isend.c comm_idup_isend_OBJECTS = comm_idup_isend.$(OBJEXT) comm_idup_isend_LDADD = $(LDADD) comm_idup_isend_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o comm_idup_mul_SOURCES = comm_idup_mul.c comm_idup_mul_OBJECTS = comm_idup_mul.$(OBJEXT) comm_idup_mul_LDADD = $(LDADD) comm_idup_mul_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o comm_idup_nb_SOURCES = comm_idup_nb.c comm_idup_nb_OBJECTS = comm_idup_nb.$(OBJEXT) comm_idup_nb_LDADD = $(LDADD) comm_idup_nb_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o comm_idup_overlap_SOURCES = comm_idup_overlap.c comm_idup_overlap_OBJECTS = comm_idup_overlap.$(OBJEXT) comm_idup_overlap_LDADD = $(LDADD) comm_idup_overlap_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o comm_info_SOURCES = comm_info.c comm_info_OBJECTS = comm_info.$(OBJEXT) comm_info_LDADD = $(LDADD) comm_info_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o commcreate1_SOURCES = commcreate1.c commcreate1_OBJECTS = commcreate1.$(OBJEXT) commcreate1_LDADD = $(LDADD) commcreate1_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o commname_SOURCES = commname.c commname_OBJECTS = commname.$(OBJEXT) commname_LDADD = $(LDADD) commname_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o ctxalloc_SOURCES = ctxalloc.c ctxalloc_OBJECTS = ctxalloc.$(OBJEXT) ctxalloc_LDADD = $(LDADD) ctxalloc_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o ctxsplit_SOURCES = ctxsplit.c ctxsplit_OBJECTS = ctxsplit.$(OBJEXT) ctxsplit_LDADD = $(LDADD) ctxsplit_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o dup_SOURCES = dup.c dup_OBJECTS = dup.$(OBJEXT) dup_LDADD = $(LDADD) dup_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o dup_with_info_SOURCES = dup_with_info.c dup_with_info_OBJECTS = dup_with_info.$(OBJEXT) dup_with_info_LDADD = $(LDADD) dup_with_info_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o dupic_SOURCES = dupic.c dupic_OBJECTS = dupic.$(OBJEXT) dupic_LDADD = $(LDADD) dupic_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o ic1_SOURCES = ic1.c ic1_OBJECTS = ic1.$(OBJEXT) ic1_LDADD = $(LDADD) ic1_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o ic2_SOURCES = ic2.c ic2_OBJECTS = ic2.$(OBJEXT) ic2_LDADD = $(LDADD) ic2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o iccreate_SOURCES = iccreate.c iccreate_OBJECTS = iccreate.$(OBJEXT) iccreate_LDADD = $(LDADD) iccreate_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o icgroup_SOURCES = icgroup.c icgroup_OBJECTS = icgroup.$(OBJEXT) icgroup_LDADD = $(LDADD) icgroup_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o icm_SOURCES = icm.c icm_OBJECTS = icm.$(OBJEXT) icm_LDADD = $(LDADD) icm_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o icsplit_SOURCES = icsplit.c icsplit_OBJECTS = icsplit.$(OBJEXT) icsplit_LDADD = $(LDADD) icsplit_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o probe_intercomm_SOURCES = probe-intercomm.c probe_intercomm_OBJECTS = probe-intercomm.$(OBJEXT) probe_intercomm_LDADD = $(LDADD) probe_intercomm_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = cmfree.c cmsplit.c cmsplit2.c cmsplit_type.c \ comm_create_group.c comm_create_group_idup.c comm_group_half.c \ comm_group_rand.c comm_idup.c comm_idup_comm.c \ comm_idup_comm2.c comm_idup_iallreduce.c comm_idup_isend.c \ comm_idup_mul.c comm_idup_nb.c comm_idup_overlap.c comm_info.c \ commcreate1.c commname.c ctxalloc.c ctxsplit.c dup.c \ dup_with_info.c dupic.c ic1.c ic2.c iccreate.c icgroup.c icm.c \ icsplit.c probe-intercomm.c DIST_SOURCES = cmfree.c cmsplit.c cmsplit2.c cmsplit_type.c \ comm_create_group.c comm_create_group_idup.c comm_group_half.c \ comm_group_rand.c comm_idup.c comm_idup_comm.c \ comm_idup_comm2.c comm_idup_iallreduce.c comm_idup_isend.c \ comm_idup_mul.c comm_idup_nb.c comm_idup_overlap.c comm_info.c \ commcreate1.c commname.c ctxalloc.c ctxsplit.c dup.c \ dup_with_info.c dupic.c ic1.c ic2.c iccreate.c icgroup.c icm.c \ icsplit.c probe-intercomm.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.mtest \ $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign comm/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign comm/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) cmfree$(EXEEXT): $(cmfree_OBJECTS) $(cmfree_DEPENDENCIES) $(EXTRA_cmfree_DEPENDENCIES) @rm -f cmfree$(EXEEXT) $(AM_V_CCLD)$(LINK) $(cmfree_OBJECTS) $(cmfree_LDADD) $(LIBS) cmsplit$(EXEEXT): $(cmsplit_OBJECTS) $(cmsplit_DEPENDENCIES) $(EXTRA_cmsplit_DEPENDENCIES) @rm -f cmsplit$(EXEEXT) $(AM_V_CCLD)$(LINK) $(cmsplit_OBJECTS) $(cmsplit_LDADD) $(LIBS) cmsplit2$(EXEEXT): $(cmsplit2_OBJECTS) $(cmsplit2_DEPENDENCIES) $(EXTRA_cmsplit2_DEPENDENCIES) @rm -f cmsplit2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(cmsplit2_OBJECTS) $(cmsplit2_LDADD) $(LIBS) cmsplit_type$(EXEEXT): $(cmsplit_type_OBJECTS) $(cmsplit_type_DEPENDENCIES) $(EXTRA_cmsplit_type_DEPENDENCIES) @rm -f cmsplit_type$(EXEEXT) $(AM_V_CCLD)$(LINK) $(cmsplit_type_OBJECTS) $(cmsplit_type_LDADD) $(LIBS) comm_create_group$(EXEEXT): $(comm_create_group_OBJECTS) $(comm_create_group_DEPENDENCIES) $(EXTRA_comm_create_group_DEPENDENCIES) @rm -f comm_create_group$(EXEEXT) $(AM_V_CCLD)$(LINK) $(comm_create_group_OBJECTS) $(comm_create_group_LDADD) $(LIBS) comm_create_group_idup$(EXEEXT): $(comm_create_group_idup_OBJECTS) $(comm_create_group_idup_DEPENDENCIES) $(EXTRA_comm_create_group_idup_DEPENDENCIES) @rm -f comm_create_group_idup$(EXEEXT) $(AM_V_CCLD)$(LINK) $(comm_create_group_idup_OBJECTS) $(comm_create_group_idup_LDADD) $(LIBS) comm_group_half$(EXEEXT): $(comm_group_half_OBJECTS) $(comm_group_half_DEPENDENCIES) $(EXTRA_comm_group_half_DEPENDENCIES) @rm -f comm_group_half$(EXEEXT) $(AM_V_CCLD)$(LINK) $(comm_group_half_OBJECTS) $(comm_group_half_LDADD) $(LIBS) comm_group_rand$(EXEEXT): $(comm_group_rand_OBJECTS) $(comm_group_rand_DEPENDENCIES) $(EXTRA_comm_group_rand_DEPENDENCIES) @rm -f comm_group_rand$(EXEEXT) $(AM_V_CCLD)$(LINK) $(comm_group_rand_OBJECTS) $(comm_group_rand_LDADD) $(LIBS) comm_idup$(EXEEXT): $(comm_idup_OBJECTS) $(comm_idup_DEPENDENCIES) $(EXTRA_comm_idup_DEPENDENCIES) @rm -f comm_idup$(EXEEXT) $(AM_V_CCLD)$(LINK) $(comm_idup_OBJECTS) $(comm_idup_LDADD) $(LIBS) comm_idup_comm$(EXEEXT): $(comm_idup_comm_OBJECTS) $(comm_idup_comm_DEPENDENCIES) $(EXTRA_comm_idup_comm_DEPENDENCIES) @rm -f comm_idup_comm$(EXEEXT) $(AM_V_CCLD)$(LINK) $(comm_idup_comm_OBJECTS) $(comm_idup_comm_LDADD) $(LIBS) comm_idup_comm2$(EXEEXT): $(comm_idup_comm2_OBJECTS) $(comm_idup_comm2_DEPENDENCIES) $(EXTRA_comm_idup_comm2_DEPENDENCIES) @rm -f comm_idup_comm2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(comm_idup_comm2_OBJECTS) $(comm_idup_comm2_LDADD) $(LIBS) comm_idup_iallreduce$(EXEEXT): $(comm_idup_iallreduce_OBJECTS) $(comm_idup_iallreduce_DEPENDENCIES) $(EXTRA_comm_idup_iallreduce_DEPENDENCIES) @rm -f comm_idup_iallreduce$(EXEEXT) $(AM_V_CCLD)$(LINK) $(comm_idup_iallreduce_OBJECTS) $(comm_idup_iallreduce_LDADD) $(LIBS) comm_idup_isend$(EXEEXT): $(comm_idup_isend_OBJECTS) $(comm_idup_isend_DEPENDENCIES) $(EXTRA_comm_idup_isend_DEPENDENCIES) @rm -f comm_idup_isend$(EXEEXT) $(AM_V_CCLD)$(LINK) $(comm_idup_isend_OBJECTS) $(comm_idup_isend_LDADD) $(LIBS) comm_idup_mul$(EXEEXT): $(comm_idup_mul_OBJECTS) $(comm_idup_mul_DEPENDENCIES) $(EXTRA_comm_idup_mul_DEPENDENCIES) @rm -f comm_idup_mul$(EXEEXT) $(AM_V_CCLD)$(LINK) $(comm_idup_mul_OBJECTS) $(comm_idup_mul_LDADD) $(LIBS) comm_idup_nb$(EXEEXT): $(comm_idup_nb_OBJECTS) $(comm_idup_nb_DEPENDENCIES) $(EXTRA_comm_idup_nb_DEPENDENCIES) @rm -f comm_idup_nb$(EXEEXT) $(AM_V_CCLD)$(LINK) $(comm_idup_nb_OBJECTS) $(comm_idup_nb_LDADD) $(LIBS) comm_idup_overlap$(EXEEXT): $(comm_idup_overlap_OBJECTS) $(comm_idup_overlap_DEPENDENCIES) $(EXTRA_comm_idup_overlap_DEPENDENCIES) @rm -f comm_idup_overlap$(EXEEXT) $(AM_V_CCLD)$(LINK) $(comm_idup_overlap_OBJECTS) $(comm_idup_overlap_LDADD) $(LIBS) comm_info$(EXEEXT): $(comm_info_OBJECTS) $(comm_info_DEPENDENCIES) $(EXTRA_comm_info_DEPENDENCIES) @rm -f comm_info$(EXEEXT) $(AM_V_CCLD)$(LINK) $(comm_info_OBJECTS) $(comm_info_LDADD) $(LIBS) commcreate1$(EXEEXT): $(commcreate1_OBJECTS) $(commcreate1_DEPENDENCIES) $(EXTRA_commcreate1_DEPENDENCIES) @rm -f commcreate1$(EXEEXT) $(AM_V_CCLD)$(LINK) $(commcreate1_OBJECTS) $(commcreate1_LDADD) $(LIBS) commname$(EXEEXT): $(commname_OBJECTS) $(commname_DEPENDENCIES) $(EXTRA_commname_DEPENDENCIES) @rm -f commname$(EXEEXT) $(AM_V_CCLD)$(LINK) $(commname_OBJECTS) $(commname_LDADD) $(LIBS) ctxalloc$(EXEEXT): $(ctxalloc_OBJECTS) $(ctxalloc_DEPENDENCIES) $(EXTRA_ctxalloc_DEPENDENCIES) @rm -f ctxalloc$(EXEEXT) $(AM_V_CCLD)$(LINK) $(ctxalloc_OBJECTS) $(ctxalloc_LDADD) $(LIBS) ctxsplit$(EXEEXT): $(ctxsplit_OBJECTS) $(ctxsplit_DEPENDENCIES) $(EXTRA_ctxsplit_DEPENDENCIES) @rm -f ctxsplit$(EXEEXT) $(AM_V_CCLD)$(LINK) $(ctxsplit_OBJECTS) $(ctxsplit_LDADD) $(LIBS) dup$(EXEEXT): $(dup_OBJECTS) $(dup_DEPENDENCIES) $(EXTRA_dup_DEPENDENCIES) @rm -f dup$(EXEEXT) $(AM_V_CCLD)$(LINK) $(dup_OBJECTS) $(dup_LDADD) $(LIBS) dup_with_info$(EXEEXT): $(dup_with_info_OBJECTS) $(dup_with_info_DEPENDENCIES) $(EXTRA_dup_with_info_DEPENDENCIES) @rm -f dup_with_info$(EXEEXT) $(AM_V_CCLD)$(LINK) $(dup_with_info_OBJECTS) $(dup_with_info_LDADD) $(LIBS) dupic$(EXEEXT): $(dupic_OBJECTS) $(dupic_DEPENDENCIES) $(EXTRA_dupic_DEPENDENCIES) @rm -f dupic$(EXEEXT) $(AM_V_CCLD)$(LINK) $(dupic_OBJECTS) $(dupic_LDADD) $(LIBS) ic1$(EXEEXT): $(ic1_OBJECTS) $(ic1_DEPENDENCIES) $(EXTRA_ic1_DEPENDENCIES) @rm -f ic1$(EXEEXT) $(AM_V_CCLD)$(LINK) $(ic1_OBJECTS) $(ic1_LDADD) $(LIBS) ic2$(EXEEXT): $(ic2_OBJECTS) $(ic2_DEPENDENCIES) $(EXTRA_ic2_DEPENDENCIES) @rm -f ic2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(ic2_OBJECTS) $(ic2_LDADD) $(LIBS) iccreate$(EXEEXT): $(iccreate_OBJECTS) $(iccreate_DEPENDENCIES) $(EXTRA_iccreate_DEPENDENCIES) @rm -f iccreate$(EXEEXT) $(AM_V_CCLD)$(LINK) $(iccreate_OBJECTS) $(iccreate_LDADD) $(LIBS) icgroup$(EXEEXT): $(icgroup_OBJECTS) $(icgroup_DEPENDENCIES) $(EXTRA_icgroup_DEPENDENCIES) @rm -f icgroup$(EXEEXT) $(AM_V_CCLD)$(LINK) $(icgroup_OBJECTS) $(icgroup_LDADD) $(LIBS) icm$(EXEEXT): $(icm_OBJECTS) $(icm_DEPENDENCIES) $(EXTRA_icm_DEPENDENCIES) @rm -f icm$(EXEEXT) $(AM_V_CCLD)$(LINK) $(icm_OBJECTS) $(icm_LDADD) $(LIBS) icsplit$(EXEEXT): $(icsplit_OBJECTS) $(icsplit_DEPENDENCIES) $(EXTRA_icsplit_DEPENDENCIES) @rm -f icsplit$(EXEEXT) $(AM_V_CCLD)$(LINK) $(icsplit_OBJECTS) $(icsplit_LDADD) $(LIBS) probe-intercomm$(EXEEXT): $(probe_intercomm_OBJECTS) $(probe_intercomm_DEPENDENCIES) $(EXTRA_probe_intercomm_DEPENDENCIES) @rm -f probe-intercomm$(EXEEXT) $(AM_V_CCLD)$(LINK) $(probe_intercomm_OBJECTS) $(probe_intercomm_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmfree.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmsplit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmsplit2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmsplit_type.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comm_create_group.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comm_create_group_idup.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comm_group_half.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comm_group_rand.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comm_idup.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comm_idup_comm.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comm_idup_comm2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comm_idup_iallreduce.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comm_idup_isend.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comm_idup_mul.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comm_idup_nb.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comm_idup_overlap.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comm_info.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/commcreate1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/commname.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctxalloc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctxsplit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup_with_info.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dupic.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ic1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ic2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iccreate.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icgroup.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icm.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icsplit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/probe-intercomm.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/comm/comm_create_group_idup.c0000644000175000017500000000256512620254305022202 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #include #include #include #include int main(int argc, char *argv[]) { int size, rank; MPI_Group world_group; MPI_Comm group_comm, idup_comm; MPI_Request req; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (size % 2) { fprintf(stderr, "this program requires even number of processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } /* Create some groups */ MPI_Comm_group(MPI_COMM_WORLD, &world_group); if (rank % 2 == 0) { MPI_Comm_create_group(MPI_COMM_WORLD, world_group, 0, &group_comm); MPI_Comm_idup(MPI_COMM_WORLD, &idup_comm, &req); } else { MPI_Comm_idup(MPI_COMM_WORLD, &idup_comm, &req); MPI_Comm_create_group(MPI_COMM_WORLD, world_group, 0, &group_comm); } MPI_Wait(&req, MPI_STATUSES_IGNORE); /*Test new comm with a barrier */ MPI_Barrier(idup_comm); MPI_Barrier(group_comm); MPI_Group_free(&world_group); MPI_Comm_free(&idup_comm); MPI_Comm_free(&group_comm); if (rank == 0) printf(" No errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/comm/comm_idup_overlap.c0000644000175000017500000000261012620254305021162 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2013 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include int main(int argc, char **argv) { int i, rank, size, color; MPI_Group group; MPI_Comm primary[2], secondary[2], tmp; MPI_Request req[2]; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); /* Each pair of processes creates a communicator */ for (i = 0; i < size; i++) { if (rank == i) MPI_Comm_split(MPI_COMM_WORLD, 0, 0, &primary[0]); else if (rank == (i + 1) % size) MPI_Comm_split(MPI_COMM_WORLD, 0, 0, &secondary[0]); else { MPI_Comm_split(MPI_COMM_WORLD, 1, 0, &tmp); MPI_Comm_free(&tmp); } MPI_Barrier(MPI_COMM_WORLD); } /* Each pair dups the communicator such that the dups are * overlapping. If this were done with MPI_Comm_dup, this should * deadlock. */ MPI_Comm_idup(primary[0], &primary[1], &req[0]); MPI_Comm_idup(secondary[0], &secondary[1], &req[1]); MPI_Waitall(2, req, MPI_STATUSES_IGNORE); for (i = 0; i < 2; i++) { MPI_Comm_free(&primary[i]); MPI_Comm_free(&secondary[i]); } if (rank == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/comm/comm_idup.c0000644000175000017500000001077412620254305017444 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include "mpi.h" #include "mpitest.h" /* assert-like macro that bumps the err count and emits a message */ #define check(x_) \ do { \ if (!(x_)) { \ ++errs; \ if (errs < 10) { \ fprintf(stderr, "check failed: (%s), line %d\n", #x_, __LINE__); \ } \ } \ } while (0) int main(int argc, char **argv) { int errs = 0; int i; int rank, size, lrank, lsize, rsize; int buf[2]; MPI_Comm newcomm, ic, localcomm, stagger_comm; MPI_Request rreq; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); if (size < 2) { printf("this test requires at least 2 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } /* test plan: make rank 0 wait in a blocking recv until all other processes * have posted their MPI_Comm_idup ops, then post last. Should ensure that * idup doesn't block on the non-zero ranks, otherwise we'll get a deadlock. */ if (rank == 0) { for (i = 1; i < size; ++i) { buf[0] = 0x01234567; buf[1] = 0x89abcdef; MPI_Recv(buf, 2, MPI_INT, i, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); } MPI_Comm_idup(MPI_COMM_WORLD, &newcomm, &rreq); MPI_Wait(&rreq, MPI_STATUS_IGNORE); } else { MPI_Comm_idup(MPI_COMM_WORLD, &newcomm, &rreq); buf[0] = rank; buf[1] = size + rank; MPI_Ssend(buf, 2, MPI_INT, 0, 0, MPI_COMM_WORLD); MPI_Wait(&rreq, MPI_STATUS_IGNORE); } /* do some communication to make sure that newcomm works */ buf[0] = rank; buf[1] = 0xfeedface; MPI_Allreduce(&buf[0], &buf[1], 1, MPI_INT, MPI_SUM, newcomm); check(buf[1] == (size * (size - 1) / 2)); MPI_Comm_free(&newcomm); /* now construct an intercomm and make sure we can dup that too */ MPI_Comm_split(MPI_COMM_WORLD, rank % 2, rank, &localcomm); MPI_Intercomm_create(localcomm, 0, MPI_COMM_WORLD, (rank == 0 ? 1 : 0), 1234, &ic); /* Create a communicator on just the "right hand group" of the intercomm in * order to make it more likely to catch bugs related to incorrectly * swapping the context_id and recvcontext_id in the idup code. */ stagger_comm = MPI_COMM_NULL; if (rank % 2) { MPI_Comm_dup(localcomm, &stagger_comm); } MPI_Comm_rank(ic, &lrank); MPI_Comm_size(ic, &lsize); MPI_Comm_remote_size(ic, &rsize); /* Similar to above pattern, but all non-local-rank-0 processes send to * remote rank 0. Both sides participate in this way. */ if (lrank == 0) { for (i = 1; i < rsize; ++i) { buf[0] = 0x01234567; buf[1] = 0x89abcdef; MPI_Recv(buf, 2, MPI_INT, i, 0, ic, MPI_STATUS_IGNORE); } MPI_Comm_idup(ic, &newcomm, &rreq); MPI_Wait(&rreq, MPI_STATUS_IGNORE); } else { MPI_Comm_idup(ic, &newcomm, &rreq); buf[0] = lrank; buf[1] = lsize + lrank; MPI_Ssend(buf, 2, MPI_INT, 0, 0, ic); MPI_Wait(&rreq, MPI_STATUS_IGNORE); } /* do some communication to make sure that newcomm works */ buf[0] = lrank; buf[1] = 0xfeedface; MPI_Allreduce(&buf[0], &buf[1], 1, MPI_INT, MPI_SUM, newcomm); check(buf[1] == (rsize * (rsize - 1) / 2)); /* free this down here, not before idup, otherwise it will undo our * stagger_comm work */ MPI_Comm_free(&localcomm); if (stagger_comm != MPI_COMM_NULL) { MPI_Comm_free(&stagger_comm); } MPI_Comm_free(&newcomm); MPI_Comm_free(&ic); MPI_Reduce((rank == 0 ? MPI_IN_PLACE : &errs), &errs, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (rank == 0) { if (errs) { printf("found %d errors\n", errs); } else { printf(" No errors\n"); } } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/comm/ctxalloc.c0000644000175000017500000000306112620254305017270 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* * This program tests the allocation (and deallocation) of contexts. * */ int main(int argc, char **argv) { int errs = 0; int i, j, err; MPI_Comm newcomm1, newcomm2[200]; MTest_Init(&argc, &argv); /* Get a separate communicator to duplicate */ MPI_Comm_dup(MPI_COMM_WORLD, &newcomm1); MPI_Errhandler_set(newcomm1, MPI_ERRORS_RETURN); /* Allocate many communicators in batches, then free them */ for (i = 0; i < 1000; i++) { for (j = 0; j < 200; j++) { err = MPI_Comm_dup(newcomm1, &newcomm2[j]); if (err) { errs++; if (errs < 10) { fprintf(stderr, "Failed to duplicate communicator for (%d,%d)\n", i, j); MTestPrintError(err); } } } for (j = 0; j < 200; j++) { err = MPI_Comm_free(&newcomm2[j]); if (err) { errs++; if (errs < 10) { fprintf(stderr, "Failed to free %d,%d\n", i, j); MTestPrintError(err); } } } } err = MPI_Comm_free(&newcomm1); if (err) { errs++; fprintf(stderr, "Failed to free newcomm1\n"); MTestPrintError(err); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/comm/comm_idup_isend.c0000644000175000017500000000573212620254305020624 0ustar mbanckmbanck#include #include #include #include "mpi.h" #include "mpitest.h" #define ITERS 4 int main(int argc, char **argv) { int errs = 0; int i, j; int rank, size, rsize; int in[ITERS], out[ITERS], sol[ITERS], cnt; int isLeft; MPI_Comm newcomm[ITERS], testcomm; MPI_Request *sreq; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); if (size < 2) { printf("this test requires at least 2 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } sreq = (MPI_Request *) malloc(sizeof(MPI_Request) * (size + 1) * ITERS); while (MTestGetIntracommGeneral(&testcomm, 1, 1)) { if (testcomm == MPI_COMM_NULL) continue; MPI_Comm_rank(testcomm, &rank); MPI_Comm_size(testcomm, &size); cnt = 0; for (j = 0; j < ITERS; j++) { if (rank == 0) { out[j] = 815; in[j] = 815; sol[j] = 815; for (i = 1; i < size; i++) MPI_Isend(&out[j], 1, MPI_INT, i, 0, testcomm, &sreq[cnt++]); MPI_Comm_idup(testcomm, &newcomm[j], &sreq[cnt++]); } else { out[j] = 0; in[j] = 0; sol[j] = 815; MPI_Comm_idup(testcomm, &newcomm[j], &sreq[cnt++]); MPI_Irecv(&in[j], 1, MPI_INT, 0, 0, testcomm, &sreq[cnt++]); } } MPI_Waitall(cnt, sreq, MPI_STATUS_IGNORE); for (j = 0; j < ITERS; j++) { if (sol[j] != in[j]) errs++; errs += MTestTestComm(newcomm[j]); MPI_Comm_free(&newcomm[j]); } MTestFreeComm(&testcomm); } while (MTestGetIntercomm(&testcomm, &isLeft, 1)) { if (testcomm == MPI_COMM_NULL) continue; MPI_Comm_rank(testcomm, &rank); MPI_Comm_size(testcomm, &size); MPI_Comm_remote_size(testcomm, &rsize); cnt = 0; for (j = 0; j < ITERS; j++) { if (rank == 0) { out[j] = 815; in[j] = 815; sol[j] = 815; for (i = 1; i < rsize; i++) MPI_Isend(&out[j], 1, MPI_INT, i, 0, testcomm, &sreq[cnt++]); MPI_Comm_idup(testcomm, &newcomm[j], &sreq[cnt++]); } else { out[j] = 0; in[j] = 0; sol[j] = 815; MPI_Comm_idup(testcomm, &newcomm[j], &sreq[cnt++]); MPI_Irecv(&in[j], 1, MPI_INT, 0, 0, testcomm, &sreq[cnt++]); } } MPI_Waitall(cnt, sreq, MPI_STATUS_IGNORE); for (j = 0; j < ITERS; j++) { if (sol[j] != in[j]) errs++; errs += MTestTestComm(newcomm[j]); MPI_Comm_free(&newcomm[j]); } MTestFreeComm(&testcomm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/comm/cmsplit2.c0000644000175000017500000001205712620254305017221 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2011 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* This test ensures that MPI_Comm_split breaks ties in key values by using the * original rank in the input communicator. This typically corresponds to * the difference between using a stable sort or using an unstable sort. * * It checks all sizes from 1..comm_size(world)-1, so this test does not need to * be run multiple times at process counts from a higher-level test driver. */ #include #include #include "mpi.h" #define ERRLIMIT (10) #define my_assert(cond_) \ do { \ if (!(cond_)) { \ if (errs < ERRLIMIT) \ printf("assertion \"%s\" failed\n", #cond_); \ ++errs; \ } \ } while (0) int main(int argc, char **argv) { int i, j, pos, modulus, cs, rank, size; int wrank, wsize; int newrank, newsize; int errs = 0; int key; int *oldranks = NULL; int *identity = NULL; int verbose = 0; MPI_Comm comm, splitcomm; MPI_Group wgroup, newgroup; MPI_Init(&argc, &argv); if (getenv("MPITEST_VERBOSE")) verbose = 1; MPI_Comm_rank(MPI_COMM_WORLD, &wrank); MPI_Comm_size(MPI_COMM_WORLD, &wsize); oldranks = malloc(wsize * sizeof(int)); identity = malloc(wsize * sizeof(int)); for (i = 0; i < wsize; ++i) { identity[i] = i; } for (cs = 1; cs <= wsize; ++cs) { /* yes, we are using comm_split to test comm_split, but this test is * mainly about ensuring that the stable sort behavior is correct, not * about whether the partitioning by color behavior is correct */ MPI_Comm_split(MPI_COMM_WORLD, (wrank < cs ? 0 : MPI_UNDEFINED), wrank, &comm); if (comm != MPI_COMM_NULL) { MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); for (modulus = 1; modulus <= size; ++modulus) { /* Divide all ranks into one of "modulus" equivalence classes. Ranks in * output comm will be ordered first by class, then within the class by * rank in comm world. */ key = rank % modulus; /* all pass same color, variable keys */ MPI_Comm_split(comm, 5, key, &splitcomm); MPI_Comm_rank(splitcomm, &newrank); MPI_Comm_size(splitcomm, &newsize); my_assert(newsize == size); MPI_Comm_group(MPI_COMM_WORLD, &wgroup); MPI_Comm_group(splitcomm, &newgroup); int gsize; MPI_Group_size(newgroup, &gsize); MPI_Group_translate_ranks(newgroup, size, identity, wgroup, oldranks); MPI_Group_free(&wgroup); MPI_Group_free(&newgroup); if (splitcomm != MPI_COMM_NULL) MPI_Comm_free(&splitcomm); /* now check that comm_split broke any ties correctly */ if (rank == 0) { if (verbose) { /* debugging code that is useful when the test fails */ printf("modulus=%d oldranks={", modulus); for (i = 0; i < size - 1; ++i) { printf("%d,", oldranks[i]); } printf("%d} keys={", oldranks[i]); for (i = 0; i < size - 1; ++i) { printf("%d,", i % modulus); } printf("%d}\n", i % modulus); } pos = 0; for (i = 0; i < modulus; ++i) { /* there's probably a better way to write these loop bounds and * indices, but this is the first (correct) way that occurred to me */ for (j = 0; j < (size / modulus + (i < size % modulus ? 1 : 0)); ++j) { if (errs < ERRLIMIT && oldranks[pos] != i + modulus * j) { printf ("size=%d i=%d j=%d modulus=%d pos=%d i+modulus*j=%d oldranks[pos]=%d\n", size, i, j, modulus, pos, i + modulus * j, oldranks[pos]); } my_assert(oldranks[pos] == i + modulus * j); ++pos; } } } } MPI_Comm_free(&comm); } } if (oldranks != NULL) free(oldranks); if (identity != NULL) free(identity); if (rank == 0) { if (errs) printf("found %d errors\n", errs); else printf(" No errors\n"); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/comm/Makefile.am0000644000175000017500000000215712620254305017354 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile.mtest EXTRA_DIST = testlist ## for all programs that are just built from the single corresponding source ## file, we don't need per-target _SOURCES rules, automake will infer them ## correctly noinst_PROGRAMS = \ commcreate1 \ dup \ dupic \ dup_with_info \ ic1 \ ic2 \ commname \ ctxalloc \ ctxsplit \ icgroup \ icsplit \ iccreate \ cmfree \ icm \ cmsplit \ cmsplit2 \ cmsplit_type \ comm_create_group \ comm_group_half \ comm_group_rand \ probe-intercomm \ comm_idup \ comm_idup_mul \ comm_idup_overlap \ comm_idup_isend \ comm_idup_nb \ comm_idup_iallreduce \ comm_idup_comm \ comm_idup_comm2 \ comm_create_group_idup \ comm_info mpi-testsuite-3.2+dfsg/comm/cmsplit_type.c0000644000175000017500000000422112620254305020172 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2011 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" /* USE_STRICT_MPI may be defined in mpitestconf.h */ #include "mpitestconf.h" #include #include /* FIXME: This test only checks that the MPI_Comm_split_type routine doesn't fail. It does not check for correct behavior */ int main(int argc, char *argv[]) { int rank, size, verbose = 0; int wrank; MPI_Comm comm; MPI_Init(&argc, &argv); if (getenv("MPITEST_VERBOSE")) verbose = 1; MPI_Comm_rank(MPI_COMM_WORLD, &wrank); /* Check to see if MPI_COMM_TYPE_SHARED works correctly */ MPI_Comm_split_type(MPI_COMM_WORLD, MPI_COMM_TYPE_SHARED, 0, MPI_INFO_NULL, &comm); if (comm == MPI_COMM_NULL) printf("Expected a non-null communicator, but got MPI_COMM_NULL\n"); else { MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); if (rank == 0 && verbose) printf("Created subcommunicator of size %d\n", size); MPI_Comm_free(&comm); } /* Check to see if MPI_UNDEFINED is respected */ MPI_Comm_split_type(MPI_COMM_WORLD, (wrank % 2 == 0) ? MPI_COMM_TYPE_SHARED : MPI_UNDEFINED, 0, MPI_INFO_NULL, &comm); if ((wrank % 2) && (comm != MPI_COMM_NULL)) printf("Expected MPI_COMM_NULL, but did not get one\n"); if (wrank % 2 == 0) { if (comm == MPI_COMM_NULL) printf("Expected a non-null communicator, but got MPI_COMM_NULL\n"); else { MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); if (rank == 0 && verbose) printf("Created subcommunicator of size %d\n", size); MPI_Comm_free(&comm); } } /* Use wrank because Comm_split_type may return more than one communicator * across the job, and if so, each will have a rank 0 entry. Test * output rules are for a single process to write the successful * test (No Errors) output. */ if (wrank == 0) printf(" No errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/comm/comm_idup_mul.c0000644000175000017500000000142112620254305020306 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2013 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * Test creating multiple communicators with MPI_Comm_idup. */ #include #include #define NUM_ITER 10 int main(int argc, char **argv) { int i, rank; MPI_Comm comms[NUM_ITER]; MPI_Request req[NUM_ITER]; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); for (i = 0; i < NUM_ITER; i++) MPI_Comm_idup(MPI_COMM_WORLD, &comms[i], &req[i]); MPI_Waitall(NUM_ITER, req, MPI_STATUSES_IGNORE); for (i = 0; i < NUM_ITER; i++) MPI_Comm_free(&comms[i]); if (rank == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/comm/icm.c0000644000175000017500000000616412620254305016236 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2004 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test intercomm merge, including the choice of the high value"; */ int main(int argc, char *argv[]) { int errs = 0; int rank, size, rsize; int nsize, nrank; int minsize = 2; int isLeft; MPI_Comm comm, comm1, comm2, comm3, comm4; MTest_Init(&argc, &argv); /* The following illustrates the use of the routines to * run through a selection of communicators and datatypes. * Use subsets of these for tests that do not involve combinations * of communicators, datatypes, and counts of datatypes */ while (MTestGetIntercomm(&comm, &isLeft, minsize)) { if (comm == MPI_COMM_NULL) continue; /* Determine the sender and receiver */ MPI_Comm_rank(comm, &rank); MPI_Comm_remote_size(comm, &rsize); MPI_Comm_size(comm, &size); /* Try building intercomms */ MPI_Intercomm_merge(comm, isLeft, &comm1); /* Check the size and ranks */ MPI_Comm_size(comm1, &nsize); MPI_Comm_rank(comm1, &nrank); if (nsize != size + rsize) { errs++; printf("(1) Comm size is %d but should be %d\n", nsize, size + rsize); if (isLeft) { /* The left processes should be high */ if (nrank != rsize + rank) { errs++; printf("(1) rank for high process is %d should be %d\n", nrank, rsize + rank); } } else { /* The right processes should be low */ if (nrank != rank) { errs++; printf("(1) rank for low process is %d should be %d\n", nrank, rank); } } } MPI_Intercomm_merge(comm, !isLeft, &comm2); /* Check the size and ranks */ MPI_Comm_size(comm1, &nsize); MPI_Comm_rank(comm1, &nrank); if (nsize != size + rsize) { errs++; printf("(2) Comm size is %d but should be %d\n", nsize, size + rsize); if (!isLeft) { /* The right processes should be high */ if (nrank != rsize + rank) { errs++; printf("(2) rank for high process is %d should be %d\n", nrank, rsize + rank); } } else { /* The left processes should be low */ if (nrank != rank) { errs++; printf("(2) rank for low process is %d should be %d\n", nrank, rank); } } } MPI_Intercomm_merge(comm, 0, &comm3); MPI_Intercomm_merge(comm, 1, &comm4); MPI_Comm_free(&comm1); MPI_Comm_free(&comm2); MPI_Comm_free(&comm3); MPI_Comm_free(&comm4); MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/comm/ic1.c0000644000175000017500000000270412620254305016136 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * A simple test of the intercomm create routine, with a communication test */ #include "mpi.h" #include #include "mpitest.h" int main(int argc, char *argv[]) { MPI_Comm intercomm; int remote_rank, rank, size, errs = 0; volatile int trigger; MTest_Init(&argc, &argv); trigger = 1; /* while (trigger) ; */ MPI_Comm_size(MPI_COMM_WORLD, &size); if (size < 2) { printf("Size must be at least 2\n"); MPI_Abort(MPI_COMM_WORLD, 0); } MPI_Comm_rank(MPI_COMM_WORLD, &rank); /* Make an intercomm of the first two elements of comm_world */ if (rank < 2) { int lrank = rank, rrank = -1; MPI_Status status; remote_rank = 1 - rank; MPI_Intercomm_create(MPI_COMM_SELF, 0, MPI_COMM_WORLD, remote_rank, 27, &intercomm); /* Now, communicate between them */ MPI_Sendrecv(&lrank, 1, MPI_INT, 0, 13, &rrank, 1, MPI_INT, 0, 13, intercomm, &status); if (rrank != remote_rank) { errs++; printf("%d Expected %d but received %d\n", rank, remote_rank, rrank); } MPI_Comm_free(&intercomm); } /* The next test should create an intercomm with groups of different * sizes FIXME */ MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/comm/comm_info.c0000644000175000017500000000262412620254305017431 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include "mpitest.h" #define VERBOSE 0 int main(int argc, char **argv) { int i, j, rank; MPI_Info info_in, info_out; int errors = 0, all_errors = 0; MPI_Comm comm; void *base; char invalid_key[] = "invalid_test_key"; char buf[MPI_MAX_INFO_VAL]; int flag; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Info_create(&info_in); MPI_Info_set(info_in, invalid_key, "true"); MPI_Comm_dup(MPI_COMM_WORLD, &comm); MPI_Comm_set_info(comm, info_in); MPI_Comm_get_info(comm, &info_out); MPI_Info_get(info_out, invalid_key, MPI_MAX_INFO_VAL, buf, &flag); #ifndef USE_STRICT_MPI /* Check if our invalid key was ignored. Note, this check's MPICH's * behavior, but this behavior may not be required for a standard * conforming MPI implementation. */ if (flag) { printf("%d: %s was not ignored\n", rank, invalid_key); errors++; } #endif MPI_Info_free(&info_in); MPI_Info_free(&info_out); MPI_Comm_free(&comm); MPI_Reduce(&errors, &all_errors, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (rank == 0 && all_errors == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/comm/ctxsplit.c0000644000175000017500000000376512620254305017344 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include #include "mpitest.h" /* * This check is intended to fail if there is a leak of context ids. * Because this is trying to exhaust the number of context ids, it needs * to run for a longer time than many tests. The for loop uses 100,000 * iterations, which is adequate for MPICH (with only about 1k context ids * available). */ int main(int argc, char **argv) { int i = 0; int randval; int rank; int errs = 0; MPI_Comm newcomm; double startTime; int nLoop = 100000; MTest_Init(&argc, &argv); for (i = 1; i < argc; i++) { if (strcmp(argv[i], "--loopcount") == 0) { i++; nLoop = atoi(argv[i]); } else { fprintf(stderr, "Unrecognized argument %s\n", argv[i]); } } MPI_Comm_rank(MPI_COMM_WORLD, &rank); startTime = MPI_Wtime(); for (i = 0; i < nLoop; i++) { if (rank == 0 && (i % 100 == 0)) { double rate = MPI_Wtime() - startTime; if (rate > 0) { rate = i / rate; MTestPrintfMsg(10, "After %d (%f)\n", i, rate); } else { MTestPrintfMsg(10, "After %d\n", i); } } /* FIXME: Explain the rationale behind rand in this test */ randval = rand(); if (randval % (rank + 2) == 0) { MPI_Comm_split(MPI_COMM_WORLD, 1, rank, &newcomm); MPI_Comm_free(&newcomm); } else { MPI_Comm_split(MPI_COMM_WORLD, MPI_UNDEFINED, rank, &newcomm); if (newcomm != MPI_COMM_NULL) { errs++; printf("Created a non-null communicator with MPI_UNDEFINED\n"); } } } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/comm/comm_idup_comm2.c0000644000175000017500000000632012620254305020531 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* This test tests overlapping of Comm_idups with other comm. generations calls */ #include #include #include #include "mpi.h" #include "mpitest.h" #define NUM_IDUPS 5 int main(int argc, char **argv) { int errs = 0; int i; int rank, size; int *excl; int ranges[1][3]; int isLeft, rleader; MPI_Group dup_group, high_group, even_group; MPI_Comm local_comm, inter_comm, test_comm, outcomm, dupcomm; MPI_Comm idupcomms[NUM_IDUPS]; MPI_Request reqs[NUM_IDUPS]; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_dup(MPI_COMM_WORLD, &dupcomm); MPI_Comm_group(dupcomm, &dup_group); if (size < 2) { printf("this test requires at least 2 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } /* Idup MPI_COMM_WORLD multiple times */ for (i = 0; i < NUM_IDUPS; i++) { MPI_Comm_idup(MPI_COMM_WORLD, &idupcomms[i], &reqs[i]); } /* Overlap pending idups with various comm generation functions */ /* Comm_dup */ MPI_Comm_dup(dupcomm, &outcomm); errs += MTestTestComm(outcomm); MTestFreeComm(&outcomm); /* Comm_split */ MPI_Comm_split(dupcomm, rank % 2, size - rank, &outcomm); errs += MTestTestComm(outcomm); MTestFreeComm(&outcomm); /* Comm_create, high half of dupcomm */ ranges[0][0] = size / 2; ranges[0][1] = size - 1; ranges[0][2] = 1; MPI_Group_range_incl(dup_group, 1, ranges, &high_group); MPI_Comm_create(dupcomm, high_group, &outcomm); MPI_Group_free(&high_group); errs += MTestTestComm(outcomm); MTestFreeComm(&outcomm); /* Comm_create_group, even ranks of dupcomm */ /* exclude the odd ranks */ excl = malloc((size / 2) * sizeof(int)); for (i = 0; i < size / 2; i++) excl[i] = (2 * i) + 1; MPI_Group_excl(dup_group, size / 2, excl, &even_group); free(excl); if (rank % 2 == 0) { MPI_Comm_create_group(dupcomm, even_group, 0, &outcomm); } else { outcomm = MPI_COMM_NULL; } MPI_Group_free(&even_group); errs += MTestTestComm(outcomm); MTestFreeComm(&outcomm); /* Intercomm_create & Intercomm_merge */ MPI_Comm_split(dupcomm, (rank < size / 2), rank, &local_comm); if (rank == 0) { rleader = size / 2; } else if (rank == size / 2) { rleader = 0; } else { rleader = -1; } isLeft = rank < size / 2; MPI_Intercomm_create(local_comm, 0, dupcomm, rleader, 99, &inter_comm); MPI_Intercomm_merge(inter_comm, isLeft, &outcomm); MPI_Comm_free(&local_comm); errs += MTestTestComm(inter_comm); MTestFreeComm(&inter_comm); errs += MTestTestComm(outcomm); MTestFreeComm(&outcomm); MPI_Waitall(NUM_IDUPS, reqs, MPI_STATUSES_IGNORE); for (i = 0; i < NUM_IDUPS; i++) { errs += MTestTestComm(idupcomms[i]); MPI_Comm_free(&idupcomms[i]); } MPI_Group_free(&dup_group); MPI_Comm_free(&dupcomm); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/comm/cmfree.c0000644000175000017500000000622612620254305016726 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test that communicators have reference count semantics"; */ #define NELM 128 #define NCOMM 1020 int main(int argc, char *argv[]) { int errs = 0; int rank, size, source, dest, i; MPI_Comm comm; MPI_Comm tmpComm[NCOMM]; MPI_Status status; MPI_Request req; int *buf = 0; MTest_Init(&argc, &argv); MPI_Comm_dup(MPI_COMM_WORLD, &comm); /* This is similar to the datatype test, except that we post * an irecv on a simple data buffer but use a rank-reordered communicator. * In this case, an error in handling the reference count will most * likely cause the program to hang, so this should be run only * if (a) you are confident that the code is correct or (b) * a timeout is set for mpiexec */ MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); if (size < 2) { fprintf(stderr, "This test requires at least two processes."); MPI_Abort(MPI_COMM_WORLD, 1); } source = 0; dest = size - 1; if (rank == dest) { buf = (int *) malloc(NELM * sizeof(int)); for (i = 0; i < NELM; i++) buf[i] = -i; MPI_Irecv(buf, NELM, MPI_INT, source, 0, comm, &req); MPI_Comm_free(&comm); if (comm != MPI_COMM_NULL) { errs++; printf("Freed comm was not set to COMM_NULL\n"); } for (i = 0; i < NCOMM; i++) { MPI_Comm_split(MPI_COMM_WORLD, 0, size - rank, &tmpComm[i]); } MPI_Sendrecv(NULL, 0, MPI_INT, source, 1, NULL, 0, MPI_INT, source, 1, MPI_COMM_WORLD, &status); MPI_Wait(&req, &status); for (i = 0; i < NELM; i++) { if (buf[i] != i) { errs++; if (errs < 10) { printf("buf[%d] = %d, expected %d\n", i, buf[i], i); } } } for (i = 0; i < NCOMM; i++) { MPI_Comm_free(&tmpComm[i]); } free(buf); } else if (rank == source) { buf = (int *) malloc(NELM * sizeof(int)); for (i = 0; i < NELM; i++) buf[i] = i; for (i = 0; i < NCOMM; i++) { MPI_Comm_split(MPI_COMM_WORLD, 0, size - rank, &tmpComm[i]); } /* Synchronize with the receiver */ MPI_Sendrecv(NULL, 0, MPI_INT, dest, 1, NULL, 0, MPI_INT, dest, 1, MPI_COMM_WORLD, &status); MPI_Send(buf, NELM, MPI_INT, dest, 0, comm); free(buf); } else { for (i = 0; i < NCOMM; i++) { MPI_Comm_split(MPI_COMM_WORLD, 0, size - rank, &tmpComm[i]); } } MPI_Barrier(MPI_COMM_WORLD); if (rank != dest) { /* Clean up the communicators */ for (i = 0; i < NCOMM; i++) { MPI_Comm_free(&tmpComm[i]); } } if (comm != MPI_COMM_NULL) { MPI_Comm_free(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/comm/icsplit.c0000644000175000017500000000775712620254305017146 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2007 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* * This program tests that MPI_Comm_split applies to intercommunicators; * this is an extension added in MPI-2 */ int main(int argc, char *argv[]) { int errs = 0; int size, isLeft; MPI_Comm intercomm, newcomm; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); if (size < 4) { printf("This test requires at least 4 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } while (MTestGetIntercomm(&intercomm, &isLeft, 2)) { int key, color; if (intercomm == MPI_COMM_NULL) continue; /* Split this intercomm. The new intercomms contain the * processes that had odd (resp even) rank in their local group * in the original intercomm */ MTestPrintfMsg(1, "Created intercomm %s\n", MTestGetIntercommName()); MPI_Comm_rank(intercomm, &key); color = (key % 2); MPI_Comm_split(intercomm, color, key, &newcomm); /* Make sure that the new communicator has the appropriate pieces */ if (newcomm != MPI_COMM_NULL) { int orig_rsize, orig_size, new_rsize, new_size; int predicted_size, flag, commok = 1; MPI_Comm_test_inter(intercomm, &flag); if (!flag) { errs++; printf("Output communicator is not an intercomm\n"); commok = 0; } MPI_Comm_remote_size(intercomm, &orig_rsize); MPI_Comm_remote_size(newcomm, &new_rsize); MPI_Comm_size(intercomm, &orig_size); MPI_Comm_size(newcomm, &new_size); /* The local size is 1/2 the original size, +1 if the * size was odd and the color was even. More precisely, * let n be the orig_size. Then * color 0 color 1 * orig size even n/2 n/2 * orig size odd (n+1)/2 n/2 * * However, since these are integer valued, if n is even, * then (n+1)/2 = n/2, so this table is much simpler: * color 0 color 1 * orig size even (n+1)/2 n/2 * orig size odd (n+1)/2 n/2 * */ predicted_size = (orig_size + !color) / 2; if (predicted_size != new_size) { errs++; printf("Predicted size = %d but found %d for %s (%d,%d)\n", predicted_size, new_size, MTestGetIntercommName(), orig_size, orig_rsize); commok = 0; } predicted_size = (orig_rsize + !color) / 2; if (predicted_size != new_rsize) { errs++; printf("Predicted remote size = %d but found %d for %s (%d,%d)\n", predicted_size, new_rsize, MTestGetIntercommName(), orig_size, orig_rsize); commok = 0; } /* ... more to do */ if (commok) { errs += MTestTestComm(newcomm); } } else { int orig_rsize; /* If the newcomm is null, then this means that remote group * for this color is of size zero (since all processes in this * test have been given colors other than MPI_UNDEFINED). * Confirm that here */ /* FIXME: ToDo */ MPI_Comm_remote_size(intercomm, &orig_rsize); if (orig_rsize == 1) { if (color == 0) { errs++; printf("Returned null intercomm when non-null expected\n"); } } } if (newcomm != MPI_COMM_NULL) MPI_Comm_free(&newcomm); MPI_Comm_free(&intercomm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/comm/commname.c0000644000175000017500000000304412620254305017254 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include "mpitestconf.h" #ifdef HAVE_STRING_H #include #endif int main(int argc, char *argv[]) { int errs = 0; MPI_Comm comm; int cnt, rlen; char name[MPI_MAX_OBJECT_NAME], nameout[MPI_MAX_OBJECT_NAME]; MTest_Init(&argc, &argv); /* Check world and self firt */ nameout[0] = 0; MPI_Comm_get_name(MPI_COMM_WORLD, nameout, &rlen); if (strcmp(nameout, "MPI_COMM_WORLD")) { errs++; printf("Name of comm world is %s, should be MPI_COMM_WORLD\n", nameout); } nameout[0] = 0; MPI_Comm_get_name(MPI_COMM_SELF, nameout, &rlen); if (strcmp(nameout, "MPI_COMM_SELF")) { errs++; printf("Name of comm self is %s, should be MPI_COMM_SELF\n", nameout); } /* Now, handle other communicators, including world/self */ cnt = 0; while (MTestGetComm(&comm, 1)) { if (comm == MPI_COMM_NULL) continue; sprintf(name, "comm-%d", cnt); cnt++; MPI_Comm_set_name(comm, name); nameout[0] = 0; MPI_Comm_get_name(comm, nameout, &rlen); if (strcmp(name, nameout)) { errs++; printf("Unexpected name, was %s but should be %s\n", nameout, name); } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/comm/icgroup.c0000644000175000017500000000275412620254305017137 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Get the group of an intercommunicator"; */ int main(int argc, char *argv[]) { int errs = 0; int rank, size, grank, gsize; int minsize = 2, isleft; MPI_Comm comm; MPI_Group group; MTest_Init(&argc, &argv); /* The following illustrates the use of the routines to * run through a selection of communicators and datatypes. * Use subsets of these for tests that do not involve combinations * of communicators, datatypes, and counts of datatypes */ while (MTestGetIntercomm(&comm, &isleft, minsize)) { if (comm == MPI_COMM_NULL) continue; /* Determine the sender and receiver */ MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); MPI_Comm_group(comm, &group); MPI_Group_rank(group, &grank); MPI_Group_size(group, &gsize); if (rank != grank) { errs++; fprintf(stderr, "Ranks of groups do not match %d != %d\n", rank, grank); } if (size != gsize) { errs++; fprintf(stderr, "Sizes of groups do not match %d != %d\n", size, gsize); } MPI_Group_free(&group); MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/comm/iccreate.c0000644000175000017500000001102612620254305017236 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2007 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* * This program tests that MPI_Comm_create applies to intercommunicators; * this is an extension added in MPI-2 */ int main(int argc, char *argv[]) { int errs = 0; int size, isLeft, wrank; MPI_Comm intercomm, newcomm; MPI_Group oldgroup, newgroup; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); if (size < 4) { printf("This test requires at least 4 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_rank(MPI_COMM_WORLD, &wrank); while (MTestGetIntercomm(&intercomm, &isLeft, 2)) { int ranks[10], nranks, result; if (intercomm == MPI_COMM_NULL) continue; MPI_Comm_group(intercomm, &oldgroup); ranks[0] = 0; nranks = 1; MTestPrintfMsg(1, "Creating a new intercomm 0-0\n"); MPI_Group_incl(oldgroup, nranks, ranks, &newgroup); MPI_Comm_create(intercomm, newgroup, &newcomm); /* Make sure that the new communicator has the appropriate pieces */ if (newcomm != MPI_COMM_NULL) { int new_rsize, new_size, flag, commok = 1; MPI_Comm_set_name(newcomm, (char *) "Single rank in each group"); MPI_Comm_test_inter(intercomm, &flag); if (!flag) { errs++; printf("[%d] Output communicator is not an intercomm\n", wrank); commok = 0; } MPI_Comm_remote_size(newcomm, &new_rsize); MPI_Comm_size(newcomm, &new_size); /* The new communicator has 1 process in each group */ if (new_rsize != 1) { errs++; printf("[%d] Remote size is %d, should be one\n", wrank, new_rsize); commok = 0; } if (new_size != 1) { errs++; printf("[%d] Local size is %d, should be one\n", wrank, new_size); commok = 0; } /* ... more to do */ if (commok) { errs += MTestTestComm(newcomm); } } MPI_Group_free(&newgroup); if (newcomm != MPI_COMM_NULL) { MPI_Comm_free(&newcomm); } /* Now, do a sort of dup, using the original group */ MTestPrintfMsg(1, "Creating a new intercomm (manual dup)\n"); MPI_Comm_create(intercomm, oldgroup, &newcomm); MPI_Comm_set_name(newcomm, (char *) "Dup of original"); MTestPrintfMsg(1, "Creating a new intercomm (manual dup (done))\n"); MPI_Comm_compare(intercomm, newcomm, &result); MTestPrintfMsg(1, "Result of comm/intercomm compare is %d\n", result); if (result != MPI_CONGRUENT) { const char *rname = 0; errs++; switch (result) { case MPI_IDENT: rname = "IDENT"; break; case MPI_CONGRUENT: rname = "CONGRUENT"; break; case MPI_SIMILAR: rname = "SIMILAR"; break; case MPI_UNEQUAL: rname = "UNEQUAL"; break; printf("[%d] Expected MPI_CONGRUENT but saw %d (%s)", wrank, result, rname); fflush(stdout); } } else { /* Try to communication between each member of intercomm */ errs += MTestTestComm(newcomm); } if (newcomm != MPI_COMM_NULL) { MPI_Comm_free(&newcomm); } /* test that an empty group in either side of the intercomm results in * MPI_COMM_NULL for all members of the comm */ if (isLeft) { /* left side reuses oldgroup, our local group in intercomm */ MPI_Comm_create(intercomm, oldgroup, &newcomm); } else { /* right side passes MPI_GROUP_EMPTY */ MPI_Comm_create(intercomm, MPI_GROUP_EMPTY, &newcomm); } if (newcomm != MPI_COMM_NULL) { printf("[%d] expected MPI_COMM_NULL, but got a different communicator\n", wrank); fflush(stdout); errs++; } if (newcomm != MPI_COMM_NULL) { MPI_Comm_free(&newcomm); } MPI_Group_free(&oldgroup); MPI_Comm_free(&intercomm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/comm/cmsplit.c0000644000175000017500000000225412620254305017135 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test comm split"; */ int main(int argc, char *argv[]) { int errs = 0; int rank, size, color, srank; MPI_Comm comm, scomm; MTest_Init(&argc, &argv); MPI_Comm_dup(MPI_COMM_WORLD, &comm); MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); if (size < 4) { fprintf(stderr, "This test requires at least four processes."); MPI_Abort(MPI_COMM_WORLD, 1); } color = MPI_UNDEFINED; if (rank < 2) color = 1; MPI_Comm_split(comm, color, size - rank, &scomm); if (rank < 2) { /* Check that the ranks are ordered correctly */ MPI_Comm_rank(scomm, &srank); if (srank != 1 - rank) { errs++; } MPI_Comm_free(&scomm); } else { if (scomm != MPI_COMM_NULL) { errs++; } } MPI_Comm_free(&comm); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/comm/comm_group_half.c0000644000175000017500000000171312620254305020622 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include "mpitestconf.h" int main(int argc, char **argv) { int rank, size, i; MPI_Group full_group, half_group; int range[1][3]; MPI_Comm comm; MPI_Init(NULL, NULL); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_group(MPI_COMM_WORLD, &full_group); range[0][0] = 0; range[0][1] = size / 2; range[0][2] = 1; MPI_Group_range_incl(full_group, 1, range, &half_group); if (rank <= size / 2) { MPI_Comm_create_group(MPI_COMM_WORLD, half_group, 0, &comm); MPI_Barrier(comm); MPI_Comm_free(&comm); } MPI_Group_free(&half_group); MPI_Group_free(&full_group); if (rank == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/comm/ic2.c0000644000175000017500000000417712620254305016145 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* regression test for ticket #1574 * * Based on test code from N. Radclif @ Cray. */ #include #include #include int main(int argc, char **argv) { MPI_Comm c0, c1, ic; MPI_Group g0, g1, gworld; int a, b, c, d; int rank, size, remote_leader, tag; int ranks[2]; int errs = 0; tag = 5; c0 = c1 = ic = MPI_COMM_NULL; g0 = g1 = gworld = MPI_GROUP_NULL; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); if (size < 33) { printf("ERROR: this test requires at least 33 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); return 1; } /* group of c0 * NOTE: a>=32 is essential for exercising the loop bounds bug from tt#1574 */ a = 32; b = 24; /* group of c1 */ c = 25; d = 26; MPI_Comm_group(MPI_COMM_WORLD, &gworld); ranks[0] = a; ranks[1] = b; MPI_Group_incl(gworld, 2, ranks, &g0); MPI_Comm_create(MPI_COMM_WORLD, g0, &c0); ranks[0] = c; ranks[1] = d; MPI_Group_incl(gworld, 2, ranks, &g1); MPI_Comm_create(MPI_COMM_WORLD, g1, &c1); if (rank == a || rank == b) { remote_leader = c; MPI_Intercomm_create(c0, 0, MPI_COMM_WORLD, remote_leader, tag, &ic); } else if (rank == c || rank == d) { remote_leader = a; MPI_Intercomm_create(c1, 0, MPI_COMM_WORLD, remote_leader, tag, &ic); } MPI_Group_free(&g0); MPI_Group_free(&g1); MPI_Group_free(&gworld); if (c0 != MPI_COMM_NULL) MPI_Comm_free(&c0); if (c1 != MPI_COMM_NULL) MPI_Comm_free(&c1); if (ic != MPI_COMM_NULL) MPI_Comm_free(&ic); MPI_Reduce((rank == 0 ? MPI_IN_PLACE : &errs), &errs, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (rank == 0) { if (errs) { printf("found %d errors\n", errs); } else { printf(" No errors\n"); } } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/comm/dup_with_info.c0000644000175000017500000000600112620254305020312 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" int run_tests(MPI_Comm comm) { int rank, size, wrank, wsize, dest, a, b, errs = 0; MPI_Status status; /* Check basic properties */ MPI_Comm_size(MPI_COMM_WORLD, &wsize); MPI_Comm_rank(MPI_COMM_WORLD, &wrank); MPI_Comm_size(comm, &size); MPI_Comm_rank(comm, &rank); if (size != wsize || rank != wrank) { errs++; fprintf(stderr, "Size (%d) or rank (%d) wrong\n", size, rank); fflush(stderr); } MPI_Barrier(comm); /* Can we communicate with this new communicator? */ dest = MPI_PROC_NULL; if (rank == 0) { dest = size - 1; a = rank; b = -1; MPI_Sendrecv(&a, 1, MPI_INT, dest, 0, &b, 1, MPI_INT, dest, 0, comm, &status); if (b != dest) { errs++; fprintf(stderr, "Received %d expected %d on %d\n", b, dest, rank); fflush(stderr); } if (status.MPI_SOURCE != dest) { errs++; fprintf(stderr, "Source not set correctly in status on %d\n", rank); fflush(stderr); } } else if (rank == size - 1) { dest = 0; a = rank; b = -1; MPI_Sendrecv(&a, 1, MPI_INT, dest, 0, &b, 1, MPI_INT, dest, 0, comm, &status); if (b != dest) { errs++; fprintf(stderr, "Received %d expected %d on %d\n", b, dest, rank); fflush(stderr); } if (status.MPI_SOURCE != dest) { errs++; fprintf(stderr, "Source not set correctly in status on %d\n", rank); fflush(stderr); } } MPI_Barrier(comm); return errs; } int main(int argc, char **argv) { int total_errs = 0; MPI_Comm newcomm; MPI_Info info; MTest_Init(&argc, &argv); /* Dup with no info */ MPI_Comm_dup_with_info(MPI_COMM_WORLD, MPI_INFO_NULL, &newcomm); total_errs += run_tests(newcomm); MPI_Comm_free(&newcomm); /* Dup with info keys */ MPI_Info_create(&info); MPI_Info_set(info, (char *) "host", (char *) "myhost.myorg.org"); MPI_Info_set(info, (char *) "file", (char *) "runfile.txt"); MPI_Info_set(info, (char *) "soft", (char *) "2:1000:4,3:1000:7"); MPI_Comm_dup_with_info(MPI_COMM_WORLD, info, &newcomm); total_errs += run_tests(newcomm); MPI_Info_free(&info); MPI_Comm_free(&newcomm); /* Dup with deleted info keys */ MPI_Info_create(&info); MPI_Info_set(info, (char *) "host", (char *) "myhost.myorg.org"); MPI_Info_set(info, (char *) "file", (char *) "runfile.txt"); MPI_Info_set(info, (char *) "soft", (char *) "2:1000:4,3:1000:7"); MPI_Comm_dup_with_info(MPI_COMM_WORLD, info, &newcomm); MPI_Info_free(&info); total_errs += run_tests(newcomm); MPI_Comm_free(&newcomm); MTest_Finalize(total_errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/testlist.in0000644000175000017500000000042312621010263016554 0ustar mbanckmbanck# The next item ensures that the support routines are built first !util:all attr #basic coll comm datatype errhan group info init mpi_t pt2pt @rmadir@ @spawndir@ topo #@perfdir@ @iodir@ @f77dir@ @cxxdir@ @f90dir@ @f08dir@ @errordir@ @threadsdir@ @ckpointdir@ #@ftdir@ impls mpi-testsuite-3.2+dfsg/configure.ac0000644000175000017500000015766612620254305016673 0ustar mbanckmbanckdnl Process this file with autoconf to produce a configure script. AC_PREREQ(2.67) dnl dnl aclocal_cache.m4, included by sowing/confdb/aclocal.m4, fixes dnl bugs in autoconf caching. dnl dnl dnl Environment variables that affect behavior of the test configure dnl MPICH_FAST dnl dnl The file name here refers to a file in the source being configured dnl FIXME this is the old style, needs updating to new style dnl AC_INIT(include/mpitest.h) m4_include([version.m4]) AC_INIT([mpich-testsuite], MPICH_VERSION_m4, [discuss@mpich.org], [mpich-testsuite], [http://www.mpich.org/]) AC_CONFIG_HEADER(include/mpitestconf.h) AH_TOP([/* -*- Mode: C; c-basic-offset:4 ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #ifndef MPITESTCONF_H_INCLUDED #define MPITESTCONF_H_INCLUDED ]) AH_BOTTOM([#endif]) VERSION=MPICH_VERSION_m4 AC_SUBST(VERSION) AC_CONFIG_AUX_DIR([confdb]) AC_CONFIG_MACRO_DIR([confdb]) dnl echo "RUNNING CONFIGURE FOR MPI TESTS" AM_INIT_AUTOMAKE([-Wall -Werror -Wno-portability-recursive foreign 1.12.3 silent-rules subdir-objects]) AM_MAINTAINER_MODE([enable]) # Non-verbose make by default m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) if test -z "$mpich_top_srcdir" ; then if test -z "$top_srcdir" ; then use_top_srcdir=$srcdir else use_top_srcdir=$top_srcdir fi case "$use_top_srcdir" in /*) ;; *) use_top_srcdir=`(cd $use_top_srcdir && pwd)` ;; esac if test -f $use_top_srcdir/../../maint/version.m4 ; then mpich_top_srcdir=`cd $use_top_srcdir && cd ../.. && pwd` fi fi AC_SUBST(mpich_top_srcdir) # these (in particular master_top_srcdir) are needed to regenerate # the f90 files from the f77 files AC_ARG_VAR([master_top_builddir],[path to the MPICH top-level build directory (if present)]) AC_ARG_VAR([master_top_srcdir],[path to the MPICH top-level source directory (if present)]) # Ensure that master_top_srcdir is set if maintainer mode for is set, # since some of the Makefile targets require it. if test "X$master_top_srcdir" = "X" -a "$USE_MAINTAINER_MODE" = "yes" ; then if test -z "$top_srcdir" ; then use_top_srcdir=$srcdir else use_top_srcdir=$top_srcdir fi # Make use_top_srcdir absolute case "$use_top_srcdir" in /*) ;; *) use_top_srcdir=`(cd $use_top_srcdir && pwd)` ;; esac # Now, see if we can find the f77tof90 routine if test -x $use_top_srcdir/../../maint/f77tof90 ; then master_top_srcdir=`cd $use_top_srcdir && cd ../.. && pwd` else AC_MSG_ERROR([Unable to find master source file - reconfigure using --disable-maintainer_mode]) fi fi AC_ARG_ENABLE(echo, [AC_HELP_STRING([--enable-echo],[Turn on strong echoing. The default is enable=no.])], [set -x]) AC_ARG_ENABLE(fortran, [ --enable-fortran=option - Control the level of Fortran support in the MPICH implementation. yes|all - Enable all available Fortran implementations (F77, F90, F08) f77 - Enable Fortran 77 support f90 - Enable Fortran 90 support f08 - Enable Fortran 2008 support no|none - No Fortran support ],,[enable_fortran=f77,f90]) save_IFS="$IFS" IFS="," enable_f77=no enable_fc=no enable_f08=no for option in $enable_fortran ; do case "$option" in yes|all) enable_f77=yes enable_fc=yes ;; no|none) enable_f77=no enable_fc=no ;; f77) enable_f77=yes ;; f90) enable_fc=yes ;; f08) enable_f08=yes ;; *) IFS="$save_IFS" AC_MSG_WARN([Unknown value $option for --enable-fortran]) IFS="," ;; esac done IFS="$save_IFS" AC_ARG_ENABLE(cxx, [AC_HELP_STRING([--enable-cxx],[Turn on C++ tests (default)])],,[enable_cxx=yes]) AC_ARG_ENABLE(romio, [AC_HELP_STRING([--enable-romio],[Enable ROMIO MPI I/O implementation])],, [enable_romio=yes]) AC_ARG_ENABLE(spawn, [AC_HELP_STRING([--enable-spawn], [Enable tests of the dynamic process parts of MPI-2 (default)])],, [enable_spawn=yes]) AC_ARG_ENABLE(rma, [AC_HELP_STRING([--enable-rma],[Enable tests of the one sided parts of MPI-2 (default)])],, [enable_rma=yes]) AC_ARG_ENABLE(long-double-complex, [AC_HELP_STRING([--enable-long-double-complex], [Enable tests involving MPI_LONG_DOUBLE_COMPLEX (default)])],, [enable_long_double_complex=yes]) AC_ARG_ENABLE(long-double, [AC_HELP_STRING([--enable-long-double-complex], [Enable tests involving MPI_LONG_DOUBLE and related types (default)])],, [enable_long_double=yes]) AC_ARG_ENABLE(checkerrors, [AC_HELP_STRING([--enable-checkerrors], [Add some tests for checking for errors in user programs])],, [enable_checkerrors=yes]) AC_ARG_ENABLE(perftest, [AC_HELP_STRING([--enable-perftest], [Include tests for basic performance consistency (default)])],, [enable_perftest=yes]) AC_ARG_ENABLE(ft-tests, [AC_HELP_STRING([--enable-ft-tests], [Include tests for fault tolerance (default)])],, [enable_ft_tests=yes]) AC_ARG_ENABLE(comm-overlap-tests, [AC_HELP_STRING([--enable-comm-overlap-tests], [Include tests for communicator overlap (default)])],, [enable_comm_overlap_tests=yes]) AC_ARG_ENABLE(checkfaults, [AC_HELP_STRING([--enable-checkfaults], [Add some tests for checking on handling of faults in user programs])],, [enable_checkfaults=no]) AC_ARG_ENABLE(checkpointing, [AC_HELP_STRING([--enable-checkpointing], [Add some tests for checkpointing])],, [enable_checkpointing=no]) AC_ARG_ENABLE(fast, [AC_HELP_STRING([--enable-fast], [Indicates that the MPI implementation may have been built for fastest operation, such as building without error checking. Has the effect of --enable-checkerrors=no])],,) AC_ARG_ENABLE(strictmpi, [AC_HELP_STRING([--enable-strictmpi], [Only test for operations specifically defined by the MPI standard. This turns off tests for some common extensions, including for combinations of predefined datatypes and predefined MPI_Op s.])],, [enable_strictmpi=no]) AC_ARG_ENABLE(threads, [--enable-threads=level - Specify the level of thread support expected from the MPI implementation. The following levels are supported. single - No threads (MPI_THREAD_SINGLE) funneled - Only the main thread calls MPI (MPI_THREAD_FUNNELED) serialized - User serializes calls to MPI (MPI_THREAD_SERIALIZED) multiple - Fully multi-threaded (MPI_THREAD_MULTIPLE) The default is funneled. If enabled and no level is specified, the level is set to multiple. If disabled, the level is set to single. If the environment variable MPICH_THREAD_LEVEL is set, that thread level is used (this is to let MPICH build for the correct thread support without requiring a specific --enable-threads argument.],, [enable_threads=default]) AC_ARG_ENABLE(xfail, [AC_HELP_STRING([--enable-xfail], [Run tests marked for expected failure])],, [enable_xfail=no]) AC_ARG_WITH(mpi, [AC_HELP_STRING([--with-mpi=dir], [Use the selected MPI; compilation scripts for mpicc, mpifort and mpicxx should be in dir/bin])],,) AC_ARG_WITH(pm, AC_HELP_STRING([--with-pm=name], [Specify the process manager for MPICH. "no" or "none" are valid values. Multiple process managers may be specified as long as they all use the same pmi interface by separating them with colons. The mpiexec for the first named process manager will be installed. Example: "--with-pm=hydra:gforker" builds the two process managers hydra and gforker; only the mpiexec from hydra is installed into the bin directory.]),,with_pm=default) if test "$with_pm" = "none" ; then # add "none" as synonym for "no" to agree with older erroneous docs with_pm="no" fi if test "$MPID_NO_PM" = yes ; then if test "$with_pm" != "default" -a "$with_pm" != no ; then AC_MSG_ERROR([The PM chosen ($with_pm) is is not valid for the selected device ($with_device)]) fi # This is used to change with_pm=default to with_pm=no in the case # where the device does not want a PM with_pm=no fi if test -z "$with_pm" ; then with_pm="no" fi if test "$with_pmi" = "uni" -a "$with_pm" = "default" ; then with_pm="no" fi if test "$with_pm" = "default" -o "$with_pm" = "yes" ; then if test ! -z "$MPID_DEFAULT_PM" ; then with_pm=${MPID_DEFAULT_PM} else with_pm=hydra fi fi # Get the first pm specified if test "$with_pm" != "no" ; then first_pm="`echo $with_pm | sed -e 's/:.*//' -e 's/,.*//'`" else first_pm="" fi AC_ARG_WITH(config-args, [AC_HELP_STRING([--with-config-args=filename], [Specify configure argument file that contains the values of variables that configure reads, e.g. CC,CFLAGS,F77,FFLAGS,FC,FCFLAGS.... If the filename does not begin with / (absolute path), . or .. (relative path), the filename will be assumed to be $top_srcdir/configargs/.cfg.])],, [with_config_args=no]) if test "$with_config_args" != "no" ; then case "$with_config_args" in /*|../*|./*) config_args_file="$with_config_args" ;; *) config_args_file="$srcdir/configargs/$with_config_args.cfg" ;; esac if test -s "$config_args_file" ; then AC_MSG_RESULT([Reading the configure arguments in ${config_args_file}.]) . $config_args_file # Export all the variables in $config_args_file # i.e. CC,CFLAGS, F77/FFLAGS, FC/FCFLAGS, CXX/CXXFLAGS and friends... config_args_vars=`grep -v '^#' $config_args_file | sed -e 's/=.*//g'` for var in $config_args_vars ; do eval value=\$"$var" echo "Exporting $var=$value ..." export $var done else AC_MSG_WARN([Non-existent ${config_args_file}.]) fi fi # First, determine whether we are/can support the language bindings # # Since F90/F90FLAGS are replaced by FC/FCFLAGS, rather than silently # substituting them, i.e. FC=$F90 and FCFLAGS=$F90FLAGS, we choose to emit # an error message and abort to avoid any ambiguous/hidden bug in choosing # Fortran90 compilers. if test -n "$F90" -o -n "$F90FLAGS" ; then AC_MSG_ERROR([F90 and F90FLAGS are replaced by FC and FCFLAGS respectively in this configure, please unset F90/F90FLAGS and set FC/FCFLAGS instead and rerun configure again.]) fi # ------------------------------------------------------------------------ dnl use AC_ARG_VAR to mark FROM_MPICH as "precious" to autoconf so that dnl automatic re-runs of config.status preserve its value correctly AC_ARG_VAR([FROM_MPICH],[should be set to "yes" if this configure script is being invoked by the main MPICH configure]) AC_ARG_VAR([MPICH_THREAD_LEVEL], [the MPI thread level supported by the enclosing MPICH build (when built within MPICH)]) # ------------------------------------------------------------------------ if test "$enable_threads" = "yes" ; then enable_threads=multiple elif test "$enable_threads" = "no" ; then enable_threads=single elif test "$enable_threads" = default ; then if test -n "$MPICH_THREAD_LEVEL" ; then case $MPICH_THREAD_LEVEL in MPI_THREAD_MULTIPLE) enable_threads=multiple ;; MPI_THREAD_SERIALIZED) enable_threads=serialized ;; MPI_THREAD_FUNNELED) enable_threads=funneled ;; MPI_THREAD_SINGLE) enable_threads=single ;; esac else enable_threads=funneled fi fi # errordir is substituted into the testlist file as errors when the # tests should check error handling and as a comment (#) otherwise. errordir="#" if test "$enable_checkerrors" = "yes" ; then errordir=errors fi AC_SUBST(errordir) # The performance tests are not part of the MPI standard perfdir="perf" if test "$enable_strictmpi" = "yes" -o "$enable_perftest" = "no" ; then perfdir="#" fi AC_SUBST(perfdir) # The ft tests are not part of the MPI standard and some of the netmods can't handle them ftdir="#ft" if test "$first_pm" = "hydra" -a "$enable_strictmpi" = "no" -a "$enable_ft_tests" = "yes" ; then ftdir="ft" fi AC_SUBST(ftdir) # Setup "comm_overlap" variable based on whether comm_overlap tests # are enabled or not if test "${enable_comm_overlap_tests}" = "yes" ; then comm_overlap="" else comm_overlap="#" fi AC_SUBST(comm_overlap) # # Only run the threads tests if multiple is specified if test "$enable_threads" = "multiple" -o "$enable_threads" = "runtime" ; then threadsdir="threads" fi # # Only run the checkpointing tests if enabled ckpointdir="#ckpoint" if test "$enable_checkpointing" = "yes" ; then ckpointdir="ckpoint" fi AC_SUBST(ckpointdir) # # Only run xfail tests if enabled RUN_XFAIL=false if test "$enable_xfail" = "yes" ; then RUN_XFAIL=true fi AC_SUBST(RUN_XFAIL) PAC_LOAD_BASE_CACHE PAC_VPATH_CHECK() PAC_PROG_MAKE MPILIBLOC="" AC_SUBST(MPILIBLOC) # more variables that must be marked precious for proper re-configure operation AC_ARG_VAR([MPICH_ENABLE_F77],["yes" if the enclosing MPICH build supports Fortran 77]) AC_ARG_VAR([MPICH_ENABLE_FC],["yes" if the enclosing MPICH build supports modern Fortran]) AC_ARG_VAR([MPICH_ENABLE_CXX],["yes" if the enclosing MPICH build supports C++]) # If we're building from MPICH, check the MPICH_ENABLE_xxx environment # variables for enable defaults if test "$FROM_MPICH" = yes ; then if test -n "$MPICH_ENABLE_F77" ; then enable_f77=$MPICH_ENABLE_F77 fi if test -n "$MPICH_ENABLE_FC" ; then enable_fc=$MPICH_ENABLE_FC fi if test -n "$MPICH_ENABLE_CXX" ; then enable_cxx=$MPICH_ENABLE_CXX fi namepub_tests="#" if test -n "$nameserv_name" ; then namepub_tests="" fi AC_SUBST(namepub_tests) fi # Some MPI-2 implementations (including some of the MPICH shared-memory # channels and BG/L) leave out the dynamic process routines. This # allows tests to avoid reporting failure for these routines. # This can be controlled by either a --disable-spawn argument or by # setting the environment variable MPI_NO_SPAWN to yes. AC_ARG_VAR([MPI_NO_SPAWN],[set to "yes" to disable dynamic process tests]) if test "$enable_spawn" = "yes" -a "$MPI_NO_SPAWN" != "yes" ; then spawndir=spawn AC_DEFINE(HAVE_MPI_SPAWN,1,[Define if Dynamic Process functionality is available]) fi AC_SUBST(spawndir) # Also allow rma to be disabled AC_ARG_VAR([MPI_NO_RMA],[set to "yes" to disable one-sided tests]) rmadir=rma if test "$enable_rma" != yes ; then rmadir="#" elif test "$MPI_NO_RMA" = yes ; then rmadir="#" else AC_DEFINE(HAVE_MPI_WIN_CREATE,1,[Define if MPI_Win_create is available]) fi AC_SUBST(rmadir) faultsdir=# if test "$enable_checkfaults" = "yes" ; then faultsdir=faults fi AC_SUBST(faultsdir) # MPI_IS_STRICT=false AC_SUBST(MPI_IS_STRICT) if test "$enable_strictmpi" = "yes" ; then MPI_IS_STRICT=true AC_DEFINE(USE_STRICT_MPI,1,[Define if only operations defined in MPI should be tested]) fi # # At this writing, MPICH has many MPIX routines, and the test suite includes # them. As these are not MPI routines (yet), they are invalid and incorrect # when this test suite is used for other MPI implementations, including those # based on earlier versions of MPICH. MPI_HAS_MPIX=no # # Hack to detect build from within MPICH. Ensure strictmpi not selected. if test "$FROM_MPICH" = "yes" -a "$enable_strictmpi" = "no" ; then MPI_HAS_MPIX=yes fi AC_SUBST(MPI_HAS_MPIX) # Prepend @mpix@ to lines of tests in testlist.in which are MPIX tests so that # we can skip running these tests when we do strict MPI test. mpix="#" if test "$enable_strictmpi" = "no"; then mpix="" fi AC_SUBST(mpix) # Use the conditional variable BUILD_MPIX_TESTS to conditionally add MPIX tests # to noninst_PROGRAMS to skip building the tests when we do strict MPI test AM_CONDITIONAL([BUILD_MPIX_TESTS], [test "$enable_strictmpi" = "no"]) # preserve these values across a reconfigure AC_ARG_VAR([WRAPPER_CFLAGS],[]) AC_ARG_VAR([WRAPPER_CPPFLAGS],[]) AC_ARG_VAR([WRAPPER_LDFLAGS],[]) AC_ARG_VAR([WRAPPER_LIBS],[]) AC_ARG_VAR([WRAPPER_FFLAGS],[]) AC_ARG_VAR([WRAPPER_FCFLAGS],[]) AC_ARG_VAR([WRAPPER_CXXFLAGS],[]) # Attach program prefix and suffix to executable names PAC_GET_EXENAME("mpicc", MPICC_NAME) PAC_GET_EXENAME("mpif77", MPIF77_NAME) PAC_GET_EXENAME("mpifort", MPIFORT_NAME) PAC_GET_EXENAME("mpicxx", MPICXX_NAME) PAC_GET_EXENAME("mpiexec", MPIEXEC_NAME) if test "$FROM_MPICH" = "yes" ; then # perform configure tests with the normal compilers ($CC/$F77/etc), but use # the WRAPPER_xFLAGS computed by MPICH as our flags instead. Then at the # end of configure we will empty out these flags and set our compilers to # the installed compiler wrappers CFLAGS="$WRAPPER_CFLAGS" CPPFLAGS="$WRAPPER_CPPFLAGS" LDFLAGS="$WRAPPER_LDFLAGS" FFLAGS="$WRAPPER_FFLAGS" FCFLAGS="$WRAPPER_FCFLAGS" CXXFLAGS="$WRAPPER_CXXFLAGS" # WRAPPER_LIBS contains currently non-existent libs like "-lopa" and "-lmpl" # right now, so set LIBS to the user-specified libs for now. # FIXME Does this need to be an AC_ARG_VAR? LIBS="$MPICH_LIBS" elif test -n "$with_mpi" ; then if test -z "$MPICC" ; then CC=$with_mpi/bin/$MPICC_NAME else CC=$MPICC fi if test -z "$MPIF77" ; then F77=$with_mpi/bin/$MPIF77_NAME else F77=$MPIF77 fi if test -z "$MPIFC" ; then FC=$with_mpi/bin/$MPIFORT_NAME else FC=$MPIFC fi if test -z "$MPICXX" ; then CXX=$with_mpi/bin/$MPICXX_NAME else CXX=$MPICXX fi if test -z "$MPIEXEC" ; then MPIEXEC=$with_mpi/bin/$MPIEXEC_NAME fi else # Try to use mpicc etc names if test -z "$MPICC" ; then AC_PATH_PROG(MPICC,$MPICC_NAME mpcc) fi if test "x$MPICC" != "x" ; then CC=$MPICC fi if test -z "$MPIF77" ; then AC_PATH_PROG(MPIF77,$MPIF77_NAME mpf77) fi if test "x$MPIF77" != "x" ; then F77=$MPIF77 fi if test -z "$MPIFC" ; then AC_PATH_PROG(MPIFC,$MPIFORT_NAME mpftn) fi if test "x$MPIFC" != "x" ; then FC=$MPIFC fi if test -z "$MPICXX" ; then # We left mpiCC off of this list because mpicc and mpiCC are the # same on Mac OSX systems. AC_PATH_PROG(MPICXX,$MPICXX_NAME mpCC) fi if test "x$MPICXX" != "x" ; then CXX=$MPICXX fi if test -z "$MPIEXEC" ; then AC_PATH_PROG(MPIEXEC,$MPIEXEC_NAME) fi fi # Running C compiler tests PAC_PROG_CC AM_PROG_CC_C_O # Note that some versions of autoconf will insist that the compiler # produce executables at this point, which is why we must do something # special for building within MPICH # Ensure that we can compile an MPI program before we go any further # We don't use a cached value here because this is a sanity check # The exception is if we are executing this configure from within the # MPICH configure - in that case, the if test "$FROM_MPICH" != "yes" ; then AC_MSG_CHECKING([whether we can compile and link MPI programs in C]) AC_LINK_IFELSE([ AC_LANG_PROGRAM([#include "mpi.h"],[MPI_Init(0,0);MPI_Finalize();]) ],[mpi_compile_works=yes],[mpi_compile_works=no]) AC_MSG_RESULT($mpi_compile_works) if test "$mpi_compile_works" != "yes" ; then AC_MSG_ERROR([Unable to compile and/or link an MPI program! Check config.log]) fi fi dnl We cannot use AC_C_LONG_DOUBLE dnl because it does not support cross-compilation. Instead, we use the dnl same test in the MPICH configure. # Check on support for long double and long long types. Do this before the # structure alignment test because it will test for including those # types as well # # If --disable-long-double is selected, then bypass this test. # Some MPI implementations may choose to not support long double because # their C compilers are inconsistent on the length of long double (this # is the case on the Cray, with Cray, PGI, and GNU not agreeing on the # size of long double) if test "$enable_long_double" = "yes" ; then AC_CACHE_CHECK([whether long double is supported],pac_cv_have_long_double,[ AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([],[long double a;]) ],[pac_cv_have_long_double=yes],[pac_cv_have_long_double=no]) ]) if test "$pac_cv_have_long_double" = "yes" ; then AC_DEFINE(HAVE_LONG_DOUBLE,1,[Define if long double is supported]) fi fi AC_CACHE_CHECK([whether long long is supported],pac_cv_have_long_long,[ AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([],[long long a;]) ],[pac_cv_have_long_long=yes],[pac_cv_have_long_long=no]) ]) if test "$pac_cv_have_long_long" = yes ; then AC_DEFINE(HAVE_LONG_LONG,1,[Define if compiler supports long long]) fi # # Check for const and restrict (used in some of the performance tests) AC_C_CONST AC_C_RESTRICT # not using libtool for the test suite, so no LT_INIT. Instead, test here # for Library programs AC_PROG_RANLIB AM_PROG_AR # Enable STRICT CFLAGS AC_ARG_ENABLE(stricttest, AC_HELP_STRING([--enable-stricttest], [Turn on strict GCC compilation])) dnl Initialize enable_strict_done so PAC_CC_STRICT won't exit right away dnl When it is configuring from within MPICH, because enable_strict_done=yes dnl is set in the environment by MPICH. enable_strict_done=no PAC_CC_STRICT($enable_stricttest) # -Wfloat-equal isn't meaningful in testsuite, # remove it if it is in strict flags. pac_cc_strict_flags="`echo $pac_cc_strict_flags | sed -e 's|-Wfloat-equal||g'`" CFLAGS="$CFLAGS $pac_cc_strict_flags" # General headers AC_HEADER_STDC dnl AC_CHECK_HEADERS(stdarg.h unistd.h string.h stdlib.h memory.h stdint.h) dnl unistd.h string.h stdlib.h memory.h stdint.h are checked by AC_PROG_CC. AC_CHECK_HEADERS(stdarg.h sys/time.h sys/resource.h) # Check for fixed width types AC_TYPE_INT8_T AC_TYPE_INT16_T AC_TYPE_INT32_T AC_TYPE_INT64_T AC_TYPE_UINT8_T AC_TYPE_UINT16_T AC_TYPE_UINT32_T AC_TYPE_UINT64_T # Check for availability of C99 types AC_CHECK_TYPES([_Bool, float _Complex, double _Complex, long double _Complex]) AC_CHECK_SIZEOF(void *,8) # for tests that require large mem largetest="#" if test $ac_cv_sizeof_void_p -ge 8; then largetest="" fi AC_SUBST(largetest) # Only run the long double complex tests if that type is available if test "x$enable_long_double" = "xyes" && \ test "x$enable_long_double_complex" = "xyes" && \ test "x$ac_cv_type_long_double__Complex" = "xyes" ; then AC_DEFINE(USE_LONG_DOUBLE_COMPLEX,1,[Define if tests with long double complex should be included]) fi # extra libraries may be necessary on some platforms (solaris) for spawn/join if test "$spawndir" = "spawn" ; then PAC_PUSH_FLAG(LIBS) AC_SEARCH_LIBS(socket,socket,socklib=$LIBS) PAC_POP_FLAG(LIBS) PAC_PUSH_FLAG(LIBS) AC_SEARCH_LIBS(gethostbyname,nsl,nslib=$LIBS) PAC_POP_FLAG(LIBS) AC_SUBST(socklib) AC_SUBST(nslib) fi threadlib="" # Headers needed for threads tests if test "$threadsdir" = "threads" ; then # Check for needed threads headers and needed and optional routines AC_CHECK_HEADERS(pthread.h) # we shouldn't actually need to do this, but we are dodging the chicken/egg # problem b/c we don't have a working mpicc yet and we temporarily discarded # the MPICH-set LIBS (probably the wrong thing to do) AC_SEARCH_LIBS([pthread_create],[pthread],[threadlib="-lpthread"]) AC_SEARCH_LIBS([pthread_barrier_init],[pthread]) AC_CHECK_FUNCS(pthread_create pthread_yield pthread_barrier_init pthread_barrier_wait) if test "$FROM_MPICH" != yes ; then AC_CHECK_FUNCS(MPI_Init_thread) fi fi AC_SUBST(threadlib) # Check for h_addr or h_addr_list. This is needed for the singjoin test # in manual/singjoin.c AC_CACHE_CHECK([whether struct hostent contains h_addr_list], dnl Use Double quote LANG_PROGRAM dnl so [] in h_addr_list[0] won't be ignored by IFELSE. pac_cv_have_haddr_list,[ AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([#include ],[[ struct hostent hp; hp.h_addr_list[0]=0; ]]) ],[pac_cv_have_haddr_list=yes],[pac_cv_have_haddr_list=no]) ]) if test "$pac_cv_have_haddr_list" = "yes" ; then AC_DEFINE(HAVE_H_ADDR_LIST,1,[Define if struct hostent contains h_addr_list]) fi AC_CHECK_FUNCS(getrusage) # Check for the MPI Version. This test assumes at least MPI 2.0. For # some tests, we need to know if we are MPI 2.1 or MPI 2.2, # particularly for new routines in Fortran if test "$FROM_MPICH" != "yes" ; then AC_CACHE_CHECK([that MPI program can be compiled],pac_cv_mpi_compile_ok,[ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include "mpi.h"],[MPI_Init(0,0);MPI_Finalize();])],pac_cv_mpi_compile_ok=yes,pac_cv_mpi_compile_ok=no)]) if test "$pac_cv_mpi_compile_ok" != yes ; then AC_MSG_ERROR([Unable to compile an MPI program containing mpi.h!]) fi AC_CACHE_CHECK([for major version of MPI],pac_cv_mpi_major_version,[ for pac_cv_mpi_major_version in 3 2 1 unknown ; do AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include "mpi.h"],[ #if MPI_VERSION == $pac_cv_mpi_major_version ''' force failure ''' #endif])],,break) done ]) AC_CACHE_CHECK([for minor version of MPI],pac_cv_mpi_minor_version,[ for pac_cv_mpi_minor_version in 4 3 2 1 0 unknown ; do AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include "mpi.h"],[ #if MPI_SUBVERSION == $pac_cv_mpi_minor_version ''' force failure ''' #endif])],,break) done ]) MPI_VERSION=$pac_cv_mpi_major_version MPI_SUBVERSION=$pac_cv_mpi_minor_version else # We are within the MPICH build. Extract the MPI versions from # mpi.h.in if test ! -f $mpich_top_srcdir/src/include/mpi.h.in ; then AC_MSG_ERROR([Could not find the required mpi.h.in file!]) fi MPI_VERSION=`grep MPI_VERSION $mpich_top_srcdir/src/include/mpi.h.in | \ sed -e 's/#define *MPI_VERSION *\([0-4]\).*/\1/g'` MPI_SUBVERSION=`grep MPI_SUBVERSION $mpich_top_srcdir/src/include/mpi.h.in | \ sed -e 's/#define *MPI_SUBVERSION *\([0-9]\).*/\1/g'` fi AC_SUBST(MPI_VERSION) AC_SUBST(MPI_SUBVERSION) # Running Fortran 77 compiler tests PAC_PROG_F77 if test "$enable_f77" = yes ; then # If there is no working F77, then set enable_f77 to no if test -z "$F77" ; then enable_f77=no fi fi # Simple tests for which other languages we can handle. # Use these only when configuring separate from an MPICH build f77dir="#" AC_SUBST(f77dir) buildingF77=no if test "$FROM_MPICH" = yes ; then if test "$enable_f77" = yes ; then # Assume success otherlangs="$otherlangs f77" f77dir=f77 buildingF77=yes fi elif test "$enable_f77" = yes ; then AC_MSG_CHECKING([that we can build MPI programs with Fortran 77]) AC_LANG_PUSH([Fortran 77]) AC_LINK_IFELSE([ AC_LANG_SOURCE([ program main include 'mpif.h' integer ierr call mpi_init(ierr) call mpi_finalize(ierr) end ]) ],[ AC_MSG_RESULT(yes) otherlangs="$otherlangs f77" f77dir=f77 buildingF77=yes ],[ AC_MSG_RESULT(no) ]) AC_LANG_POP([Fortran 77]) fi # # At least one test (C++ test of C and Fortran datatypes) needs to # know if Fortran is supported if test "$f77dir" = "f77" ; then AC_DEFINE(HAVE_FORTRAN_BINDING,1,[Define if Fortran is supported]) fi AC_ARG_VAR([MPI_SIZEOF_AINT],[if set, force MPI_Aint to a width of this many bytes]) AC_ARG_VAR([MPI_SIZEOF_OFFSET],[if set, force MPI_Offset to a width of this many bytes]) # Common tests for F77 if test "$buildingF77" = "yes" ; then # Match integer types to the MPI types for MPI_Aint and MPI_Offset # FIXME: Add a test to see if the environment is importing the # necessary information. # Get the sizes of the MPI types. We use the following: # MPI_SIZEOF_OFFSET and MPI_SIZEOF_AINT if test -z "$MPI_SIZEOF_AINT" ; then # Aint should be an address-sized integer, the same as void* # We use a test on the size of void * to avoid any complications # in dealing with running programs containing MPI headers (e.g., # the IBM MPI changes the main entry point so that MPI # programs cannot be run on the host node) AC_CHECK_SIZEOF(void *) MPI_SIZEOF_AINT=$ac_cv_sizeof_void_p fi if test -z "$MPI_SIZEOF_OFFSET" ; then # We have to try and get the size of offset anyway, since # it is not the same as void * (it depends on the available # file systems). Since we want to avoid using the MPI linker, # we could do the following: # Use the mpi compiler to compile the file, using the mpi # header but no MPI calls # Use the regular C linker to link the program # However, we do this only if the environment variable BASECC # has been provided. Else we can try the following: # use # sed -n 's/typedef \(.*\) MPI_Offset *;/\1/p' mpi.h # to extract the type corresponding to MPI_Offset and then # just use that. dnl AC_CACHE_CHECK([the sizeof MPI_Offset],ac_cv_sizeof_MPI_Offset,[ dnl ac_cv_sizeof_MPI_Offset=unknown dnl rm -f conftest* dnl cat >>conftest.c < dnl int main( int argc, char **argv ) dnl { dnl MPI_Offset a; dnl FILE *f = fopen("conftestval", "w" ); dnl if (! f) exit(1); dnl fprintf( f, "%ld\n", (long)sizeof(MPI_Offset) ); dnl fclose(f); dnl return 0; dnl } dnl EOF dnl # FIXME. Check for BASECC dnl # Note: This assumes that CC has been set to the C compiler for dnl # MPI Programs, and that either any necessary include paths are dnl # already set or they are in CPPFLAGS (prefered) or CFLAGS. dnl if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext ; then dnl if ./conftest$ac_exeext ; then dnl #success dnl ac_cv_sizeof_MPI_Offset=`cat conftestval` dnl else dnl # failure dnl AC_MSG_WARN([Unable to run the program to determine the size of MPI_Offset]) dnl echo "configure: failed program was:" >&AC_FD_CC dnl cat conftest.c >&AC_FD_CC dnl fi dnl else dnl # failure dnl AC_MSG_WARN([Unable to build the program to determine the size of MPI_Offset]) dnl echo "configure: failed program was:" >&AC_FD_CC dnl cat conftest.c >&AC_FD_CC dnl fi dnl rm -f conftest* dnl ]) AC_CHECK_SIZEOF([MPI_Offset],[],[#include "mpi.h"]) if test "$ac_cv_sizeof_MPI_Offset" = "unknown" \ -o "$ac_cv_sizeof_MPI_Offset" -eq 0 ; then AC_MSG_WARN([Using 8 for the size of MPI_Offset]) MPI_SIZEOF_OFFSET=8 else MPI_SIZEOF_OFFSET=$ac_cv_sizeof_MPI_Offset fi fi AC_LANG_PUSH([Fortran 77]) AC_CACHE_CHECK([whether integer*4 is supported],pac_cv_fort_integer4,[ AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[ integer*4 i])], pac_cv_fort_integer4=yes, pac_cv_fort_integer4=no)]) AC_CACHE_CHECK([whether integer*8 is supported],pac_cv_fort_integer8,[ AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[ integer*8 i])], pac_cv_fort_integer8=yes, pac_cv_fort_integer8=no)]) AC_CACHE_CHECK([whether integer*16 is supported],pac_cv_fort_integer16,[ AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[ integer*16 i])], pac_cv_fort_integer16=yes, pac_cv_fort_integer16=no)]) AC_LANG_POP([Fortran 77]) # Determine Aint and Offset for len in 4 8 16 ; do eval testval=\$"pac_cv_fort_integer$len" if test "$testval" = no ; then continue ; fi testval=$len if test $len = "$MPI_SIZEOF_AINT" ; then F77_MPI_ADDRESS="integer*$len" fi if test $len = "$MPI_SIZEOF_OFFSET" ; then F77_MPI_OFFSET="integer*$len" fi done # At this point, we could create a test program that would confirm that # the values in Fortran matched the values in C. # Note that we must make this an MPI program because the compiler for # MPI programs may require that the programs be run with mpiexec or # something similar (this is true for the IBM MPI, for example). rm -f f77/init/checksizes.c # If it is a VPATH build, f77/init may not be there. if test ! -d f77/init ; then mkdir f77 mkdir f77/init fi cat > f77/init/checksizes.c < int main( int argc, char **argv ) { int fsizeof_aint = $MPI_SIZEOF_AINT; int fsizeof_offset = $MPI_SIZEOF_OFFSET; int err = 0, rc = 0; MPI_Init( &argc, &argv ); if (sizeof(MPI_Aint) != fsizeof_aint) { printf( "Sizeof MPI_Aint is %d but Fortran thinks it is %d\n", (int)sizeof(MPI_Aint), fsizeof_aint ); err++; } if (sizeof(MPI_Offset) != fsizeof_offset) { printf( "Sizeof MPI_Offset is %d but Fortran thinks it is %d\n", (int)sizeof(MPI_Offset), fsizeof_offset ); err++; } MPI_Finalize( ); if (err > 0) rc = 1; return rc; } EOF # Check for name mapping so that we can do the handle conversion tests # This test needs both the base c and fortran compilers AC_LANG_FORTRAN77 PAC_PROG_F77_NAME_MANGLE # Check that the Fortran compiler will allow us to pass arguments # of different types (e.g., for MPI_Send) # Any strict Fortran compiler will require that the arguments be # the same type - currently, the NAG Fortran compiler (nagfor) is known # to enforce this. # We could set the FFLAGS/FCFLAGS values with the option that disables # this check (if we found one), but because that may affect other tests, # instead we tell the user and exit. PAC_PROG_F77_MISMATCHED_ARGS(addarg,yes) if test "X$addarg" != "X" ; then # We could add the names of all of the MPI routines that # accept different types. Instead, we fail cleanly. # Some Fortran compilers allow you to turn off checking for # mismatched arguments for *all* routines. Adding an argument # that turns off checking for *everything* is not something that # configure should do - if the user wants this, they can follow # the instructions in the following error message. AC_MSG_ERROR([The Fortran compiler $F77 does not accept programs that call the same routine with arguments of different types without the option $addarg. Rerun configure with FFLAGS=$addarg]) fi # Check whether we need -lU77 to get iargc and getarg, which # are used for a few of the tests in spawn (U77 was needed with # the native compilers on HPUX. See the aclocal_f77(old).m4 file, # which has a much more complete set of tests. # # FIXME: if we can't figure out how to get iargc/getarg, then # we should really turn off those spawn tests # Even better is to limit this to the F200x version, where there is # an interface to the command line. F77SPAWNARGTEST="" AC_MSG_CHECKING([for Fortran libraries needed for getarg]) AC_LANG_CONFTEST([ AC_LANG_PROGRAM([],[ character*64 s integer i i = iargc() call getarg(i,s) ]) ]) AC_LINK_IFELSE([],[ pac_cv_getarg_needs_u77=no ],[ pac_cv_getarg_needs_u77=unknown ]) if test "$pac_cv_getarg_needs_u77" != "no" ; then # Try again with -lU77 saveLIBS="$LIBS" LIBS="$LIBS -lU77" AC_LINK_IFELSE([],[ pac_cv_getarg_needs_u77=yes ],[ pac_cv_getarg_needs_u77=unavailable ]) LIBS="$saveLIBS" if test "$pac_cv_getarg_needs_u77" = "yes" ; then F77_GETARG_LIBS=-lU77 fi fi rm -f conftest$ac_exeext if test -n "$F77_GETARG_LIBS" ; then AC_MSG_RESULT($F77_GETARG_LIBS) else if test "$pac_cv_getarg_needs_u77" = "unavailable" ; then AC_MSG_RESULT([getarg and/or iargc are not available. Some spawn tests will fail to link]) F77SPAWNARGTEST="#" else AC_MSG_RESULT([none needed]) fi fi AC_SUBST(F77_GETARG_LIBS) # FIXME: Currently, we hope that FC accepts the same library FC_GETARG_LIBS="$F77_GETARG_LIBS" AC_SUBST(FC_GETARG_LIBS) # F77SPAWNARGTEST is set to "#" to comment out tests in # f77/spawn/testlist.in that require non-standard extensions to # access the commandline AC_SUBST(F77SPAWNARGTEST) # ALLOCMEMF is set in f77/ext/testlist if we can try this # Fortran extension ALLOCMEMF="" PAC_PROG_F77_CRAY_POINTER([ ALLOCMEMF="allocmemf 1" FFLAGS="$FFLAGS $CRAYPTR_FFLAGS" ]) AC_SUBST(ALLOCMEMF) # See the f90 block of code for the Fortran 90 version of ALLOCMEMF, # i.e. ALLOCMEMFC. fi # Set a default for the Fortran 77 version of MPI_Offset. if test -z "$F77_MPI_OFFSET" ; then F77_MPI_OFFSET="integer*8" AC_MSG_WARN([Selecting integer*8 as the Fortran type for MPI_Offset]) fi AC_SUBST(F77_MPI_OFFSET) # FIXME: Find a way to get the correct value if test -z "$F77_MPI_ADDRESS" ; then F77_MPI_ADDRESS="integer" AC_MSG_WARN([Selecting integer as the Fortran type for MPI_Aint]) fi AC_SUBST(F77_MPI_ADDRESS) # Running Fortran 90+ compiler tests PAC_PROG_FC if test "$enable_fc" = yes ; then # Work around feature in autoconf that adds -g -O2 to FCFLAGS saveFCFLAGS="$FCFLAGS" FCFLAGS="$saveFCFLAGS" # If there is no working FC, then set enable_fc to no if test -z "$FC" ; then enable_fc=no fi fi f90dir="#" AC_SUBST(f90dir) # First, see if we have an f90 compiler. This uses code similar to that # in the MPICH top-level configure if test "$enable_fc" = yes -a "$enable_f77" = yes ; then PAC_PROG_FC_WORKS if test -z "$FC" -o "$pac_cv_prog_fc_works" != yes ; then enable_fc=no fi fi dnl If enable_fc=yes up to this point then enable_f77=yes also dnl PAC_PROG_FC and PAC_PROG_FC_WORKS return OK if test "$enable_fc" = yes ; then # Make sure that the compilers are compatible. This # will also make sure that the program named in FC is # a working Fortran 90 compiler # Only check if we're *not* building within MPICH # (MPICH will have made the test) # FIXME: Do we want to check only simple routine names # (those without an underscore?) if test "$FROM_MPICH" != yes ; then PAC_FC_AND_F77_COMPATIBLE(enable_fc=yes,enable_fc=no) fi fi if test "$enable_fc" = yes ; then if test "$ac_fc_srcext" != "f90" ; then AC_LANG_PUSH([Fortran]) AC_FC_SRCEXT([f90],[ FCFLAGS="$FCFLAGS $FCFLAGS_f90" ],[ AC_MSG_WARN([Fortran 90 test being disabled because the $FC compiler does not accept a .f90 extension]) f90dir=# enable_fc=no ]) AC_LANG_POP([Fortran]) fi # The Fortran90 tests rely on free-form input which needs to be tested # before any test that may modify FCFLAGS, e.g. the cray-pointer test. # The order of the tests is important in compiler like g95. # Recent experience showed that the IBM xlf compiler, at least on # some systems, requires -qfree=f90 instead of -qfree . At this # writing (11/27/12), this Autoconf macro still uses -qfree and has # no mechanism for extension. This test may fail in that case; if # you encounter a problem, document it and submit it to the autoconf # bug list, not the MPICH bug list. AC_FC_FREEFORM # See if the compiler supports the Cray-style pointers ALLOCMEMFC="" PAC_PROG_FC_CRAY_POINTER([ ALLOCMEMFC="allocmemf90 1" FCFLAGS="$FCFLAGS $CRAYPTR_FCFLAGS" ]) AC_SUBST(ALLOCMEMFC) # Check for the new command line routines used in one of the spawn tests AC_LANG_PUSH([Fortran]) F03SPAWNARGTEST="" AC_MSG_CHECKING([whether $FC supports the Fortran 2003 routines to access the commandline]) AC_LINK_IFELSE([AC_LANG_PROGRAM([],[ character*64 s integer i i = command_argument_count() call get_command_argument(i,s) ])],[pac_cv_fc_has_args=yes],[pac_cv_fc_has_args=no]) AC_MSG_RESULT($pac_cv_fc_has_args) if test "$pac_cv_fc_has_args" != "yes" ; then F03SPAWNARGTEST="#" fi # F03SPAWNARGTEST is set to "#" to comment out tests in # f90/spawn/testlist.in that require Fortran 2003 features to # access the commandline AC_SUBST(F03SPAWNARGTEST) AC_LANG_POP([Fortran]) if test -f f77/init/checksizes.c ; then # If it is a VPATH build, f90/init may not be there. if test ! -d f90/init ; then mkdir f90 mkdir f90/init fi cp f77/init/checksizes.c f90/init fi # At least one of the Fortran 90 tests makes use of a module; this # allows us to find it to delete the created object file PAC_FC_MODULE fi # if test "$FROM_MPICH" = yes ; then if test "$enable_fc" = yes ; then otherlangs="$otherlangs f90" f90dir=f90 fi elif test "$enable_fc" = yes ; then AC_MSG_CHECKING([that we can build MPI programs with Fortran 90]) AC_LANG_PUSH([Fortran]) AC_LINK_IFELSE([ AC_LANG_SOURCE([ program main use mpi integer ierr call mpi_init(ierr) call mpi_finalize(ierr) end ]) ],[ AC_MSG_RESULT(yes) otherlangs="$otherlangs f90" f90dir=f90 ],[ AC_MSG_RESULT(no) ]) AC_LANG_POP([Fortran]) fi f08dir="#" AC_SUBST(f08dir) # FIXME if $FROM_MPICH is no, we should test build an MPI F08 program if test "$enable_f08" = "yes" -a "$FROM_MPICH" = "yes" ; then f08dir=f08 fi # Running C++ compiler tests PAC_PROG_CXX if test "$enable_cxx" = yes ; then if test -z "$CXX" ; then enable_cxx=no fi fi # Simple tests for which other languages we can handle cxxdir="#" # The C++ interface added support for the Distgraph routines in MPI-2.2, # but not all MPI implementations support that. nocxxdistgraph allows # us to detect that and to skip the test when it is not supported. nocxxdistgraph="#" AC_SUBST(cxxdir) if test "$FROM_MPICH" = yes ; then if test "$enable_cxx" = yes ; then otherlangs="$otherlangs cxx" cxxdir=cxx # MPICH ABI removed support for MPI::Distgraphcomm, so # nocxxdistgraph is left as #, which comments out the test # in cxx/topol/testlist.in fi elif test "$enable_cxx" = yes ; then AC_MSG_CHECKING([that we can build MPI programs with C++]) AC_LANG_PUSH([C++]) AC_LINK_IFELSE([ AC_LANG_PROGRAM([ #include "mpi.h" ],[ MPI::Init(); MPI::Finalize(); ]) ],[ AC_MSG_RESULT(yes) otherlangs="$otherlangs cxx" cxxdir=cxx ],[ AC_MSG_RESULT(no) ]) # Check for support of the Distgraphcomm, added in MPI 2.2. # Some MPI implementations may support MPI 2.2 or MPI 3.x, but not # support the Distgraphcomm C++ interface AC_MSG_CHECKING([whether MPI C++ includes Distgraphcomm]) AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([ #include "mpi.h" ],[ MPI::Distgraphcomm dcomm; MPI::Init(); MPI::Finalize(); ]) ],[ AC_MSG_RESULT(yes) nocxxdistgraph="" ],[ AC_MSG_RESULT(no) ]) AC_LANG_POP([C++]) fi AC_SUBST(nocxxdistgraph) if test "$enable_cxx" = yes ; then AC_CACHE_CHECK([whether available],pac_cv_cxx_has_iostream,[ AC_LANG_PUSH([C++]) AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([#include ],[using namespace std;]) ],[pac_cv_cxx_has_iostream=yes],[pac_cv_cxx_has_iostream=no]) ]) if test "$pac_cv_cxx_has_iostream" = yes ; then AC_DEFINE(HAVE_IOSTREAM,1,[Define if iostream is available]) else # Look for iostream.h (in C++ mode, we need the full name) AC_CHECK_HEADERS(iostream.h) if test "$ac_cv_header_iostream_h" != yes ; then AC_MSG_ERROR([C++ compiler $CXX $CXXFLAGS has neither iostream nor iostream.h.]) fi # Warning: the autoconf macros will fall back onto /lib/cpp for # C and C++ preprocessing *without* checking that /lib/cpp even # exists. if test "$CXXCPP" = "/lib/cpp" ; then if test ! -x "/lib/cpp" ; then AC_MSG_WARN([Warning: Autoconf error, could not find a C++ Preprocessor. Using false for the preprocessor so that tests will continue.]) CXXCPP=false fi fi fi AX_CXX_NAMESPACE_STD if test "$ac_cv_cxx_namespaces" != yes ; then AC_MSG_WARN([The compiler $CXX does not support C++ namespaces. This may cause problems for the tests]) fi AC_LANG_POP([C++]) fi AC_LANG_C # IO iodir="#" if test "$enable_romio" != no ; then iodir=io AC_DEFINE(HAVE_MPI_IO,1,[Define if MPI-IO (really ROMIO) is included]) if test "$FROM_MPICH" = yes ; then # MPICH no longer uses and MPIO_Request pac_cv_have_mpio_request=no else AC_CACHE_CHECK([whether MPIO_Request is defined for MPI IO], pac_cv_have_mpio_request,[ AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([#include "mpi.h"],[MPIO_Request r;]) ],[pac_cv_have_mpio_request=yes],[pac_cv_have_mpio_request=no]) ]) fi if test "$pac_cv_have_mpio_request" = no ; then AC_DEFINE(MPIO_USES_MPI_REQUEST,,[Define if MPI IO uses MPI_Request]) fi fi AC_SUBST(iodir) impldir="#" # # Check for implementation to enable implementation-specific options if test $enable_strictmpi != "yes" ; then # Is this MPICH? if test "$FROM_MPICH" = yes ; then impldir="mpich" else AC_CACHE_CHECK([Is the MPI derived from MPICH], pac_cv_ismpich,[ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include "mpi.h"],[return 1 + MPICH;]), pac_cv_ismpich=yes,pac_cv_ismpich=no])]) if test "$pac_cv_ismpich" = "yes" ; then impldir="mpich" fi fi fi AC_SUBST(impldir) # # MPI_INTEGER16 is mentioned in only one place in MPI 2.1, and some # implementations may have missed it. Check to see if it is available in # C. if test "$FROM_MPICH" = yes ; then # MPICH correctly includes this type. pac_cv_have_mpi_integer16=yes else AC_CACHE_CHECK([whether MPI_INTEGER16 is available], pac_cv_have_mpi_integer16,[ AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([#include "mpi.h"],[ MPI_Datatype t = MPI_INTEGER16; ]) ],[pac_cv_have_mpi_integer16=yes],[pac_cv_have_mpi_integer16=no]) ]) fi if test "$pac_cv_have_mpi_integer16" = yes ; then AC_DEFINE(HAVE_MPI_INTEGER16,1,[Define if MPI_INTEGER16 is available]) fi AC_CACHE_CHECK([whether MPI_2DOUBLE_COMPLEX is available], pac_cv_have_mpi_2double_complex,[ AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([#include "mpi.h"],[ MPI_Datatype t = MPI_2DOUBLE_COMPLEX; ]) ],[ pac_cv_have_mpi_2double_complex=yes ],[ pac_cv_have_mpi_2double_complex=no ]) ]) if test "$pac_cv_have_mpi_2double_complex" = yes ; then AC_DEFINE(HAVE_MPI_2DOUBLE_COMPLEX,1,[Define if MPI_2DOUBLE_COMPLEX is available]) fi # 2COMPLEX was in MPI 1.0 and removed after that. This allows us to # test 2COMPLEX if it is present AC_CACHE_CHECK([whether MPI_2COMPLEX is available], pac_cv_have_mpi_2complex,[ AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([#include "mpi.h"],[ MPI_Datatype t = MPI_2COMPLEX; ]) ],[ pac_cv_have_mpi_2complex=yes ],[ pac_cv_have_mpi_2complex=no ]) ]) if test "$pac_cv_have_mpi_2complex" = yes ; then AC_DEFINE(HAVE_MPI_2COMPLEX,1,[Define if MPI_2COMPLEX is available]) fi # MPI_Aint was intended as an address-sized int. However, MPI didn't # specify this - MPI_Aint must be large enough to hold an address-sized # integer, but it can be larger. To get clean compilation in some places, # we need a pointer-sized integer. The following code looks for one. # Make sure we are using the local C compiler (if the local # machine is different that the system that MPICC is for, then # set the cross-compilation feature) AC_CHECK_SIZEOF(void *) AC_CHECK_SIZEOF(int) AC_CHECK_SIZEOF(long) AC_CHECK_SIZEOF(long long) AC_CHECK_SIZEOF(short) POINTERINT=MPI_Aint AC_MSG_CHECKING([for C integer type of address size]) for type in int long long_long short ; do eval len=\$ac_cv_sizeof_$type if test "$len" = "$ac_cv_sizeof_void_p" ; then POINTERINT=`echo $type | sed -e 's/_/ /'` break fi done AC_MSG_RESULT($POINTERINT) AC_DEFINE_UNQUOTED(POINTERINT_t,$POINTERINT,[POINTERINT_t is a pointer-sized integer]) # Find perl; used to create some of the tests from template and # defintion files AC_PATH_PROG(PERL,perl) AC_SUBST(PERL) AC_SUBST(otherlangs) AC_SUBST(threadsdir) AC_SUBST(MPIEXEC) AC_SUBST(MAKE) if test -z "$MPILIBNAME" ; then MPILIBNAME=mpich ; fi AC_SUBST(MPILIBNAME) dnl MPI_SOURCE may be set as an environment variable giving the location dnl of the MPI implementation. This is used only in runtests to include dnl the location of the source of the MPI implementation into the XML dnl summary file AC_SUBST(MPI_SOURCE) if test "$FROM_MPICH" = yes ; then # Set compilers/flags to be substituted in output files, e.g. Makefiles. LDFLAGS="$saveLDFLAGS" # note that the default definition of bindir is # '${exec_prefix}/bin' # so even if prefix is set, exec prefix is not until # the very last moment (i.e., not here). if test "X$exec_prefix" = "XNONE" ; then saveExec_prefix=$exec_prefix if test "X$prefix" = "XNONE" ; then # Use the default exec_prefix=$ac_default_prefix else exec_prefix=$prefix fi # Evaluate with the current setting of exec_prefix eval mpibindir=${bindir} exec_prefix=$saveExec_prefix else eval mpibindir=${bindir} fi # we did our tests with the base compilers, now point the make system at the # installed compiler wrappers for actually building the tests CC=$mpibindir/$MPICC_NAME F77=$mpibindir/$MPIF77_NAME FC=$mpibindir/$MPIFORT_NAME CXX=$mpibindir/$MPICXX_NAME MPIEXEC=$mpibindir/$MPIEXEC_NAME # Zero out the flags, since they are already contained in the compiler # wrapper scripts. Note that this will kill any flags that have been added # to the xFLAGS only in this script. # # The only real flags we seem to add in this script relate to cray # pointer support in Fortran, so we include that var here where # appropriate. # # The other case are the performance tests - for datatype performance, # compiling with optimization is important. CFLAGS="" CPPFLAGS="" LDFLAGS="" LIBS="" FFLAGS="$CRAYPTR_FFLAGS" FCFLAGS="$CRAYPTR_FCFLAGS" CXXFLAGS="" else # We need either mpiexec or mpirun. If we don't find them, # the user will need to determine how to run a program AC_PATH_PROG(MPIEXEC,$MPIEXEC_NAME) fi AC_OUTPUT_COMMANDS([chmod a+x maint/testmerge]) AC_OUTPUT_COMMANDS([chmod a+x runtests checktests]) AC_OUTPUT_COMMANDS([chmod a+x manual/manyconnect]) AC_OUTPUT_COMMANDS([chmod a+x impls/hydra/proc_binding.sh]) dnl Note that this format for AC_OUTPUT can cause problems for autoconf dnl run under cygwin AC_OUTPUT(maint/testmerge \ runtests \ checktests \ Makefile \ basic/Makefile \ attr/Makefile \ util/Makefile \ coll/Makefile \ coll/testlist \ comm/Makefile \ datatype/Makefile \ datatype/testlist \ errhan/Makefile \ group/Makefile \ info/Makefile \ init/Makefile \ pt2pt/Makefile \ mpi_t/Makefile \ rma/Makefile \ rma/testlist \ spawn/Makefile \ spawn/testlist \ topo/Makefile \ io/Makefile \ io/testlist \ f77/Makefile \ f77/attr/Makefile \ f77/attr/attraints.h \ f77/pt2pt/attr1aints.h \ f77/ext/add1size.h \ f77/datatype/Makefile \ f77/datatype/typeaints.h \ f77/util/Makefile \ f77/coll/Makefile \ f77/comm/Makefile \ f77/topo/Makefile \ f77/init/Makefile \ f77/rma/addsize.h \ f77/pt2pt/Makefile \ f77/info/Makefile \ f77/spawn/Makefile \ f77/spawn/testlist \ f77/spawn/type1aint.h \ f77/rma/Makefile \ f77/ext/Makefile \ f77/ext/testlist \ f77/io/Makefile \ f77/io/iooffset.h \ f77/io/iodisp.h \ f77/io/ioaint.h \ f77/io/testlist \ f77/profile/Makefile \ f90/Makefile \ f90/attr/Makefile \ f90/datatype/Makefile \ f90/f90types/Makefile \ f90/util/Makefile \ f90/coll/Makefile \ f90/comm/Makefile \ f90/topo/Makefile \ f90/init/Makefile \ f90/pt2pt/Makefile \ f90/rma/Makefile \ f90/info/Makefile \ f90/spawn/Makefile \ f90/spawn/testlist \ f90/timer/Makefile \ f90/ext/Makefile \ f90/ext/testlist \ f90/io/Makefile \ f90/io/testlist \ f90/misc/Makefile \ f90/profile/Makefile \ f08/Makefile \ f08/attr/Makefile \ f08/datatype/Makefile \ f08/util/Makefile \ f08/coll/Makefile \ f08/comm/Makefile \ f08/pt2pt/Makefile \ f08/rma/Makefile \ f08/subarray/Makefile \ f08/topo/Makefile \ f08/io/Makefile \ f08/io/testlist \ f08/init/Makefile \ f08/info/Makefile \ f08/spawn/Makefile \ f08/spawn/testlist \ f08/timer/Makefile \ f08/ext/Makefile \ f08/misc/Makefile \ f08/profile/Makefile \ cxx/Makefile \ cxx/util/Makefile \ cxx/attr/Makefile \ cxx/pt2pt/Makefile \ cxx/comm/Makefile \ cxx/coll/Makefile \ cxx/errhan/Makefile \ cxx/info/Makefile \ cxx/datatype/Makefile \ cxx/io/Makefile \ cxx/init/Makefile \ cxx/rma/Makefile \ cxx/spawn/Makefile \ cxx/spawn/testlist \ cxx/topo/Makefile \ threads/Makefile \ threads/pt2pt/Makefile \ threads/util/Makefile \ threads/comm/Makefile \ threads/comm/testlist \ threads/init/Makefile \ threads/mpi_t/Makefile \ threads/spawn/Makefile \ threads/rma/Makefile \ threads/coll/Makefile \ threads/coll/testlist \ errors/Makefile \ errors/attr/Makefile \ errors/basic/Makefile \ errors/coll/Makefile \ errors/comm/Makefile \ errors/datatype/Makefile \ errors/faults/Makefile \ errors/group/Makefile \ errors/pt2pt/Makefile \ errors/rma/Makefile \ errors/spawn/Makefile \ errors/spawn/testlist \ errors/topo/Makefile \ errors/io/Makefile \ errors/cxx/Makefile \ errors/cxx/errhan/Makefile \ errors/cxx/io/Makefile \ errors/f77/Makefile \ errors/f77/io/Makefile \ errors/f77/io/addsize.h \ errors/f77/io/iooffset.h \ errors/f90/Makefile \ errors/f90/io/Makefile \ errors/f08/Makefile \ errors/f08/io/Makefile \ ckpoint/Makefile \ ft/Makefile \ manual/Makefile \ manual/manyconnect \ manual/mpi_t/Makefile \ perf/Makefile \ testlist \ cxx/testlist \ cxx/topo/testlist \ f77/testlist \ f90/testlist \ threads/testlist \ errors/testlist \ errors/cxx/testlist \ errors/f77/testlist \ errors/f90/testlist \ impls/testlist \ f77/rma/testlist \ f90/rma/testlist \ f08/rma/testlist \ impls/Makefile \ impls/hydra/Makefile \ impls/hydra/proc_binding.sh \ impls/mpich/Makefile \ impls/mpich/testlist \ impls/mpich/mpi_t/Makefile \ ) mpi-testsuite-3.2+dfsg/errhan/0000755000175000017500000000000012621010232015625 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/errhan/dynamic_errcode_predefined_errclass.c0000644000175000017500000000143012620254305025213 0ustar mbanckmbanck/* * (C) 2006 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. * * Portions of this code were written by Intel Corporation. * Copyright (C) 2011-2012 Intel Corporation. Intel provides this material * to Argonne National Laboratory subject to Software Grant and Corporate * Contributor License Agreement dated February 8, 2012. */ #include #include int main(int argc, char **argv) { int errcode, errclass; MPI_Init(&argc, &argv); MPI_Add_error_code(MPI_ERR_ARG, &errcode); MPI_Error_class(errcode, &errclass); if (errclass != MPI_ERR_ARG) { printf("ERROR: Got 0x%x, expected 0x%x\n", errclass, MPI_ERR_ARG); } else { printf(" No Errors\n"); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errhan/adderr.c0000644000175000017500000000363712620254305017255 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include "mpitestconf.h" #ifdef HAVE_STRING_H #include #endif /* Create NCLASSES new classes, each with 5 codes (160 total) */ #define NCLASSES 32 #define NCODES 5 int main(int argc, char *argv[]) { int errs = 0; char string[MPI_MAX_ERROR_STRING], outstring[MPI_MAX_ERROR_STRING]; int newclass[NCLASSES], newcode[NCLASSES][NCODES]; int i, j, slen, outclass; MTest_Init(&argc, &argv); /* Initialize the new codes */ for (i = 0; i < NCLASSES; i++) { MPI_Add_error_class(&newclass[i]); for (j = 0; j < NCODES; j++) { MPI_Add_error_code(newclass[i], &newcode[i][j]); sprintf(string, "code for class %d code %d\n", i, j); MPI_Add_error_string(newcode[i][j], string); } } /* check the values */ for (i = 0; i < NCLASSES; i++) { MPI_Error_class(newclass[i], &outclass); if (outclass != newclass[i]) { errs++; printf("Error class %d is not a valid error code %x %x\n", i, outclass, newclass[i]); } for (j = 0; j < NCODES; j++) { MPI_Error_class(newcode[i][j], &outclass); if (outclass != newclass[i]) { errs++; printf("Class of code for %d is not correct %x %x\n", j, outclass, newclass[i]); } MPI_Error_string(newcode[i][j], outstring, &slen); sprintf(string, "code for class %d code %d\n", i, j); if (strcmp(outstring, string)) { errs++; printf("Error string is :%s: but should be :%s:\n", outstring, string); } } } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errhan/errstring.c0000644000175000017500000000072712620254305020030 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include int main(int argc, char **argv) { char msg[MPI_MAX_ERROR_STRING + 1]; int i, len; MPI_Init(0, 0); for (i = 0; i < 54; i++) { MPI_Error_string(i, msg, &len); printf("msg for %d is %s\n", i, msg); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errhan/predef_eh.c0000644000175000017500000000174112620254305017727 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include "mpi.h" /* Ensure that setting a user-defined error handler on predefined * communicators does not cause a problem at finalize time. Regression * test for ticket #1591 */ void errf(MPI_Comm * comm, int *ec) { /* do nothing */ } int main(int argc, char **argv) { MPI_Errhandler errh; int wrank; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &wrank); MPI_Comm_create_errhandler((MPI_Comm_errhandler_function *) errf, &errh); MPI_Comm_set_errhandler(MPI_COMM_WORLD, errh); MPI_Comm_set_errhandler(MPI_COMM_SELF, errh); MPI_Errhandler_free(&errh); MPI_Finalize(); /* Test harness requirement is that only one process write No Errors */ if (wrank == 0) printf(" No Errors\n"); return 0; } mpi-testsuite-3.2+dfsg/errhan/commcall.c0000644000175000017500000000456112620254305017600 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test comm_call_errhandler"; */ static int calls = 0; static int errs = 0; static MPI_Comm mycomm; void eh(MPI_Comm * comm, int *err, ...); void eh(MPI_Comm * comm, int *err, ...) { if (*err != MPI_ERR_OTHER) { errs++; printf("Unexpected error code\n"); } if (*comm != mycomm) { errs++; printf("Unexpected communicator\n"); } calls++; return; } int main(int argc, char *argv[]) { MPI_Comm comm; MPI_Errhandler newerr; int i; int reset_handler; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; mycomm = comm; MPI_Comm_create_errhandler(eh, &newerr); MPI_Comm_set_errhandler(comm, newerr); MPI_Comm_call_errhandler(comm, MPI_ERR_OTHER); MPI_Errhandler_free(&newerr); if (calls != 1) { errs++; printf("Error handler not called\n"); } /* Here we apply the test to many copies of a communicator */ for (reset_handler = 0; reset_handler <= 1; ++reset_handler) { for (i = 0; i < 1000; i++) { MPI_Comm comm2; calls = 0; MPI_Comm_dup(MPI_COMM_WORLD, &comm); mycomm = comm; MPI_Comm_create_errhandler(eh, &newerr); MPI_Comm_set_errhandler(comm, newerr); MPI_Comm_call_errhandler(comm, MPI_ERR_OTHER); if (calls != 1) { errs++; printf("Error handler not called\n"); } MPI_Comm_dup(comm, &comm2); calls = 0; mycomm = comm2; /* comm2 must inherit the error handler from comm */ MPI_Comm_call_errhandler(comm2, MPI_ERR_OTHER); if (calls != 1) { errs++; printf("Error handler not called\n"); } if (reset_handler) { /* extra checking of the reference count handling */ MPI_Comm_set_errhandler(comm, MPI_ERRORS_ARE_FATAL); } MPI_Errhandler_free(&newerr); MPI_Comm_free(&comm); MPI_Comm_free(&comm2); } } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errhan/testlist0000644000175000017500000000020212620254305017427 0ustar mbanckmbanckadderr 1 commcall 2 errfatal 1 resultTest=TestErrFatal predef_eh 1 predef_eh 2 errstring2 1 dynamic_errcode_predefined_errclass 1 mpi-testsuite-3.2+dfsg/errhan/Makefile.in0000644000175000017500000006015712621010232017703 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = adderr$(EXEEXT) commcall$(EXEEXT) errfatal$(EXEEXT) \ predef_eh$(EXEEXT) errstring2$(EXEEXT) \ dynamic_errcode_predefined_errclass$(EXEEXT) EXTRA_PROGRAMS = errcode$(EXEEXT) errring$(EXEEXT) errstring$(EXEEXT) subdir = errhan ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) adderr_SOURCES = adderr.c adderr_OBJECTS = adderr.$(OBJEXT) adderr_LDADD = $(LDADD) adderr_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o commcall_SOURCES = commcall.c commcall_OBJECTS = commcall.$(OBJEXT) commcall_LDADD = $(LDADD) commcall_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o dynamic_errcode_predefined_errclass_SOURCES = \ dynamic_errcode_predefined_errclass.c dynamic_errcode_predefined_errclass_OBJECTS = \ dynamic_errcode_predefined_errclass.$(OBJEXT) dynamic_errcode_predefined_errclass_LDADD = $(LDADD) dynamic_errcode_predefined_errclass_DEPENDENCIES = \ $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_errcode_OBJECTS = errcode.$(OBJEXT) errmsg.$(OBJEXT) errcode_OBJECTS = $(am_errcode_OBJECTS) errcode_LDADD = $(LDADD) errcode_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o errfatal_SOURCES = errfatal.c errfatal_OBJECTS = errfatal.$(OBJEXT) errfatal_LDADD = $(LDADD) errfatal_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o errring_SOURCES = errring.c errring_OBJECTS = errring.$(OBJEXT) errring_LDADD = $(LDADD) errring_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o errstring_SOURCES = errstring.c errstring_OBJECTS = errstring.$(OBJEXT) errstring_LDADD = $(LDADD) errstring_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o errstring2_SOURCES = errstring2.c errstring2_OBJECTS = errstring2.$(OBJEXT) errstring2_LDADD = $(LDADD) errstring2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o predef_eh_SOURCES = predef_eh.c predef_eh_OBJECTS = predef_eh.$(OBJEXT) predef_eh_LDADD = $(LDADD) predef_eh_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = adderr.c commcall.c dynamic_errcode_predefined_errclass.c \ $(errcode_SOURCES) errfatal.c errring.c errstring.c \ errstring2.c predef_eh.c DIST_SOURCES = adderr.c commcall.c \ dynamic_errcode_predefined_errclass.c $(errcode_SOURCES) \ errfatal.c errring.c errstring.c errstring2.c predef_eh.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.mtest \ $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist errcode_SOURCES = errcode.c errmsg.c all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign errhan/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign errhan/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) adderr$(EXEEXT): $(adderr_OBJECTS) $(adderr_DEPENDENCIES) $(EXTRA_adderr_DEPENDENCIES) @rm -f adderr$(EXEEXT) $(AM_V_CCLD)$(LINK) $(adderr_OBJECTS) $(adderr_LDADD) $(LIBS) commcall$(EXEEXT): $(commcall_OBJECTS) $(commcall_DEPENDENCIES) $(EXTRA_commcall_DEPENDENCIES) @rm -f commcall$(EXEEXT) $(AM_V_CCLD)$(LINK) $(commcall_OBJECTS) $(commcall_LDADD) $(LIBS) dynamic_errcode_predefined_errclass$(EXEEXT): $(dynamic_errcode_predefined_errclass_OBJECTS) $(dynamic_errcode_predefined_errclass_DEPENDENCIES) $(EXTRA_dynamic_errcode_predefined_errclass_DEPENDENCIES) @rm -f dynamic_errcode_predefined_errclass$(EXEEXT) $(AM_V_CCLD)$(LINK) $(dynamic_errcode_predefined_errclass_OBJECTS) $(dynamic_errcode_predefined_errclass_LDADD) $(LIBS) errcode$(EXEEXT): $(errcode_OBJECTS) $(errcode_DEPENDENCIES) $(EXTRA_errcode_DEPENDENCIES) @rm -f errcode$(EXEEXT) $(AM_V_CCLD)$(LINK) $(errcode_OBJECTS) $(errcode_LDADD) $(LIBS) errfatal$(EXEEXT): $(errfatal_OBJECTS) $(errfatal_DEPENDENCIES) $(EXTRA_errfatal_DEPENDENCIES) @rm -f errfatal$(EXEEXT) $(AM_V_CCLD)$(LINK) $(errfatal_OBJECTS) $(errfatal_LDADD) $(LIBS) errring$(EXEEXT): $(errring_OBJECTS) $(errring_DEPENDENCIES) $(EXTRA_errring_DEPENDENCIES) @rm -f errring$(EXEEXT) $(AM_V_CCLD)$(LINK) $(errring_OBJECTS) $(errring_LDADD) $(LIBS) errstring$(EXEEXT): $(errstring_OBJECTS) $(errstring_DEPENDENCIES) $(EXTRA_errstring_DEPENDENCIES) @rm -f errstring$(EXEEXT) $(AM_V_CCLD)$(LINK) $(errstring_OBJECTS) $(errstring_LDADD) $(LIBS) errstring2$(EXEEXT): $(errstring2_OBJECTS) $(errstring2_DEPENDENCIES) $(EXTRA_errstring2_DEPENDENCIES) @rm -f errstring2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(errstring2_OBJECTS) $(errstring2_LDADD) $(LIBS) predef_eh$(EXEEXT): $(predef_eh_OBJECTS) $(predef_eh_DEPENDENCIES) $(EXTRA_predef_eh_DEPENDENCIES) @rm -f predef_eh$(EXEEXT) $(AM_V_CCLD)$(LINK) $(predef_eh_OBJECTS) $(predef_eh_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/adderr.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/commcall.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dynamic_errcode_predefined_errclass.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/errcode.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/errfatal.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/errmsg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/errring.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/errstring.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/errstring2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/predef_eh.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/errhan/errmsg.c0000644000175000017500000000143312620254305017303 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include "mpi.h" void ChkMsg(int, int, const char[]); /* * This routine is used to check the message associated with an error * code. Currently, it uses MPI_Error_string to get the corresponding * message for a code, and prints out the cooresponding class and original * message. * * Eventually, we should also access the generic anc specific messages * separately. */ void ChkMsg(int err, int msgclass, const char msg[]) { char errmsg[MPI_MAX_ERROR_STRING]; int len; MPI_Error_string(err, errmsg, &len); fprintf(stdout, "[0x%08x] %2d %s \tgives %s\n", err, msgclass, msg, errmsg); } mpi-testsuite-3.2+dfsg/errhan/errstring2.c0000644000175000017500000000102312620254305020100 0ustar mbanckmbanck#include #include #include int main(int argc, char *argv[]) { int errorclass; char errorstring[MPI_MAX_ERROR_STRING] = { 64, 0 }; int slen; MPI_Init(&argc, &argv); MPI_Add_error_class(&errorclass); MPI_Error_string(errorclass, errorstring, &slen); if (strncmp(errorstring, "", 1)) { fprintf(stderr, "errorclass:%d errorstring:'%s' len:%d\n", errorclass, errorstring, slen); } else { printf(" No Errors\n"); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errhan/Makefile.am0000644000175000017500000000134412620254305017675 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile.mtest EXTRA_DIST = testlist ## for all programs that are just built from the single corresponding source ## file, we don't need per-target _SOURCES rules, automake will infer them ## correctly ## We must not list the EXTRA_PROGRAMS in the noinst_PROGRAMS list because ## doing so will include them in the default targets noinst_PROGRAMS = \ adderr \ commcall \ errfatal \ predef_eh \ errstring2 \ dynamic_errcode_predefined_errclass EXTRA_PROGRAMS = errcode errring errstring errcode_SOURCES = errcode.c errmsg.c mpi-testsuite-3.2+dfsg/errhan/errcode.c0000644000175000017500000155413112621010147017433 0ustar mbanckmbanck/* -*- Mode: C++; c-basic-offset:4 ; -*- */ /* * (C) 2004 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. * * This file is automatically generated by maint/extracterrmsgs * DO NOT EDIT */ #include #include #include "mpi.h" #define MPIR_ERR_FATAL 1 #define MPIR_ERR_RECOVERABLE 0 int MPIR_Err_create_code( int, int, char *, int, int, const char [], const char [], ... ); void ChkMsg( int, int, const char [] ); int main(int argc, char **argv) { int err; MPI_Init( 0, 0 ); /* src/mpi/topo/inhb_allgather.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_ineighbor_allgather", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_ineighbor_allgather" ); { /* src/mpi/topo/inhb_allgather.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; char s4[] = "pointer4"; int i5 = 5; int i6 = MPI_INT; int i7 = MPI_COMM_WORLD; char s8[] = "pointer8"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_ineighbor_allgather", "**mpi_ineighbor_allgather %p %d %D %p %d %D %C %p", s1, i2, i3, s4, i5, i6, i7, s8 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_ineighbor_allgather %p %d %D %p %d %D %C %p" ); } /* src/mpi/topo/cart_map.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**topotoolarge", 0); ChkMsg( err, MPI_ERR_OTHER, "**topotoolarge" ); { /* src/mpi/topo/cart_map.c */ int i1 = 1; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**topotoolarge", "**topotoolarge %d %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**topotoolarge %d %d" ); } /* src/mpi/topo/cart_map.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**dims", 0); ChkMsg( err, MPI_ERR_OTHER, "**dims" ); { /* src/mpi/topo/cart_map.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**dims", "**dims %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**dims %d" ); } /* src/mpi/topo/cart_map.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_cart_map", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_cart_map" ); { /* src/mpi/topo/cart_map.c */ int i1 = MPI_COMM_WORLD; int i2 = 2; char s3[] = "pointer3"; char s4[] = "pointer4"; char s5[] = "pointer5"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_cart_map", "**mpi_cart_map %C %d %p %p %p", i1, i2, s3, s4, s5 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_cart_map %C %d %p %p %p" ); } /* src/mpi/topo/graphnbrcnt.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**notgraphtopo", 0); ChkMsg( err, MPI_ERR_OTHER, "**notgraphtopo" ); /* src/mpi/topo/graphnbrcnt.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**rank", 0); ChkMsg( err, MPI_ERR_OTHER, "**rank" ); { /* src/mpi/topo/graphnbrcnt.c */ int i1 = 1; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**rank", "**rank %d %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**rank %d %d" ); } /* src/mpi/topo/graphnbrcnt.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_graph_neighbors_count", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_graph_neighbors_count" ); { /* src/mpi/topo/graphnbrcnt.c */ int i1 = MPI_COMM_WORLD; int i2 = 2; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_graph_neighbors_count", "**mpi_graph_neighbors_count %C %d %p", i1, i2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_graph_neighbors_count %C %d %p" ); } /* src/mpi/topo/inhb_allgatherv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_ineighbor_allgatherv", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_ineighbor_allgatherv" ); { /* src/mpi/topo/inhb_allgatherv.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; char s4[] = "pointer4"; char s5[] = "pointer5"; char s6[] = "pointer6"; int i7 = MPI_INT; int i8 = MPI_COMM_WORLD; char s9[] = "pointer9"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_ineighbor_allgatherv", "**mpi_ineighbor_allgatherv %p %d %D %p %p %p %D %C %p", s1, i2, i3, s4, s5, s6, i7, i8, s9 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_ineighbor_allgatherv %p %d %D %p %p %p %D %C %p" ); } /* src/mpi/topo/cart_create.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**cartdim", 0); ChkMsg( err, MPI_ERR_OTHER, "**cartdim" ); { /* src/mpi/topo/cart_create.c */ int i1 = 1; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**cartdim", "**cartdim %d %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**cartdim %d %d" ); } /* src/mpi/topo/cart_create.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_cart_create", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_cart_create" ); { /* src/mpi/topo/cart_create.c */ int i1 = MPI_COMM_WORLD; int i2 = 2; char s3[] = "pointer3"; char s4[] = "pointer4"; int i5 = 5; char s6[] = "pointer6"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_cart_create", "**mpi_cart_create %C %d %p %p %d %p", i1, i2, s3, s4, i5, s6 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_cart_create %C %d %p %p %d %p" ); } /* src/mpi/topo/graph_nbr.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_graph_neighbors", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_graph_neighbors" ); { /* src/mpi/topo/graph_nbr.c */ int i1 = MPI_COMM_WORLD; int i2 = 2; int i3 = 3; char s4[] = "pointer4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_graph_neighbors", "**mpi_graph_neighbors %C %d %d %p", i1, i2, i3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_graph_neighbors %C %d %d %p" ); } /* src/mpi/topo/nhb_allgather.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_neighbor_allgather", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_neighbor_allgather" ); { /* src/mpi/topo/nhb_allgather.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; char s4[] = "pointer4"; int i5 = 5; int i6 = MPI_INT; int i7 = MPI_COMM_WORLD; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_neighbor_allgather", "**mpi_neighbor_allgather %p %d %D %p %d %D %C", s1, i2, i3, s4, i5, i6, i7 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_neighbor_allgather %p %d %D %p %d %D %C" ); } /* src/mpi/topo/dist_gr_neighb_count.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**notdistgraphtopo", 0); ChkMsg( err, MPI_ERR_OTHER, "**notdistgraphtopo" ); /* src/mpi/topo/dist_gr_neighb_count.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_dist_graph_neighbors_count", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_dist_graph_neighbors_count" ); { /* src/mpi/topo/dist_gr_neighb_count.c */ int i1 = MPI_COMM_WORLD; char s2[] = "pointer2"; char s3[] = "pointer3"; char s4[] = "pointer4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_dist_graph_neighbors_count", "**mpi_dist_graph_neighbors_count %C %p %p %p", i1, s2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_dist_graph_neighbors_count %C %p %p %p" ); } /* src/mpi/topo/nhb_alltoallw.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_neighbor_alltoallw", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_neighbor_alltoallw" ); { /* src/mpi/topo/nhb_alltoallw.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; char s3[] = "pointer3"; char s4[] = "pointer4"; char s5[] = "pointer5"; char s6[] = "pointer6"; char s7[] = "pointer7"; char s8[] = "pointer8"; int i9 = MPI_COMM_WORLD; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_neighbor_alltoallw", "**mpi_neighbor_alltoallw %p %p %p %p %p %p %p %p %C", s1, s2, s3, s4, s5, s6, s7, s8, i9 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_neighbor_alltoallw %p %p %p %p %p %p %p %p %C" ); } /* src/mpi/topo/graphdimsget.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_graphdims_get", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_graphdims_get" ); { /* src/mpi/topo/graphdimsget.c */ int i1 = MPI_COMM_WORLD; char s2[] = "pointer2"; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_graphdims_get", "**mpi_graphdims_get %C %p %p", i1, s2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_graphdims_get %C %p %p" ); } /* src/mpi/topo/dist_gr_create_adj.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**unweightedboth", 0); ChkMsg( err, MPI_ERR_OTHER, "**unweightedboth" ); /* src/mpi/topo/dist_gr_create_adj.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_dist_graph_create_adjacent", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_dist_graph_create_adjacent" ); { /* src/mpi/topo/dist_gr_create_adj.c */ int i1 = MPI_COMM_WORLD; int i2 = 2; char s3[] = "pointer3"; char s4[] = "pointer4"; int i5 = 5; char s6[] = "pointer6"; char s7[] = "pointer7"; int i8 = MPI_INFO_NULL; int i9 = 9; char s10[] = "pointer10"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_dist_graph_create_adjacent", "**mpi_dist_graph_create_adjacent %C %d %p %p %d %p %p %I %d %p", i1, i2, s3, s4, i5, s6, s7, i8, i9, s10 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_dist_graph_create_adjacent %C %d %p %p %d %p %p %I %d %p" ); } /* src/mpi/topo/dist_gr_neighb.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**argtoosmall", 0); ChkMsg( err, MPI_ERR_OTHER, "**argtoosmall" ); { /* src/mpi/topo/dist_gr_neighb.c */ char s1[] = "string1"; int i2 = 2; int i3 = 3; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**argtoosmall", "**argtoosmall %s %d %d", s1, i2, i3 ); ChkMsg( err, MPI_ERR_OTHER, "**argtoosmall %s %d %d" ); } /* src/mpi/topo/dist_gr_neighb.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_dist_graph_neighbors", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_dist_graph_neighbors" ); { /* src/mpi/topo/dist_gr_neighb.c */ int i1 = MPI_COMM_WORLD; int i2 = 2; char s3[] = "pointer3"; char s4[] = "pointer4"; int i5 = 5; char s6[] = "pointer6"; char s7[] = "pointer7"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_dist_graph_neighbors", "**mpi_dist_graph_neighbors %C %d %p %p %d %p %p", i1, i2, s3, s4, i5, s6, s7 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_dist_graph_neighbors %C %d %p %p %d %p %p" ); } /* src/mpi/topo/inhb_alltoall.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_ineighbor_alltoall", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_ineighbor_alltoall" ); { /* src/mpi/topo/inhb_alltoall.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; char s4[] = "pointer4"; int i5 = 5; int i6 = MPI_INT; int i7 = MPI_COMM_WORLD; char s8[] = "pointer8"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_ineighbor_alltoall", "**mpi_ineighbor_alltoall %p %d %D %p %d %D %C %p", s1, i2, i3, s4, i5, i6, i7, s8 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_ineighbor_alltoall %p %d %D %p %d %D %C %p" ); } /* src/mpi/topo/nhb_alltoall.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_neighbor_alltoall", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_neighbor_alltoall" ); { /* src/mpi/topo/nhb_alltoall.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; char s4[] = "pointer4"; int i5 = 5; int i6 = MPI_INT; int i7 = MPI_COMM_WORLD; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_neighbor_alltoall", "**mpi_neighbor_alltoall %p %d %D %p %d %D %C", s1, i2, i3, s4, i5, i6, i7 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_neighbor_alltoall %p %d %D %p %d %D %C" ); } /* src/mpi/topo/cartdim_get.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**notcarttopo", 0); ChkMsg( err, MPI_ERR_OTHER, "**notcarttopo" ); /* src/mpi/topo/cartdim_get.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_cartdim_get", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_cartdim_get" ); { /* src/mpi/topo/cartdim_get.c */ int i1 = MPI_COMM_WORLD; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_cartdim_get", "**mpi_cartdim_get %C %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_cartdim_get %C %p" ); } /* src/mpi/topo/dist_gr_create.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**coll_fail", 0); ChkMsg( err, MPI_ERR_OTHER, "**coll_fail" ); /* src/mpi/topo/dist_gr_create.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**nomem", 0); ChkMsg( err, MPI_ERR_OTHER, "**nomem" ); /* src/mpi/topo/dist_gr_create.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_dist_graph_create", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_dist_graph_create" ); { /* src/mpi/topo/dist_gr_create.c */ int i1 = MPI_COMM_WORLD; int i2 = 2; char s3[] = "pointer3"; char s4[] = "pointer4"; char s5[] = "pointer5"; char s6[] = "pointer6"; int i7 = MPI_INFO_NULL; int i8 = 8; char s9[] = "pointer9"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_dist_graph_create", "**mpi_dist_graph_create %C %d %p %p %p %p %I %d %p", i1, i2, s3, s4, s5, s6, i7, i8, s9 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_dist_graph_create %C %d %p %p %p %p %I %d %p" ); } /* src/mpi/topo/dims_create.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**argarrayneg", 0); ChkMsg( err, MPI_ERR_OTHER, "**argarrayneg" ); { /* src/mpi/topo/dims_create.c */ char s1[] = "string1"; int i2 = 2; int i3 = 3; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**argarrayneg", "**argarrayneg %s %d %d", s1, i2, i3 ); ChkMsg( err, MPI_ERR_OTHER, "**argarrayneg %s %d %d" ); } /* src/mpi/topo/dims_create.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**dimspartition", 0); ChkMsg( err, MPI_ERR_OTHER, "**dimspartition" ); /* src/mpi/topo/dims_create.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**dimsmany", 0); ChkMsg( err, MPI_ERR_OTHER, "**dimsmany" ); { /* src/mpi/topo/dims_create.c */ int i1 = 1; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**dimsmany", "**dimsmany %d %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**dimsmany %d %d" ); } /* src/mpi/topo/dims_create.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_dims_create", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_dims_create" ); { /* src/mpi/topo/dims_create.c */ int i1 = 1; int i2 = 2; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_dims_create", "**mpi_dims_create %d %d %p", i1, i2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_dims_create %d %d %p" ); } /* src/mpi/topo/cart_coords.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_cart_coords", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_cart_coords" ); { /* src/mpi/topo/cart_coords.c */ int i1 = MPI_COMM_WORLD; int i2 = 2; int i3 = 3; char s4[] = "pointer4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_cart_coords", "**mpi_cart_coords %C %d %d %p", i1, i2, i3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_cart_coords %C %d %d %p" ); } /* src/mpi/topo/graph_map.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**graphnnodes", 0); ChkMsg( err, MPI_ERR_OTHER, "**graphnnodes" ); /* src/mpi/topo/graph_map.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_graph_map", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_graph_map" ); { /* src/mpi/topo/graph_map.c */ int i1 = MPI_COMM_WORLD; int i2 = 2; char s3[] = "pointer3"; char s4[] = "pointer4"; char s5[] = "pointer5"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_graph_map", "**mpi_graph_map %C %d %p %p %p", i1, i2, s3, s4, s5 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_graph_map %C %d %p %p %p" ); } /* src/mpi/topo/graphcreate.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_graph_create", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_graph_create" ); { /* src/mpi/topo/graphcreate.c */ int i1 = MPI_COMM_WORLD; int i2 = 2; char s3[] = "pointer3"; char s4[] = "pointer4"; int i5 = 5; char s6[] = "pointer6"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_graph_create", "**mpi_graph_create %C %d %p %p %d %p", i1, i2, s3, s4, i5, s6 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_graph_create %C %d %p %p %d %p" ); } /* src/mpi/topo/graphcreate.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**indexneg", 0); ChkMsg( err, MPI_ERR_OTHER, "**indexneg" ); { /* src/mpi/topo/graphcreate.c */ int i1 = 1; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**indexneg", "**indexneg %d %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**indexneg %d %d" ); } /* src/mpi/topo/graphcreate.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**indexnonmonotone", 0); ChkMsg( err, MPI_ERR_OTHER, "**indexnonmonotone" ); { /* src/mpi/topo/graphcreate.c */ int i1 = 1; int i2 = 2; int i3 = 3; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**indexnonmonotone", "**indexnonmonotone %d %d %d", i1, i2, i3 ); ChkMsg( err, MPI_ERR_OTHER, "**indexnonmonotone %d %d %d" ); } /* src/mpi/topo/graphcreate.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**edgeoutrange", 0); ChkMsg( err, MPI_ERR_OTHER, "**edgeoutrange" ); { /* src/mpi/topo/graphcreate.c */ int i1 = 1; int i2 = 2; int i3 = 3; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**edgeoutrange", "**edgeoutrange %d %d %d", i1, i2, i3 ); ChkMsg( err, MPI_ERR_OTHER, "**edgeoutrange %d %d %d" ); } /* src/mpi/topo/topo_test.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_topo_test", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_topo_test" ); { /* src/mpi/topo/topo_test.c */ int i1 = MPI_COMM_WORLD; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_topo_test", "**mpi_topo_test %C %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_topo_test %C %p" ); } /* src/mpi/topo/cart_shift.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**dimszero", 0); ChkMsg( err, MPI_ERR_OTHER, "**dimszero" ); /* src/mpi/topo/cart_shift.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_cart_shift", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_cart_shift" ); { /* src/mpi/topo/cart_shift.c */ int i1 = MPI_COMM_WORLD; int i2 = 2; int i3 = 3; char s4[] = "pointer4"; char s5[] = "pointer5"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_cart_shift", "**mpi_cart_shift %C %d %d %p %p", i1, i2, i3, s4, s5 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_cart_shift %C %d %d %p %p" ); } /* src/mpi/topo/cart_rank.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**cartcoordinvalid", 0); ChkMsg( err, MPI_ERR_OTHER, "**cartcoordinvalid" ); { /* src/mpi/topo/cart_rank.c */ int i1 = 1; int i2 = 2; int i3 = 3; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**cartcoordinvalid", "**cartcoordinvalid %d %d %d", i1, i2, i3 ); ChkMsg( err, MPI_ERR_OTHER, "**cartcoordinvalid %d %d %d" ); } /* src/mpi/topo/cart_rank.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_cart_rank", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_cart_rank" ); { /* src/mpi/topo/cart_rank.c */ int i1 = MPI_COMM_WORLD; char s2[] = "pointer2"; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_cart_rank", "**mpi_cart_rank %C %p %p", i1, s2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_cart_rank %C %p %p" ); } /* src/mpi/topo/nhb_alltoallv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_neighbor_alltoallv", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_neighbor_alltoallv" ); { /* src/mpi/topo/nhb_alltoallv.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; char s3[] = "pointer3"; int i4 = MPI_INT; char s5[] = "pointer5"; char s6[] = "pointer6"; char s7[] = "pointer7"; int i8 = MPI_INT; int i9 = MPI_COMM_WORLD; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_neighbor_alltoallv", "**mpi_neighbor_alltoallv %p %p %p %D %p %p %p %D %C", s1, s2, s3, i4, s5, s6, s7, i8, i9 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_neighbor_alltoallv %p %p %p %D %p %p %p %D %C" ); } /* src/mpi/topo/nhb_allgatherv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_neighbor_allgatherv", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_neighbor_allgatherv" ); { /* src/mpi/topo/nhb_allgatherv.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; char s4[] = "pointer4"; char s5[] = "pointer5"; char s6[] = "pointer6"; int i7 = MPI_INT; int i8 = MPI_COMM_WORLD; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_neighbor_allgatherv", "**mpi_neighbor_allgatherv %p %d %D %p %p %p %D %C", s1, i2, i3, s4, s5, s6, i7, i8 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_neighbor_allgatherv %p %d %D %p %p %p %D %C" ); } /* src/mpi/topo/inhb_alltoallw.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_ineighbor_alltoallw", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_ineighbor_alltoallw" ); { /* src/mpi/topo/inhb_alltoallw.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; char s3[] = "pointer3"; char s4[] = "pointer4"; char s5[] = "pointer5"; char s6[] = "pointer6"; char s7[] = "pointer7"; char s8[] = "pointer8"; int i9 = MPI_COMM_WORLD; char s10[] = "pointer10"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_ineighbor_alltoallw", "**mpi_ineighbor_alltoallw %p %p %p %p %p %p %p %p %C %p", s1, s2, s3, s4, s5, s6, s7, s8, i9, s10 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_ineighbor_alltoallw %p %p %p %p %p %p %p %p %C %p" ); } /* src/mpi/topo/inhb_alltoallv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_ineighbor_alltoallv", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_ineighbor_alltoallv" ); { /* src/mpi/topo/inhb_alltoallv.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; char s3[] = "pointer3"; int i4 = MPI_INT; char s5[] = "pointer5"; char s6[] = "pointer6"; char s7[] = "pointer7"; int i8 = MPI_INT; int i9 = MPI_COMM_WORLD; char s10[] = "pointer10"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_ineighbor_alltoallv", "**mpi_ineighbor_alltoallv %p %p %p %D %p %p %p %D %C %p", s1, s2, s3, i4, s5, s6, s7, i8, i9, s10 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_ineighbor_alltoallv %p %p %p %D %p %p %p %D %C %p" ); } /* src/mpi/topo/cart_get.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_cart_get", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_cart_get" ); { /* src/mpi/topo/cart_get.c */ int i1 = MPI_COMM_WORLD; int i2 = 2; char s3[] = "pointer3"; char s4[] = "pointer4"; char s5[] = "pointer5"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_cart_get", "**mpi_cart_get %C %d %p %p %p", i1, i2, s3, s4, s5 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_cart_get %C %d %p %p %p" ); } /* src/mpi/topo/graph_get.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_graph_get", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_graph_get" ); { /* src/mpi/topo/graph_get.c */ int i1 = MPI_COMM_WORLD; int i2 = 2; int i3 = 3; char s4[] = "pointer4"; char s5[] = "pointer5"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_graph_get", "**mpi_graph_get %C %d %d %p %p", i1, i2, i3, s4, s5 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_graph_get %C %d %d %p %p" ); } /* src/mpi/topo/cart_sub.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**notopology", 0); ChkMsg( err, MPI_ERR_OTHER, "**notopology" ); /* src/mpi/topo/cart_sub.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_cart_sub", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_cart_sub" ); { /* src/mpi/topo/cart_sub.c */ int i1 = MPI_COMM_WORLD; char s2[] = "pointer2"; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_cart_sub", "**mpi_cart_sub %C %p %p", i1, s2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_cart_sub %C %p %p" ); } /* src/mpi/init/async.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**cond_create", 0); ChkMsg( err, MPI_ERR_OTHER, "**cond_create" ); { /* src/mpi/init/async.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**cond_create", "**cond_create %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**cond_create %s" ); } /* src/mpi/init/async.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mutex_create", 0); ChkMsg( err, MPI_ERR_OTHER, "**mutex_create" ); { /* src/mpi/init/async.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mutex_create", "**mutex_create %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mutex_create %s" ); } /* src/mpi/init/initthread.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**inittwice", 0); ChkMsg( err, MPI_ERR_OTHER, "**inittwice" ); /* src/mpi/init/initthread.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_init_thread", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_init_thread" ); { /* src/mpi/init/initthread.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; int i3 = 3; char s4[] = "pointer4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_init_thread", "**mpi_init_thread %p %p %d %p", s1, s2, i3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_init_thread %p %p %d %p" ); } /* src/mpi/init/initialized.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_initialized", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_initialized" ); { /* src/mpi/init/initialized.c */ char s1[] = "pointer1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_initialized", "**mpi_initialized %p", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_initialized %p" ); } /* src/mpi/init/finalized.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_finalized", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_finalized" ); { /* src/mpi/init/finalized.c */ char s1[] = "pointer1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_finalized", "**mpi_finalized %p", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_finalized %p" ); } /* src/mpi/init/ismain.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_is_thread_main", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_is_thread_main" ); { /* src/mpi/init/ismain.c */ char s1[] = "pointer1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_is_thread_main", "**mpi_is_thread_main %p", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_is_thread_main %p" ); } /* src/mpi/init/init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_init", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_init" ); { /* src/mpi/init/init.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_init", "**mpi_init %p %p", s1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_init %p %p" ); } /* src/mpi/init/finalize.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_finalize", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_finalize" ); /* src/mpi/init/abort.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_abort", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_abort" ); { /* src/mpi/init/abort.c */ int i1 = MPI_COMM_WORLD; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_abort", "**mpi_abort %C %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_abort %C %d" ); } /* src/mpi/init/querythread.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_query_thread", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_query_thread" ); { /* src/mpi/init/querythread.c */ char s1[] = "pointer1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_query_thread", "**mpi_query_thread %p", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_query_thread %p" ); } /* src/mpi/romio/adio/ad_panfs/ad_panfs_resize.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**io", 0); ChkMsg( err, MPI_ERR_OTHER, "**io" ); { /* src/mpi/romio/adio/ad_panfs/ad_panfs_resize.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**io", "**io %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**io %s" ); } { /* src/mpi/romio/adio/ad_ntfs/ad_ntfs_write.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**nomem", "**nomem %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**nomem %s" ); } /* src/mpi/romio/adio/ad_ntfs/ad_ntfs_iwrite.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_grequest_complete", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_grequest_complete" ); /* src/mpi/romio/adio/ad_ntfs/ad_ntfs_fcntl.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**flag", 0); ChkMsg( err, MPI_ERR_OTHER, "**flag" ); { /* src/mpi/romio/adio/ad_ntfs/ad_ntfs_fcntl.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**flag", "**flag %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**flag %d" ); } /* src/mpi/romio/adio/include/adioi_error.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**iobadfh", 0); ChkMsg( err, MPI_ERR_OTHER, "**iobadfh" ); /* src/mpi/romio/adio/include/adioi_error.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**commnull", 0); ChkMsg( err, MPI_ERR_OTHER, "**commnull" ); /* src/mpi/romio/adio/include/adioi_error.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**iobadcount", 0); ChkMsg( err, MPI_ERR_OTHER, "**iobadcount" ); /* src/mpi/romio/adio/include/adioi_error.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**dtypenull", 0); ChkMsg( err, MPI_ERR_OTHER, "**dtypenull" ); /* src/mpi/romio/adio/include/adioi_error.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**iowronly", 0); ChkMsg( err, MPI_ERR_OTHER, "**iowronly" ); /* src/mpi/romio/adio/include/adioi_error.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**iordonly", 0); ChkMsg( err, MPI_ERR_OTHER, "**iordonly" ); /* src/mpi/romio/adio/include/adioi_error.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ioamodeseq", 0); ChkMsg( err, MPI_ERR_OTHER, "**ioamodeseq" ); /* src/mpi/romio/adio/include/adioi_error.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ioetype", 0); ChkMsg( err, MPI_ERR_OTHER, "**ioetype" ); /* src/mpi/romio/adio/include/adioi_error.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**iosharedunsupported", 0); ChkMsg( err, MPI_ERR_OTHER, "**iosharedunsupported" ); /* src/mpi/romio/adio/include/adioi_error.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "System call I/O error", 0); ChkMsg( err, MPI_ERR_OTHER, "System call I/O error" ); { /* src/mpi/romio/adio/include/adioi_error.h */ char s1[] = "string1"; char s2[] = "string2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "System call I/O error", "Syscall error from %s: %s", s1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "Syscall error from %s: %s" ); } /* src/mpi/romio/adio/include/adioi_error.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Value for info key not same across processes", 0); ChkMsg( err, MPI_ERR_OTHER, "Value for info key not same across processes" ); { /* src/mpi/romio/adio/include/adioi_error.h */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Value for info key not same across processes", "Value for info key %s not same across processes", s1 ); ChkMsg( err, MPI_ERR_OTHER, "Value for info key %s not same across processes" ); } /* src/mpi/romio/adio/include/adioi_error.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**info", 0); ChkMsg( err, MPI_ERR_OTHER, "**info" ); /* src/mpi/romio/adio/ad_nfs/ad_nfs_write.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ioRMWrdwr", 0); ChkMsg( err, MPI_ERR_OTHER, "**ioRMWrdwr" ); /* src/mpi/romio/adio/ad_nfs/ad_nfs_write.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "ADIOI_NFS_WriteStrided: ROMIO tries to optimize this access by doing a read-modify-write, but is unable to read the file. Please give the file read permission and open it with MPI_MODE_RDWR.", 0); ChkMsg( err, MPI_ERR_OTHER, "ADIOI_NFS_WriteStrided: ROMIO tries to optimize this access by doing a read-modify-write, but is unable to read the file. Please give the file read permission and open it with MPI_MODE_RDWR." ); /* src/mpi/romio/adio/ad_pvfs/ad_pvfs_fcntl.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "PVFS does not support atomic mode", 0); ChkMsg( err, MPI_ERR_OTHER, "PVFS does not support atomic mode" ); /* src/mpi/romio/adio/ad_pvfs/ad_pvfs_write.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Atomic mode set in PVFS I/O function", 0); ChkMsg( err, MPI_ERR_OTHER, "Atomic mode set in PVFS I/O function" ); /* src/mpi/romio/adio/ad_gpfs/ad_gpfs_wrcoll.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Filetype specifies overlapping write regions (which is illegal according to the MPI-2 specification)", 0); ChkMsg( err, MPI_ERR_OTHER, "Filetype specifies overlapping write regions (which is illegal according to the MPI-2 specification)" ); /* src/mpi/romio/adio/common/ad_open.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**nomem2", 0); ChkMsg( err, MPI_ERR_OTHER, "**nomem2" ); /* src/mpi/romio/adio/common/ad_open.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**oremote_fail", 0); ChkMsg( err, MPI_ERR_OTHER, "**oremote_fail" ); /* src/mpi/romio/adio/common/ad_open.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ioagnomatch", 0); ChkMsg( err, MPI_ERR_OTHER, "**ioagnomatch" ); /* src/mpi/romio/adio/common/error.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**fileaccess", 0); ChkMsg( err, MPI_ERR_OTHER, "**fileaccess" ); { /* src/mpi/romio/adio/common/error.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**fileaccess", "**fileaccess %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**fileaccess %s" ); } /* src/mpi/romio/adio/common/error.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**filenamelong", 0); ChkMsg( err, MPI_ERR_OTHER, "**filenamelong" ); { /* src/mpi/romio/adio/common/error.c */ char s1[] = "string1"; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**filenamelong", "**filenamelong %s %d", s1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**filenamelong %s %d" ); } /* src/mpi/romio/adio/common/error.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**filenoexist", 0); ChkMsg( err, MPI_ERR_OTHER, "**filenoexist" ); { /* src/mpi/romio/adio/common/error.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**filenoexist", "**filenoexist %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**filenoexist %s" ); } /* src/mpi/romio/adio/common/error.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**filenamedir", 0); ChkMsg( err, MPI_ERR_OTHER, "**filenamedir" ); { /* src/mpi/romio/adio/common/error.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**filenamedir", "**filenamedir %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**filenamedir %s" ); } /* src/mpi/romio/adio/common/error.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ioneedrd", 0); ChkMsg( err, MPI_ERR_OTHER, "**ioneedrd" ); /* src/mpi/romio/adio/common/error.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**fileexist", 0); ChkMsg( err, MPI_ERR_OTHER, "**fileexist" ); /* src/mpi/romio/adio/common/error.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**filenospace", 0); ChkMsg( err, MPI_ERR_OTHER, "**filenospace" ); /* src/mpi/romio/adio/common/error.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**filequota", 0); ChkMsg( err, MPI_ERR_OTHER, "**filequota" ); /* src/mpi/romio/adio/common/ad_write_str.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**iowswc", 0); ChkMsg( err, MPI_ERR_OTHER, "**iowswc" ); /* src/mpi/romio/adio/common/ad_write_str.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**iowsrc", 0); ChkMsg( err, MPI_ERR_OTHER, "**iowsrc" ); /* src/mpi/romio/adio/common/ad_prealloc.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**iopreallocrdwr", 0); ChkMsg( err, MPI_ERR_OTHER, "**iopreallocrdwr" ); /* src/mpi/romio/adio/common/ad_write_nolock.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Atomic mode set in I/O function", 0); ChkMsg( err, MPI_ERR_OTHER, "Atomic mode set in I/O function" ); /* src/mpi/romio/adio/common/ad_fstype.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**filename", 0); ChkMsg( err, MPI_ERR_OTHER, "**filename" ); { /* src/mpi/romio/adio/common/ad_fstype.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**filename", "**filename %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**filename %s" ); } /* src/mpi/romio/adio/common/ad_fstype.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**iofstypeunsupported", 0); ChkMsg( err, MPI_ERR_OTHER, "**iofstypeunsupported" ); /* src/mpi/romio/adio/common/async_list.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Unknown request optype", 0); ChkMsg( err, MPI_ERR_OTHER, "Unknown request optype" ); /* src/mpi/romio/adio/ad_zoidfs/ad_zoidfs_open.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Error allocating memory", 0); ChkMsg( err, MPI_ERR_OTHER, "Error allocating memory" ); /* src/mpi/romio/adio/ad_zoidfs/ad_zoidfs_open.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Unknown error", 0); ChkMsg( err, MPI_ERR_OTHER, "Unknown error" ); /* src/mpi/romio/adio/ad_zoidfs/ad_zoidfs_fcntl.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Error in zoidfs_getattr", 0); ChkMsg( err, MPI_ERR_OTHER, "Error in zoidfs_getattr" ); /* src/mpi/romio/adio/ad_zoidfs/ad_zoidfs_flush.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Error in zoidfs_commit", 0); ChkMsg( err, MPI_ERR_OTHER, "Error in zoidfs_commit" ); /* src/mpi/romio/adio/ad_zoidfs/ad_zoidfs_delete.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Error in zoidfs_remove", 0); ChkMsg( err, MPI_ERR_OTHER, "Error in zoidfs_remove" ); /* src/mpi/romio/adio/ad_zoidfs/ad_zoidfs_io.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Error in ZOIDFS I/O", 0); ChkMsg( err, MPI_ERR_OTHER, "Error in ZOIDFS I/O" ); /* src/mpi/romio/adio/ad_zoidfs/ad_zoidfs_resize.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Error in zoidfs_resize", 0); ChkMsg( err, MPI_ERR_OTHER, "Error in zoidfs_resize" ); /* src/mpi/romio/adio/ad_zoidfs/ad_zoidfs_common.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Error in zoidfs_finalize", 0); ChkMsg( err, MPI_ERR_OTHER, "Error in zoidfs_finalize" ); /* src/mpi/romio/adio/ad_zoidfs/ad_zoidfs_common.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Error in zoidfs_init", 0); ChkMsg( err, MPI_ERR_OTHER, "Error in zoidfs_init" ); /* src/mpi/romio/adio/ad_zoidfs/ad_zoidfs_write_list.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Atomic noncontiguous writes are not supported by ZOIDFS", 0); ChkMsg( err, MPI_ERR_OTHER, "Atomic noncontiguous writes are not supported by ZOIDFS" ); /* src/mpi/romio/adio/ad_zoidfs/ad_zoidfs_write_list.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Error in zoidfs_write", 0); ChkMsg( err, MPI_ERR_OTHER, "Error in zoidfs_write" ); /* src/mpi/romio/adio/ad_zoidfs/ad_zoidfs_read_list.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Error in zoidfs_read", 0); ChkMsg( err, MPI_ERR_OTHER, "Error in zoidfs_read" ); /* src/mpi/romio/adio/ad_pvfs2/ad_pvfs2_write_list_classic.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Atomic noncontiguous writes are not supported by PVFS2", 0); ChkMsg( err, MPI_ERR_OTHER, "Atomic noncontiguous writes are not supported by PVFS2" ); /* src/mpi/romio/adio/ad_pvfs2/ad_pvfs2_write_list_classic.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Error in PVFS_Request_hindexed (memory)", 0); ChkMsg( err, MPI_ERR_OTHER, "Error in PVFS_Request_hindexed (memory)" ); /* src/mpi/romio/adio/ad_pvfs2/ad_pvfs2_write_list_classic.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Error in PVFS_Request_contiguous (file)", 0); ChkMsg( err, MPI_ERR_OTHER, "Error in PVFS_Request_contiguous (file)" ); /* src/mpi/romio/adio/ad_pvfs2/ad_pvfs2_write_list_classic.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Error in PVFS_sys_write", 0); ChkMsg( err, MPI_ERR_OTHER, "Error in PVFS_sys_write" ); /* src/mpi/romio/adio/ad_pvfs2/ad_pvfs2_write_list_classic.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Error in PVFS_Request_contiguous (memory)", 0); ChkMsg( err, MPI_ERR_OTHER, "Error in PVFS_Request_contiguous (memory)" ); /* src/mpi/romio/adio/ad_pvfs2/ad_pvfs2_write_list_classic.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Error in PVFS_Request_hindexed (file)", 0); ChkMsg( err, MPI_ERR_OTHER, "Error in PVFS_Request_hindexed (file)" ); /* src/mpi/romio/adio/ad_pvfs2/ad_pvfs2_write_list_classic.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Error in PVFS_Request_hindexed(file)", 0); ChkMsg( err, MPI_ERR_OTHER, "Error in PVFS_Request_hindexed(file)" ); /* src/mpi/romio/adio/ad_pvfs2/ad_pvfs2_write_list_classic.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Error in PVFS_Request_hindexed", 0); ChkMsg( err, MPI_ERR_OTHER, "Error in PVFS_Request_hindexed" ); /* src/mpi/romio/adio/ad_pvfs2/ad_pvfs2_fcntl.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Error in PVFS_sys_getattr", 0); ChkMsg( err, MPI_ERR_OTHER, "Error in PVFS_sys_getattr" ); /* src/mpi/romio/adio/ad_pvfs2/ad_pvfs2_read.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Error in pvfs_request_contig (memory)", 0); ChkMsg( err, MPI_ERR_OTHER, "Error in pvfs_request_contig (memory)" ); /* src/mpi/romio/adio/ad_pvfs2/ad_pvfs2_read.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Error in pvfs_request_contig (file)", 0); ChkMsg( err, MPI_ERR_OTHER, "Error in pvfs_request_contig (file)" ); /* src/mpi/romio/adio/ad_pvfs2/ad_pvfs2_read.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Error in PVFS_sys_read", 0); ChkMsg( err, MPI_ERR_OTHER, "Error in PVFS_sys_read" ); /* src/mpi/romio/adio/ad_pvfs2/ad_pvfs2_aio.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Error in PVFS_isys_io", 0); ChkMsg( err, MPI_ERR_OTHER, "Error in PVFS_isys_io" ); /* src/mpi/romio/adio/ad_pvfs2/ad_pvfs2_io_list.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Atomic noncontiguous writes" " are not supported by PVFS2", 0); ChkMsg( err, MPI_ERR_OTHER, "Atomic noncontiguous writes" " are not supported by PVFS2" ); /* src/mpi/romio/adio/ad_pvfs2/ad_pvfs2_io_list.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Error in PVFS_sys_io \n", 0); ChkMsg( err, MPI_ERR_OTHER, "Error in PVFS_sys_io \n" ); /* src/mpi/romio/adio/ad_pvfs2/ad_pvfs2_common.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Error in PVFS_sys_finalize", 0); ChkMsg( err, MPI_ERR_OTHER, "Error in PVFS_sys_finalize" ); /* src/mpi/romio/adio/ad_pvfs2/ad_pvfs2_common.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Error in PVFS_util_init_defaults", 0); ChkMsg( err, MPI_ERR_OTHER, "Error in PVFS_util_init_defaults" ); /* src/mpi/romio/adio/ad_pvfs2/ad_pvfs2_flush.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Error in PVFS_sys_flush", 0); ChkMsg( err, MPI_ERR_OTHER, "Error in PVFS_sys_flush" ); /* src/mpi/romio/adio/ad_pvfs2/ad_pvfs2_resize.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Error in PVFS_sys_truncate", 0); ChkMsg( err, MPI_ERR_OTHER, "Error in PVFS_sys_truncate" ); /* src/mpi/romio/adio/ad_pvfs2/ad_pvfs2_delete.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Error in PVFS_util_resolve", 0); ChkMsg( err, MPI_ERR_OTHER, "Error in PVFS_util_resolve" ); /* src/mpi/romio/adio/ad_pvfs2/ad_pvfs2_delete.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Error in PVFS_sys_remove", 0); ChkMsg( err, MPI_ERR_OTHER, "Error in PVFS_sys_remove" ); /* src/mpi/romio/mpi-io/read_all.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**iobadoffset", 0); ChkMsg( err, MPI_ERR_OTHER, "**iobadoffset" ); /* src/mpi/romio/mpi-io/write_ord.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**iosharedfailed", 0); ChkMsg( err, MPI_ERR_OTHER, "**iosharedfailed" ); /* src/mpi/romio/mpi-io/mpir-mpioinit.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**initialized", 0); ChkMsg( err, MPI_ERR_OTHER, "**initialized" ); /* src/mpi/romio/mpi-io/prealloc.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**iobadsize", 0); ChkMsg( err, MPI_ERR_OTHER, "**iobadsize" ); /* src/mpi/romio/mpi-io/prealloc.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**notsame", 0); ChkMsg( err, MPI_ERR_OTHER, "**notsame" ); /* src/mpi/romio/mpi-io/write_allb.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**iosplitcoll", 0); ChkMsg( err, MPI_ERR_OTHER, "**iosplitcoll" ); /* src/mpi/romio/mpi-io/seek_sh.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**iobadwhence", 0); ChkMsg( err, MPI_ERR_OTHER, "**iobadwhence" ); /* src/mpi/romio/mpi-io/seek_sh.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ionegoffset", 0); ChkMsg( err, MPI_ERR_OTHER, "**ionegoffset" ); /* src/mpi/romio/mpi-io/get_size.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**nullptr", 0); ChkMsg( err, MPI_ERR_OTHER, "**nullptr" ); { /* src/mpi/romio/mpi-io/get_size.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**nullptr", "**nullptr %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**nullptr %s" ); } /* src/mpi/romio/mpi-io/set_errh.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**fileopunsupported", 0); ChkMsg( err, MPI_ERR_OTHER, "**fileopunsupported" ); /* src/mpi/romio/mpi-io/get_view.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**iodatarepnomem", 0); ChkMsg( err, MPI_ERR_OTHER, "**iodatarepnomem" ); /* src/mpi/romio/mpi-io/write_alle.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**iosplitcollnone", 0); ChkMsg( err, MPI_ERR_OTHER, "**iosplitcollnone" ); /* src/mpi/romio/mpi-io/iotest.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**request", 0); ChkMsg( err, MPI_ERR_OTHER, "**request" ); /* src/mpi/romio/mpi-io/open.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**commnotintra", 0); ChkMsg( err, MPI_ERR_OTHER, "**commnotintra" ); /* src/mpi/romio/mpi-io/open.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**fileamodeone", 0); ChkMsg( err, MPI_ERR_OTHER, "**fileamodeone" ); /* src/mpi/romio/mpi-io/open.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**fileamoderead", 0); ChkMsg( err, MPI_ERR_OTHER, "**fileamoderead" ); /* src/mpi/romio/mpi-io/open.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**fileamodeseq", 0); ChkMsg( err, MPI_ERR_OTHER, "**fileamodeseq" ); /* src/mpi/romio/mpi-io/open.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**fileamodediff", 0); ChkMsg( err, MPI_ERR_OTHER, "**fileamodediff" ); /* src/mpi/romio/mpi-io/open.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**iosequnsupported", 0); ChkMsg( err, MPI_ERR_OTHER, "**iosequnsupported" ); /* src/mpi/romio/mpi-io/register_datarep.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**datarepname", 0); ChkMsg( err, MPI_ERR_OTHER, "**datarepname" ); /* src/mpi/romio/mpi-io/register_datarep.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**datarepused", 0); ChkMsg( err, MPI_ERR_OTHER, "**datarepused" ); { /* src/mpi/romio/mpi-io/register_datarep.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**datarepused", "**datarepused %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**datarepused %s" ); } /* src/mpi/romio/mpi-io/register_datarep.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**drconvnotsupported", 0); ChkMsg( err, MPI_ERR_OTHER, "**drconvnotsupported" ); /* src/mpi/romio/mpi-io/register_datarep.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**datarepextent", 0); ChkMsg( err, MPI_ERR_OTHER, "**datarepextent" ); /* src/mpi/romio/mpi-io/set_view.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**iobaddisp", 0); ChkMsg( err, MPI_ERR_OTHER, "**iobaddisp" ); /* src/mpi/romio/mpi-io/set_view.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**iofiletype", 0); ChkMsg( err, MPI_ERR_OTHER, "**iofiletype" ); /* src/mpi/romio/mpi-io/set_view.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**iodispifseq", 0); ChkMsg( err, MPI_ERR_OTHER, "**iodispifseq" ); /* src/mpi/romio/mpi-io/set_view.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**unsupporteddatarep", 0); ChkMsg( err, MPI_ERR_OTHER, "**unsupporteddatarep" ); /* src/mpi/romio/mpi2-other/array/darray.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Invalid size argument", 0); ChkMsg( err, MPI_ERR_OTHER, "Invalid size argument" ); /* src/mpi/romio/mpi2-other/array/darray.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Invalid rank argument", 0); ChkMsg( err, MPI_ERR_OTHER, "Invalid rank argument" ); /* src/mpi/romio/mpi2-other/array/darray.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Invalid ndoms argument", 0); ChkMsg( err, MPI_ERR_OTHER, "Invalid ndoms argument" ); /* src/mpi/romio/mpi2-other/array/darray.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Invalid array_of_gsizes argument", 0); ChkMsg( err, MPI_ERR_OTHER, "Invalid array_of_gsizes argument" ); /* src/mpi/romio/mpi2-other/array/darray.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Invalid array_of_distribs argument", 0); ChkMsg( err, MPI_ERR_OTHER, "Invalid array_of_distribs argument" ); /* src/mpi/romio/mpi2-other/array/darray.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Invalid array_of_dargs argument", 0); ChkMsg( err, MPI_ERR_OTHER, "Invalid array_of_dargs argument" ); /* src/mpi/romio/mpi2-other/array/darray.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Invalid array_of_psizes argument", 0); ChkMsg( err, MPI_ERR_OTHER, "Invalid array_of_psizes argument" ); /* src/mpi/romio/mpi2-other/array/darray.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Invalid gsize argument", 0); ChkMsg( err, MPI_ERR_OTHER, "Invalid gsize argument" ); /* src/mpi/romio/mpi2-other/array/darray.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Invalid darg argument", 0); ChkMsg( err, MPI_ERR_OTHER, "Invalid darg argument" ); /* src/mpi/romio/mpi2-other/array/darray.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Invalid psize argument", 0); ChkMsg( err, MPI_ERR_OTHER, "Invalid psize argument" ); /* src/mpi/romio/mpi2-other/array/darray.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Invalid distrib argument", 0); ChkMsg( err, MPI_ERR_OTHER, "Invalid distrib argument" ); /* src/mpi/romio/mpi2-other/array/darray.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "For MPI_DISTRIBUTE_NONE, the number of processes in that dimension of the grid must be 1", 0); ChkMsg( err, MPI_ERR_OTHER, "For MPI_DISTRIBUTE_NONE, the number of processes in that dimension of the grid must be 1" ); /* src/mpi/romio/mpi2-other/array/darray.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Invalid type argument", 0); ChkMsg( err, MPI_ERR_OTHER, "Invalid type argument" ); /* src/mpi/romio/mpi2-other/array/darray.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Invalid array size", 0); ChkMsg( err, MPI_ERR_OTHER, "Invalid array size" ); /* src/mpi/romio/mpi2-other/array/darray.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Invalid order argument", 0); ChkMsg( err, MPI_ERR_OTHER, "Invalid order argument" ); /* src/mpi/romio/mpi2-other/array/darray.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Internal error", 0); ChkMsg( err, MPI_ERR_OTHER, "Internal error" ); /* src/mpi/romio/mpi2-other/array/subarray.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Invalid ndims argument", 0); ChkMsg( err, MPI_ERR_OTHER, "Invalid ndims argument" ); /* src/mpi/romio/mpi2-other/array/subarray.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Invalid array_of_sizes argument", 0); ChkMsg( err, MPI_ERR_OTHER, "Invalid array_of_sizes argument" ); /* src/mpi/romio/mpi2-other/array/subarray.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Invalid array_of_subsizes argument", 0); ChkMsg( err, MPI_ERR_OTHER, "Invalid array_of_subsizes argument" ); /* src/mpi/romio/mpi2-other/array/subarray.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Invalid array_of_starts argument", 0); ChkMsg( err, MPI_ERR_OTHER, "Invalid array_of_starts argument" ); /* src/mpi/romio/mpi2-other/array/subarray.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Invalid subsize argument", 0); ChkMsg( err, MPI_ERR_OTHER, "Invalid subsize argument" ); /* src/mpi/romio/mpi2-other/array/subarray.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "Invalid start argument", 0); ChkMsg( err, MPI_ERR_OTHER, "Invalid start argument" ); /* src/mpi/misc/version.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_get_version", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_get_version" ); { /* src/mpi/misc/version.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_get_version", "**mpi_get_version %p %p", s1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_get_version %p %p" ); } /* src/mpi/misc/getpname.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_get_processor_name", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_get_processor_name" ); { /* src/mpi/misc/getpname.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_get_processor_name", "**mpi_get_processor_name %p %p", s1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_get_processor_name %p %p" ); } /* src/mpi/misc/library_version.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_get_library_version", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_get_library_version" ); { /* src/mpi/misc/library_version.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_get_library_version", "**mpi_get_library_version %p %p", s1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_get_library_version %p %p" ); } /* src/mpi/coll/reduce_local.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_reduce_local", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_reduce_local" ); { /* src/mpi/coll/reduce_local.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; int i3 = 3; int i4 = MPI_INT; int i5 = MPI_SUM; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_reduce_local", "**mpi_reduce_local %p %p %d %D %O", s1, s2, i3, i4, i5 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_reduce_local %p %p %d %D %O" ); } /* src/mpi/coll/reduce.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**fail", 0); ChkMsg( err, MPI_ERR_OTHER, "**fail" ); /* src/mpi/coll/reduce.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_reduce", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_reduce" ); { /* src/mpi/coll/reduce.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; int i3 = 3; int i4 = MPI_INT; int i5 = MPI_SUM; int i6 = 6; int i7 = MPI_COMM_WORLD; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_reduce", "**mpi_reduce %p %p %d %D %O %d %C", s1, s2, i3, i4, i5, i6, i7 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_reduce %p %p %d %D %O %d %C" ); } /* src/mpi/coll/exscan.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_exscan", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_exscan" ); { /* src/mpi/coll/exscan.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; int i3 = 3; int i4 = MPI_INT; int i5 = MPI_SUM; int i6 = MPI_COMM_WORLD; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_exscan", "**mpi_exscan %p %p %d %D %O %C", s1, s2, i3, i4, i5, i6 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_exscan %p %p %d %D %O %C" ); } /* src/mpi/coll/red_scat.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_reduce_scatter", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_reduce_scatter" ); { /* src/mpi/coll/red_scat.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; char s3[] = "pointer3"; int i4 = MPI_INT; int i5 = MPI_SUM; int i6 = MPI_COMM_WORLD; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_reduce_scatter", "**mpi_reduce_scatter %p %p %p %D %O %C", s1, s2, s3, i4, i5, i6 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_reduce_scatter %p %p %p %D %O %C" ); } /* src/mpi/coll/bcast.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**collective_size_mismatch", 0); ChkMsg( err, MPI_ERR_OTHER, "**collective_size_mismatch" ); { /* src/mpi/coll/bcast.c */ int i1 = 1; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**collective_size_mismatch", "**collective_size_mismatch %d %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**collective_size_mismatch %d %d" ); } /* src/mpi/coll/bcast.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_bcast", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_bcast" ); { /* src/mpi/coll/bcast.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; int i4 = 4; int i5 = MPI_COMM_WORLD; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_bcast", "**mpi_bcast %p %d %D %d %C", s1, i2, i3, i4, i5 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_bcast %p %d %D %d %C" ); } /* src/mpi/coll/gatherv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_gatherv", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_gatherv" ); { /* src/mpi/coll/gatherv.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; char s4[] = "pointer4"; char s5[] = "pointer5"; char s6[] = "pointer6"; int i7 = MPI_INT; int i8 = 8; int i9 = MPI_COMM_WORLD; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_gatherv", "**mpi_gatherv %p %d %D %p %p %p %D %d %C", s1, i2, i3, s4, s5, s6, i7, i8, i9 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_gatherv %p %d %D %p %p %p %D %d %C" ); } /* src/mpi/coll/iscatter.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_iscatter", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_iscatter" ); { /* src/mpi/coll/iscatter.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; char s4[] = "pointer4"; int i5 = 5; int i6 = MPI_INT; int i7 = 7; int i8 = MPI_COMM_WORLD; char s9[] = "pointer9"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_iscatter", "**mpi_iscatter %p %d %D %p %d %D %d %C %p", s1, i2, i3, s4, i5, i6, i7, i8, s9 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_iscatter %p %d %D %p %d %D %d %C %p" ); } /* src/mpi/coll/allreduce.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_allreduce", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_allreduce" ); { /* src/mpi/coll/allreduce.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; int i3 = 3; int i4 = MPI_INT; int i5 = MPI_SUM; int i6 = MPI_COMM_WORLD; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_allreduce", "**mpi_allreduce %p %p %d %D %O %C", s1, s2, i3, i4, i5, i6 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_allreduce %p %p %d %D %O %C" ); } /* src/mpi/coll/opland.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**opundefined", 0); ChkMsg( err, MPI_ERR_OTHER, "**opundefined" ); { /* src/mpi/coll/opland.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**opundefined", "**opundefined %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**opundefined %s" ); } /* src/mpi/coll/gather.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_gather", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_gather" ); { /* src/mpi/coll/gather.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; char s4[] = "pointer4"; int i5 = 5; int i6 = MPI_INT; int i7 = 7; int i8 = MPI_COMM_WORLD; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_gather", "**mpi_gather %p %d %D %p %d %D %d %C", s1, i2, i3, s4, i5, i6, i7, i8 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_gather %p %d %D %p %d %D %d %C" ); } /* src/mpi/coll/ialltoallv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_ialltoallv", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_ialltoallv" ); { /* src/mpi/coll/ialltoallv.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; char s3[] = "pointer3"; int i4 = MPI_INT; char s5[] = "pointer5"; char s6[] = "pointer6"; char s7[] = "pointer7"; int i8 = MPI_INT; int i9 = MPI_COMM_WORLD; char s10[] = "pointer10"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_ialltoallv", "**mpi_ialltoallv %p %p %p %D %p %p %p %D %C %p", s1, s2, s3, i4, s5, s6, s7, i8, i9, s10 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_ialltoallv %p %p %p %D %p %p %p %D %C %p" ); } /* src/mpi/coll/scan.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_scan", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_scan" ); { /* src/mpi/coll/scan.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; int i3 = 3; int i4 = MPI_INT; int i5 = MPI_SUM; int i6 = MPI_COMM_WORLD; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_scan", "**mpi_scan %p %p %d %D %O %C", s1, s2, i3, i4, i5, i6 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_scan %p %p %d %D %O %C" ); } /* src/mpi/coll/iallgatherv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_iallgatherv", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_iallgatherv" ); { /* src/mpi/coll/iallgatherv.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; char s4[] = "pointer4"; char s5[] = "pointer5"; char s6[] = "pointer6"; int i7 = MPI_INT; int i8 = MPI_COMM_WORLD; char s9[] = "pointer9"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_iallgatherv", "**mpi_iallgatherv %p %d %D %p %p %p %D %C %p", s1, i2, i3, s4, s5, s6, i7, i8, s9 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_iallgatherv %p %d %D %p %p %p %D %C %p" ); } /* src/mpi/coll/alltoallv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sendbuf_inplace", 0); ChkMsg( err, MPI_ERR_OTHER, "**sendbuf_inplace" ); /* src/mpi/coll/alltoallv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_alltoallv", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_alltoallv" ); { /* src/mpi/coll/alltoallv.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; char s3[] = "pointer3"; int i4 = MPI_INT; char s5[] = "pointer5"; char s6[] = "pointer6"; char s7[] = "pointer7"; int i8 = MPI_INT; int i9 = MPI_COMM_WORLD; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_alltoallv", "**mpi_alltoallv %p %p %p %D %p %p %p %D %C", s1, s2, s3, i4, s5, s6, s7, i8, i9 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_alltoallv %p %p %p %D %p %p %p %D %C" ); } /* src/mpi/coll/iscan.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_iscan", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_iscan" ); { /* src/mpi/coll/iscan.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; int i3 = 3; int i4 = MPI_INT; int i5 = MPI_SUM; int i6 = MPI_COMM_WORLD; char s7[] = "pointer7"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_iscan", "**mpi_iscan %p %p %d %D %O %C %p", s1, s2, i3, i4, i5, i6, s7 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_iscan %p %p %d %D %O %C %p" ); } /* src/mpi/coll/iscatterv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_iscatterv", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_iscatterv" ); { /* src/mpi/coll/iscatterv.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; char s3[] = "pointer3"; int i4 = MPI_INT; char s5[] = "pointer5"; int i6 = 6; int i7 = MPI_INT; int i8 = 8; int i9 = MPI_COMM_WORLD; char s10[] = "pointer10"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_iscatterv", "**mpi_iscatterv %p %p %p %D %p %d %D %d %C %p", s1, s2, s3, i4, s5, i6, i7, i8, i9, s10 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_iscatterv %p %p %p %D %p %d %D %d %C %p" ); } /* src/mpi/coll/barrier.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_barrier", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_barrier" ); { /* src/mpi/coll/barrier.c */ int i1 = MPI_COMM_WORLD; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_barrier", "**mpi_barrier %C", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_barrier %C" ); } /* src/mpi/coll/allgather.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_allgather", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_allgather" ); { /* src/mpi/coll/allgather.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; char s4[] = "pointer4"; int i5 = 5; int i6 = MPI_INT; int i7 = MPI_COMM_WORLD; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_allgather", "**mpi_allgather %p %d %D %p %d %D %C", s1, i2, i3, s4, i5, i6, i7 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_allgather %p %d %D %p %d %D %C" ); } /* src/mpi/coll/igather.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_igather", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_igather" ); { /* src/mpi/coll/igather.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; char s4[] = "pointer4"; int i5 = 5; int i6 = MPI_INT; int i7 = 7; int i8 = MPI_COMM_WORLD; char s9[] = "pointer9"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_igather", "**mpi_igather %p %d %D %p %d %D %d %C %p", s1, i2, i3, s4, i5, i6, i7, i8, s9 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_igather %p %d %D %p %d %D %d %C %p" ); } /* src/mpi/coll/alltoall.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_alltoall", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_alltoall" ); { /* src/mpi/coll/alltoall.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; char s4[] = "pointer4"; int i5 = 5; int i6 = MPI_INT; int i7 = MPI_COMM_WORLD; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_alltoall", "**mpi_alltoall %p %d %D %p %d %D %C", s1, i2, i3, s4, i5, i6, i7 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_alltoall %p %d %D %p %d %D %C" ); } /* src/mpi/coll/ired_scat.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_ireduce_scatter", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_ireduce_scatter" ); { /* src/mpi/coll/ired_scat.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; char s3[] = "pointer3"; int i4 = MPI_INT; int i5 = MPI_SUM; int i6 = MPI_COMM_WORLD; char s7[] = "pointer7"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_ireduce_scatter", "**mpi_ireduce_scatter %p %p %p %D %O %C %p", s1, s2, s3, i4, i5, i6, s7 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_ireduce_scatter %p %p %p %D %O %C %p" ); } /* src/mpi/coll/ibarrier.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_ibarrier", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_ibarrier" ); { /* src/mpi/coll/ibarrier.c */ int i1 = MPI_COMM_WORLD; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_ibarrier", "**mpi_ibarrier %C %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_ibarrier %C %p" ); } /* src/mpi/coll/iallgather.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_iallgather", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_iallgather" ); { /* src/mpi/coll/iallgather.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; char s4[] = "pointer4"; int i5 = 5; int i6 = MPI_INT; int i7 = MPI_COMM_WORLD; char s8[] = "pointer8"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_iallgather", "**mpi_iallgather %p %d %D %p %d %D %C %p", s1, i2, i3, s4, i5, i6, i7, s8 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_iallgather %p %d %D %p %d %D %C %p" ); } /* src/mpi/coll/ialltoallw.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_ialltoallw", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_ialltoallw" ); { /* src/mpi/coll/ialltoallw.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; char s3[] = "pointer3"; char s4[] = "pointer4"; char s5[] = "pointer5"; char s6[] = "pointer6"; char s7[] = "pointer7"; char s8[] = "pointer8"; int i9 = MPI_COMM_WORLD; char s10[] = "pointer10"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_ialltoallw", "**mpi_ialltoallw %p %p %p %p %p %p %p %p %C %p", s1, s2, s3, s4, s5, s6, s7, s8, i9, s10 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_ialltoallw %p %p %p %p %p %p %p %p %C %p" ); } /* src/mpi/coll/scatter.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_scatter", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_scatter" ); { /* src/mpi/coll/scatter.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; char s4[] = "pointer4"; int i5 = 5; int i6 = MPI_INT; int i7 = 7; int i8 = MPI_COMM_WORLD; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_scatter", "**mpi_scatter %p %d %D %p %d %D %d %C", s1, i2, i3, s4, i5, i6, i7, i8 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_scatter %p %d %D %p %d %D %d %C" ); } /* src/mpi/coll/igatherv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_igatherv", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_igatherv" ); { /* src/mpi/coll/igatherv.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; char s4[] = "pointer4"; char s5[] = "pointer5"; char s6[] = "pointer6"; int i7 = MPI_INT; int i8 = 8; int i9 = MPI_COMM_WORLD; char s10[] = "pointer10"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_igatherv", "**mpi_igatherv %p %d %D %p %p %p %D %d %C %p", s1, i2, i3, s4, s5, s6, i7, i8, i9, s10 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_igatherv %p %d %D %p %p %p %D %d %C %p" ); } /* src/mpi/coll/op_commutative.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_op_commutative", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_op_commutative" ); { /* src/mpi/coll/op_commutative.c */ int i1 = MPI_SUM; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_op_commutative", "**mpi_op_commutative %O %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_op_commutative %O %p" ); } /* src/mpi/coll/ialltoall.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_ialltoall", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_ialltoall" ); { /* src/mpi/coll/ialltoall.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; char s4[] = "pointer4"; int i5 = 5; int i6 = MPI_INT; int i7 = MPI_COMM_WORLD; char s8[] = "pointer8"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_ialltoall", "**mpi_ialltoall %p %d %D %p %d %D %C %p", s1, i2, i3, s4, i5, i6, i7, s8 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_ialltoall %p %d %D %p %d %D %C %p" ); } /* src/mpi/coll/iallreduce.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_iallreduce", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_iallreduce" ); { /* src/mpi/coll/iallreduce.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; int i3 = 3; int i4 = MPI_INT; int i5 = MPI_SUM; int i6 = MPI_COMM_WORLD; char s7[] = "pointer7"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_iallreduce", "**mpi_iallreduce %p %p %d %D %O %C %p", s1, s2, i3, i4, i5, i6, s7 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_iallreduce %p %p %d %D %O %C %p" ); } /* src/mpi/coll/op_free.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**permop", 0); ChkMsg( err, MPI_ERR_OTHER, "**permop" ); /* src/mpi/coll/op_free.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_op_free", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_op_free" ); { /* src/mpi/coll/op_free.c */ char s1[] = "pointer1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_op_free", "**mpi_op_free %p", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_op_free %p" ); } /* src/mpi/coll/ibcast.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_ibcast", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_ibcast" ); { /* src/mpi/coll/ibcast.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; int i4 = MPI_COMM_WORLD; char s5[] = "pointer5"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_ibcast", "**mpi_ibcast %p %d %D %C %p", s1, i2, i3, i4, s5 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_ibcast %p %d %D %C %p" ); } /* src/mpi/coll/ireduce.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_ireduce", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_ireduce" ); { /* src/mpi/coll/ireduce.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; int i3 = 3; int i4 = MPI_INT; int i5 = MPI_SUM; int i6 = 6; int i7 = MPI_COMM_WORLD; char s8[] = "pointer8"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_ireduce", "**mpi_ireduce %p %p %d %D %O %d %C %p", s1, s2, i3, i4, i5, i6, i7, s8 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_ireduce %p %p %d %D %O %d %C %p" ); } /* src/mpi/coll/scatterv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_scatterv", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_scatterv" ); { /* src/mpi/coll/scatterv.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; char s3[] = "pointer3"; int i4 = MPI_INT; char s5[] = "pointer5"; int i6 = 6; int i7 = MPI_INT; int i8 = 8; int i9 = MPI_COMM_WORLD; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_scatterv", "**mpi_scatterv %p %p %p %D %p %d %D %d %C", s1, s2, s3, i4, s5, i6, i7, i8, i9 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_scatterv %p %p %p %D %p %d %D %d %C" ); } /* src/mpi/coll/helper_fns.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**truncate", 0); ChkMsg( err, MPI_ERR_OTHER, "**truncate" ); { /* src/mpi/coll/helper_fns.c */ int i1 = 1; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**truncate", "**truncate %d %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**truncate %d %d" ); } /* src/mpi/coll/helper_fns.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**dtypemismatch", 0); ChkMsg( err, MPI_ERR_OTHER, "**dtypemismatch" ); /* src/mpi/coll/helper_fns.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**countneg", 0); ChkMsg( err, MPI_ERR_OTHER, "**countneg" ); { /* src/mpi/coll/helper_fns.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**countneg", "**countneg %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**countneg %d" ); } /* src/mpi/coll/red_scat_block.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_reduce_scatter_block", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_reduce_scatter_block" ); { /* src/mpi/coll/red_scat_block.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; int i3 = 3; int i4 = MPI_INT; int i5 = MPI_SUM; int i6 = MPI_COMM_WORLD; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_reduce_scatter_block", "**mpi_reduce_scatter_block %p %p %d %D %O %C", s1, s2, i3, i4, i5, i6 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_reduce_scatter_block %p %p %d %D %O %C" ); } /* src/mpi/coll/allgatherv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_allgatherv", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_allgatherv" ); { /* src/mpi/coll/allgatherv.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; char s4[] = "pointer4"; char s5[] = "pointer5"; char s6[] = "pointer6"; int i7 = MPI_INT; int i8 = MPI_COMM_WORLD; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_allgatherv", "**mpi_allgatherv %p %d %D %p %p %p %D %C", s1, i2, i3, s4, s5, s6, i7, i8 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_allgatherv %p %d %D %p %p %p %D %C" ); } /* src/mpi/coll/alltoallw.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_alltoallw", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_alltoallw" ); { /* src/mpi/coll/alltoallw.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; char s3[] = "pointer3"; char s4[] = "pointer4"; char s5[] = "pointer5"; char s6[] = "pointer6"; char s7[] = "pointer7"; char s8[] = "pointer8"; int i9 = MPI_COMM_WORLD; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_alltoallw", "**mpi_alltoallw %p %p %p %p %p %p %p %p %C", s1, s2, s3, s4, s5, s6, s7, s8, i9 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_alltoallw %p %p %p %p %p %p %p %p %C" ); } /* src/mpi/coll/ired_scat_block.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_ireduce_scatter_block", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_ireduce_scatter_block" ); { /* src/mpi/coll/ired_scat_block.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; int i3 = 3; int i4 = MPI_INT; int i5 = MPI_SUM; int i6 = MPI_COMM_WORLD; char s7[] = "pointer7"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_ireduce_scatter_block", "**mpi_ireduce_scatter_block %p %p %d %D %O %C %p", s1, s2, i3, i4, i5, i6, s7 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_ireduce_scatter_block %p %p %d %D %O %C %p" ); } /* src/mpi/coll/op_create.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_op_create", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_op_create" ); { /* src/mpi/coll/op_create.c */ char s1[] = "pointer1"; int i2 = 2; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_op_create", "**mpi_op_create %p %d %p", s1, i2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_op_create %p %d %p" ); } /* src/mpi/coll/iexscan.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_iexscan", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_iexscan" ); { /* src/mpi/coll/iexscan.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; int i3 = 3; int i4 = MPI_INT; int i5 = MPI_SUM; int i6 = MPI_COMM_WORLD; char s7[] = "pointer7"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_iexscan", "**mpi_iexscan %p %p %d %D %O %C %p", s1, s2, i3, i4, i5, i6, s7 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_iexscan %p %p %d %D %O %C %p" ); } /* src/mpi/info/info_delete.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**infokeynull", 0); ChkMsg( err, MPI_ERR_OTHER, "**infokeynull" ); /* src/mpi/info/info_delete.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**infokeylong", 0); ChkMsg( err, MPI_ERR_OTHER, "**infokeylong" ); /* src/mpi/info/info_delete.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**infokeyempty", 0); ChkMsg( err, MPI_ERR_OTHER, "**infokeyempty" ); /* src/mpi/info/info_delete.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**infonokey", 0); ChkMsg( err, MPI_ERR_OTHER, "**infonokey" ); { /* src/mpi/info/info_delete.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**infonokey", "**infonokey %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**infonokey %s" ); } /* src/mpi/info/info_delete.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_info_delete", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_info_delete" ); { /* src/mpi/info/info_delete.c */ int i1 = MPI_INFO_NULL; char s2[] = "string2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_info_delete", "**mpi_info_delete %I %s", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_info_delete %I %s" ); } /* src/mpi/info/info_getnth.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**infonkey", 0); ChkMsg( err, MPI_ERR_OTHER, "**infonkey" ); { /* src/mpi/info/info_getnth.c */ int i1 = 1; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**infonkey", "**infonkey %d %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**infonkey %d %d" ); } /* src/mpi/info/info_getnth.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_info_get_nthkey", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_info_get_nthkey" ); { /* src/mpi/info/info_getnth.c */ int i1 = MPI_INFO_NULL; int i2 = 2; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_info_get_nthkey", "**mpi_info_get_nthkey %I %d %p", i1, i2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_info_get_nthkey %I %d %p" ); } /* src/mpi/info/info_getvallen.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_info_get_valuelen", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_info_get_valuelen" ); { /* src/mpi/info/info_getvallen.c */ int i1 = MPI_INFO_NULL; char s2[] = "string2"; char s3[] = "pointer3"; char s4[] = "pointer4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_info_get_valuelen", "**mpi_info_get_valuelen %I %s %p %p", i1, s2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_info_get_valuelen %I %s %p %p" ); } /* src/mpi/info/info_get.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**infovallong", 0); ChkMsg( err, MPI_ERR_OTHER, "**infovallong" ); /* src/mpi/info/info_get.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**infovalnull", 0); ChkMsg( err, MPI_ERR_OTHER, "**infovalnull" ); /* src/mpi/info/info_get.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_info_get", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_info_get" ); { /* src/mpi/info/info_get.c */ int i1 = MPI_INFO_NULL; char s2[] = "string2"; int i3 = 3; char s4[] = "pointer4"; char s5[] = "pointer5"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_info_get", "**mpi_info_get %I %s %d %p %p", i1, s2, i3, s4, s5 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_info_get %I %s %d %p %p" ); } /* src/mpi/info/info_dup.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_info_dup", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_info_dup" ); { /* src/mpi/info/info_dup.c */ int i1 = MPI_INFO_NULL; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_info_dup", "**mpi_info_dup %I %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_info_dup %I %p" ); } /* src/mpi/info/info_getn.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_info_get_nkeys", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_info_get_nkeys" ); { /* src/mpi/info/info_getn.c */ int i1 = MPI_INFO_NULL; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_info_get_nkeys", "**mpi_info_get_nkeys %I %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_info_get_nkeys %I %p" ); } /* src/mpi/info/info_create.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_info_create", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_info_create" ); { /* src/mpi/info/info_create.c */ char s1[] = "pointer1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_info_create", "**mpi_info_create %p", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_info_create %p" ); } /* src/mpi/info/info_free.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_info_free", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_info_free" ); { /* src/mpi/info/info_free.c */ char s1[] = "pointer1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_info_free", "**mpi_info_free %p", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_info_free %p" ); } /* src/mpi/info/info_set.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_info_set", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_info_set" ); { /* src/mpi/info/info_set.c */ int i1 = MPI_INFO_NULL; char s2[] = "string2"; char s3[] = "string3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_info_set", "**mpi_info_set %I %s %s", i1, s2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_info_set %I %s %s" ); } /* src/mpi/rma/fetch_and_op.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**typenotpredefined", 0); ChkMsg( err, MPI_ERR_OTHER, "**typenotpredefined" ); /* src/mpi/rma/fetch_and_op.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**opnotpredefined", 0); ChkMsg( err, MPI_ERR_OTHER, "**opnotpredefined" ); /* src/mpi/rma/fetch_and_op.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_fetch_and_op", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_fetch_and_op" ); { /* src/mpi/rma/fetch_and_op.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; int i3 = MPI_INT; int i4 = 4; int i5 = 5; int i6 = MPI_SUM; int i7 = MPI_WIN_NULL; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_fetch_and_op", "**mpi_fetch_and_op %p %p %D %d %d %O %W", s1, s2, i3, i4, i5, i6, i7 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_fetch_and_op %p %p %D %d %d %O %W" ); } /* src/mpi/rma/win_allocate.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**rmasize", 0); ChkMsg( err, MPI_ERR_OTHER, "**rmasize" ); { /* src/mpi/rma/win_allocate.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**rmasize", "**rmasize %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**rmasize %d" ); } /* src/mpi/rma/win_allocate.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**arg", 0); ChkMsg( err, MPI_ERR_OTHER, "**arg" ); { /* src/mpi/rma/win_allocate.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**arg", "**arg %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**arg %s" ); } /* src/mpi/rma/win_allocate.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_allocate", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_allocate" ); { /* src/mpi/rma/win_allocate.c */ int i1 = 1; int i2 = 2; int i3 = MPI_INFO_NULL; int i4 = MPI_COMM_WORLD; char s5[] = "pointer5"; char s6[] = "pointer6"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_allocate", "**mpi_win_allocate %d %d %I %C %p %p", i1, i2, i3, i4, s5, s6 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_allocate %d %d %I %C %p %p" ); } /* src/mpi/rma/rput.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_rput", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_rput" ); { /* src/mpi/rma/rput.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; int i4 = 4; int i5 = 5; int i6 = 6; int i7 = MPI_INT; int i8 = MPI_WIN_NULL; char s9[] = "pointer9"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_rput", "**mpi_rput %p %d %D %d %d %d %D %W %p", s1, i2, i3, i4, i5, i6, i7, i8, s9 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_rput %p %d %D %d %d %d %D %W %p" ); } /* src/mpi/rma/rget_accumulate.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_rget_accumulate", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_rget_accumulate" ); { /* src/mpi/rma/rget_accumulate.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; char s4[] = "pointer4"; int i5 = 5; int i6 = MPI_INT; int i7 = 7; int i8 = 8; int i9 = 9; int i10 = MPI_INT; int i11 = MPI_SUM; int i12 = MPI_WIN_NULL; char s13[] = "pointer13"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_rget_accumulate", "**mpi_rget_accumulate %p %d %D %p %d %D %d %d %d %D %O %W %p", s1, i2, i3, s4, i5, i6, i7, i8, i9, i10, i11, i12, s13 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_rget_accumulate %p %d %D %p %d %D %d %d %d %D %O %W %p" ); } /* src/mpi/rma/win_flush_local_all.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_flush_local_all", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_flush_local_all" ); { /* src/mpi/rma/win_flush_local_all.c */ int i1 = MPI_WIN_NULL; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_flush_local_all", "**mpi_win_flush_local_all %W", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_flush_local_all %W" ); } /* src/mpi/rma/win_create.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_create", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_create" ); { /* src/mpi/rma/win_create.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = 3; int i4 = MPI_INFO_NULL; int i5 = MPI_COMM_WORLD; char s6[] = "pointer6"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_create", "**mpi_win_create %p %d %d %I %C %p", s1, i2, i3, i4, i5, s6 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_create %p %d %d %I %C %p" ); } /* src/mpi/rma/win_get_group.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_get_group", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_get_group" ); { /* src/mpi/rma/win_get_group.c */ int i1 = MPI_WIN_NULL; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_get_group", "**mpi_win_get_group %W %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_get_group %W %p" ); } /* src/mpi/rma/win_lock_all.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**lockassertval", 0); ChkMsg( err, MPI_ERR_OTHER, "**lockassertval" ); { /* src/mpi/rma/win_lock_all.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**lockassertval", "**lockassertval %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**lockassertval %d" ); } /* src/mpi/rma/win_lock_all.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_lock_all", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_lock_all" ); { /* src/mpi/rma/win_lock_all.c */ int i1 = 1; int i2 = MPI_WIN_NULL; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_lock_all", "**mpi_win_lock_all %A %W", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_lock_all %A %W" ); } /* src/mpi/rma/win_free.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_free", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_free" ); { /* src/mpi/rma/win_free.c */ char s1[] = "pointer1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_free", "**mpi_win_free %p", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_free %p" ); } /* src/mpi/rma/win_flush_local.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_flush_local", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_flush_local" ); { /* src/mpi/rma/win_flush_local.c */ int i1 = 1; int i2 = MPI_WIN_NULL; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_flush_local", "**mpi_win_flush_local %d %W", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_flush_local %d %W" ); } /* src/mpi/rma/win_test.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_test", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_test" ); { /* src/mpi/rma/win_test.c */ int i1 = MPI_WIN_NULL; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_test", "**mpi_win_test %W %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_test %W %p" ); } /* src/mpi/rma/win_create_dynamic.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_create_dynamic", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_create_dynamic" ); { /* src/mpi/rma/win_create_dynamic.c */ int i1 = MPI_INFO_NULL; int i2 = MPI_COMM_WORLD; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_create_dynamic", "**mpi_win_create_dynamic %I %C %p", i1, i2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_create_dynamic %I %C %p" ); } /* src/mpi/rma/free_mem.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_free_mem", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_free_mem" ); { /* src/mpi/rma/free_mem.c */ char s1[] = "pointer1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_free_mem", "**mpi_free_mem %p", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_free_mem %p" ); } /* src/mpi/rma/accumulate.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_accumulate", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_accumulate" ); { /* src/mpi/rma/accumulate.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; int i4 = 4; int i5 = 5; int i6 = 6; int i7 = MPI_INT; int i8 = MPI_SUM; int i9 = MPI_WIN_NULL; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_accumulate", "**mpi_accumulate %p %d %D %d %d %d %D %O %W", s1, i2, i3, i4, i5, i6, i7, i8, i9 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_accumulate %p %d %D %d %d %d %D %O %W" ); } /* src/mpi/rma/win_set_name.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_set_name", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_set_name" ); { /* src/mpi/rma/win_set_name.c */ int i1 = MPI_WIN_NULL; char s2[] = "string2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_set_name", "**mpi_win_set_name %W %s", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_set_name %W %s" ); } /* src/mpi/rma/rget.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_rget", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_rget" ); { /* src/mpi/rma/rget.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; int i4 = 4; int i5 = 5; int i6 = 6; int i7 = MPI_INT; int i8 = MPI_WIN_NULL; char s9[] = "pointer9"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_rget", "**mpi_rget %p %d %D %d %d %d %D %W %p", s1, i2, i3, i4, i5, i6, i7, i8, s9 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_rget %p %d %D %d %d %d %D %W %p" ); } /* src/mpi/rma/win_flush_all.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_flush_all", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_flush_all" ); { /* src/mpi/rma/win_flush_all.c */ int i1 = MPI_WIN_NULL; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_flush_all", "**mpi_win_flush_all %W", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_flush_all %W" ); } /* src/mpi/rma/get_accumulate.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_get_accumulate", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_get_accumulate" ); { /* src/mpi/rma/get_accumulate.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; char s4[] = "pointer4"; int i5 = 5; int i6 = MPI_INT; int i7 = 7; int i8 = 8; int i9 = 9; int i10 = MPI_INT; int i11 = MPI_SUM; int i12 = MPI_WIN_NULL; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_get_accumulate", "**mpi_get_accumulate %p %d %D %p %d %D %d %d %d %D %O %W", s1, i2, i3, s4, i5, i6, i7, i8, i9, i10, i11, i12 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_get_accumulate %p %d %D %p %d %D %d %d %d %D %O %W" ); } /* src/mpi/rma/win_start.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_start", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_start" ); { /* src/mpi/rma/win_start.c */ int i1 = MPI_GROUP_NULL; int i2 = 2; int i3 = MPI_WIN_NULL; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_start", "**mpi_win_start %G %A %W", i1, i2, i3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_start %G %A %W" ); } /* src/mpi/rma/win_allocate_shared.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_allocate_shared", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_allocate_shared" ); { /* src/mpi/rma/win_allocate_shared.c */ int i1 = 1; int i2 = MPI_INFO_NULL; int i3 = MPI_COMM_WORLD; char s4[] = "pointer4"; char s5[] = "pointer5"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_allocate_shared", "**mpi_win_allocate_shared %d %I %C %p %p", i1, i2, i3, s4, s5 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_allocate_shared %d %I %C %p %p" ); } /* src/mpi/rma/win_get_info.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_get_info", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_get_info" ); { /* src/mpi/rma/win_get_info.c */ int i1 = MPI_WIN_NULL; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_get_info", "**mpi_win_get_info %W %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_get_info %W %p" ); } /* src/mpi/rma/compare_and_swap.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_compare_and_swap", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_compare_and_swap" ); { /* src/mpi/rma/compare_and_swap.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; char s3[] = "pointer3"; int i4 = MPI_INT; int i5 = 5; int i6 = 6; int i7 = MPI_WIN_NULL; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_compare_and_swap", "**mpi_compare_and_swap %p %p %p %D %d %d %W", s1, s2, s3, i4, i5, i6, i7 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_compare_and_swap %p %p %p %D %d %d %W" ); } /* src/mpi/rma/win_complete.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_complete", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_complete" ); { /* src/mpi/rma/win_complete.c */ int i1 = MPI_WIN_NULL; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_complete", "**mpi_win_complete %W", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_complete %W" ); } /* src/mpi/rma/win_sync.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_sync", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_sync" ); { /* src/mpi/rma/win_sync.c */ int i1 = MPI_WIN_NULL; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_sync", "**mpi_win_sync %W", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_sync %W" ); } /* src/mpi/rma/win_wait.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_wait", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_wait" ); { /* src/mpi/rma/win_wait.c */ int i1 = MPI_WIN_NULL; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_wait", "**mpi_win_wait %W", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_wait %W" ); } /* src/mpi/rma/win_unlock_all.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_unlock_all", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_unlock_all" ); { /* src/mpi/rma/win_unlock_all.c */ int i1 = MPI_WIN_NULL; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_unlock_all", "**mpi_win_unlock_all %W", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_unlock_all %W" ); } /* src/mpi/rma/win_flush.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_flush", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_flush" ); { /* src/mpi/rma/win_flush.c */ int i1 = 1; int i2 = MPI_WIN_NULL; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_flush", "**mpi_win_flush %d %W", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_flush %d %W" ); } /* src/mpi/rma/win_get_name.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_get_name", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_get_name" ); { /* src/mpi/rma/win_get_name.c */ int i1 = MPI_WIN_NULL; char s2[] = "pointer2"; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_get_name", "**mpi_win_get_name %W %p %p", i1, s2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_get_name %W %p %p" ); } /* src/mpi/rma/alloc_mem.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**allocmem", 0); ChkMsg( err, MPI_ERR_OTHER, "**allocmem" ); /* src/mpi/rma/alloc_mem.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_alloc_mem", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_alloc_mem" ); { /* src/mpi/rma/alloc_mem.c */ int i1 = 1; int i2 = MPI_INFO_NULL; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_alloc_mem", "**mpi_alloc_mem %d %I %p", i1, i2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_alloc_mem %d %I %p" ); } /* src/mpi/rma/win_fence.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_fence", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_fence" ); { /* src/mpi/rma/win_fence.c */ int i1 = 1; int i2 = MPI_WIN_NULL; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_fence", "**mpi_win_fence %A %W", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_fence %A %W" ); } /* src/mpi/rma/get.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_get", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_get" ); { /* src/mpi/rma/get.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; int i4 = 4; int i5 = 5; int i6 = 6; int i7 = MPI_INT; int i8 = MPI_WIN_NULL; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_get", "**mpi_get %p %d %D %d %d %d %D %W", s1, i2, i3, i4, i5, i6, i7, i8 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_get %p %d %D %d %d %d %D %W" ); } /* src/mpi/rma/win_set_info.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_set_info", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_set_info" ); { /* src/mpi/rma/win_set_info.c */ int i1 = MPI_WIN_NULL; int i2 = MPI_INFO_NULL; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_set_info", "**mpi_win_set_info %W %I", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_set_info %W %I" ); } /* src/mpi/rma/win_detach.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_detach", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_detach" ); { /* src/mpi/rma/win_detach.c */ int i1 = MPI_WIN_NULL; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_detach", "**mpi_win_detach %W %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_detach %W %p" ); } /* src/mpi/rma/win_lock.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**locktype", 0); ChkMsg( err, MPI_ERR_OTHER, "**locktype" ); /* src/mpi/rma/win_lock.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_lock", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_lock" ); { /* src/mpi/rma/win_lock.c */ int i1 = 1; int i2 = 2; int i3 = 3; int i4 = MPI_WIN_NULL; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_lock", "**mpi_win_lock %d %d %A %W", i1, i2, i3, i4 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_lock %d %d %A %W" ); } /* src/mpi/rma/win_post.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_post", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_post" ); { /* src/mpi/rma/win_post.c */ int i1 = MPI_GROUP_NULL; int i2 = 2; int i3 = MPI_WIN_NULL; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_post", "**mpi_win_post %G %A %W", i1, i2, i3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_post %G %A %W" ); } /* src/mpi/rma/put.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_put", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_put" ); { /* src/mpi/rma/put.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; int i4 = 4; int i5 = 5; int i6 = 6; int i7 = MPI_INT; int i8 = MPI_WIN_NULL; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_put", "**mpi_put %p %d %D %d %d %d %D %W", s1, i2, i3, i4, i5, i6, i7, i8 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_put %p %d %D %d %d %d %D %W" ); } /* src/mpi/rma/win_shared_query.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_shared_query", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_shared_query" ); { /* src/mpi/rma/win_shared_query.c */ int i1 = MPI_WIN_NULL; int i2 = 2; char s3[] = "pointer3"; char s4[] = "pointer4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_shared_query", "**mpi_win_shared_query %W %d %p %p", i1, i2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_shared_query %W %d %p %p" ); } /* src/mpi/rma/win_unlock.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_unlock", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_unlock" ); { /* src/mpi/rma/win_unlock.c */ int i1 = 1; int i2 = MPI_WIN_NULL; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_unlock", "**mpi_win_unlock %d %W", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_unlock %d %W" ); } /* src/mpi/rma/win_attach.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_attach", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_attach" ); { /* src/mpi/rma/win_attach.c */ int i1 = MPI_WIN_NULL; char s2[] = "pointer2"; int i3 = 3; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_attach", "**mpi_win_attach %W %p %d", i1, s2, i3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_attach %W %p %d" ); } /* src/mpi/rma/raccumulate.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_raccumulate", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_raccumulate" ); { /* src/mpi/rma/raccumulate.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; int i4 = 4; int i5 = 5; int i6 = 6; int i7 = MPI_INT; int i8 = MPI_SUM; int i9 = MPI_WIN_NULL; char s10[] = "pointer10"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_raccumulate", "**mpi_raccumulate %p %d %D %d %d %d %D %O %W %p", s1, i2, i3, i4, i5, i6, i7, i8, i9, s10 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_raccumulate %p %d %D %d %d %d %D %O %W %p" ); } /* src/mpi/group/group_union.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_group_union", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_group_union" ); { /* src/mpi/group/group_union.c */ int i1 = MPI_GROUP_NULL; int i2 = MPI_GROUP_NULL; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_group_union", "**mpi_group_union %G %G %p", i1, i2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_group_union %G %G %p" ); } /* src/mpi/group/group_excl.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_group_excl", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_group_excl" ); { /* src/mpi/group/group_excl.c */ int i1 = MPI_GROUP_NULL; int i2 = 2; char s3[] = "pointer3"; char s4[] = "pointer4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_group_excl", "**mpi_group_excl %G %d %p %p", i1, i2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_group_excl %G %d %p %p" ); } /* src/mpi/group/group_rank.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_group_rank", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_group_rank" ); { /* src/mpi/group/group_rank.c */ int i1 = MPI_GROUP_NULL; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_group_rank", "**mpi_group_rank %G %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_group_rank %G %p" ); } /* src/mpi/group/group_translate_ranks.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_group_translate_ranks", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_group_translate_ranks" ); { /* src/mpi/group/group_translate_ranks.c */ int i1 = MPI_GROUP_NULL; int i2 = 2; char s3[] = "pointer3"; int i4 = MPI_GROUP_NULL; char s5[] = "pointer5"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_group_translate_ranks", "**mpi_group_translate_ranks %G %d %p %G %p", i1, i2, s3, i4, s5 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_group_translate_ranks %G %d %p %G %p" ); } /* src/mpi/group/group_compare.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_group_compare", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_group_compare" ); { /* src/mpi/group/group_compare.c */ int i1 = MPI_GROUP_NULL; int i2 = MPI_GROUP_NULL; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_group_compare", "**mpi_group_compare %G %G %p", i1, i2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_group_compare %G %G %p" ); } /* src/mpi/group/group_intersection.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_group_intersection", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_group_intersection" ); { /* src/mpi/group/group_intersection.c */ int i1 = MPI_GROUP_NULL; int i2 = MPI_GROUP_NULL; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_group_intersection", "**mpi_group_intersection %G %G %p", i1, i2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_group_intersection %G %G %p" ); } /* src/mpi/group/group_free.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**groupperm", 0); ChkMsg( err, MPI_ERR_OTHER, "**groupperm" ); /* src/mpi/group/group_free.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_group_free", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_group_free" ); { /* src/mpi/group/group_free.c */ char s1[] = "pointer1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_group_free", "**mpi_group_free %p", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_group_free %p" ); } /* src/mpi/group/group_incl.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_group_incl", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_group_incl" ); { /* src/mpi/group/group_incl.c */ int i1 = MPI_GROUP_NULL; int i2 = 2; char s3[] = "pointer3"; char s4[] = "pointer4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_group_incl", "**mpi_group_incl %G %d %p %p", i1, i2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_group_incl %G %d %p %p" ); } /* src/mpi/group/group_range_excl.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_group_range_excl", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_group_range_excl" ); { /* src/mpi/group/group_range_excl.c */ int i1 = MPI_GROUP_NULL; int i2 = 2; char s3[] = "pointer3"; char s4[] = "pointer4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_group_range_excl", "**mpi_group_range_excl %G %d %p %p", i1, i2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_group_range_excl %G %d %p %p" ); } /* src/mpi/group/group_range_incl.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_group_range_incl", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_group_range_incl" ); { /* src/mpi/group/group_range_incl.c */ int i1 = MPI_GROUP_NULL; int i2 = 2; char s3[] = "pointer3"; char s4[] = "pointer4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_group_range_incl", "**mpi_group_range_incl %G %d %p %p", i1, i2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_group_range_incl %G %d %p %p" ); } /* src/mpi/group/group_difference.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_group_difference", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_group_difference" ); { /* src/mpi/group/group_difference.c */ int i1 = MPI_GROUP_NULL; int i2 = MPI_GROUP_NULL; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_group_difference", "**mpi_group_difference %G %G %p", i1, i2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_group_difference %G %G %p" ); } /* src/mpi/group/group_size.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_group_size", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_group_size" ); { /* src/mpi/group/group_size.c */ int i1 = MPI_GROUP_NULL; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_group_size", "**mpi_group_size %G %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_group_size %G %p" ); } /* src/mpi/group/grouputil.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**rankarray", 0); ChkMsg( err, MPI_ERR_OTHER, "**rankarray" ); { /* src/mpi/group/grouputil.c */ int i1 = 1; int i2 = 2; int i3 = 3; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**rankarray", "**rankarray %d %d %d", i1, i2, i3 ); ChkMsg( err, MPI_ERR_OTHER, "**rankarray %d %d %d" ); } /* src/mpi/group/grouputil.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**rankdup", 0); ChkMsg( err, MPI_ERR_OTHER, "**rankdup" ); { /* src/mpi/group/grouputil.c */ int i1 = 1; int i2 = 2; int i3 = 3; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**rankdup", "**rankdup %d %d %d", i1, i2, i3 ); ChkMsg( err, MPI_ERR_OTHER, "**rankdup %d %d %d" ); } /* src/mpi/group/grouputil.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**argneg", 0); ChkMsg( err, MPI_ERR_OTHER, "**argneg" ); { /* src/mpi/group/grouputil.c */ char s1[] = "string1"; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**argneg", "**argneg %s %d", s1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**argneg %s %d" ); } /* src/mpi/group/grouputil.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**rangestartinvalid", 0); ChkMsg( err, MPI_ERR_OTHER, "**rangestartinvalid" ); { /* src/mpi/group/grouputil.c */ int i1 = 1; int i2 = 2; int i3 = 3; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**rangestartinvalid", "**rangestartinvalid %d %d %d", i1, i2, i3 ); ChkMsg( err, MPI_ERR_OTHER, "**rangestartinvalid %d %d %d" ); } /* src/mpi/group/grouputil.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**stridezero", 0); ChkMsg( err, MPI_ERR_OTHER, "**stridezero" ); /* src/mpi/group/grouputil.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**rangeendinvalid", 0); ChkMsg( err, MPI_ERR_OTHER, "**rangeendinvalid" ); { /* src/mpi/group/grouputil.c */ int i1 = 1; int i2 = 2; int i3 = 3; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**rangeendinvalid", "**rangeendinvalid %d %d %d", i1, i2, i3 ); ChkMsg( err, MPI_ERR_OTHER, "**rangeendinvalid %d %d %d" ); } /* src/mpi/group/grouputil.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**stride", 0); ChkMsg( err, MPI_ERR_OTHER, "**stride" ); { /* src/mpi/group/grouputil.c */ int i1 = 1; int i2 = 2; int i3 = 3; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**stride", "**stride %d %d %d", i1, i2, i3 ); ChkMsg( err, MPI_ERR_OTHER, "**stride %d %d %d" ); } /* src/mpi/group/grouputil.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**rangedup", 0); ChkMsg( err, MPI_ERR_OTHER, "**rangedup" ); { /* src/mpi/group/grouputil.c */ int i1 = 1; int i2 = 2; int i3 = 3; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**rangedup", "**rangedup %d %d %d", i1, i2, i3 ); ChkMsg( err, MPI_ERR_OTHER, "**rangedup %d %d %d" ); } /* src/mpi/group/grouputil.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**groupnotincomm", 0); ChkMsg( err, MPI_ERR_OTHER, "**groupnotincomm" ); { /* src/mpi/group/grouputil.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**groupnotincomm", "**groupnotincomm %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**groupnotincomm %d" ); } /* src/mpi/comm/comm_remote_group.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**commnotinter", 0); ChkMsg( err, MPI_ERR_OTHER, "**commnotinter" ); /* src/mpi/comm/comm_remote_group.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_remote_group", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_remote_group" ); { /* src/mpi/comm/comm_remote_group.c */ int i1 = MPI_COMM_WORLD; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_remote_group", "**mpi_comm_remote_group %C %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_remote_group %C %p" ); } /* src/mpi/comm/contextid.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**toomanycommfrag", 0); ChkMsg( err, MPI_ERR_OTHER, "**toomanycommfrag" ); { /* src/mpi/comm/contextid.c */ int i1 = 1; int i2 = 2; int i3 = 3; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**toomanycommfrag", "**toomanycommfrag %d %d %d", i1, i2, i3 ); ChkMsg( err, MPI_ERR_OTHER, "**toomanycommfrag %d %d %d" ); } /* src/mpi/comm/contextid.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**toomanycomm", 0); ChkMsg( err, MPI_ERR_OTHER, "**toomanycomm" ); { /* src/mpi/comm/contextid.c */ int i1 = 1; int i2 = 2; int i3 = 3; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**toomanycomm", "**toomanycomm %d %d %d", i1, i2, i3 ); ChkMsg( err, MPI_ERR_OTHER, "**toomanycomm %d %d %d" ); } /* src/mpi/comm/comm_remote_size.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_remote_size", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_remote_size" ); { /* src/mpi/comm/comm_remote_size.c */ int i1 = MPI_COMM_WORLD; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_remote_size", "**mpi_comm_remote_size %C %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_remote_size %C %p" ); } /* src/mpi/comm/comm_set_name.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_set_name", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_set_name" ); { /* src/mpi/comm/comm_set_name.c */ int i1 = MPI_COMM_WORLD; char s2[] = "string2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_set_name", "**mpi_comm_set_name %C %s", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_set_name %C %s" ); } /* src/mpi/comm/comm_group.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_group", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_group" ); { /* src/mpi/comm/comm_group.c */ int i1 = MPI_COMM_WORLD; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_group", "**mpi_comm_group %C %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_group %C %p" ); } /* src/mpi/comm/comm_dup.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_dup", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_dup" ); { /* src/mpi/comm/comm_dup.c */ int i1 = MPI_COMM_WORLD; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_dup", "**mpi_comm_dup %C %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_dup %C %p" ); } /* src/mpi/comm/comm_shrink.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpix_comm_shrink", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpix_comm_shrink" ); { /* src/mpi/comm/comm_shrink.c */ int i1 = MPI_COMM_WORLD; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpix_comm_shrink", "**mpix_comm_shrink %C %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpix_comm_shrink %C %p" ); } /* src/mpi/comm/comm_create_group.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_create_group", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_create_group" ); { /* src/mpi/comm/comm_create_group.c */ int i1 = MPI_COMM_WORLD; int i2 = MPI_GROUP_NULL; int i3 = 3; char s4[] = "pointer4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_create_group", "**mpi_comm_create_group %C %G %d %p", i1, i2, i3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_create_group %C %G %d %p" ); } /* src/mpi/comm/comm_dup_with_info.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_dup_with_info", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_dup_with_info" ); { /* src/mpi/comm/comm_dup_with_info.c */ int i1 = MPI_COMM_WORLD; int i2 = MPI_INFO_NULL; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_dup_with_info", "**mpi_comm_dup_with_info %C %I %p", i1, i2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_dup_with_info %C %I %p" ); } /* src/mpi/comm/comm_split_type.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_split", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_split" ); { /* src/mpi/comm/comm_split_type.c */ int i1 = MPI_COMM_WORLD; int i2 = 2; int i3 = 3; char s4[] = "pointer4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_split", "**mpi_comm_split %C %d %d %p", i1, i2, i3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_split %C %d %d %p" ); } /* src/mpi/comm/comm_revoke.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpix_comm_revoke", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpix_comm_revoke" ); { /* src/mpi/comm/comm_revoke.c */ int i1 = MPI_COMM_WORLD; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpix_comm_revoke", "**mpix_comm_revoke %C", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpix_comm_revoke %C" ); } /* src/mpi/comm/comm_idup.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_idup", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_idup" ); { /* src/mpi/comm/comm_idup.c */ int i1 = MPI_COMM_WORLD; char s2[] = "pointer2"; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_idup", "**mpi_comm_idup %C %p %p", i1, s2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_idup %C %p %p" ); } /* src/mpi/comm/comm_get_name.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_get_name", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_get_name" ); { /* src/mpi/comm/comm_get_name.c */ int i1 = MPI_COMM_WORLD; char s2[] = "pointer2"; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_get_name", "**mpi_comm_get_name %C %p %p", i1, s2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_get_name %C %p %p" ); } /* src/mpi/comm/intercomm_create.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**dupprocesses", 0); ChkMsg( err, MPI_ERR_OTHER, "**dupprocesses" ); { /* src/mpi/comm/intercomm_create.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**dupprocesses", "**dupprocesses %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**dupprocesses %d" ); } /* src/mpi/comm/intercomm_create.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ranklocal", 0); ChkMsg( err, MPI_ERR_OTHER, "**ranklocal" ); { /* src/mpi/comm/intercomm_create.c */ int i1 = 1; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ranklocal", "**ranklocal %d %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**ranklocal %d %d" ); } /* src/mpi/comm/intercomm_create.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**rankremote", 0); ChkMsg( err, MPI_ERR_OTHER, "**rankremote" ); { /* src/mpi/comm/intercomm_create.c */ int i1 = 1; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**rankremote", "**rankremote %d %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**rankremote %d %d" ); } /* src/mpi/comm/intercomm_create.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ranksdistinct", 0); ChkMsg( err, MPI_ERR_OTHER, "**ranksdistinct" ); /* src/mpi/comm/intercomm_create.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_intercomm_create", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_intercomm_create" ); { /* src/mpi/comm/intercomm_create.c */ int i1 = MPI_COMM_WORLD; int i2 = 2; int i3 = MPI_COMM_WORLD; int i4 = 4; int i5 = 5; char s6[] = "pointer6"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_intercomm_create", "**mpi_intercomm_create %C %d %C %d %d %p", i1, i2, i3, i4, i5, s6 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_intercomm_create %C %d %C %d %d %p" ); } { /* src/mpi/comm/intercomm_merge.c */ char s1[] = "string1"; char s2[] = "string2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**notsame", "**notsame %s %s", s1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**notsame %s %s" ); } /* src/mpi/comm/intercomm_merge.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_intercomm_merge", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_intercomm_merge" ); { /* src/mpi/comm/intercomm_merge.c */ int i1 = MPI_COMM_WORLD; int i2 = 2; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_intercomm_merge", "**mpi_intercomm_merge %C %d %p", i1, i2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_intercomm_merge %C %d %p" ); } /* src/mpi/comm/comm_size.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_size", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_size" ); { /* src/mpi/comm/comm_size.c */ int i1 = MPI_COMM_WORLD; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_size", "**mpi_comm_size %C %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_size %C %p" ); } /* src/mpi/comm/comm_test_inter.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_test_inter", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_test_inter" ); { /* src/mpi/comm/comm_test_inter.c */ int i1 = MPI_COMM_WORLD; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_test_inter", "**mpi_comm_test_inter %C %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_test_inter %C %p" ); } /* src/mpi/comm/comm_rank.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_rank", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_rank" ); { /* src/mpi/comm/comm_rank.c */ int i1 = MPI_COMM_WORLD; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_rank", "**mpi_comm_rank %C %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_rank %C %p" ); } /* src/mpi/comm/comm_compare.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_compare", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_compare" ); { /* src/mpi/comm/comm_compare.c */ int i1 = MPI_COMM_WORLD; int i2 = MPI_COMM_WORLD; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_compare", "**mpi_comm_compare %C %C %p", i1, i2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_compare %C %C %p" ); } /* src/mpi/comm/comm_set_info.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_set_info", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_set_info" ); { /* src/mpi/comm/comm_set_info.c */ int i1 = MPI_WIN_NULL; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_set_info", "**mpi_comm_set_info %W %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_set_info %W %p" ); } /* src/mpi/comm/comm_failure_get_acked.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpix_comm_failure_get_acked", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpix_comm_failure_get_acked" ); { /* src/mpi/comm/comm_failure_get_acked.c */ int i1 = MPI_COMM_WORLD; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpix_comm_failure_get_acked", "**mpix_comm_failure_get_acked %C %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpix_comm_failure_get_acked %C %p" ); } /* src/mpi/comm/comm_free.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**commperm", 0); ChkMsg( err, MPI_ERR_OTHER, "**commperm" ); { /* src/mpi/comm/comm_free.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**commperm", "**commperm %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**commperm %s" ); } /* src/mpi/comm/comm_free.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_free", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_free" ); { /* src/mpi/comm/comm_free.c */ char s1[] = "pointer1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_free", "**mpi_comm_free %p", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_free %p" ); } /* src/mpi/comm/comm_agree.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpix_comm_agree", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpix_comm_agree" ); { /* src/mpi/comm/comm_agree.c */ int i1 = MPI_COMM_WORLD; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpix_comm_agree", "**mpix_comm_agree %C", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpix_comm_agree %C" ); } /* src/mpi/comm/comm_get_info.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_get_info", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_get_info" ); { /* src/mpi/comm/comm_get_info.c */ int i1 = MPI_WIN_NULL; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_get_info", "**mpi_comm_get_info %W %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_get_info %W %p" ); } /* src/mpi/comm/comm_failure_ack.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpix_comm_failure_ack", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpix_comm_failure_ack" ); { /* src/mpi/comm/comm_failure_ack.c */ int i1 = MPI_COMM_WORLD; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpix_comm_failure_ack", "**mpix_comm_failure_ack %C", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpix_comm_failure_ack %C" ); } /* src/mpi/comm/comm_create.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_create", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_create" ); { /* src/mpi/comm/comm_create.c */ int i1 = MPI_COMM_WORLD; int i2 = MPI_GROUP_NULL; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_create", "**mpi_comm_create %C %G %p", i1, i2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_create %C %G %p" ); } /* src/mpi/datatype/type_struct.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_struct", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_struct" ); { /* src/mpi/datatype/type_struct.c */ int i1 = 1; char s2[] = "pointer2"; char s3[] = "pointer3"; char s4[] = "pointer4"; char s5[] = "pointer5"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_struct", "**mpi_type_struct %d %p %p %p %p", i1, s2, s3, s4, s5 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_struct %d %p %p %p %p" ); } /* src/mpi/datatype/type_hvector.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_hvector", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_hvector" ); { /* src/mpi/datatype/type_hvector.c */ int i1 = 1; int i2 = 2; int i3 = 3; int i4 = MPI_INT; char s5[] = "pointer5"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_hvector", "**mpi_type_hvector %d %d %d %D %p", i1, i2, i3, i4, s5 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_hvector %d %d %d %D %p" ); } /* src/mpi/datatype/unpack_external.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_unpack_external", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_unpack_external" ); { /* src/mpi/datatype/unpack_external.c */ char s1[] = "string1"; char s2[] = "pointer2"; int i3 = 3; char s4[] = "pointer4"; char s5[] = "pointer5"; int i6 = 6; int i7 = MPI_INT; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_unpack_external", "**mpi_unpack_external %s %p %d %p %p %d %D", s1, s2, i3, s4, s5, i6, i7 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_unpack_external %s %p %d %p %p %d %D" ); } /* src/mpi/datatype/type_create_hindexed.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_create_hindexed", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_create_hindexed" ); { /* src/mpi/datatype/type_create_hindexed.c */ int i1 = 1; char s2[] = "pointer2"; char s3[] = "pointer3"; int i4 = MPI_INT; char s5[] = "pointer5"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_create_hindexed", "**mpi_type_create_hindexed %d %p %p %D %p", i1, s2, s3, i4, s5 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_create_hindexed %d %p %p %D %p" ); } /* src/mpi/datatype/type_extent.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_extent", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_extent" ); { /* src/mpi/datatype/type_extent.c */ int i1 = MPI_INT; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_extent", "**mpi_type_extent %D %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_extent %D %p" ); } /* src/mpi/datatype/get_elements.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_get_elements", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_get_elements" ); { /* src/mpi/datatype/get_elements.c */ char s1[] = "pointer1"; int i2 = MPI_INT; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_get_elements", "**mpi_get_elements %p %D %p", s1, i2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_get_elements %p %D %p" ); } /* src/mpi/datatype/type_create_struct.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_create_struct", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_create_struct" ); { /* src/mpi/datatype/type_create_struct.c */ int i1 = 1; char s2[] = "pointer2"; char s3[] = "pointer3"; char s4[] = "pointer4"; char s5[] = "pointer5"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_create_struct", "**mpi_type_create_struct %d %p %p %p %p", i1, s2, s3, s4, s5 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_create_struct %d %p %p %p %p" ); } /* src/mpi/datatype/get_elements_x.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_get_elements_x", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_get_elements_x" ); { /* src/mpi/datatype/get_elements_x.c */ char s1[] = "pointer1"; int i2 = MPI_INT; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_get_elements_x", "**mpi_get_elements_x %p %D %p", s1, i2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_get_elements_x %p %D %p" ); } /* src/mpi/datatype/type_get_name.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**typeinitbadmem", 0); ChkMsg( err, MPI_ERR_OTHER, "**typeinitbadmem" ); { /* src/mpi/datatype/type_get_name.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**typeinitbadmem", "**typeinitbadmem %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**typeinitbadmem %d" ); } /* src/mpi/datatype/type_get_name.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**typeinitfail", 0); ChkMsg( err, MPI_ERR_OTHER, "**typeinitfail" ); { /* src/mpi/datatype/type_get_name.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**typeinitfail", "**typeinitfail %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**typeinitfail %d" ); } /* src/mpi/datatype/type_get_name.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**typeinitminmaxloc", 0); ChkMsg( err, MPI_ERR_OTHER, "**typeinitminmaxloc" ); /* src/mpi/datatype/type_get_name.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_get_name", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_get_name" ); { /* src/mpi/datatype/type_get_name.c */ int i1 = MPI_INT; char s2[] = "pointer2"; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_get_name", "**mpi_type_get_name %D %p %p", i1, s2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_get_name %D %p %p" ); } /* src/mpi/datatype/unpack.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_unpack", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_unpack" ); { /* src/mpi/datatype/unpack.c */ char s1[] = "pointer1"; int i2 = 2; char s3[] = "pointer3"; char s4[] = "pointer4"; int i5 = 5; int i6 = MPI_INT; int i7 = MPI_COMM_WORLD; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_unpack", "**mpi_unpack %p %d %p %p %d %D %C", s1, i2, s3, s4, i5, i6, i7 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_unpack %p %d %p %p %d %D %C" ); } /* src/mpi/datatype/type_get_extent_x.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_get_extent_x", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_get_extent_x" ); { /* src/mpi/datatype/type_get_extent_x.c */ int i1 = MPI_INT; char s2[] = "pointer2"; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_get_extent_x", "**mpi_type_get_extent_x %D %p %p", i1, s2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_get_extent_x %D %p %p" ); } /* src/mpi/datatype/type_get_extent.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_get_extent", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_get_extent" ); { /* src/mpi/datatype/type_get_extent.c */ int i1 = MPI_INT; char s2[] = "pointer2"; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_get_extent", "**mpi_type_get_extent %D %p %p", i1, s2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_get_extent %D %p %p" ); } /* src/mpi/datatype/type_match_size.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**typematchnoclass", 0); ChkMsg( err, MPI_ERR_OTHER, "**typematchnoclass" ); /* src/mpi/datatype/type_match_size.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**typematchsize", 0); ChkMsg( err, MPI_ERR_OTHER, "**typematchsize" ); { /* src/mpi/datatype/type_match_size.c */ char s1[] = "string1"; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**typematchsize", "**typematchsize %s %d", s1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**typematchsize %s %d" ); } /* src/mpi/datatype/type_match_size.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_match_size", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_match_size" ); { /* src/mpi/datatype/type_match_size.c */ int i1 = 1; int i2 = 2; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_match_size", "**mpi_type_match_size %d %d %p", i1, i2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_match_size %d %d %p" ); } /* src/mpi/datatype/type_get_true_extent.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_get_true_extent", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_get_true_extent" ); { /* src/mpi/datatype/type_get_true_extent.c */ int i1 = MPI_INT; char s2[] = "pointer2"; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_get_true_extent", "**mpi_type_get_true_extent %D %p %p", i1, s2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_get_true_extent %D %p %p" ); } /* src/mpi/datatype/type_contiguous.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_contiguous", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_contiguous" ); { /* src/mpi/datatype/type_contiguous.c */ int i1 = 1; int i2 = MPI_INT; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_contiguous", "**mpi_type_contiguous %d %D %p", i1, i2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_contiguous %d %D %p" ); } /* src/mpi/datatype/type_create_hindexed_block.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_create_hindexed_block", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_create_hindexed_block" ); { /* src/mpi/datatype/type_create_hindexed_block.c */ int i1 = 1; int i2 = 2; char s3[] = "pointer3"; int i4 = MPI_INT; char s5[] = "pointer5"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_create_hindexed_block", "**mpi_type_create_hindexed_block %d %d %p %D %p", i1, i2, s3, i4, s5 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_create_hindexed_block %d %d %p %D %p" ); } /* src/mpi/datatype/type_vector.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_vector", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_vector" ); { /* src/mpi/datatype/type_vector.c */ int i1 = 1; int i2 = 2; int i3 = 3; int i4 = MPI_INT; char s5[] = "pointer5"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_vector", "**mpi_type_vector %d %d %d %D %p", i1, i2, i3, i4, s5 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_vector %d %d %d %D %p" ); } /* src/mpi/datatype/type_get_envelope.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_get_envelope", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_get_envelope" ); { /* src/mpi/datatype/type_get_envelope.c */ int i1 = MPI_INT; char s2[] = "pointer2"; char s3[] = "pointer3"; char s4[] = "pointer4"; char s5[] = "pointer5"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_get_envelope", "**mpi_type_get_envelope %D %p %p %p %p", i1, s2, s3, s4, s5 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_get_envelope %D %p %p %p %p" ); } /* src/mpi/datatype/type_size_x.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_size_x", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_size_x" ); { /* src/mpi/datatype/type_size_x.c */ int i1 = MPI_INT; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_size_x", "**mpi_type_size_x %D %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_size_x %D %p" ); } /* src/mpi/datatype/type_hindexed.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_hindexed", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_hindexed" ); { /* src/mpi/datatype/type_hindexed.c */ int i1 = 1; char s2[] = "pointer2"; char s3[] = "pointer3"; int i4 = MPI_INT; char s5[] = "pointer5"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_hindexed", "**mpi_type_hindexed %d %p %p %D %p", i1, s2, s3, i4, s5 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_hindexed %d %p %p %D %p" ); } /* src/mpi/datatype/address.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_address", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_address" ); { /* src/mpi/datatype/address.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_address", "**mpi_address %p %p", s1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_address %p %p" ); } /* src/mpi/datatype/type_size.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_size", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_size" ); { /* src/mpi/datatype/type_size.c */ int i1 = MPI_INT; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_size", "**mpi_type_size %D %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_size %D %p" ); } /* src/mpi/datatype/type_create_resized.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_create_resized", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_create_resized" ); { /* src/mpi/datatype/type_create_resized.c */ int i1 = MPI_INT; long long i2 = 2; long long i3 = 3; char s4[] = "pointer4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_create_resized", "**mpi_type_create_resized %D %L %L %p", i1, i2, i3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_create_resized %D %L %L %p" ); } /* src/mpi/datatype/type_create_darray.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**darrayblock", 0); ChkMsg( err, MPI_ERR_OTHER, "**darrayblock" ); { /* src/mpi/datatype/type_create_darray.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**darrayblock", "**darrayblock %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**darrayblock %d" ); } /* src/mpi/datatype/type_create_darray.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**darrayblock2", 0); ChkMsg( err, MPI_ERR_OTHER, "**darrayblock2" ); { /* src/mpi/datatype/type_create_darray.c */ int i1 = 1; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**darrayblock2", "**darrayblock2 %d %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**darrayblock2 %d %d" ); } /* src/mpi/datatype/type_create_darray.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**darraycyclic", 0); ChkMsg( err, MPI_ERR_OTHER, "**darraycyclic" ); { /* src/mpi/datatype/type_create_darray.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**darraycyclic", "**darraycyclic %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**darraycyclic %d" ); } /* src/mpi/datatype/type_create_darray.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**argrange", 0); ChkMsg( err, MPI_ERR_OTHER, "**argrange" ); { /* src/mpi/datatype/type_create_darray.c */ char s1[] = "string1"; int i2 = 2; int i3 = 3; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**argrange", "**argrange %s %d %d", s1, i2, i3 ); ChkMsg( err, MPI_ERR_OTHER, "**argrange %s %d %d" ); } /* src/mpi/datatype/type_create_darray.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**darrayunknown", 0); ChkMsg( err, MPI_ERR_OTHER, "**darrayunknown" ); /* src/mpi/datatype/type_create_darray.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**darraydist", 0); ChkMsg( err, MPI_ERR_OTHER, "**darraydist" ); { /* src/mpi/datatype/type_create_darray.c */ int i1 = 1; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**darraydist", "**darraydist %d %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**darraydist %d %d" ); } /* src/mpi/datatype/type_create_darray.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**darrayoverflow", 0); ChkMsg( err, MPI_ERR_OTHER, "**darrayoverflow" ); { /* src/mpi/datatype/type_create_darray.c */ long long i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**darrayoverflow", "**darrayoverflow %L", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**darrayoverflow %L" ); } /* src/mpi/datatype/type_create_darray.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_create_darray", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_create_darray" ); { /* src/mpi/datatype/type_create_darray.c */ int i1 = 1; int i2 = 2; int i3 = 3; char s4[] = "pointer4"; char s5[] = "pointer5"; char s6[] = "pointer6"; char s7[] = "pointer7"; int i8 = 8; int i9 = MPI_INT; char s10[] = "pointer10"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_create_darray", "**mpi_type_create_darray %d %d %d %p %p %p %p %d %D %p", i1, i2, i3, s4, s5, s6, s7, i8, i9, s10 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_create_darray %d %d %d %p %p %p %p %d %D %p" ); } /* src/mpi/datatype/type_set_name.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**typenamelen", 0); ChkMsg( err, MPI_ERR_OTHER, "**typenamelen" ); { /* src/mpi/datatype/type_set_name.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**typenamelen", "**typenamelen %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**typenamelen %d" ); } /* src/mpi/datatype/type_set_name.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_set_name", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_set_name" ); { /* src/mpi/datatype/type_set_name.c */ int i1 = MPI_INT; char s2[] = "string2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_set_name", "**mpi_type_set_name %D %s", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_set_name %D %s" ); } /* src/mpi/datatype/type_get_contents.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**contentspredef", 0); ChkMsg( err, MPI_ERR_OTHER, "**contentspredef" ); /* src/mpi/datatype/type_get_contents.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_get_contents", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_get_contents" ); { /* src/mpi/datatype/type_get_contents.c */ int i1 = MPI_INT; int i2 = 2; int i3 = 3; int i4 = 4; char s5[] = "pointer5"; char s6[] = "pointer6"; char s7[] = "pointer7"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_get_contents", "**mpi_type_get_contents %D %d %d %d %p %p %p", i1, i2, i3, i4, s5, s6, s7 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_get_contents %D %d %d %d %p %p %p" ); } /* src/mpi/datatype/type_dup.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_dup", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_dup" ); { /* src/mpi/datatype/type_dup.c */ int i1 = MPI_INT; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_dup", "**mpi_type_dup %D %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_dup %D %p" ); } /* src/mpi/datatype/status_set_elements_x.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_status_set_elements_x", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_status_set_elements_x" ); { /* src/mpi/datatype/status_set_elements_x.c */ char s1[] = "pointer1"; int i2 = MPI_INT; MPI_Count i3 = 3; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_status_set_elements_x", "**mpi_status_set_elements_x %p %D %c", s1, i2, i3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_status_set_elements_x %p %D %c" ); } /* src/mpi/datatype/pack_external_size.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_pack_external_size", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_pack_external_size" ); { /* src/mpi/datatype/pack_external_size.c */ char s1[] = "string1"; int i2 = 2; int i3 = MPI_INT; char s4[] = "pointer4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_pack_external_size", "**mpi_pack_external_size %s %d %D %p", s1, i2, i3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_pack_external_size %s %d %D %p" ); } /* src/mpi/datatype/type_indexed.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_indexed", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_indexed" ); { /* src/mpi/datatype/type_indexed.c */ int i1 = 1; char s2[] = "pointer2"; char s3[] = "pointer3"; int i4 = MPI_INT; char s5[] = "pointer5"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_indexed", "**mpi_type_indexed %d %p %p %D %p", i1, s2, s3, i4, s5 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_indexed %d %p %p %D %p" ); } /* src/mpi/datatype/register_datarep.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**notimpl", 0); ChkMsg( err, MPI_ERR_OTHER, "**notimpl" ); /* src/mpi/datatype/register_datarep.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_register_datarep", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_register_datarep" ); { /* src/mpi/datatype/register_datarep.c */ char s1[] = "string1"; char s2[] = "pointer2"; char s3[] = "pointer3"; char s4[] = "pointer4"; char s5[] = "pointer5"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_register_datarep", "**mpi_register_datarep %s %p %p %p %p", s1, s2, s3, s4, s5 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_register_datarep %s %p %p %p %p" ); } /* src/mpi/datatype/get_count.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_get_count", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_get_count" ); { /* src/mpi/datatype/get_count.c */ char s1[] = "pointer1"; int i2 = MPI_INT; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_get_count", "**mpi_get_count %p %D %p", s1, i2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_get_count %p %D %p" ); } /* src/mpi/datatype/type_ub.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_ub", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_ub" ); { /* src/mpi/datatype/type_ub.c */ int i1 = MPI_INT; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_ub", "**mpi_type_ub %D %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_ub %D %p" ); } /* src/mpi/datatype/pack_external.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_pack_external", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_pack_external" ); { /* src/mpi/datatype/pack_external.c */ char s1[] = "string1"; char s2[] = "pointer2"; int i3 = 3; int i4 = MPI_INT; char s5[] = "pointer5"; int i6 = 6; char s7[] = "pointer7"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_pack_external", "**mpi_pack_external %s %p %d %D %p %d %p", s1, s2, i3, i4, s5, i6, s7 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_pack_external %s %p %d %D %p %d %p" ); } /* src/mpi/datatype/type_commit.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_commit", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_commit" ); { /* src/mpi/datatype/type_commit.c */ char s1[] = "pointer1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_commit", "**mpi_type_commit %p", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_commit %p" ); } /* src/mpi/datatype/type_lb.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_lb", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_lb" ); { /* src/mpi/datatype/type_lb.c */ int i1 = MPI_INT; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_lb", "**mpi_type_lb %D %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_lb %D %p" ); } /* src/mpi/datatype/pack_size.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_pack_size", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_pack_size" ); { /* src/mpi/datatype/pack_size.c */ int i1 = 1; int i2 = MPI_INT; int i3 = MPI_COMM_WORLD; char s4[] = "pointer4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_pack_size", "**mpi_pack_size %d %D %C %p", i1, i2, i3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_pack_size %d %D %C %p" ); } /* src/mpi/datatype/type_free.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**dtypeperm", 0); ChkMsg( err, MPI_ERR_OTHER, "**dtypeperm" ); /* src/mpi/datatype/type_free.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_free", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_free" ); { /* src/mpi/datatype/type_free.c */ char s1[] = "pointer1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_free", "**mpi_type_free %p", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_free %p" ); } /* src/mpi/datatype/type_create_subarray.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**subarrayoflow", 0); ChkMsg( err, MPI_ERR_OTHER, "**subarrayoflow" ); { /* src/mpi/datatype/type_create_subarray.c */ long long i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**subarrayoflow", "**subarrayoflow %L", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**subarrayoflow %L" ); } /* src/mpi/datatype/type_create_subarray.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_create_subarray", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_create_subarray" ); { /* src/mpi/datatype/type_create_subarray.c */ int i1 = 1; char s2[] = "pointer2"; char s3[] = "pointer3"; char s4[] = "pointer4"; int i5 = 5; int i6 = MPI_INT; char s7[] = "pointer7"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_create_subarray", "**mpi_type_create_subarray %d %p %p %p %d %D %p", i1, s2, s3, s4, i5, i6, s7 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_create_subarray %d %p %p %p %d %D %p" ); } /* src/mpi/datatype/type_get_true_extent_x.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_get_true_extent_x", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_get_true_extent_x" ); { /* src/mpi/datatype/type_get_true_extent_x.c */ int i1 = MPI_INT; char s2[] = "pointer2"; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_get_true_extent_x", "**mpi_type_get_true_extent_x %D %p %p", i1, s2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_get_true_extent_x %D %p %p" ); } /* src/mpi/datatype/get_address.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_get_address", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_get_address" ); { /* src/mpi/datatype/get_address.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_get_address", "**mpi_get_address %p %p", s1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_get_address %p %p" ); } /* src/mpi/datatype/status_set_elements.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_status_set_elements", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_status_set_elements" ); { /* src/mpi/datatype/status_set_elements.c */ char s1[] = "pointer1"; int i2 = MPI_INT; int i3 = 3; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_status_set_elements", "**mpi_status_set_elements %p %D %d", s1, i2, i3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_status_set_elements %p %D %d" ); } /* src/mpi/datatype/type_create_indexed_block.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_create_indexed_block", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_create_indexed_block" ); { /* src/mpi/datatype/type_create_indexed_block.c */ int i1 = 1; int i2 = 2; char s3[] = "pointer3"; int i4 = MPI_INT; char s5[] = "pointer5"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_create_indexed_block", "**mpi_type_create_indexed_block %d %d %p %D %p", i1, i2, s3, i4, s5 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_create_indexed_block %d %d %p %D %p" ); } /* src/mpi/datatype/type_create_hvector.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_create_hvector", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_create_hvector" ); { /* src/mpi/datatype/type_create_hvector.c */ int i1 = 1; int i2 = 2; int i3 = 3; int i4 = MPI_INT; char s5[] = "pointer5"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_create_hvector", "**mpi_type_create_hvector %d %d %d %D %p", i1, i2, i3, i4, s5 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_create_hvector %d %d %d %D %p" ); } /* src/mpi/datatype/pack.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**argposneg", 0); ChkMsg( err, MPI_ERR_OTHER, "**argposneg" ); { /* src/mpi/datatype/pack.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**argposneg", "**argposneg %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**argposneg %d" ); } /* src/mpi/datatype/pack.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**argpackbuf", 0); ChkMsg( err, MPI_ERR_OTHER, "**argpackbuf" ); { /* src/mpi/datatype/pack.c */ int i1 = 1; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**argpackbuf", "**argpackbuf %d %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**argpackbuf %d %d" ); } /* src/mpi/datatype/pack.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_pack", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_pack" ); { /* src/mpi/datatype/pack.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; char s4[] = "pointer4"; int i5 = 5; char s6[] = "pointer6"; int i7 = MPI_COMM_WORLD; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_pack", "**mpi_pack %p %d %D %p %d %p %C", s1, i2, i3, s4, i5, s6, i7 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_pack %p %d %D %p %d %p %C" ); } /* src/mpi/attr/win_create_keyval.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_create_keyval", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_create_keyval" ); { /* src/mpi/attr/win_create_keyval.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; char s3[] = "pointer3"; char s4[] = "pointer4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_create_keyval", "**mpi_win_create_keyval %p %p %p %p", s1, s2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_create_keyval %p %p %p %p" ); } /* src/mpi/attr/attr_get.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**attrnotptr", 0); ChkMsg( err, MPI_ERR_OTHER, "**attrnotptr" ); /* src/mpi/attr/attr_get.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_attr_get", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_attr_get" ); { /* src/mpi/attr/attr_get.c */ int i1 = MPI_COMM_WORLD; int i2 = 2; char s3[] = "pointer3"; char s4[] = "pointer4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_attr_get", "**mpi_attr_get %C %d %p %p", i1, i2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_attr_get %C %d %p %p" ); } /* src/mpi/attr/type_set_attr.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_set_attr", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_set_attr" ); { /* src/mpi/attr/type_set_attr.c */ int i1 = MPI_INT; int i2 = 2; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_set_attr", "**mpi_type_set_attr %D %d %p", i1, i2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_set_attr %D %d %p" ); } /* src/mpi/attr/win_delete_attr.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_delete_attr", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_delete_attr" ); { /* src/mpi/attr/win_delete_attr.c */ int i1 = MPI_WIN_NULL; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_delete_attr", "**mpi_win_delete_attr %W %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_delete_attr %W %d" ); } /* src/mpi/attr/comm_get_attr.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpir_comm_get_attr", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpir_comm_get_attr" ); { /* src/mpi/attr/comm_get_attr.c */ int i1 = MPI_COMM_WORLD; int i2 = 2; char s3[] = "pointer3"; char s4[] = "pointer4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpir_comm_get_attr", "**mpir_comm_get_attr %C %d %p %p", i1, i2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**mpir_comm_get_attr %C %d %p %p" ); } /* src/mpi/attr/comm_get_attr.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_get_attr", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_get_attr" ); { /* src/mpi/attr/comm_get_attr.c */ int i1 = MPI_COMM_WORLD; int i2 = 2; char s3[] = "pointer3"; char s4[] = "pointer4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_get_attr", "**mpi_comm_get_attr %C %d %p %p", i1, i2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_get_attr %C %d %p %p" ); } /* src/mpi/attr/type_create_keyval.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_create_keyval", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_create_keyval" ); { /* src/mpi/attr/type_create_keyval.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; char s3[] = "pointer3"; char s4[] = "pointer4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_create_keyval", "**mpi_type_create_keyval %p %p %p %p", s1, s2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_create_keyval %p %p %p %p" ); } /* src/mpi/attr/attrutil.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**user", 0); ChkMsg( err, MPI_ERR_OTHER, "**user" ); { /* src/mpi/attr/attrutil.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**user", "**userdel %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**userdel %d" ); } { /* src/mpi/attr/attrutil.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**user", "**usercopy %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**usercopy %d" ); } /* src/mpi/attr/attrutil.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**attrsentinal", 0); ChkMsg( err, MPI_ERR_OTHER, "**attrsentinal" ); /* src/mpi/attr/attr_put.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_attr_put", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_attr_put" ); { /* src/mpi/attr/attr_put.c */ int i1 = MPI_COMM_WORLD; int i2 = 2; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_attr_put", "**mpi_attr_put %C %d %p", i1, i2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_attr_put %C %d %p" ); } /* src/mpi/attr/type_delete_attr.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_delete_attr", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_delete_attr" ); { /* src/mpi/attr/type_delete_attr.c */ int i1 = MPI_INT; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_delete_attr", "**mpi_type_delete_attr %D %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_delete_attr %D %d" ); } /* src/mpi/attr/keyval_create.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_keyval_create", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_keyval_create" ); { /* src/mpi/attr/keyval_create.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; char s3[] = "pointer3"; char s4[] = "pointer4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_keyval_create", "**mpi_keyval_create %p %p %p %p", s1, s2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_keyval_create %p %p %p %p" ); } /* src/mpi/attr/keyval_free.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_keyval_free", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_keyval_free" ); { /* src/mpi/attr/keyval_free.c */ char s1[] = "pointer1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_keyval_free", "**mpi_keyval_free %p", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_keyval_free %p" ); } /* src/mpi/attr/type_get_attr.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpir_type_get_attr", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpir_type_get_attr" ); { /* src/mpi/attr/type_get_attr.c */ int i1 = MPI_INT; int i2 = 2; char s3[] = "pointer3"; char s4[] = "pointer4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpir_type_get_attr", "**mpir_type_get_attr %D %d %p %p", i1, i2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**mpir_type_get_attr %D %d %p %p" ); } /* src/mpi/attr/type_get_attr.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_get_attr", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_get_attr" ); { /* src/mpi/attr/type_get_attr.c */ int i1 = MPI_INT; int i2 = 2; char s3[] = "pointer3"; char s4[] = "pointer4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_get_attr", "**mpi_type_get_attr %D %d %p %p", i1, i2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_get_attr %D %d %p %p" ); } /* src/mpi/attr/comm_create_keyval.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_create_keyval", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_create_keyval" ); { /* src/mpi/attr/comm_create_keyval.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; char s3[] = "pointer3"; char s4[] = "pointer4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_create_keyval", "**mpi_comm_create_keyval %p %p %p %p", s1, s2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_create_keyval %p %p %p %p" ); } /* src/mpi/attr/attr_delete.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_attr_delete", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_attr_delete" ); { /* src/mpi/attr/attr_delete.c */ int i1 = MPI_COMM_WORLD; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_attr_delete", "**mpi_attr_delete %C %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_attr_delete %C %d" ); } /* src/mpi/attr/win_get_attr.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpir_wingetattr", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpir_wingetattr" ); { /* src/mpi/attr/win_get_attr.c */ int i1 = MPI_WIN_NULL; int i2 = 2; char s3[] = "pointer3"; char s4[] = "pointer4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpir_wingetattr", "**mpir_wingetattr %W %d %p %p", i1, i2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**mpir_wingetattr %W %d %p %p" ); } /* src/mpi/attr/win_get_attr.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_get_attr", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_get_attr" ); { /* src/mpi/attr/win_get_attr.c */ int i1 = MPI_WIN_NULL; int i2 = 2; char s3[] = "pointer3"; char s4[] = "pointer4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_get_attr", "**mpi_win_get_attr %W %d %p %p", i1, i2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_get_attr %W %d %p %p" ); } /* src/mpi/attr/comm_set_attr.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**keyvalinvalid", 0); ChkMsg( err, MPI_ERR_OTHER, "**keyvalinvalid" ); /* src/mpi/attr/comm_set_attr.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_set_attr", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_set_attr" ); { /* src/mpi/attr/comm_set_attr.c */ int i1 = MPI_COMM_WORLD; int i2 = 2; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_set_attr", "**mpi_comm_set_attr %C %d %p", i1, i2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_set_attr %C %d %p" ); } /* src/mpi/attr/type_free_keyval.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_free_keyval", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_free_keyval" ); { /* src/mpi/attr/type_free_keyval.c */ char s1[] = "pointer1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_free_keyval", "**mpi_type_free_keyval %p", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_free_keyval %p" ); } /* src/mpi/attr/comm_delete_attr.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_delete_attr", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_delete_attr" ); { /* src/mpi/attr/comm_delete_attr.c */ int i1 = MPI_COMM_WORLD; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_delete_attr", "**mpi_comm_delete_attr %C %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_delete_attr %C %d" ); } /* src/mpi/attr/win_free_keyval.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_free_keyval", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_free_keyval" ); { /* src/mpi/attr/win_free_keyval.c */ char s1[] = "pointer1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_free_keyval", "**mpi_win_free_keyval %p", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_free_keyval %p" ); } /* src/mpi/attr/comm_free_keyval.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_free_keyval", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_free_keyval" ); { /* src/mpi/attr/comm_free_keyval.c */ char s1[] = "pointer1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_free_keyval", "**mpi_comm_free_keyval %p", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_free_keyval %p" ); } /* src/mpi/attr/win_set_attr.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_set_attr", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_set_attr" ); { /* src/mpi/attr/win_set_attr.c */ int i1 = MPI_WIN_NULL; int i2 = 2; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_set_attr", "**mpi_win_set_attr %W %d %p", i1, i2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_set_attr %W %d %p" ); } /* src/mpi/pt2pt/recv_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_recv_init", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_recv_init" ); { /* src/mpi/pt2pt/recv_init.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; int i4 = 4; int i5 = 5; int i6 = MPI_COMM_WORLD; char s7[] = "pointer7"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_recv_init", "**mpi_recv_init %p %d %D %i %t %C %p", s1, i2, i3, i4, i5, i6, s7 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_recv_init %p %d %D %i %t %C %p" ); } /* src/mpi/pt2pt/bsend.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_bsend", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_bsend" ); { /* src/mpi/pt2pt/bsend.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; int i4 = 4; int i5 = 5; int i6 = MPI_COMM_WORLD; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_bsend", "**mpi_bsend %p %d %D %i %t %C", s1, i2, i3, i4, i5, i6 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_bsend %p %d %D %i %t %C" ); } /* src/mpi/pt2pt/test_cancelled.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_test_cancelled", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_test_cancelled" ); { /* src/mpi/pt2pt/test_cancelled.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_test_cancelled", "**mpi_test_cancelled %p %p", s1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_test_cancelled %p %p" ); } /* src/mpi/pt2pt/isend.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_isend", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_isend" ); { /* src/mpi/pt2pt/isend.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; int i4 = 4; int i5 = 5; int i6 = MPI_COMM_WORLD; char s7[] = "pointer7"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_isend", "**mpi_isend %p %d %D %i %t %C %p", s1, i2, i3, i4, i5, i6, s7 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_isend %p %d %D %i %t %C %p" ); } /* src/mpi/pt2pt/sendrecv_rep.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_sendrecv_replace", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_sendrecv_replace" ); { /* src/mpi/pt2pt/sendrecv_rep.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; int i4 = 4; int i5 = 5; int i6 = 6; int i7 = 7; int i8 = MPI_COMM_WORLD; char s9[] = "pointer9"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_sendrecv_replace", "**mpi_sendrecv_replace %p %d %D %i %t %i %t %C %p", s1, i2, i3, i4, i5, i6, i7, i8, s9 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_sendrecv_replace %p %d %D %i %t %i %t %C %p" ); } /* src/mpi/pt2pt/improbe.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_improbe", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_improbe" ); { /* src/mpi/pt2pt/improbe.c */ int i1 = 1; int i2 = 2; int i3 = MPI_COMM_WORLD; char s4[] = "pointer4"; char s5[] = "pointer5"; char s6[] = "pointer6"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_improbe", "**mpi_improbe %d %d %C %p %p %p", i1, i2, i3, s4, s5, s6 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_improbe %d %d %C %p %p %p" ); } /* src/mpi/pt2pt/waitsome.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**failure_pending", 0); ChkMsg( err, MPI_ERR_OTHER, "**failure_pending" ); /* src/mpi/pt2pt/waitsome.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_waitsome", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_waitsome" ); { /* src/mpi/pt2pt/waitsome.c */ int i1 = 1; char s2[] = "pointer2"; char s3[] = "pointer3"; char s4[] = "pointer4"; char s5[] = "pointer5"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_waitsome", "**mpi_waitsome %d %p %p %p %p", i1, s2, s3, s4, s5 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_waitsome %d %p %p %p %p" ); } /* src/mpi/pt2pt/start.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_start", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_start" ); { /* src/mpi/pt2pt/start.c */ char s1[] = "pointer1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_start", "**mpi_start %p", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_start %p" ); } /* src/mpi/pt2pt/send_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_send_init", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_send_init" ); { /* src/mpi/pt2pt/send_init.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; int i4 = 4; int i5 = 5; int i6 = MPI_COMM_WORLD; char s7[] = "pointer7"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_send_init", "**mpi_send_init %p %d %D %i %t %C %p", s1, i2, i3, i4, i5, i6, s7 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_send_init %p %d %D %i %t %C %p" ); } /* src/mpi/pt2pt/ibsend.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_ibsend", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_ibsend" ); { /* src/mpi/pt2pt/ibsend.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; int i4 = 4; int i5 = 5; int i6 = MPI_COMM_WORLD; char s7[] = "pointer7"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_ibsend", "**mpi_ibsend %p %d %D %i %t %C %p", s1, i2, i3, i4, i5, i6, s7 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_ibsend %p %d %D %i %t %C %p" ); } /* src/mpi/pt2pt/mrecv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**reqnotmsg", 0); ChkMsg( err, MPI_ERR_OTHER, "**reqnotmsg" ); /* src/mpi/pt2pt/mrecv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_mrecv", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_mrecv" ); { /* src/mpi/pt2pt/mrecv.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; char s4[] = "pointer4"; char s5[] = "pointer5"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_mrecv", "**mpi_mrecv %p %d %D %p %p", s1, i2, i3, s4, s5 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_mrecv %p %d %D %p %p" ); } /* src/mpi/pt2pt/greq_complete.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**notgenreq", 0); ChkMsg( err, MPI_ERR_OTHER, "**notgenreq" ); { /* src/mpi/pt2pt/greq_complete.c */ int i1 = MPI_REQUEST_NULL; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_grequest_complete", "**mpi_grequest_complete %R", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_grequest_complete %R" ); } /* src/mpi/pt2pt/status_set_cancelled.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_status_set_cancelled", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_status_set_cancelled" ); { /* src/mpi/pt2pt/status_set_cancelled.c */ char s1[] = "pointer1"; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_status_set_cancelled", "**mpi_status_set_cancelled %p %d", s1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_status_set_cancelled %p %d" ); } /* src/mpi/pt2pt/test.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_test", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_test" ); { /* src/mpi/pt2pt/test.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_test", "**mpi_test %p %p %p", s1, s2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_test %p %p %p" ); } /* src/mpi/pt2pt/mpir_request.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**badcase", 0); ChkMsg( err, MPI_ERR_OTHER, "**badcase" ); { /* src/mpi/pt2pt/mpir_request.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**badcase", "**badcase %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**badcase %d" ); } { /* src/mpi/pt2pt/mpir_request.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**user", "**userquery %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**userquery %d" ); } { /* src/mpi/pt2pt/mpir_request.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**user", "**usercancel %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**usercancel %d" ); } { /* src/mpi/pt2pt/mpir_request.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**user", "**userfree %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**userfree %d" ); } /* src/mpi/pt2pt/recv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**proc_failed", 0); ChkMsg( err, MPI_ERR_OTHER, "**proc_failed" ); /* src/mpi/pt2pt/recv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_recv", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_recv" ); { /* src/mpi/pt2pt/recv.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; int i4 = 4; int i5 = 5; int i6 = MPI_COMM_WORLD; char s7[] = "pointer7"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_recv", "**mpi_recv %p %d %D %i %t %C %p", s1, i2, i3, i4, i5, i6, s7 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_recv %p %d %D %i %t %C %p" ); } /* src/mpi/pt2pt/ssend_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_ssend_init", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_ssend_init" ); { /* src/mpi/pt2pt/ssend_init.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; int i4 = 4; int i5 = 5; int i6 = MPI_COMM_WORLD; char s7[] = "pointer7"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_ssend_init", "**mpi_ssend_init %p %d %D %i %t %C %p", s1, i2, i3, i4, i5, i6, s7 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_ssend_init %p %d %D %i %t %C %p" ); } /* src/mpi/pt2pt/rsend_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_rsend_init", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_rsend_init" ); { /* src/mpi/pt2pt/rsend_init.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; int i4 = 4; int i5 = 5; int i6 = MPI_COMM_WORLD; char s7[] = "pointer7"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_rsend_init", "**mpi_rsend_init %p %d %D %i %t %C %p", s1, i2, i3, i4, i5, i6, s7 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_rsend_init %p %d %D %i %t %C %p" ); } /* src/mpi/pt2pt/ssend.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_ssend", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_ssend" ); { /* src/mpi/pt2pt/ssend.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; int i4 = 4; int i5 = 5; int i6 = MPI_COMM_WORLD; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_ssend", "**mpi_ssend %p %d %D %i %t %C", s1, i2, i3, i4, i5, i6 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_ssend %p %d %D %i %t %C" ); } /* src/mpi/pt2pt/mprobe.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_mprobe", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_mprobe" ); { /* src/mpi/pt2pt/mprobe.c */ int i1 = 1; int i2 = 2; int i3 = MPI_COMM_WORLD; char s4[] = "pointer4"; char s5[] = "pointer5"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_mprobe", "**mpi_mprobe %d %d %C %p %p", i1, i2, i3, s4, s5 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_mprobe %d %d %C %p %p" ); } /* src/mpi/pt2pt/probe.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_probe", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_probe" ); { /* src/mpi/pt2pt/probe.c */ int i1 = 1; int i2 = 2; int i3 = MPI_COMM_WORLD; char s4[] = "pointer4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_probe", "**mpi_probe %i %t %C %p", i1, i2, i3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_probe %i %t %C %p" ); } /* src/mpi/pt2pt/bsendutil.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**bufexists", 0); ChkMsg( err, MPI_ERR_OTHER, "**bufexists" ); /* src/mpi/pt2pt/bsendutil.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**bsendbufsmall", 0); ChkMsg( err, MPI_ERR_OTHER, "**bsendbufsmall" ); { /* src/mpi/pt2pt/bsendutil.c */ int i1 = 1; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**bsendbufsmall", "**bsendbufsmall %d %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**bsendbufsmall %d %d" ); } /* src/mpi/pt2pt/bsendutil.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**bsendpending", 0); ChkMsg( err, MPI_ERR_OTHER, "**bsendpending" ); /* src/mpi/pt2pt/bsendutil.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**bufbsend", 0); ChkMsg( err, MPI_ERR_OTHER, "**bufbsend" ); { /* src/mpi/pt2pt/bsendutil.c */ int i1 = 1; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**bufbsend", "**bufbsend %d %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**bufbsend %d %d" ); } /* src/mpi/pt2pt/bufattach.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_buffer_attach", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_buffer_attach" ); { /* src/mpi/pt2pt/bufattach.c */ char s1[] = "pointer1"; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_buffer_attach", "**mpi_buffer_attach %p %d", s1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_buffer_attach %p %d" ); } /* src/mpi/pt2pt/cancel.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**requestpersistactive", 0); ChkMsg( err, MPI_ERR_OTHER, "**requestpersistactive" ); /* src/mpi/pt2pt/cancel.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**cancelunknown", 0); ChkMsg( err, MPI_ERR_OTHER, "**cancelunknown" ); /* src/mpi/pt2pt/cancel.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_cancel", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_cancel" ); { /* src/mpi/pt2pt/cancel.c */ char s1[] = "pointer1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_cancel", "**mpi_cancel %p", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_cancel %p" ); } /* src/mpi/pt2pt/buffree.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_buffer_detach", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_buffer_detach" ); { /* src/mpi/pt2pt/buffree.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_buffer_detach", "**mpi_buffer_detach %p %p", s1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_buffer_detach %p %p" ); } /* src/mpi/pt2pt/wait.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_wait", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_wait" ); { /* src/mpi/pt2pt/wait.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_wait", "**mpi_wait %p %p", s1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_wait %p %p" ); } /* src/mpi/pt2pt/rsend.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_rsend", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_rsend" ); { /* src/mpi/pt2pt/rsend.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; int i4 = 4; int i5 = 5; int i6 = MPI_COMM_WORLD; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_rsend", "**mpi_rsend %p %d %D %i %t %C", s1, i2, i3, i4, i5, i6 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_rsend %p %d %D %i %t %C" ); } /* src/mpi/pt2pt/testall.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_testall", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_testall" ); { /* src/mpi/pt2pt/testall.c */ int i1 = 1; char s2[] = "pointer2"; char s3[] = "pointer3"; char s4[] = "pointer4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_testall", "**mpi_testall %d %p %p %p", i1, s2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_testall %d %p %p %p" ); } /* src/mpi/pt2pt/request_get_status.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_request_get_status", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_request_get_status" ); { /* src/mpi/pt2pt/request_get_status.c */ int i1 = MPI_REQUEST_NULL; char s2[] = "pointer2"; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_request_get_status", "**mpi_request_get_status %R %p %p", i1, s2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_request_get_status %R %p %p" ); } /* src/mpi/pt2pt/request_free.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**request_invalid_kind", 0); ChkMsg( err, MPI_ERR_OTHER, "**request_invalid_kind" ); { /* src/mpi/pt2pt/request_free.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**request_invalid_kind", "**request_invalid_kind %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**request_invalid_kind %d" ); } /* src/mpi/pt2pt/request_free.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_request_free", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_request_free" ); { /* src/mpi/pt2pt/request_free.c */ char s1[] = "pointer1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_request_free", "**mpi_request_free %p", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_request_free %p" ); } /* src/mpi/pt2pt/waitany.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_waitany", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_waitany" ); { /* src/mpi/pt2pt/waitany.c */ int i1 = 1; char s2[] = "pointer2"; char s3[] = "pointer3"; char s4[] = "pointer4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_waitany", "**mpi_waitany %d %p %p %p", i1, s2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_waitany %d %p %p %p" ); } /* src/mpi/pt2pt/greq_start.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_grequest_start", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_grequest_start" ); { /* src/mpi/pt2pt/greq_start.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; char s3[] = "pointer3"; char s4[] = "pointer4"; char s5[] = "pointer5"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_grequest_start", "**mpi_grequest_start %p %p %p %p %p", s1, s2, s3, s4, s5 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_grequest_start %p %p %p %p %p" ); } /* src/mpi/pt2pt/greq_start.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpix_grequest_class_create", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpix_grequest_class_create" ); { /* src/mpi/pt2pt/greq_start.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; char s3[] = "pointer3"; char s4[] = "pointer4"; char s5[] = "pointer5"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpix_grequest_class_create", "**mpix_grequest_class_create %p %p %p %p %p", s1, s2, s3, s4, s5 ); ChkMsg( err, MPI_ERR_OTHER, "**mpix_grequest_class_create %p %p %p %p %p" ); } /* src/mpi/pt2pt/iprobe.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_iprobe", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_iprobe" ); { /* src/mpi/pt2pt/iprobe.c */ int i1 = 1; int i2 = 2; int i3 = MPI_COMM_WORLD; char s4[] = "pointer4"; char s5[] = "pointer5"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_iprobe", "**mpi_iprobe %i %t %C %p %p", i1, i2, i3, s4, s5 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_iprobe %i %t %C %p %p" ); } /* src/mpi/pt2pt/irsend.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_irsend", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_irsend" ); { /* src/mpi/pt2pt/irsend.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; int i4 = 4; int i5 = 5; int i6 = MPI_COMM_WORLD; char s7[] = "pointer7"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_irsend", "**mpi_irsend %p %d %D %i %t %C %p", s1, i2, i3, i4, i5, i6, s7 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_irsend %p %d %D %i %t %C %p" ); } /* src/mpi/pt2pt/waitall.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**msgnotreq", 0); ChkMsg( err, MPI_ERR_OTHER, "**msgnotreq" ); { /* src/mpi/pt2pt/waitall.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**msgnotreq", "**msgnotreq %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**msgnotreq %d" ); } /* src/mpi/pt2pt/waitall.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**instatus", 0); ChkMsg( err, MPI_ERR_OTHER, "**instatus" ); /* src/mpi/pt2pt/waitall.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_waitall", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_waitall" ); { /* src/mpi/pt2pt/waitall.c */ int i1 = 1; char s2[] = "pointer2"; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_waitall", "**mpi_waitall %d %p %p", i1, s2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_waitall %d %p %p" ); } /* src/mpi/pt2pt/imrecv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_imrecv", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_imrecv" ); { /* src/mpi/pt2pt/imrecv.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; char s4[] = "pointer4"; char s5[] = "pointer5"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_imrecv", "**mpi_imrecv %p %d %D %p %p", s1, i2, i3, s4, s5 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_imrecv %p %d %D %p %p" ); } /* src/mpi/pt2pt/issend.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_issend", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_issend" ); { /* src/mpi/pt2pt/issend.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; int i4 = 4; int i5 = 5; int i6 = MPI_COMM_WORLD; char s7[] = "pointer7"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_issend", "**mpi_issend %p %d %D %i %t %C %p", s1, i2, i3, i4, i5, i6, s7 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_issend %p %d %D %i %t %C %p" ); } /* src/mpi/pt2pt/testany.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_testany", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_testany" ); { /* src/mpi/pt2pt/testany.c */ int i1 = 1; char s2[] = "pointer2"; char s3[] = "pointer3"; char s4[] = "pointer4"; char s5[] = "pointer5"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_testany", "**mpi_testany %d %p %p %p %p", i1, s2, s3, s4, s5 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_testany %d %p %p %p %p" ); } /* src/mpi/pt2pt/bsend_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_bsend_init", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_bsend_init" ); { /* src/mpi/pt2pt/bsend_init.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; int i4 = 4; int i5 = 5; int i6 = MPI_COMM_WORLD; char s7[] = "pointer7"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_bsend_init", "**mpi_bsend_init %p %d %D %i %t %C %p", s1, i2, i3, i4, i5, i6, s7 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_bsend_init %p %d %D %i %t %C %p" ); } /* src/mpi/pt2pt/startall.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_startall", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_startall" ); { /* src/mpi/pt2pt/startall.c */ int i1 = 1; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_startall", "**mpi_startall %d %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_startall %d %p" ); } /* src/mpi/pt2pt/testsome.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_testsome", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_testsome" ); { /* src/mpi/pt2pt/testsome.c */ int i1 = 1; char s2[] = "pointer2"; char s3[] = "pointer3"; char s4[] = "pointer4"; char s5[] = "pointer5"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_testsome", "**mpi_testsome %d %p %p %p %p", i1, s2, s3, s4, s5 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_testsome %d %p %p %p %p" ); } /* src/mpi/pt2pt/irecv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_irecv", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_irecv" ); { /* src/mpi/pt2pt/irecv.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; int i4 = 4; int i5 = 5; int i6 = MPI_COMM_WORLD; char s7[] = "pointer7"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_irecv", "**mpi_irecv %p %d %D %i %t %C %p", s1, i2, i3, i4, i5, i6, s7 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_irecv %p %d %D %i %t %C %p" ); } /* src/mpi/pt2pt/send.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_send", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_send" ); { /* src/mpi/pt2pt/send.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; int i4 = 4; int i5 = 5; int i6 = MPI_COMM_WORLD; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_send", "**mpi_send %p %d %D %i %t %C", s1, i2, i3, i4, i5, i6 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_send %p %d %D %i %t %C" ); } /* src/mpi/pt2pt/sendrecv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_sendrecv", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_sendrecv" ); { /* src/mpi/pt2pt/sendrecv.c */ char s1[] = "pointer1"; int i2 = 2; int i3 = MPI_INT; int i4 = 4; int i5 = 5; char s6[] = "pointer6"; int i7 = 7; int i8 = MPI_INT; int i9 = 9; int i10 = 10; int i11 = MPI_COMM_WORLD; char s12[] = "pointer12"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_sendrecv", "**mpi_sendrecv %p %d %D %i %t %p %d %D %i %t %C %p", s1, i2, i3, i4, i5, s6, i7, i8, i9, i10, i11, s12 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_sendrecv %p %d %D %i %t %p %d %D %i %t %C %p" ); } /* src/mpi/errhan/add_error_string.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_add_error_string", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_add_error_string" ); { /* src/mpi/errhan/add_error_string.c */ int i1 = 1; char s2[] = "string2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_add_error_string", "**mpi_add_error_string %d %s", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_add_error_string %d %s" ); } /* src/mpi/errhan/win_call_errhandler.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_call_errhandler", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_call_errhandler" ); { /* src/mpi/errhan/win_call_errhandler.c */ int i1 = MPI_WIN_NULL; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_call_errhandler", "**mpi_win_call_errhandler %W %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_call_errhandler %W %d" ); } /* src/mpi/errhan/win_create_errhandler.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_create_errhandler", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_create_errhandler" ); { /* src/mpi/errhan/win_create_errhandler.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_create_errhandler", "**mpi_win_create_errhandler %p %p", s1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_create_errhandler %p %p" ); } /* src/mpi/errhan/errhandler_set.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_errhandler_set", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_errhandler_set" ); { /* src/mpi/errhan/errhandler_set.c */ int i1 = MPI_COMM_WORLD; int i2 = MPI_ERRORS_RETURN; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_errhandler_set", "**mpi_errhandler_set %C %E", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_errhandler_set %C %E" ); } /* src/mpi/errhan/file_create_errhandler.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_file_create_errhandler", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_file_create_errhandler" ); { /* src/mpi/errhan/file_create_errhandler.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_file_create_errhandler", "**mpi_file_create_errhandler %p %p", s1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_file_create_errhandler %p %p" ); } /* src/mpi/errhan/errhandler_free.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_errhandler_free", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_errhandler_free" ); { /* src/mpi/errhan/errhandler_free.c */ char s1[] = "pointer1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_errhandler_free", "**mpi_errhandler_free %p", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_errhandler_free %p" ); } /* src/mpi/errhan/dynerrutil.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**argerrcode", 0); ChkMsg( err, MPI_ERR_OTHER, "**argerrcode" ); { /* src/mpi/errhan/dynerrutil.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**argerrcode", "**argerrcode %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**argerrcode %d" ); } { /* src/mpi/errhan/dynerrutil.c */ char s1[] = "string1"; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**nomem", "**nomem %s %d", s1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**nomem %s %d" ); } /* src/mpi/errhan/comm_create_errhandler.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_create_errhandler", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_create_errhandler" ); { /* src/mpi/errhan/comm_create_errhandler.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_create_errhandler", "**mpi_comm_create_errhandler %p %p", s1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_create_errhandler %p %p" ); } /* src/mpi/errhan/error_string.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_error_string", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_error_string" ); { /* src/mpi/errhan/error_string.c */ int i1 = 1; char s2[] = "string2"; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_error_string", "**mpi_error_string %d %s %p", i1, s2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_error_string %d %s %p" ); } /* src/mpi/errhan/file_set_errhandler.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**errhandnotfile", 0); ChkMsg( err, MPI_ERR_OTHER, "**errhandnotfile" ); /* src/mpi/errhan/file_set_errhandler.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_file_set_errhandler", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_file_set_errhandler" ); { /* src/mpi/errhan/file_set_errhandler.c */ MPI_File i1 = MPI_FILE_NULL; int i2 = MPI_ERRORS_RETURN; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_file_set_errhandler", "**mpi_file_set_errhandler %F %E", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_file_set_errhandler %F %E" ); } /* src/mpi/errhan/win_get_errhandler.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_get_errhandler", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_get_errhandler" ); { /* src/mpi/errhan/win_get_errhandler.c */ int i1 = MPI_WIN_NULL; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_get_errhandler", "**mpi_win_get_errhandler %W %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_get_errhandler %W %p" ); } /* src/mpi/errhan/comm_get_errhandler.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_get_errhandler", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_get_errhandler" ); { /* src/mpi/errhan/comm_get_errhandler.c */ int i1 = MPI_COMM_WORLD; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_get_errhandler", "**mpi_comm_get_errhandler %C %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_get_errhandler %C %p" ); } /* src/mpi/errhan/add_error_class.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**noerrclasses", 0); ChkMsg( err, MPI_ERR_OTHER, "**noerrclasses" ); /* src/mpi/errhan/add_error_class.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_add_error_class", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_add_error_class" ); { /* src/mpi/errhan/add_error_class.c */ char s1[] = "pointer1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_add_error_class", "**mpi_add_error_class %p", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_add_error_class %p" ); } /* src/mpi/errhan/errhandler_get.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_errhandler_get", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_errhandler_get" ); { /* src/mpi/errhan/errhandler_get.c */ int i1 = MPI_COMM_WORLD; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_errhandler_get", "**mpi_errhandler_get %C %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_errhandler_get %C %p" ); } /* src/mpi/errhan/errhandler_create.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_errhandler_create", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_errhandler_create" ); { /* src/mpi/errhan/errhandler_create.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_errhandler_create", "**mpi_errhandler_create %p %p", s1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_errhandler_create %p %p" ); } /* src/mpi/errhan/file_get_errhandler.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_file_get_errhandler", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_file_get_errhandler" ); { /* src/mpi/errhan/file_get_errhandler.c */ MPI_File i1 = MPI_FILE_NULL; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_file_get_errhandler", "**mpi_file_get_errhandler %F %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_file_get_errhandler %F %p" ); } /* src/mpi/errhan/add_error_code.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**noerrcodes", 0); ChkMsg( err, MPI_ERR_OTHER, "**noerrcodes" ); /* src/mpi/errhan/add_error_code.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_add_error_code", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_add_error_code" ); { /* src/mpi/errhan/add_error_code.c */ int i1 = 1; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_add_error_code", "**mpi_add_error_code %d %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_add_error_code %d %p" ); } /* src/mpi/errhan/comm_set_errhandler.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_set_errhandler", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_set_errhandler" ); { /* src/mpi/errhan/comm_set_errhandler.c */ int i1 = MPI_COMM_WORLD; int i2 = MPI_ERRORS_RETURN; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_set_errhandler", "**mpi_comm_set_errhandler %C %E", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_set_errhandler %C %E" ); } /* src/mpi/errhan/error_class.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_error_class", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_error_class" ); { /* src/mpi/errhan/error_class.c */ int i1 = 1; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_error_class", "**mpi_error_class %d %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_error_class %d %p" ); } /* src/mpi/errhan/win_set_errhandler.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**errhandnotwin", 0); ChkMsg( err, MPI_ERR_OTHER, "**errhandnotwin" ); /* src/mpi/errhan/win_set_errhandler.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_set_errhandler", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_set_errhandler" ); { /* src/mpi/errhan/win_set_errhandler.c */ int i1 = MPI_WIN_NULL; int i2 = MPI_ERRORS_RETURN; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_win_set_errhandler", "**mpi_win_set_errhandler %W %E", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_win_set_errhandler %W %E" ); } /* src/mpi/errhan/comm_call_errhandler.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_call_errhandler", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_call_errhandler" ); { /* src/mpi/errhan/comm_call_errhandler.c */ int i1 = MPI_COMM_WORLD; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_call_errhandler", "**mpi_comm_call_errhandler %C %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_call_errhandler %C %d" ); } /* src/mpi/spawn/close_port.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_close_port", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_close_port" ); { /* src/mpi/spawn/close_port.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_close_port", "**mpi_close_port %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_close_port %s" ); } /* src/mpi/spawn/comm_spawn_multiple.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_spawn_multiple", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_spawn_multiple" ); { /* src/mpi/spawn/comm_spawn_multiple.c */ int i1 = 1; char s2[] = "pointer2"; char s3[] = "pointer3"; char s4[] = "pointer4"; char s5[] = "pointer5"; int i6 = 6; int i7 = MPI_COMM_WORLD; char s8[] = "pointer8"; char s9[] = "pointer9"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_spawn_multiple", "**mpi_comm_spawn_multiple %d %p %p %p %p %d %C %p %p", i1, s2, s3, s4, s5, i6, i7, s8, s9 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_spawn_multiple %d %p %p %p %p %d %C %p %p" ); } /* src/mpi/spawn/comm_join.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**openportfailed", 0); ChkMsg( err, MPI_ERR_OTHER, "**openportfailed" ); /* src/mpi/spawn/comm_join.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**join_send", 0); ChkMsg( err, MPI_ERR_OTHER, "**join_send" ); { /* src/mpi/spawn/comm_join.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**join_send", "**join_send %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**join_send %d" ); } /* src/mpi/spawn/comm_join.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**join_recv", 0); ChkMsg( err, MPI_ERR_OTHER, "**join_recv" ); { /* src/mpi/spawn/comm_join.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**join_recv", "**join_recv %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**join_recv %d" ); } /* src/mpi/spawn/comm_join.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**join_portname", 0); ChkMsg( err, MPI_ERR_OTHER, "**join_portname" ); { /* src/mpi/spawn/comm_join.c */ char s1[] = "string1"; char s2[] = "string2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**join_portname", "**join_portname %s %s", s1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**join_portname %s %s" ); } /* src/mpi/spawn/comm_join.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_join", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_join" ); { /* src/mpi/spawn/comm_join.c */ int i1 = 1; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_join", "**mpi_comm_join %d %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_join %d %p" ); } /* src/mpi/spawn/publish_name.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**nonamepub", 0); ChkMsg( err, MPI_ERR_OTHER, "**nonamepub" ); /* src/mpi/spawn/publish_name.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_publish_name", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_publish_name" ); { /* src/mpi/spawn/publish_name.c */ char s1[] = "string1"; int i2 = MPI_INFO_NULL; char s3[] = "string3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_publish_name", "**mpi_publish_name %s %I %s", s1, i2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_publish_name %s %I %s" ); } /* src/mpi/spawn/comm_connect.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_connect", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_connect" ); { /* src/mpi/spawn/comm_connect.c */ char s1[] = "string1"; int i2 = MPI_INFO_NULL; int i3 = 3; int i4 = MPI_COMM_WORLD; char s5[] = "pointer5"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_connect", "**mpi_comm_connect %s %I %d %C %p", s1, i2, i3, i4, s5 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_connect %s %I %d %C %p" ); } /* src/mpi/spawn/comm_disconnect.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_disconnect", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_disconnect" ); { /* src/mpi/spawn/comm_disconnect.c */ int i1 = MPI_COMM_WORLD; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_disconnect", "**mpi_comm_disconnect %C", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_disconnect %C" ); } /* src/mpi/spawn/unpublish_name.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_unpublish_name", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_unpublish_name" ); { /* src/mpi/spawn/unpublish_name.c */ char s1[] = "string1"; int i2 = MPI_INFO_NULL; char s3[] = "string3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_unpublish_name", "**mpi_unpublish_name %s %I %s", s1, i2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_unpublish_name %s %I %s" ); } /* src/mpi/spawn/comm_accept.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_accept", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_accept" ); { /* src/mpi/spawn/comm_accept.c */ char s1[] = "string1"; int i2 = MPI_INFO_NULL; int i3 = 3; int i4 = MPI_COMM_WORLD; char s5[] = "pointer5"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_accept", "**mpi_comm_accept %s %I %d %C %p", s1, i2, i3, i4, s5 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_accept %s %I %d %C %p" ); } /* src/mpi/spawn/lookup_name.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_lookup_name", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_lookup_name" ); { /* src/mpi/spawn/lookup_name.c */ char s1[] = "string1"; int i2 = MPI_INFO_NULL; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_lookup_name", "**mpi_lookup_name %s %I %p", s1, i2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_lookup_name %s %I %p" ); } /* src/mpi/spawn/comm_get_parent.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_get_parent", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_get_parent" ); { /* src/mpi/spawn/comm_get_parent.c */ char s1[] = "pointer1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_get_parent", "**mpi_comm_get_parent %p", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_get_parent %p" ); } /* src/mpi/spawn/open_port.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_open_port", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_open_port" ); { /* src/mpi/spawn/open_port.c */ int i1 = MPI_INFO_NULL; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_open_port", "**mpi_open_port %I %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_open_port %I %p" ); } /* src/mpi/spawn/comm_spawn.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_spawn", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_spawn" ); { /* src/mpi/spawn/comm_spawn.c */ char s1[] = "string1"; char s2[] = "pointer2"; int i3 = 3; int i4 = MPI_INFO_NULL; int i5 = 5; int i6 = MPI_COMM_WORLD; char s7[] = "pointer7"; char s8[] = "pointer8"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_comm_spawn", "**mpi_comm_spawn %s %p %d %I %d %C %p %p", s1, s2, i3, i4, i5, i6, s7, s8 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_comm_spawn %s %p %d %I %d %C %p %p" ); } /* src/mpi_t/pvar_handle_alloc.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_pvar_handle_alloc", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_pvar_handle_alloc" ); { /* src/mpi_t/pvar_handle_alloc.c */ char s1[] = "pointer1"; int i2 = 2; char s3[] = "pointer3"; char s4[] = "pointer4"; char s5[] = "pointer5"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_pvar_handle_alloc", "**mpi_t_pvar_handle_alloc %p %d %p %p %p", s1, i2, s3, s4, s5 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_pvar_handle_alloc %p %d %p %p %p" ); } /* src/mpi_t/cat_get_num.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_category_get_num", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_category_get_num" ); { /* src/mpi_t/cat_get_num.c */ char s1[] = "pointer1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_category_get_num", "**mpi_t_category_get_num %p", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_category_get_num %p" ); } /* src/mpi_t/pvar_session_free.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_pvar_session_free", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_pvar_session_free" ); { /* src/mpi_t/pvar_session_free.c */ char s1[] = "pointer1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_pvar_session_free", "**mpi_t_pvar_session_free %p", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_pvar_session_free %p" ); } /* src/mpi_t/cvar_handle_free.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_cvar_handle_free", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_cvar_handle_free" ); { /* src/mpi_t/cvar_handle_free.c */ char s1[] = "pointer1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_cvar_handle_free", "**mpi_t_cvar_handle_free %p", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_cvar_handle_free %p" ); } /* src/mpi_t/cat_get_categories.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_category_get_categories", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_category_get_categories" ); { /* src/mpi_t/cat_get_categories.c */ int i1 = 1; int i2 = 2; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_category_get_categories", "**mpi_t_category_get_categories %d %d %p", i1, i2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_category_get_categories %d %d %p" ); } /* src/mpi_t/cat_get_info.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_category_get_info", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_category_get_info" ); { /* src/mpi_t/cat_get_info.c */ int i1 = 1; char s2[] = "pointer2"; char s3[] = "pointer3"; char s4[] = "pointer4"; char s5[] = "pointer5"; char s6[] = "pointer6"; char s7[] = "pointer7"; char s8[] = "pointer8"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_category_get_info", "**mpi_t_category_get_info %d %p %p %p %p %p %p %p", i1, s2, s3, s4, s5, s6, s7, s8 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_category_get_info %d %p %p %p %p %p %p %p" ); } /* src/mpi_t/cvar_write.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**intern", 0); ChkMsg( err, MPI_ERR_OTHER, "**intern" ); { /* src/mpi_t/cvar_write.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**intern", "**intern %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**intern %s" ); } /* src/mpi_t/cvar_write.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_cvar_write", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_cvar_write" ); { /* src/mpi_t/cvar_write.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_cvar_write", "**mpi_t_cvar_write %p %p", s1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_cvar_write %p %p" ); } /* src/mpi_t/mpit_initthread.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_init_thread", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_init_thread" ); { /* src/mpi_t/mpit_initthread.c */ int i1 = 1; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_init_thread", "**mpi_t_init_thread %d %p", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_init_thread %d %p" ); } /* src/mpi_t/enum_get_item.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_enum_get_item", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_enum_get_item" ); { /* src/mpi_t/enum_get_item.c */ char s1[] = "pointer1"; int i2 = 2; char s3[] = "pointer3"; char s4[] = "pointer4"; char s5[] = "pointer5"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_enum_get_item", "**mpi_t_enum_get_item %p %d %p %p %p", s1, i2, s3, s4, s5 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_enum_get_item %p %d %p %p %p" ); } /* src/mpi_t/pvar_write.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_pvar_write", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_pvar_write" ); { /* src/mpi_t/pvar_write.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_pvar_write", "**mpi_t_pvar_write %p %p %p", s1, s2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_pvar_write %p %p %p" ); } /* src/mpi_t/pvar_handle_free.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_pvar_handle_free", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_pvar_handle_free" ); { /* src/mpi_t/pvar_handle_free.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_pvar_handle_free", "**mpi_t_pvar_handle_free %p %p", s1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_pvar_handle_free %p %p" ); } /* src/mpi_t/pvar_start.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_pvar_start", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_pvar_start" ); { /* src/mpi_t/pvar_start.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_pvar_start", "**mpi_t_pvar_start %p %p", s1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_pvar_start %p %p" ); } /* src/mpi_t/mpit_finalize.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_finalize", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_finalize" ); /* src/mpi_t/pvar_get_num.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_pvar_get_num", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_pvar_get_num" ); { /* src/mpi_t/pvar_get_num.c */ char s1[] = "pointer1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_pvar_get_num", "**mpi_t_pvar_get_num %p", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_pvar_get_num %p" ); } /* src/mpi_t/cat_changed.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_category_changed", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_category_changed" ); { /* src/mpi_t/cat_changed.c */ char s1[] = "pointer1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_category_changed", "**mpi_t_category_changed %p", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_category_changed %p" ); } /* src/mpi_t/cvar_read.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_cvar_read", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_cvar_read" ); { /* src/mpi_t/cvar_read.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_cvar_read", "**mpi_t_cvar_read %p %p", s1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_cvar_read %p %p" ); } /* src/mpi_t/cvar_get_info.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_cvar_get_info", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_cvar_get_info" ); { /* src/mpi_t/cvar_get_info.c */ int i1 = 1; char s2[] = "pointer2"; char s3[] = "pointer3"; char s4[] = "pointer4"; char s5[] = "pointer5"; char s6[] = "pointer6"; char s7[] = "pointer7"; char s8[] = "pointer8"; char s9[] = "pointer9"; char s10[] = "pointer10"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_cvar_get_info", "**mpi_t_cvar_get_info %d %p %p %p %p %p %p %p %p %p", i1, s2, s3, s4, s5, s6, s7, s8, s9, s10 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_cvar_get_info %d %p %p %p %p %p %p %p %p %p" ); } /* src/mpi_t/pvar_reset.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_pvar_reset", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_pvar_reset" ); { /* src/mpi_t/pvar_reset.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_pvar_reset", "**mpi_t_pvar_reset %p %p", s1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_pvar_reset %p %p" ); } /* src/mpi_t/pvar_stop.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_pvar_stop", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_pvar_stop" ); { /* src/mpi_t/pvar_stop.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_pvar_stop", "**mpi_t_pvar_stop %p %p", s1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_pvar_stop %p %p" ); } /* src/mpi_t/pvar_readreset.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_pvar_readreset", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_pvar_readreset" ); { /* src/mpi_t/pvar_readreset.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_pvar_readreset", "**mpi_t_pvar_readreset %p %p %p", s1, s2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_pvar_readreset %p %p %p" ); } /* src/mpi_t/cvar_get_num.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_cvar_get_num", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_cvar_get_num" ); { /* src/mpi_t/cvar_get_num.c */ char s1[] = "pointer1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_cvar_get_num", "**mpi_t_cvar_get_num %p", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_cvar_get_num %p" ); } /* src/mpi_t/cvar_handle_alloc.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_cvar_handle_alloc", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_cvar_handle_alloc" ); { /* src/mpi_t/cvar_handle_alloc.c */ int i1 = 1; char s2[] = "pointer2"; char s3[] = "pointer3"; char s4[] = "pointer4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_cvar_handle_alloc", "**mpi_t_cvar_handle_alloc %d %p %p %p", i1, s2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_cvar_handle_alloc %d %p %p %p" ); } /* src/mpi_t/cat_get_cvars.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_category_get_cvars", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_category_get_cvars" ); { /* src/mpi_t/cat_get_cvars.c */ int i1 = 1; int i2 = 2; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_category_get_cvars", "**mpi_t_category_get_cvars %d %d %p", i1, i2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_category_get_cvars %d %d %p" ); } /* src/mpi_t/cat_get_pvars.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_category_get_pvars", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_category_get_pvars" ); { /* src/mpi_t/cat_get_pvars.c */ int i1 = 1; int i2 = 2; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_category_get_pvars", "**mpi_t_category_get_pvars %d %d %p", i1, i2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_category_get_pvars %d %d %p" ); } /* src/mpi_t/pvar_get_info.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_pvar_get_info", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_pvar_get_info" ); { /* src/mpi_t/pvar_get_info.c */ int i1 = 1; char s2[] = "pointer2"; char s3[] = "pointer3"; char s4[] = "pointer4"; char s5[] = "pointer5"; char s6[] = "pointer6"; char s7[] = "pointer7"; char s8[] = "pointer8"; char s9[] = "pointer9"; char s10[] = "pointer10"; char s11[] = "pointer11"; char s12[] = "pointer12"; char s13[] = "pointer13"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_pvar_get_info", "**mpi_t_pvar_get_info %d %p %p %p %p %p %p %p %p %p %p %p %p", i1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_pvar_get_info %d %p %p %p %p %p %p %p %p %p %p %p %p" ); } /* src/mpi_t/pvar_read.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_pvar_read", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_pvar_read" ); { /* src/mpi_t/pvar_read.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_pvar_read", "**mpi_t_pvar_read %p %p %p", s1, s2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_pvar_read %p %p %p" ); } /* src/mpi_t/pvar_session_create.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_pvar_session_create", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_pvar_session_create" ); { /* src/mpi_t/pvar_session_create.c */ char s1[] = "pointer1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_pvar_session_create", "**mpi_t_pvar_session_create %p", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_pvar_session_create %p" ); } /* src/mpi_t/enum_get_info.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_enum_get_info", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_enum_get_info" ); { /* src/mpi_t/enum_get_info.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; char s3[] = "pointer3"; char s4[] = "pointer4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_t_enum_get_info", "**mpi_t_enum_get_info %p %p %p %p", s1, s2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_t_enum_get_info %p %p %p %p" ); } /* src/nameserv/pmi/pmi_nameserv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**namepubnotpub", 0); ChkMsg( err, MPI_ERR_OTHER, "**namepubnotpub" ); { /* src/nameserv/pmi/pmi_nameserv.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**namepubnotpub", "**namepubnotpub %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**namepubnotpub %s" ); } /* src/nameserv/pmi/pmi_nameserv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**namepubnotfound", 0); ChkMsg( err, MPI_ERR_OTHER, "**namepubnotfound" ); { /* src/nameserv/pmi/pmi_nameserv.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**namepubnotfound", "**namepubnotfound %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**namepubnotfound %s" ); } /* src/nameserv/pmi/pmi_nameserv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**namepubnotunpub", 0); ChkMsg( err, MPI_ERR_OTHER, "**namepubnotunpub" ); { /* src/nameserv/pmi/pmi_nameserv.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**namepubnotunpub", "**namepubnotunpub %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**namepubnotunpub %s" ); } /* src/nameserv/pmi/pmi_nameserv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pmi_kvs_put", 0); ChkMsg( err, MPI_ERR_OTHER, "**pmi_kvs_put" ); /* src/nameserv/pmi/pmi_nameserv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pmi_kvs_commit", 0); ChkMsg( err, MPI_ERR_OTHER, "**pmi_kvs_commit" ); /* src/nameserv/pmi/pmi_nameserv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pmi_kvs_get", 0); ChkMsg( err, MPI_ERR_OTHER, "**pmi_kvs_get" ); /* src/nameserv/file/file_nameserv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**namepubfile", 0); ChkMsg( err, MPI_ERR_OTHER, "**namepubfile" ); { /* src/nameserv/file/file_nameserv.c */ char s1[] = "string1"; char s2[] = "string2"; char s3[] = "string3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**namepubfile", "**namepubfile %s %s %s", s1, s2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**namepubfile %s %s %s" ); } /* src/util/wrappers/mpiu_sock_wrappers.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**inet_addr", 0); ChkMsg( err, MPI_ERR_OTHER, "**inet_addr" ); { /* src/util/wrappers/mpiu_sock_wrappers.h */ char s1[] = "string1"; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**inet_addr", "**inet_addr %s %d", s1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**inet_addr %s %d" ); } /* src/util/wrappers/mpiu_sock_wrappers.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**wsastartup", 0); ChkMsg( err, MPI_ERR_OTHER, "**wsastartup" ); { /* src/util/wrappers/mpiu_sock_wrappers.h */ char s1[] = "string1"; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**wsastartup", "**wsastartup %s %d", s1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**wsastartup %s %d" ); } /* src/util/wrappers/mpiu_sock_wrappers.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**wsacleanup", 0); ChkMsg( err, MPI_ERR_OTHER, "**wsacleanup" ); { /* src/util/wrappers/mpiu_sock_wrappers.h */ char s1[] = "string1"; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**wsacleanup", "**wsacleanup %s %d", s1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**wsacleanup %s %d" ); } /* src/util/wrappers/mpiu_sock_wrappers.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock_create", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock_create" ); { /* src/util/wrappers/mpiu_sock_wrappers.h */ char s1[] = "string1"; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock_create", "**sock_create %s %d", s1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**sock_create %s %d" ); } /* src/util/wrappers/mpiu_sock_wrappers.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock_close", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock_close" ); { /* src/util/wrappers/mpiu_sock_wrappers.h */ char s1[] = "string1"; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock_close", "**sock_close %s %d", s1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**sock_close %s %d" ); } /* src/util/wrappers/mpiu_sock_wrappers.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**bind", 0); ChkMsg( err, MPI_ERR_OTHER, "**bind" ); { /* src/util/wrappers/mpiu_sock_wrappers.h */ char s1[] = "string1"; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**bind", "**bind %s %d", s1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**bind %s %d" ); } /* src/util/wrappers/mpiu_sock_wrappers.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**bindportrange", 0); ChkMsg( err, MPI_ERR_OTHER, "**bindportrange" ); { /* src/util/wrappers/mpiu_sock_wrappers.h */ int i1 = 1; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**bindportrange", "**bindportrange %d %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**bindportrange %d %d" ); } /* src/util/wrappers/mpiu_sock_wrappers.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**listen", 0); ChkMsg( err, MPI_ERR_OTHER, "**listen" ); { /* src/util/wrappers/mpiu_sock_wrappers.h */ char s1[] = "string1"; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**listen", "**listen %s %d", s1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**listen %s %d" ); } /* src/util/wrappers/mpiu_sock_wrappers.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock_accept", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock_accept" ); { /* src/util/wrappers/mpiu_sock_wrappers.h */ char s1[] = "string1"; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock_accept", "**sock_accept %s %d", s1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**sock_accept %s %d" ); } /* src/util/wrappers/mpiu_sock_wrappers.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock_connect", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock_connect" ); { /* src/util/wrappers/mpiu_sock_wrappers.h */ char s1[] = "string1"; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock_connect", "**sock_connect %s %d", s1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**sock_connect %s %d" ); } /* src/util/wrappers/mpiu_sock_wrappers.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock_read", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock_read" ); { /* src/util/wrappers/mpiu_sock_wrappers.h */ char s1[] = "string1"; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock_read", "**sock_read %s %d", s1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**sock_read %s %d" ); } /* src/util/wrappers/mpiu_sock_wrappers.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock_write", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock_write" ); { /* src/util/wrappers/mpiu_sock_wrappers.h */ char s1[] = "string1"; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock_write", "**sock_write %s %d", s1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**sock_write %s %d" ); } /* src/util/wrappers/mpiu_sock_wrappers.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ioctlsocket", 0); ChkMsg( err, MPI_ERR_OTHER, "**ioctlsocket" ); { /* src/util/wrappers/mpiu_sock_wrappers.h */ char s1[] = "string1"; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ioctlsocket", "**ioctlsocket %s %d", s1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**ioctlsocket %s %d" ); } /* src/util/wrappers/mpiu_sock_wrappers.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**setsockopt", 0); ChkMsg( err, MPI_ERR_OTHER, "**setsockopt" ); { /* src/util/wrappers/mpiu_sock_wrappers.h */ char s1[] = "string1"; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**setsockopt", "**setsockopt %s %d", s1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**setsockopt %s %d" ); } /* src/util/wrappers/mpiu_sock_wrappers.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**getsockopt", 0); ChkMsg( err, MPI_ERR_OTHER, "**getsockopt" ); { /* src/util/wrappers/mpiu_sock_wrappers.h */ char s1[] = "string1"; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**getsockopt", "**getsockopt %s %d", s1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**getsockopt %s %d" ); } /* src/util/wrappers/mpiu_sock_wrappers.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**select", 0); ChkMsg( err, MPI_ERR_OTHER, "**select" ); { /* src/util/wrappers/mpiu_sock_wrappers.h */ char s1[] = "string1"; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**select", "**select %s %d", s1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**select %s %d" ); } /* src/util/wrappers/mpiu_shm_wrappers.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**shmw_gethnd", 0); ChkMsg( err, MPI_ERR_OTHER, "**shmw_gethnd" ); /* src/util/wrappers/mpiu_shm_wrappers.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**shmw_deserbufbig", 0); ChkMsg( err, MPI_ERR_OTHER, "**shmw_deserbufbig" ); /* src/util/wrappers/mpiu_shm_wrappers.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**alloc_shar_mem", 0); ChkMsg( err, MPI_ERR_OTHER, "**alloc_shar_mem" ); { /* src/util/wrappers/mpiu_shm_wrappers.h */ char s1[] = "string1"; char s2[] = "string2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**alloc_shar_mem", "**alloc_shar_mem %s %s", s1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**alloc_shar_mem %s %s" ); } /* src/util/wrappers/mpiu_shm_wrappers.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**shmw_badhnd", 0); ChkMsg( err, MPI_ERR_OTHER, "**shmw_badhnd" ); /* src/util/wrappers/mpiu_shm_wrappers.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**attach_shar_mem", 0); ChkMsg( err, MPI_ERR_OTHER, "**attach_shar_mem" ); { /* src/util/wrappers/mpiu_shm_wrappers.h */ char s1[] = "string1"; char s2[] = "string2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**attach_shar_mem", "**attach_shar_mem %s %s", s1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**attach_shar_mem %s %s" ); } /* src/util/wrappers/mpiu_shm_wrappers.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**detach_shar_mem", 0); ChkMsg( err, MPI_ERR_OTHER, "**detach_shar_mem" ); { /* src/util/wrappers/mpiu_shm_wrappers.h */ char s1[] = "string1"; char s2[] = "string2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**detach_shar_mem", "**detach_shar_mem %s %s", s1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**detach_shar_mem %s %s" ); } /* src/util/wrappers/mpiu_shm_wrappers.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**remove_shar_mem", 0); ChkMsg( err, MPI_ERR_OTHER, "**remove_shar_mem" ); { /* src/util/wrappers/mpiu_shm_wrappers.h */ char s1[] = "string1"; char s2[] = "string2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**remove_shar_mem", "**remove_shar_mem %s %s", s1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**remove_shar_mem %s %s" ); } /* src/util/wrappers/mpiu_shm_wrappers.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mkstemp", 0); ChkMsg( err, MPI_ERR_OTHER, "**mkstemp" ); { /* src/util/wrappers/mpiu_shm_wrappers.h */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mkstemp", "**mkstemp %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mkstemp %s" ); } /* src/util/wrappers/mpiu_shm_wrappers.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**lseek", 0); ChkMsg( err, MPI_ERR_OTHER, "**lseek" ); { /* src/util/wrappers/mpiu_shm_wrappers.h */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**lseek", "**lseek %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**lseek %s" ); } /* src/util/wrappers/mpiu_shm_wrappers.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**write", 0); ChkMsg( err, MPI_ERR_OTHER, "**write" ); /* src/util/wrappers/mpiu_shm_wrappers.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**open", 0); ChkMsg( err, MPI_ERR_OTHER, "**open" ); { /* src/util/wrappers/mpiu_shm_wrappers.h */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**open", "**open %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**open %s" ); } /* src/util/wrappers/mpiu_shm_wrappers.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**shmw_sethnd", 0); ChkMsg( err, MPI_ERR_OTHER, "**shmw_sethnd" ); /* src/util/procmap/local_proc.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**dynamic_node_ids", 0); ChkMsg( err, MPI_ERR_OTHER, "**dynamic_node_ids" ); /* src/binding/fortran/mpif_h/statusf2c.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**notfstatignore", 0); ChkMsg( err, MPI_ERR_OTHER, "**notfstatignore" ); /* src/binding/fortran/mpif_h/addressf.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**inttoosmall", 0); ChkMsg( err, MPI_ERR_OTHER, "**inttoosmall" ); /* src/binding/fortran/mpif_h/statusc2f.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**notcstatignore", 0); ChkMsg( err, MPI_ERR_OTHER, "**notcstatignore" ); /* src/binding/fortran/use_mpi/create_f90_real.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**f90typerealnone", 0); ChkMsg( err, MPI_ERR_OTHER, "**f90typerealnone" ); { /* src/binding/fortran/use_mpi/create_f90_real.c */ int i1 = 1; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**f90typerealnone", "**f90typerealnone %d %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**f90typerealnone %d %d" ); } /* src/binding/fortran/use_mpi/create_f90_real.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_create_f90_real", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_create_f90_real" ); { /* src/binding/fortran/use_mpi/create_f90_real.c */ int i1 = 1; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_create_f90_real", "**mpi_type_create_f90_real %d %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_create_f90_real %d %d" ); } /* src/binding/fortran/use_mpi/create_f90_complex.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**f90typecomplexnone", 0); ChkMsg( err, MPI_ERR_OTHER, "**f90typecomplexnone" ); { /* src/binding/fortran/use_mpi/create_f90_complex.c */ int i1 = 1; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**f90typecomplexnone", "**f90typecomplexnone %d %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**f90typecomplexnone %d %d" ); } /* src/binding/fortran/use_mpi/create_f90_complex.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_create_f90_complex", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_create_f90_complex" ); { /* src/binding/fortran/use_mpi/create_f90_complex.c */ int i1 = 1; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_create_f90_complex", "**mpi_type_create_f90_complex %d %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_create_f90_complex %d %d" ); } /* src/binding/fortran/use_mpi/create_f90_int.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**f90typeintnone", 0); ChkMsg( err, MPI_ERR_OTHER, "**f90typeintnone" ); { /* src/binding/fortran/use_mpi/create_f90_int.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**f90typeintnone", "**f90typeintnone %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**f90typeintnone %d" ); } /* src/binding/fortran/use_mpi/create_f90_int.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_create_f90_int", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_create_f90_int" ); { /* src/binding/fortran/use_mpi/create_f90_int.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpi_type_create_f90_int", "**mpi_type_create_f90_int %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**mpi_type_create_f90_int %d" ); } /* src/binding/fortran/use_mpi/create_f90_util.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**f90typetoomany", 0); ChkMsg( err, MPI_ERR_OTHER, "**f90typetoomany" ); /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**tag", 0); ChkMsg( err, MPI_ERR_OTHER, "**tag" ); { /* src/include/mpierrs.h */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**tag", "**tag %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**tag %d" ); } /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**rmadisp", 0); ChkMsg( err, MPI_ERR_OTHER, "**rmadisp" ); /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**bufalias", 0); ChkMsg( err, MPI_ERR_OTHER, "**bufalias" ); /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**argnonpos", 0); ChkMsg( err, MPI_ERR_OTHER, "**argnonpos" ); { /* src/include/mpierrs.h */ char s1[] = "string1"; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**argnonpos", "**argnonpos %s %d", s1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**argnonpos %s %d" ); } /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**root", 0); ChkMsg( err, MPI_ERR_OTHER, "**root" ); { /* src/include/mpierrs.h */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**root", "**root %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**root %d" ); } /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**requestnotpersist", 0); ChkMsg( err, MPI_ERR_OTHER, "**requestnotpersist" ); /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**dtype", 0); ChkMsg( err, MPI_ERR_OTHER, "**dtype" ); { /* src/include/mpierrs.h */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**dtypenull", "**dtypenull %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**dtypenull %s" ); } /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**rmatypenotatomic", 0); ChkMsg( err, MPI_ERR_OTHER, "**rmatypenotatomic" ); { /* src/include/mpierrs.h */ int i1 = MPI_INT; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**rmatypenotatomic", "**rmatypenotatomic %D", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**rmatypenotatomic %D" ); } /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**winflavor", 0); ChkMsg( err, MPI_ERR_OTHER, "**winflavor" ); { /* src/include/mpierrs.h */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**winflavor", "**winflavor %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**winflavor %s" ); } /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**recvbuf_inplace", 0); ChkMsg( err, MPI_ERR_OTHER, "**recvbuf_inplace" ); /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**buf_inplace", 0); ChkMsg( err, MPI_ERR_OTHER, "**buf_inplace" ); { /* src/include/mpierrs.h */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**buf_inplace", "**buf_inplace %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**buf_inplace %s" ); } /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**bufnull", 0); ChkMsg( err, MPI_ERR_OTHER, "**bufnull" ); /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**opnull", 0); ChkMsg( err, MPI_ERR_OTHER, "**opnull" ); /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**opnotallowed", 0); ChkMsg( err, MPI_ERR_OTHER, "**opnotallowed" ); /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**op", 0); ChkMsg( err, MPI_ERR_OTHER, "**op" ); /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**groupnull", 0); ChkMsg( err, MPI_ERR_OTHER, "**groupnull" ); /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**group", 0); ChkMsg( err, MPI_ERR_OTHER, "**group" ); /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**comm", 0); ChkMsg( err, MPI_ERR_OTHER, "**comm" ); /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**winnull", 0); ChkMsg( err, MPI_ERR_OTHER, "**winnull" ); /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**win", 0); ChkMsg( err, MPI_ERR_OTHER, "**win" ); /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**requestnull", 0); ChkMsg( err, MPI_ERR_OTHER, "**requestnull" ); { /* src/include/mpierrs.h */ int i1 = 1; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**request_invalid_kind", "**request_invalid_kind %d %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**request_invalid_kind %d %d" ); } { /* src/include/mpierrs.h */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**request", "**request %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**request %d" ); } /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**errhandlernull", 0); ChkMsg( err, MPI_ERR_OTHER, "**errhandlernull" ); /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**errhandler", 0); ChkMsg( err, MPI_ERR_OTHER, "**errhandler" ); /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**infonull", 0); ChkMsg( err, MPI_ERR_OTHER, "**infonull" ); /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**keyval", 0); ChkMsg( err, MPI_ERR_OTHER, "**keyval" ); /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**keyvalobj", 0); ChkMsg( err, MPI_ERR_OTHER, "**keyvalobj" ); { /* src/include/mpierrs.h */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**keyvalobj", "**keyvalobj %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**keyvalobj %s" ); } /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**permattr", 0); ChkMsg( err, MPI_ERR_OTHER, "**permattr" ); /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mpitinit", 0); ChkMsg( err, MPI_ERR_OTHER, "**mpitinit" ); /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**catindex", 0); ChkMsg( err, MPI_ERR_OTHER, "**catindex" ); /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**enumhandlenull", 0); ChkMsg( err, MPI_ERR_OTHER, "**enumhandlenull" ); /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**enumhandle", 0); ChkMsg( err, MPI_ERR_OTHER, "**enumhandle" ); /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**itemindex", 0); ChkMsg( err, MPI_ERR_OTHER, "**itemindex" ); /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**cvarindex", 0); ChkMsg( err, MPI_ERR_OTHER, "**cvarindex" ); /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**cvarhandlenull", 0); ChkMsg( err, MPI_ERR_OTHER, "**cvarhandlenull" ); /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**cvarhandle", 0); ChkMsg( err, MPI_ERR_OTHER, "**cvarhandle" ); /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pvarindex", 0); ChkMsg( err, MPI_ERR_OTHER, "**pvarindex" ); /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pvarhandlenull", 0); ChkMsg( err, MPI_ERR_OTHER, "**pvarhandlenull" ); /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pvarhandle", 0); ChkMsg( err, MPI_ERR_OTHER, "**pvarhandle" ); /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pvarsessionnull", 0); ChkMsg( err, MPI_ERR_OTHER, "**pvarsessionnull" ); /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pvarsession", 0); ChkMsg( err, MPI_ERR_OTHER, "**pvarsession" ); /* src/include/mpierrs.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**memcpyalias", 0); ChkMsg( err, MPI_ERR_OTHER, "**memcpyalias" ); { /* src/include/mpierrs.h */ char s1[] = "pointer1"; char s2[] = "pointer2"; long long i3 = 3; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**memcpyalias", "**memcpyalias %p %p %L", s1, s2, i3 ); ChkMsg( err, MPI_ERR_OTHER, "**memcpyalias %p %p %L" ); } /* src/include/mpiimpl.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**nullptrtype", 0); ChkMsg( err, MPI_ERR_OTHER, "**nullptrtype" ); { /* src/include/mpiimpl.h */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**nullptrtype", "**nullptrtype %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**nullptrtype %s" ); } { /* src/include/mpimem.h */ int i1 = 1; char s2[] = "string2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**nomem2", "**nomem2 %d %s", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**nomem2 %d %s" ); } /* src/mpid/pamid/src/mpid_progress.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**progresshookstoomany", 0); ChkMsg( err, MPI_ERR_OTHER, "**progresshookstoomany" ); /* src/mpid/pamid/src/dyntask/mpid_comm_spawn_multiple.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pmi_kvsget", 0); ChkMsg( err, MPI_ERR_OTHER, "**pmi_kvsget" ); { /* src/mpid/pamid/src/dyntask/mpid_comm_spawn_multiple.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pmi_kvsget", "**pmi_kvsget %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**pmi_kvsget %d" ); } /* src/mpid/pamid/src/pt2pt/persistent/mpid_startall.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|badreqtype", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|badreqtype" ); { /* src/mpid/pamid/src/pt2pt/persistent/mpid_startall.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|badreqtype", "**ch3|badreqtype %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**ch3|badreqtype %d" ); } /* src/mpid/common/hcoll/hcoll_rte.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**hcoll_wrong_arg", 0); ChkMsg( err, MPI_ERR_OTHER, "**hcoll_wrong_arg" ); { /* src/mpid/common/hcoll/hcoll_rte.c */ char s1[] = "pointer1"; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**hcoll_wrong_arg", "**hcoll_wrong_arg %p %d", s1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**hcoll_wrong_arg %p %d" ); } /* src/mpid/common/hcoll/hcoll_rte.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**null_buff_ptr", 0); ChkMsg( err, MPI_ERR_OTHER, "**null_buff_ptr" ); /* src/mpid/common/sched/mpid_sched.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**toomanynbc", 0); ChkMsg( err, MPI_ERR_OTHER, "**toomanynbc" ); /* src/mpid/common/sock/poll/sock_post.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|poll|socket", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|socket" ); { /* src/mpid/common/sock/poll/sock_post.i */ int i1 = 1; char s2[] = "string2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|poll|socket", "**sock|poll|socket %d %s", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|socket %d %s" ); } /* src/mpid/common/sock/poll/sock_post.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|poll|nonblock", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|nonblock" ); { /* src/mpid/common/sock/poll/sock_post.i */ int i1 = 1; char s2[] = "string2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|poll|nonblock", "**sock|poll|nonblock %d %s", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|nonblock %d %s" ); } /* src/mpid/common/sock/poll/sock_post.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|poll|nodelay", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|nodelay" ); { /* src/mpid/common/sock/poll/sock_post.i */ int i1 = 1; char s2[] = "string2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|poll|nodelay", "**sock|poll|nodelay %d %s", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|nodelay %d %s" ); } /* src/mpid/common/sock/poll/sock_post.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|sockalloc", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|sockalloc" ); /* src/mpid/common/sock/poll/sock_post.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|connrefused", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|connrefused" ); { /* src/mpid/common/sock/poll/sock_post.i */ int i1 = 1; int i2 = 2; char s3[] = "string3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|connrefused", "**sock|poll|connrefused %d %d %s", i1, i2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|connrefused %d %d %s" ); } /* src/mpid/common/sock/poll/sock_post.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|oserror", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|oserror" ); { /* src/mpid/common/sock/poll/sock_post.i */ int i1 = 1; int i2 = 2; int i3 = 3; char s4[] = "string4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|oserror", "**sock|poll|oserror %d %d %d %s", i1, i2, i3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|oserror %d %d %d %s" ); } /* src/mpid/common/sock/poll/sock_post.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|badport", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|badport" ); { /* src/mpid/common/sock/poll/sock_post.i */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|badport", "**sock|badport %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|badport %d" ); } /* src/mpid/common/sock/poll/sock_post.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|poll|reuseaddr", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|reuseaddr" ); { /* src/mpid/common/sock/poll/sock_post.i */ int i1 = 1; char s2[] = "string2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|poll|reuseaddr", "**sock|poll|reuseaddr %d %s", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|reuseaddr %d %s" ); } /* src/mpid/common/sock/poll/sock_post.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**badportrange", 0); ChkMsg( err, MPI_ERR_OTHER, "**badportrange" ); /* src/mpid/common/sock/poll/sock_post.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|poll|bind", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|bind" ); { /* src/mpid/common/sock/poll/sock_post.i */ int i1 = 1; int i2 = 2; char s3[] = "string3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|poll|bind", "**sock|poll|bind %d %d %s", i1, i2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|bind %d %d %s" ); } /* src/mpid/common/sock/poll/sock_post.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|poll|listen", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|listen" ); { /* src/mpid/common/sock/poll/sock_post.i */ int i1 = 1; char s2[] = "string2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|poll|listen", "**sock|poll|listen %d %s", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|listen %d %s" ); } /* src/mpid/common/sock/poll/sock_post.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|getport", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|getport" ); { /* src/mpid/common/sock/poll/sock_post.i */ int i1 = 1; char s2[] = "string2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|getport", "**sock|poll|getport %d %s", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|getport %d %s" ); } /* src/mpid/common/sock/poll/sock_post.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|badlen", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|badlen" ); { /* src/mpid/common/sock/poll/sock_post.i */ int i1 = 1; int i2 = 2; int i3 = 3; int i4 = 4; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|badlen", "**sock|badlen %d %d %d %d", i1, i2, i3, i4 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|badlen %d %d %d %d" ); } /* src/mpid/common/sock/poll/sock_post.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|badiovn", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|badiovn" ); { /* src/mpid/common/sock/poll/sock_post.i */ int i1 = 1; int i2 = 2; int i3 = 3; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|badiovn", "**sock|badiovn %d %d %d", i1, i2, i3 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|badiovn %d %d %d" ); } /* src/mpid/common/sock/poll/sock_post.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|closing_already", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|closing_already" ); { /* src/mpid/common/sock/poll/sock_post.i */ int i1 = 1; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|closing_already", "**sock|closing_already %d %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|closing_already %d %d" ); } /* src/mpid/common/sock/poll/sock_post.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|close_cancel", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|close_cancel" ); { /* src/mpid/common/sock/poll/sock_post.i */ int i1 = 1; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|close_cancel", "**sock|close_cancel %d %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|close_cancel %d %d" ); } /* src/mpid/common/sock/poll/socki_util.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|poll|eqfail", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|eqfail" ); { /* src/mpid/common/sock/poll/socki_util.i */ int i1 = 1; int i2 = 2; int i3 = 3; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|poll|eqfail", "**sock|poll|eqfail %d %d %d", i1, i2, i3 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|eqfail %d %d %d" ); } /* src/mpid/common/sock/poll/socki_util.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|osnomem", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|osnomem" ); { /* src/mpid/common/sock/poll/socki_util.i */ char s1[] = "string1"; int i2 = 2; int i3 = 3; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|osnomem", "**sock|osnomem %s %d %d", s1, i2, i3 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|osnomem %s %d %d" ); } { /* src/mpid/common/sock/poll/socki_util.i */ char s1[] = "string1"; int i2 = 2; int i3 = 3; int i4 = 4; char s5[] = "string5"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|oserror", "**sock|poll|oserror %s %d %d %d %s", s1, i2, i3, i4, s5 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|oserror %s %d %d %d %s" ); } /* src/mpid/common/sock/poll/socki_util.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|uninit", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|uninit" ); /* src/mpid/common/sock/poll/socki_util.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|badsock", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|badsock" ); /* src/mpid/common/sock/poll/socki_util.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|notconnected", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|notconnected" ); { /* src/mpid/common/sock/poll/socki_util.i */ int i1 = 1; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|notconnected", "**sock|notconnected %d %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|notconnected %d %d" ); } /* src/mpid/common/sock/poll/socki_util.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|connclosed", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|connclosed" ); { /* src/mpid/common/sock/poll/socki_util.i */ int i1 = 1; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|connclosed", "**sock|connclosed %d %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|connclosed %d %d" ); } /* src/mpid/common/sock/poll/socki_util.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|connfailed", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|connfailed" ); { /* src/mpid/common/sock/poll/socki_util.i */ int i1 = 1; int i2 = 2; int i3 = 3; char s4[] = "string4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|connfailed", "**sock|poll|connfailed %d %d %d %s", i1, i2, i3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|connfailed %d %d %d %s" ); } /* src/mpid/common/sock/poll/socki_util.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|closing", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|closing" ); { /* src/mpid/common/sock/poll/socki_util.i */ int i1 = 1; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|closing", "**sock|closing %d %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|closing %d %d" ); } /* src/mpid/common/sock/poll/socki_util.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|listener_read", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|listener_read" ); { /* src/mpid/common/sock/poll/socki_util.i */ int i1 = 1; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|listener_read", "**sock|listener_read %d %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|listener_read %d %d" ); } /* src/mpid/common/sock/poll/socki_util.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|listener_write", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|listener_write" ); { /* src/mpid/common/sock/poll/socki_util.i */ int i1 = 1; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|listener_write", "**sock|listener_write %d %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|listener_write %d %d" ); } /* src/mpid/common/sock/poll/socki_util.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|badhandle", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|badhandle" ); { /* src/mpid/common/sock/poll/socki_util.i */ int i1 = 1; int i2 = 2; int i3 = 3; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|badhandle", "**sock|poll|badhandle %d %d %d", i1, i2, i3 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|badhandle %d %d %d" ); } /* src/mpid/common/sock/poll/socki_util.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|reads", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|reads" ); { /* src/mpid/common/sock/poll/socki_util.i */ int i1 = 1; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|reads", "**sock|reads %d %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|reads %d %d" ); } /* src/mpid/common/sock/poll/socki_util.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|writes", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|writes" ); { /* src/mpid/common/sock/poll/socki_util.i */ int i1 = 1; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|writes", "**sock|writes %d %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|writes %d %d" ); } { /* src/mpid/common/sock/poll/socki_util.i */ int i1 = 1; int i2 = 2; int i3 = 3; char s4[] = "string4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|osnomem", "**sock|poll|osnomem %d %d %d %s", i1, i2, i3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|osnomem %d %d %d %s" ); } /* src/mpid/common/sock/poll/socki_util.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|badbuf", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|badbuf" ); { /* src/mpid/common/sock/poll/socki_util.i */ int i1 = 1; int i2 = 2; int i3 = 3; char s4[] = "string4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|badbuf", "**sock|poll|badbuf %d %d %d %s", i1, i2, i3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|badbuf %d %d %d %s" ); } { /* src/mpid/common/sock/poll/socki_util.i */ int i1 = 1; int i2 = 2; int i3 = 3; char s4[] = "string4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|connclosed", "**sock|poll|connclosed %d %d %d %s", i1, i2, i3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|connclosed %d %d %d %s" ); } /* src/mpid/common/sock/poll/socki_util.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|poll|eqmalloc", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|eqmalloc" ); /* src/mpid/common/sock/poll/socki_util.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|poll|setsndbufsz", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|setsndbufsz" ); { /* src/mpid/common/sock/poll/socki_util.i */ int i1 = 1; int i2 = 2; char s3[] = "string3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|poll|setsndbufsz", "**sock|poll|setsndbufsz %d %d %s", i1, i2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|setsndbufsz %d %d %s" ); } /* src/mpid/common/sock/poll/socki_util.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|poll|setrcvbufsz", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|setrcvbufsz" ); { /* src/mpid/common/sock/poll/socki_util.i */ int i1 = 1; int i2 = 2; char s3[] = "string3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|poll|setrcvbufsz", "**sock|poll|setrcvbufsz %d %d %s", i1, i2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|setrcvbufsz %d %d %s" ); } { /* src/mpid/common/sock/poll/sock_wait.i */ int i1 = 1; char s2[] = "string2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|oserror", "**sock|poll|oserror %d %s", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|oserror %d %s" ); } { /* src/mpid/common/sock/poll/sock_wait.i */ int i1 = 1; int i2 = 2; int i3 = 3; int i4 = 4; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|badhandle", "**sock|poll|badhandle %d %d %d %d", i1, i2, i3, i4 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|badhandle %d %d %d %d" ); } /* src/mpid/common/sock/poll/sock_wait.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|poll|unhandledstate", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|unhandledstate" ); { /* src/mpid/common/sock/poll/sock_wait.i */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|poll|unhandledstate", "**sock|poll|unhandledstate %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|unhandledstate %d" ); } /* src/mpid/common/sock/poll/sock_wait.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|poll|unhandledtype", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|unhandledtype" ); { /* src/mpid/common/sock/poll/sock_wait.i */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|poll|unhandledtype", "**sock|poll|unhandledtype %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|unhandledtype %d" ); } /* src/mpid/common/sock/poll/sock_misc.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|badhdmax", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|badhdmax" ); /* src/mpid/common/sock/poll/sock_misc.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|badhdlen", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|badhdlen" ); /* src/mpid/common/sock/poll/sock_misc.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|badhdbuf", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|badhdbuf" ); /* src/mpid/common/sock/poll/sock_set.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|setalloc", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|setalloc" ); /* src/mpid/common/sock/poll/sock_set.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|poll|pipe", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|pipe" ); { /* src/mpid/common/sock/poll/sock_set.i */ int i1 = 1; char s2[] = "string2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|poll|pipe", "**sock|poll|pipe %d %s", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|pipe %d %s" ); } /* src/mpid/common/sock/poll/sock_set.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|poll|pipenonblock", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|pipenonblock" ); { /* src/mpid/common/sock/poll/sock_set.i */ int i1 = 1; char s2[] = "string2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|poll|pipenonblock", "**sock|poll|pipenonblock %d %s", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|pipenonblock %d %s" ); } /* src/mpid/common/sock/poll/sock_immed.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|listener_bad_sock", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|listener_bad_sock" ); { /* src/mpid/common/sock/poll/sock_immed.i */ int i1 = 1; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|listener_bad_sock", "**sock|listener_bad_sock %d %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|listener_bad_sock %d %d" ); } /* src/mpid/common/sock/poll/sock_immed.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|listener_bad_state", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|listener_bad_state" ); { /* src/mpid/common/sock/poll/sock_immed.i */ int i1 = 1; int i2 = 2; int i3 = 3; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|listener_bad_state", "**sock|listener_bad_state %d %d %d", i1, i2, i3 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|listener_bad_state %d %d %d" ); } /* src/mpid/common/sock/poll/sock_immed.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|nosock", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|nosock" ); /* src/mpid/common/sock/poll/sock_immed.i */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|poll|accept", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|accept" ); { /* src/mpid/common/sock/poll/sock_immed.i */ int i1 = 1; char s2[] = "string2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock|poll|accept", "**sock|poll|accept %d %s", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**sock|poll|accept %d %s" ); } /* src/mpid/common/sock/iocp/sock.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**socket", 0); ChkMsg( err, MPI_ERR_OTHER, "**socket" ); { /* src/mpid/common/sock/iocp/sock.c */ char s1[] = "string1"; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**socket", "**socket %s %d", s1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**socket %s %d" ); } /* src/mpid/common/sock/iocp/sock.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**duphandle", 0); ChkMsg( err, MPI_ERR_OTHER, "**duphandle" ); { /* src/mpid/common/sock/iocp/sock.c */ char s1[] = "string1"; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**duphandle", "**duphandle %s %d", s1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**duphandle %s %d" ); } { /* src/mpid/common/sock/iocp/sock.c */ char s1[] = "string1"; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**fail", "**fail %s %d", s1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**fail %s %d" ); } /* src/mpid/common/sock/iocp/sock.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**wsasock", 0); ChkMsg( err, MPI_ERR_OTHER, "**wsasock" ); { /* src/mpid/common/sock/iocp/sock.c */ char s1[] = "string1"; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**wsasock", "**wsasock %s %d", s1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**wsasock %s %d" ); } /* src/mpid/common/sock/iocp/sock.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock_init", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock_init" ); /* src/mpid/common/sock/iocp/sock.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**getinfo", 0); ChkMsg( err, MPI_ERR_OTHER, "**getinfo" ); { /* src/mpid/common/sock/iocp/sock.c */ char s1[] = "string1"; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**getinfo", "**getinfo %s %d", s1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**getinfo %s %d" ); } /* src/mpid/common/sock/iocp/sock.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**desc_len", 0); ChkMsg( err, MPI_ERR_OTHER, "**desc_len" ); /* src/mpid/common/sock/iocp/sock.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock_gethost", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock_gethost" ); { /* src/mpid/common/sock/iocp/sock.c */ char s1[] = "string1"; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock_gethost", "**sock_gethost %s %d", s1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**sock_gethost %s %d" ); } /* src/mpid/common/sock/iocp/sock.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**iocp", 0); ChkMsg( err, MPI_ERR_OTHER, "**iocp" ); { /* src/mpid/common/sock/iocp/sock.c */ char s1[] = "string1"; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**iocp", "**iocp %s %d", s1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**iocp %s %d" ); } /* src/mpid/common/sock/iocp/sock.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**bad_set", 0); ChkMsg( err, MPI_ERR_OTHER, "**bad_set" ); /* src/mpid/common/sock/iocp/sock.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**post_accept", 0); ChkMsg( err, MPI_ERR_OTHER, "**post_accept" ); /* src/mpid/common/sock/iocp/sock.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock_nop_accept", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock_nop_accept" ); { /* src/mpid/common/sock/iocp/sock.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**fail", "**fail %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**fail %d" ); } { /* src/mpid/common/sock/iocp/sock.c */ char s1[] = "string1"; int i2 = 2; char s3[] = "string3"; int i4 = 4; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock_connect", "**sock_connect %s %d %s %d", s1, i2, s3, i4 ); ChkMsg( err, MPI_ERR_OTHER, "**sock_connect %s %d %s %d" ); } /* src/mpid/common/sock/iocp/sock.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**gethostbyname", 0); ChkMsg( err, MPI_ERR_OTHER, "**gethostbyname" ); { /* src/mpid/common/sock/iocp/sock.c */ char s1[] = "string1"; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**gethostbyname", "**gethostbyname %s %d", s1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**gethostbyname %s %d" ); } /* src/mpid/common/sock/iocp/sock.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**bad_sock", 0); ChkMsg( err, MPI_ERR_OTHER, "**bad_sock" ); /* src/mpid/common/sock/iocp/sock.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pctwice", 0); ChkMsg( err, MPI_ERR_OTHER, "**pctwice" ); /* src/mpid/common/sock/iocp/sock.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**bad_listenersock", 0); ChkMsg( err, MPI_ERR_OTHER, "**bad_listenersock" ); /* src/mpid/common/sock/iocp/sock.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**closesocket", 0); ChkMsg( err, MPI_ERR_OTHER, "**closesocket" ); { /* src/mpid/common/sock/iocp/sock.c */ char s1[] = "string1"; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**closesocket", "**closesocket %s %d", s1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**closesocket %s %d" ); } /* src/mpid/common/sock/iocp/sock.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**shutdown", 0); ChkMsg( err, MPI_ERR_OTHER, "**shutdown" ); { /* src/mpid/common/sock/iocp/sock.c */ char s1[] = "string1"; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**shutdown", "**shutdown %s %d", s1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**shutdown %s %d" ); } { /* src/mpid/common/sock/iocp/sock.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**fail", "**fail %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**fail %s" ); } /* src/mpid/common/datatype/mpid_datatype.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**dtypecommit", 0); ChkMsg( err, MPI_ERR_OTHER, "**dtypecommit" ); /* src/mpid/ch3/src/mpid_improbe.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**revoked", 0); ChkMsg( err, MPI_ERR_OTHER, "**revoked" ); /* src/mpid/ch3/src/ch3u_comm.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**putenv", 0); ChkMsg( err, MPI_ERR_OTHER, "**putenv" ); /* src/mpid/ch3/src/ch3u_rndv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|rtspkt", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|rtspkt" ); /* src/mpid/ch3/src/ch3u_rndv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**nomemreq", 0); ChkMsg( err, MPI_ERR_OTHER, "**nomemreq" ); { /* src/mpid/ch3/src/ch3u_rndv.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**nomemreq", "**nomemuereq %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**nomemuereq %d" ); } /* src/mpid/ch3/src/ch3u_rndv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|ctspkt", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|ctspkt" ); /* src/mpid/ch3/src/ch3u_rndv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|senddata", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|senddata" ); /* src/mpid/ch3/src/ch3u_rndv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|postrecv", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|postrecv" ); { /* src/mpid/ch3/src/ch3u_rndv.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|postrecv", "**ch3|postrecv %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**ch3|postrecv %s" ); } /* src/mpid/ch3/src/ch3u_comm_spawn_multiple.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pmi_spawn_multiple", 0); ChkMsg( err, MPI_ERR_OTHER, "**pmi_spawn_multiple" ); { /* src/mpid/ch3/src/ch3u_comm_spawn_multiple.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pmi_spawn_multiple", "**pmi_spawn_multiple %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**pmi_spawn_multiple %d" ); } { /* src/mpid/ch3/src/ch3u_comm_spawn_multiple.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pmi_kvsget", "**pmi_kvsget %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**pmi_kvsget %s" ); } /* src/mpid/ch3/src/mpid_irecv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|badmsgtype", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|badmsgtype" ); { /* src/mpid/ch3/src/mpid_irecv.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|badmsgtype", "**ch3|badmsgtype %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**ch3|badmsgtype %d" ); } /* src/mpid/ch3/src/mpid_irsend.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|eagermsg", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|eagermsg" ); /* src/mpid/ch3/src/mpid_recv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**comm_fail", 0); ChkMsg( err, MPI_ERR_OTHER, "**comm_fail" ); { /* src/mpid/ch3/src/mpid_recv.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**comm_fail", "**comm_fail %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**comm_fail %d" ); } /* src/mpid/ch3/src/ch3u_rma_reqops.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**rmasync", 0); ChkMsg( err, MPI_ERR_OTHER, "**rmasync" ); /* src/mpid/ch3/src/ch3u_eager.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|loadsendiov", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|loadsendiov" ); { /* src/mpid/ch3/src/ch3u_eager.c */ int i1 = 1; int i2 = 2; int i3 = 3; int i4 = 4; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**truncate", "**truncate %d %d %d %d", i1, i2, i3, i4 ); ChkMsg( err, MPI_ERR_OTHER, "**truncate %d %d %d %d" ); } /* src/mpid/ch3/src/ch3u_eager.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**rsendnomatch", 0); ChkMsg( err, MPI_ERR_OTHER, "**rsendnomatch" ); { /* src/mpid/ch3/src/ch3u_eager.c */ int i1 = 1; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**rsendnomatch", "**rsendnomatch %d %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**rsendnomatch %d %d" ); } /* src/mpid/ch3/src/ch3u_eager.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|loadrecviov", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|loadrecviov" ); /* src/mpid/ch3/src/mpid_vc.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**unknowngpid", 0); ChkMsg( err, MPI_ERR_OTHER, "**unknowngpid" ); { /* src/mpid/ch3/src/mpid_vc.c */ int i1 = 1; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**unknowngpid", "**unknowngpid %d %d", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**unknowngpid %d %d" ); } { /* src/mpid/ch3/src/mpid_vc.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pmi_kvs_put", "**pmi_kvs_put %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**pmi_kvs_put %d" ); } { /* src/mpid/ch3/src/mpid_vc.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pmi_kvs_commit", "**pmi_kvs_commit %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**pmi_kvs_commit %d" ); } /* src/mpid/ch3/src/mpid_vc.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pmi_barrier", 0); ChkMsg( err, MPI_ERR_OTHER, "**pmi_barrier" ); { /* src/mpid/ch3/src/mpid_vc.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pmi_barrier", "**pmi_barrier %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**pmi_barrier %d" ); } { /* src/mpid/ch3/src/mpid_vc.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pmi_kvs_get", "**pmi_kvs_get %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**pmi_kvs_get %d" ); } { /* src/mpid/ch3/src/ch3u_rma_pkthandler.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**nomem", "**nomem %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**nomem %d" ); } /* src/mpid/ch3/src/ch3u_rma_pkthandler.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|rmamsg", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|rmamsg" ); /* src/mpid/ch3/src/ch3u_rma_pkthandler.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|rma_msg", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|rma_msg" ); { /* src/mpid/ch3/src/mpid_comm_spawn_multiple.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**notimpl", "**notimpl %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**notimpl %s" ); } /* src/mpid/ch3/src/mpid_get_universe_size.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pmi_get_universe_size", 0); ChkMsg( err, MPI_ERR_OTHER, "**pmi_get_universe_size" ); { /* src/mpid/ch3/src/mpid_get_universe_size.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pmi_get_universe_size", "**pmi_get_universe_size %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**pmi_get_universe_size %d" ); } /* src/mpid/ch3/src/ch3u_port.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**init_vcrt", 0); ChkMsg( err, MPI_ERR_OTHER, "**init_vcrt" ); /* src/mpid/ch3/src/ch3u_port.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**portexist", 0); ChkMsg( err, MPI_ERR_OTHER, "**portexist" ); { /* src/mpid/ch3/src/ch3u_port.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**portexist", "**portexist %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**portexist %s" ); } /* src/mpid/ch3/src/mpid_port.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**argstr_port_name_tag", 0); ChkMsg( err, MPI_ERR_OTHER, "**argstr_port_name_tag" ); /* src/mpid/ch3/src/mpid_port.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**argstr_no_port_name_tag", 0); ChkMsg( err, MPI_ERR_OTHER, "**argstr_no_port_name_tag" ); /* src/mpid/ch3/src/mpid_ssend.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**dev|selfsenddeadlock", 0); ChkMsg( err, MPI_ERR_OTHER, "**dev|selfsenddeadlock" ); /* src/mpid/ch3/src/ch3u_handle_recv_req.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**invalidpkt", 0); ChkMsg( err, MPI_ERR_OTHER, "**invalidpkt" ); { /* src/mpid/ch3/src/ch3u_handle_recv_req.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**invalidpkt", "**invalidpkt %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**invalidpkt %d" ); } /* src/mpid/ch3/src/ch3u_handle_connection.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|unhandled_connection_state", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|unhandled_connection_state" ); { /* src/mpid/ch3/src/ch3u_handle_connection.c */ char s1[] = "pointer1"; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|unhandled_connection_state", "**ch3|unhandled_connection_state %p %d", s1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**ch3|unhandled_connection_state %p %d" ); } /* src/mpid/ch3/src/ch3u_handle_connection.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|send_close_ack", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|send_close_ack" ); /* src/mpid/ch3/src/ch3u_handle_connection.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|close_progress", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|close_progress" ); /* src/mpid/ch3/src/ch3u_handle_connection.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pmi_kvs_get_value_length_max", 0); ChkMsg( err, MPI_ERR_OTHER, "**pmi_kvs_get_value_length_max" ); /* src/mpid/ch3/src/mpid_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**infohintparse", 0); ChkMsg( err, MPI_ERR_OTHER, "**infohintparse" ); { /* src/mpid/ch3/src/mpid_init.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**infohintparse", "**infohintparse %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**infohintparse %s" ); } /* src/mpid/ch3/src/mpid_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|ch3_init", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|ch3_init" ); /* src/mpid/ch3/src/mpid_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**dev|vcrt_create", 0); ChkMsg( err, MPI_ERR_OTHER, "**dev|vcrt_create" ); { /* src/mpid/ch3/src/mpid_init.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**dev|vcrt_create", "**dev|vcrt_create %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**dev|vcrt_create %s" ); } /* src/mpid/ch3/src/mpid_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|get_parent_port", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|get_parent_port" ); /* src/mpid/ch3/src/mpid_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|conn_parent", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|conn_parent" ); { /* src/mpid/ch3/src/mpid_init.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|conn_parent", "**ch3|conn_parent %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**ch3|conn_parent %s" ); } /* src/mpid/ch3/src/mpid_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pmi_init", 0); ChkMsg( err, MPI_ERR_OTHER, "**pmi_init" ); { /* src/mpid/ch3/src/mpid_init.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pmi_init", "**pmi_init %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**pmi_init %d" ); } /* src/mpid/ch3/src/mpid_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pmi_get_rank", 0); ChkMsg( err, MPI_ERR_OTHER, "**pmi_get_rank" ); { /* src/mpid/ch3/src/mpid_init.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pmi_get_rank", "**pmi_get_rank %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**pmi_get_rank %d" ); } /* src/mpid/ch3/src/mpid_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pmi_get_size", 0); ChkMsg( err, MPI_ERR_OTHER, "**pmi_get_size" ); { /* src/mpid/ch3/src/mpid_init.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pmi_get_size", "**pmi_get_size %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**pmi_get_size %d" ); } /* src/mpid/ch3/src/mpid_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pmi_get_appnum", 0); ChkMsg( err, MPI_ERR_OTHER, "**pmi_get_appnum" ); { /* src/mpid/ch3/src/mpid_init.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pmi_get_appnum", "**pmi_get_appnum %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**pmi_get_appnum %d" ); } /* src/mpid/ch3/src/mpid_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pmi_get_id_length_max", 0); ChkMsg( err, MPI_ERR_OTHER, "**pmi_get_id_length_max" ); { /* src/mpid/ch3/src/mpid_init.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pmi_get_id_length_max", "**pmi_get_id_length_max %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**pmi_get_id_length_max %d" ); } /* src/mpid/ch3/src/mpid_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pmi_get_id", 0); ChkMsg( err, MPI_ERR_OTHER, "**pmi_get_id" ); { /* src/mpid/ch3/src/mpid_init.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pmi_get_id", "**pmi_get_id %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**pmi_get_id %d" ); } /* src/mpid/ch3/src/mpid_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**dev|pg_init", 0); ChkMsg( err, MPI_ERR_OTHER, "**dev|pg_init" ); /* src/mpid/ch3/src/mpid_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**dev|pg_create", 0); ChkMsg( err, MPI_ERR_OTHER, "**dev|pg_create" ); { /* src/mpid/ch3/src/mpid_init.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pmi_kvs_get_value_length_max", "**pmi_kvs_get_value_length_max %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**pmi_kvs_get_value_length_max %d" ); } /* src/mpid/ch3/src/mpid_getpname.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**procnamefailed", 0); ChkMsg( err, MPI_ERR_OTHER, "**procnamefailed" ); /* src/mpid/ch3/src/mpid_cancel_send.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|cancelrndv", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|cancelrndv" ); /* src/mpid/ch3/src/mpid_cancel_send.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|cancelreq", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|cancelreq" ); /* src/mpid/ch3/src/mpid_cancel_send.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|cancelresp", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|cancelresp" ); /* src/mpid/ch3/src/ch3u_handle_recv_pkt.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|pktarraytoosmall", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|pktarraytoosmall" ); /* src/mpid/ch3/src/ch3u_request.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**invalid_handle", 0); ChkMsg( err, MPI_ERR_OTHER, "**invalid_handle" ); { /* src/mpid/ch3/src/ch3u_request.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**invalid_handle", "**invalid_handle %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**invalid_handle %d" ); } /* src/mpid/ch3/src/ch3u_request.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**invalid_refcount", 0); ChkMsg( err, MPI_ERR_OTHER, "**invalid_refcount" ); { /* src/mpid/ch3/src/ch3u_request.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**invalid_refcount", "**invalid_refcount %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**invalid_refcount %d" ); } /* src/mpid/ch3/src/mpidi_pg.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|pmi_finalize", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|pmi_finalize" ); { /* src/mpid/ch3/src/mpidi_pg.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|pmi_finalize", "**ch3|pmi_finalize %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**ch3|pmi_finalize %d" ); } /* src/mpid/ch3/src/mpidi_pg.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**dev|pg_finalize|list_not_empty", 0); ChkMsg( err, MPI_ERR_OTHER, "**dev|pg_finalize|list_not_empty" ); /* src/mpid/ch3/src/mpidi_pg.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**dev|pg_not_found", 0); ChkMsg( err, MPI_ERR_OTHER, "**dev|pg_not_found" ); { /* src/mpid/ch3/src/mpidi_pg.c */ char s1[] = "pointer1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**dev|pg_not_found", "**dev|pg_not_found %p", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**dev|pg_not_found %p" ); } /* src/mpid/ch3/src/mpidi_pg.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**noConnInfoToString", 0); ChkMsg( err, MPI_ERR_OTHER, "**noConnInfoToString" ); /* src/mpid/ch3/src/mpidi_pg.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**snprintf", 0); ChkMsg( err, MPI_ERR_OTHER, "**snprintf" ); { /* src/mpid/ch3/src/mpidi_pg.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**snprintf", "**snprintf %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**snprintf %d" ); } /* src/mpid/ch3/src/mpidi_pg.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pmi_kvs_get_name_length_max", 0); ChkMsg( err, MPI_ERR_OTHER, "**pmi_kvs_get_name_length_max" ); { /* src/mpid/ch3/src/mpidi_pg.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pmi_kvs_get_name_length_max", "**pmi_kvs_get_name_length_max %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**pmi_kvs_get_name_length_max %d" ); } /* src/mpid/ch3/src/mpidi_pg.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pmi_kvs_get_my_name", 0); ChkMsg( err, MPI_ERR_OTHER, "**pmi_kvs_get_my_name" ); { /* src/mpid/ch3/src/mpidi_pg.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pmi_kvs_get_my_name", "**pmi_kvs_get_my_name %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**pmi_kvs_get_my_name %d" ); } /* src/mpid/ch3/src/ch3u_eagersync.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|syncack", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|syncack" ); { /* src/mpid/ch3/include/mpidrma.h */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**opnotpredefined", "**opnotpredefined %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**opnotpredefined %d" ); } /* src/mpid/ch3/include/mpidrma.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**winnoprogress", 0); ChkMsg( err, MPI_ERR_OTHER, "**winnoprogress" ); /* src/mpid/ch3/include/mpid_rma_issue.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**winInvalidOp", 0); ChkMsg( err, MPI_ERR_OTHER, "**winInvalidOp" ); /* src/mpid/ch3/channels/nemesis/src/mpid_nem_lmt_vmsplice.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**vmsplice", 0); ChkMsg( err, MPI_ERR_OTHER, "**vmsplice" ); { /* src/mpid/ch3/channels/nemesis/src/mpid_nem_lmt_vmsplice.c */ int i1 = 1; char s2[] = "string2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**vmsplice", "**vmsplice %d %s", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**vmsplice %d %s" ); } /* src/mpid/ch3/channels/nemesis/src/mpid_nem_lmt_vmsplice.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**close", 0); ChkMsg( err, MPI_ERR_OTHER, "**close" ); /* src/mpid/ch3/channels/nemesis/src/mpid_nem_lmt_vmsplice.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**tempnam", 0); ChkMsg( err, MPI_ERR_OTHER, "**tempnam" ); { /* src/mpid/ch3/channels/nemesis/src/mpid_nem_lmt_vmsplice.c */ int i1 = 1; char s2[] = "string2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**tempnam", "**tempnam %d %s", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**tempnam %d %s" ); } /* src/mpid/ch3/channels/nemesis/src/mpid_nem_lmt_vmsplice.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mkfifo", 0); ChkMsg( err, MPI_ERR_OTHER, "**mkfifo" ); { /* src/mpid/ch3/channels/nemesis/src/mpid_nem_lmt_vmsplice.c */ int i1 = 1; char s2[] = "string2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mkfifo", "**mkfifo %d %s", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**mkfifo %d %s" ); } /* src/mpid/ch3/channels/nemesis/src/mpid_nem_lmt_vmsplice.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**read", 0); ChkMsg( err, MPI_ERR_OTHER, "**read" ); { /* src/mpid/ch3/channels/nemesis/src/mpid_nem_lmt_vmsplice.c */ int i1 = 1; char s2[] = "string2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**read", "**readv %d %s", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**readv %d %s" ); } /* src/mpid/ch3/channels/nemesis/src/mpid_nem_ckpt.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**blcr_mod", 0); ChkMsg( err, MPI_ERR_OTHER, "**blcr_mod" ); /* src/mpid/ch3/channels/nemesis/src/mpid_nem_ckpt.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sem_init", 0); ChkMsg( err, MPI_ERR_OTHER, "**sem_init" ); { /* src/mpid/ch3/channels/nemesis/src/mpid_nem_ckpt.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sem_init", "**sem_init %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**sem_init %s" ); } /* src/mpid/ch3/channels/nemesis/src/mpid_nem_ckpt.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sem_destroy", 0); ChkMsg( err, MPI_ERR_OTHER, "**sem_destroy" ); { /* src/mpid/ch3/channels/nemesis/src/mpid_nem_ckpt.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sem_destroy", "**sem_destroy %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**sem_destroy %s" ); } /* src/mpid/ch3/channels/nemesis/src/mpid_nem_ckpt.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ckptpkt", 0); ChkMsg( err, MPI_ERR_OTHER, "**ckptpkt" ); /* src/mpid/ch3/channels/nemesis/src/mpid_nem_ckpt.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sem_post", 0); ChkMsg( err, MPI_ERR_OTHER, "**sem_post" ); { /* src/mpid/ch3/channels/nemesis/src/mpid_nem_ckpt.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sem_post", "**sem_post %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**sem_post %s" ); } /* src/mpid/ch3/channels/nemesis/src/mpid_nem_ckpt.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sem_wait", 0); ChkMsg( err, MPI_ERR_OTHER, "**sem_wait" ); { /* src/mpid/ch3/channels/nemesis/src/mpid_nem_ckpt.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sem_wait", "**sem_wait %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**sem_wait %s" ); } /* src/mpid/ch3/channels/nemesis/src/ch3_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**init_progress", 0); ChkMsg( err, MPI_ERR_OTHER, "**init_progress" ); /* src/mpid/ch3/channels/nemesis/src/mpid_nem_network.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**invalid_netmod", 0); ChkMsg( err, MPI_ERR_OTHER, "**invalid_netmod" ); { /* src/mpid/ch3/channels/nemesis/src/mpid_nem_network.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**invalid_netmod", "**invalid_netmod %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**invalid_netmod %s" ); } /* src/mpid/ch3/channels/nemesis/src/mpid_nem_mpich_rma.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**winput_oob", 0); ChkMsg( err, MPI_ERR_OTHER, "**winput_oob" ); /* src/mpid/ch3/channels/nemesis/src/mpid_nem_mpich_rma.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**winget_oob", 0); ChkMsg( err, MPI_ERR_OTHER, "**winget_oob" ); /* src/mpid/ch3/channels/nemesis/src/mpid_nem_mpich_rma.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**winserialize", 0); ChkMsg( err, MPI_ERR_OTHER, "**winserialize" ); /* src/mpid/ch3/channels/nemesis/src/mpid_nem_mpich_rma.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**windeserialize", 0); ChkMsg( err, MPI_ERR_OTHER, "**windeserialize" ); /* src/mpid/ch3/channels/nemesis/src/ch3_progress.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**signal", 0); ChkMsg( err, MPI_ERR_OTHER, "**signal" ); { /* src/mpid/ch3/channels/nemesis/src/ch3_progress.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**signal", "**signal %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**signal %s" ); } /* src/mpid/ch3/channels/nemesis/src/mpid_nem_lmt_dma.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**shm_open", 0); ChkMsg( err, MPI_ERR_OTHER, "**shm_open" ); { /* src/mpid/ch3/channels/nemesis/src/mpid_nem_lmt_dma.c */ char s1[] = "string1"; int i2 = 2; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**shm_open", "**shm_open %s %d", s1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**shm_open %s %d" ); } /* src/mpid/ch3/channels/nemesis/src/mpid_nem_lmt_dma.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ioctl", 0); ChkMsg( err, MPI_ERR_OTHER, "**ioctl" ); { /* src/mpid/ch3/channels/nemesis/src/mpid_nem_lmt_dma.c */ int i1 = 1; char s2[] = "string2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ioctl", "**ioctl %d %s", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**ioctl %d %s" ); } /* src/mpid/ch3/channels/nemesis/src/mpid_nem_lmt_dma.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**abi_version_mismatch", 0); ChkMsg( err, MPI_ERR_OTHER, "**abi_version_mismatch" ); { /* src/mpid/ch3/channels/nemesis/src/mpid_nem_lmt_dma.c */ int i1 = MPI_INT; int i2 = MPI_INT; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**abi_version_mismatch", "**abi_version_mismatch %D %D", i1, i2 ); ChkMsg( err, MPI_ERR_OTHER, "**abi_version_mismatch %D %D" ); } /* src/mpid/ch3/channels/nemesis/src/mpid_nem_lmt_dma.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mmap", 0); ChkMsg( err, MPI_ERR_OTHER, "**mmap" ); { /* src/mpid/ch3/channels/nemesis/src/mpid_nem_lmt_dma.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mmap", "**mmap %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**mmap %d" ); } /* src/mpid/ch3/channels/nemesis/src/mpid_nem_lmt_dma.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**recv_status", 0); ChkMsg( err, MPI_ERR_OTHER, "**recv_status" ); { /* src/mpid/ch3/channels/nemesis/src/mpid_nem_lmt_dma.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**recv_status", "**recv_status %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**recv_status %d" ); } /* src/mpid/ch3/channels/nemesis/src/mpid_nem_lmt_dma.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**invalid_knem_status", 0); ChkMsg( err, MPI_ERR_OTHER, "**invalid_knem_status" ); { /* src/mpid/ch3/channels/nemesis/src/mpid_nem_lmt_dma.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**invalid_knem_status", "**invalid_knem_status %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**invalid_knem_status %d" ); } /* src/mpid/ch3/channels/nemesis/include/mpid_nem_impl.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**rtspkt", 0); ChkMsg( err, MPI_ERR_OTHER, "**rtspkt" ); /* src/mpid/ch3/channels/nemesis/include/mpid_nem_impl.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ctspkt", 0); ChkMsg( err, MPI_ERR_OTHER, "**ctspkt" ); /* src/mpid/ch3/channels/nemesis/include/mpid_nem_impl.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**cookiepkt", 0); ChkMsg( err, MPI_ERR_OTHER, "**cookiepkt" ); /* src/mpid/ch3/channels/nemesis/include/mpid_nem_impl.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**donepkt", 0); ChkMsg( err, MPI_ERR_OTHER, "**donepkt" ); /* src/mpid/ch3/channels/nemesis/include/mpidi_ch3_impl.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pthread_lock", 0); ChkMsg( err, MPI_ERR_OTHER, "**pthread_lock" ); { /* src/mpid/ch3/channels/nemesis/include/mpidi_ch3_impl.h */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pthread_lock", "**pthread_lock %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**pthread_lock %s" ); } /* src/mpid/ch3/channels/nemesis/include/mpidi_ch3_impl.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pthread_unlock", 0); ChkMsg( err, MPI_ERR_OTHER, "**pthread_unlock" ); { /* src/mpid/ch3/channels/nemesis/include/mpidi_ch3_impl.h */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pthread_unlock", "**pthread_unlock %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**pthread_unlock %s" ); } /* src/mpid/ch3/channels/nemesis/include/mpidi_ch3_impl.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pthread_mutex", 0); ChkMsg( err, MPI_ERR_OTHER, "**pthread_mutex" ); { /* src/mpid/ch3/channels/nemesis/include/mpidi_ch3_impl.h */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pthread_mutex", "**pthread_mutex %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**pthread_mutex %s" ); } /* src/mpid/ch3/channels/nemesis/include/mpidi_ch3_impl.h */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**windows_mutex", 0); ChkMsg( err, MPI_ERR_OTHER, "**windows_mutex" ); { /* src/mpid/ch3/channels/nemesis/include/mpidi_ch3_impl.h */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**windows_mutex", "**windows_mutex %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**windows_mutex %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/llc/llc_send.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**outofmemory", 0); ChkMsg( err, MPI_ERR_OTHER, "**outofmemory" ); /* src/mpid/ch3/channels/nemesis/netmod/llc/llc_send.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**LLC_post", 0); ChkMsg( err, MPI_ERR_OTHER, "**LLC_post" ); /* src/mpid/ch3/channels/nemesis/netmod/llc/llc_send.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**LLC_poll", 0); ChkMsg( err, MPI_ERR_OTHER, "**LLC_poll" ); /* src/mpid/ch3/channels/nemesis/netmod/llc/llc_send.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**LLC_cmd_free", 0); ChkMsg( err, MPI_ERR_OTHER, "**LLC_cmd_free" ); /* src/mpid/ch3/channels/nemesis/netmod/llc/llc_send.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**LLC_release_buffer", 0); ChkMsg( err, MPI_ERR_OTHER, "**LLC_release_buffer" ); /* src/mpid/ch3/channels/nemesis/netmod/llc/llc_send.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**llc_poll", 0); ChkMsg( err, MPI_ERR_OTHER, "**llc_poll" ); /* src/mpid/ch3/channels/nemesis/netmod/llc/llc_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**MPIDI_PG_GetConnKVSname", 0); ChkMsg( err, MPI_ERR_OTHER, "**MPIDI_PG_GetConnKVSname" ); /* src/mpid/ch3/channels/nemesis/netmod/llc/llc_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**PMI_KVS_Put", 0); ChkMsg( err, MPI_ERR_OTHER, "**PMI_KVS_Put" ); /* src/mpid/ch3/channels/nemesis/netmod/llc/llc_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**PMS_KVS_Get", 0); ChkMsg( err, MPI_ERR_OTHER, "**PMS_KVS_Get" ); /* src/mpid/ch3/channels/nemesis/netmod/llc/llc_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**LLC_init", 0); ChkMsg( err, MPI_ERR_OTHER, "**LLC_init" ); /* src/mpid/ch3/channels/nemesis/netmod/llc/llc_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**LLC_comm_rank", 0); ChkMsg( err, MPI_ERR_OTHER, "**LLC_comm_rank" ); /* src/mpid/ch3/channels/nemesis/netmod/llc/llc_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**MPID_nem_ib_kvs_put_binary", 0); ChkMsg( err, MPI_ERR_OTHER, "**MPID_nem_ib_kvs_put_binary" ); /* src/mpid/ch3/channels/nemesis/netmod/llc/llc_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**PMI_Barrier", 0); ChkMsg( err, MPI_ERR_OTHER, "**PMI_Barrier" ); /* src/mpid/ch3/channels/nemesis/netmod/llc/llc_vc.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**MPID_nem_ib_kvs_get_binary", 0); ChkMsg( err, MPI_ERR_OTHER, "**MPID_nem_ib_kvs_get_binary" ); /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_progress.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_poll", 0); ChkMsg( err, MPI_ERR_OTHER, "**ofi_poll" ); { /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_progress.c */ char s1[] = "string1"; int i2 = 2; char s3[] = "string3"; char s4[] = "string4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_poll", "**ofi_poll %s %d %s %s", s1, i2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**ofi_poll %s %d %s %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_probe_template.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_peek", 0); ChkMsg( err, MPI_ERR_OTHER, "**ofi_peek" ); { /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_probe_template.c */ char s1[] = "string1"; int i2 = 2; char s3[] = "string3"; char s4[] = "string4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_peek", "**ofi_peek %s %d %s %s", s1, i2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**ofi_peek %s %d %s %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_cm.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**badbusinesscard", 0); ChkMsg( err, MPI_ERR_OTHER, "**badbusinesscard" ); /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_cm.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**buscard_len", 0); ChkMsg( err, MPI_ERR_OTHER, "**buscard_len" ); /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_cm.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**buscard", 0); ChkMsg( err, MPI_ERR_OTHER, "**buscard" ); /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_getinfo", 0); ChkMsg( err, MPI_ERR_OTHER, "**ofi_getinfo" ); { /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_init.c */ char s1[] = "string1"; int i2 = 2; char s3[] = "string3"; char s4[] = "string4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_getinfo", "**ofi_getinfo %s %d %s %s", s1, i2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**ofi_getinfo %s %d %s %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_avmap", 0); ChkMsg( err, MPI_ERR_OTHER, "**ofi_avmap" ); { /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_init.c */ char s1[] = "string1"; int i2 = 2; char s3[] = "string3"; char s4[] = "string4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_avmap", "**ofi_avmap %s %d %s %s", s1, i2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**ofi_avmap %s %d %s %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_tsend", 0); ChkMsg( err, MPI_ERR_OTHER, "**ofi_tsend" ); { /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_init.c */ char s1[] = "string1"; int i2 = 2; char s3[] = "string3"; char s4[] = "string4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_tsend", "**ofi_tsend %s %d %s %s", s1, i2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**ofi_tsend %s %d %s %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_trecv", 0); ChkMsg( err, MPI_ERR_OTHER, "**ofi_trecv" ); { /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_init.c */ char s1[] = "string1"; int i2 = 2; char s3[] = "string3"; char s4[] = "string4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_trecv", "**ofi_trecv %s %d %s %s", s1, i2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**ofi_trecv %s %d %s %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_openep", 0); ChkMsg( err, MPI_ERR_OTHER, "**ofi_openep" ); { /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_init.c */ char s1[] = "string1"; int i2 = 2; char s3[] = "string3"; char s4[] = "string4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_openep", "**ofi_openep %s %d %s %s", s1, i2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**ofi_openep %s %d %s %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_openfabric", 0); ChkMsg( err, MPI_ERR_OTHER, "**ofi_openfabric" ); { /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_init.c */ char s1[] = "string1"; int i2 = 2; char s3[] = "string3"; char s4[] = "string4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_openfabric", "**ofi_openfabric %s %d %s %s", s1, i2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**ofi_openfabric %s %d %s %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_opendomain", 0); ChkMsg( err, MPI_ERR_OTHER, "**ofi_opendomain" ); { /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_init.c */ char s1[] = "string1"; int i2 = 2; char s3[] = "string3"; char s4[] = "string4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_opendomain", "**ofi_opendomain %s %d %s %s", s1, i2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**ofi_opendomain %s %d %s %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_opencq", 0); ChkMsg( err, MPI_ERR_OTHER, "**ofi_opencq" ); { /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_init.c */ char s1[] = "string1"; int i2 = 2; char s3[] = "string3"; char s4[] = "string4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_opencq", "**ofi_opencq %s %d %s %s", s1, i2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**ofi_opencq %s %d %s %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_avopen", 0); ChkMsg( err, MPI_ERR_OTHER, "**ofi_avopen" ); { /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_init.c */ char s1[] = "string1"; int i2 = 2; char s3[] = "string3"; char s4[] = "string4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_avopen", "**ofi_avopen %s %d %s %s", s1, i2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**ofi_avopen %s %d %s %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_bind", 0); ChkMsg( err, MPI_ERR_OTHER, "**ofi_bind" ); { /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_init.c */ char s1[] = "string1"; int i2 = 2; char s3[] = "string3"; char s4[] = "string4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_bind", "**ofi_bind %s %d %s %s", s1, i2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**ofi_bind %s %d %s %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_ep_enable", 0); ChkMsg( err, MPI_ERR_OTHER, "**ofi_ep_enable" ); { /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_init.c */ char s1[] = "string1"; int i2 = 2; char s3[] = "string3"; char s4[] = "string4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_ep_enable", "**ofi_ep_enable %s %d %s %s", s1, i2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**ofi_ep_enable %s %d %s %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_getname", 0); ChkMsg( err, MPI_ERR_OTHER, "**ofi_getname" ); { /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_init.c */ char s1[] = "string1"; int i2 = 2; char s3[] = "string3"; char s4[] = "string4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_getname", "**ofi_getname %s %d %s %s", s1, i2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**ofi_getname %s %d %s %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_avclose", 0); ChkMsg( err, MPI_ERR_OTHER, "**ofi_avclose" ); { /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_init.c */ char s1[] = "string1"; int i2 = 2; char s3[] = "string3"; char s4[] = "string4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_avclose", "**ofi_avclose %s %d %s %s", s1, i2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**ofi_avclose %s %d %s %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_epclose", 0); ChkMsg( err, MPI_ERR_OTHER, "**ofi_epclose" ); { /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_init.c */ char s1[] = "string1"; int i2 = 2; char s3[] = "string3"; char s4[] = "string4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_epclose", "**ofi_epclose %s %d %s %s", s1, i2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**ofi_epclose %s %d %s %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_cqclose", 0); ChkMsg( err, MPI_ERR_OTHER, "**ofi_cqclose" ); { /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_init.c */ char s1[] = "string1"; int i2 = 2; char s3[] = "string3"; char s4[] = "string4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_cqclose", "**ofi_cqclose %s %d %s %s", s1, i2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**ofi_cqclose %s %d %s %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_fabricclose", 0); ChkMsg( err, MPI_ERR_OTHER, "**ofi_fabricclose" ); { /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_init.c */ char s1[] = "string1"; int i2 = 2; char s3[] = "string3"; char s4[] = "string4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_fabricclose", "**ofi_fabricclose %s %d %s %s", s1, i2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**ofi_fabricclose %s %d %s %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_domainclose", 0); ChkMsg( err, MPI_ERR_OTHER, "**ofi_domainclose" ); { /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_init.c */ char s1[] = "string1"; int i2 = 2; char s3[] = "string3"; char s4[] = "string4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_domainclose", "**ofi_domainclose %s %d %s %s", s1, i2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**ofi_domainclose %s %d %s %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_cancel", 0); ChkMsg( err, MPI_ERR_OTHER, "**ofi_cancel" ); { /* src/mpid/ch3/channels/nemesis/netmod/ofi/ofi_init.c */ char s1[] = "string1"; int i2 = 2; char s3[] = "string3"; char s4[] = "string4"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ofi_cancel", "**ofi_cancel %s %d %s %s", s1, i2, s3, s4 ); ChkMsg( err, MPI_ERR_OTHER, "**ofi_cancel %s %d %s %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/tcp/tcp_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ifname_and_hostname", 0); ChkMsg( err, MPI_ERR_OTHER, "**ifname_and_hostname" ); /* src/mpid/ch3/channels/nemesis/netmod/tcp/tcp_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**iface_notfound", 0); ChkMsg( err, MPI_ERR_OTHER, "**iface_notfound" ); { /* src/mpid/ch3/channels/nemesis/netmod/tcp/tcp_init.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**iface_notfound", "**iface_notfound %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**iface_notfound %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/tcp/tcp_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**getsockname", 0); ChkMsg( err, MPI_ERR_OTHER, "**getsockname" ); { /* src/mpid/ch3/channels/nemesis/netmod/tcp/tcp_init.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**getsockname", "**getsockname %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**getsockname %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/tcp/tcp_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**argstr_missingport", 0); ChkMsg( err, MPI_ERR_OTHER, "**argstr_missingport" ); /* src/mpid/ch3/channels/nemesis/netmod/tcp/tcp_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**argstr_missingifname", 0); ChkMsg( err, MPI_ERR_OTHER, "**argstr_missingifname" ); /* src/mpid/ch3/channels/nemesis/netmod/tcp/tcp_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ifnameinvalid", 0); ChkMsg( err, MPI_ERR_OTHER, "**ifnameinvalid" ); /* src/mpid/ch3/channels/nemesis/netmod/tcp/tcp_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**afinetinvalid", 0); ChkMsg( err, MPI_ERR_OTHER, "**afinetinvalid" ); /* src/mpid/ch3/channels/nemesis/netmod/tcp/tcp_send.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock_closed", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock_closed" ); /* src/mpid/ch3/channels/nemesis/netmod/tcp/tcp_send.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**writev", 0); ChkMsg( err, MPI_ERR_OTHER, "**writev" ); { /* src/mpid/ch3/channels/nemesis/netmod/tcp/tcp_send.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**writev", "**writev %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**writev %s" ); } { /* src/mpid/ch3/channels/nemesis/netmod/tcp/socksm.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**write", "**write %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**write %s" ); } { /* src/mpid/ch3/channels/nemesis/netmod/tcp/socksm.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**read", "**read %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**read %s" ); } { /* src/mpid/ch3/channels/nemesis/netmod/tcp/socksm.c */ int i1 = 1; char s2[] = "string2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**read", "**read %d %s", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**read %d %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/tcp/socksm.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**vc_in_error_state", 0); ChkMsg( err, MPI_ERR_OTHER, "**vc_in_error_state" ); /* src/mpid/ch3/channels/nemesis/netmod/tcp/socksm.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**exceeded_connect_tries", 0); ChkMsg( err, MPI_ERR_OTHER, "**exceeded_connect_tries" ); { /* src/mpid/ch3/channels/nemesis/netmod/tcp/socksm.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**exceeded_connect_tries", "**exceeded_connect_tries %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**exceeded_connect_tries %d" ); } /* src/mpid/ch3/channels/nemesis/netmod/tcp/socksm.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**tcp_cleanup_fail", 0); ChkMsg( err, MPI_ERR_OTHER, "**tcp_cleanup_fail" ); { /* src/mpid/ch3/channels/nemesis/netmod/tcp/socksm.c */ int i1 = 1; char s2[] = "string2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock_connect", "**sock_connect %d %s", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**sock_connect %d %s" ); } { /* src/mpid/ch3/channels/nemesis/netmod/tcp/socksm.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**close", "**close %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**close %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/tcp/socksm.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**tmpvc_connect_fail", 0); ChkMsg( err, MPI_ERR_OTHER, "**tmpvc_connect_fail" ); /* src/mpid/ch3/channels/nemesis/netmod/tcp/socksm.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**poll", 0); ChkMsg( err, MPI_ERR_OTHER, "**poll" ); { /* src/mpid/ch3/channels/nemesis/netmod/tcp/socksm.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**poll", "**poll %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**poll %s" ); } { /* src/mpid/ch3/channels/nemesis/netmod/tcp/socksm.c */ int i1 = 1; char s2[] = "string2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**comm_fail", "**comm_fail %d %s", i1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**comm_fail %d %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/tcp/socksm.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**comm_fail_conn", 0); ChkMsg( err, MPI_ERR_OTHER, "**comm_fail_conn" ); { /* src/mpid/ch3/channels/nemesis/netmod/tcp/socksm.c */ char s1[] = "string1"; char s2[] = "string2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**comm_fail_conn", "**comm_fail_conn %s %s", s1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**comm_fail_conn %s %s" ); } { /* src/mpid/ch3/channels/nemesis/netmod/tcp/socksm.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock_accept", "**sock_accept %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**sock_accept %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_nm.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ptlmeappend", 0); ChkMsg( err, MPI_ERR_OTHER, "**ptlmeappend" ); { /* src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_nm.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ptlmeappend", "**ptlmeappend %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**ptlmeappend %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_nm.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ptlmeunlink", 0); ChkMsg( err, MPI_ERR_OTHER, "**ptlmeunlink" ); { /* src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_nm.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ptlmeunlink", "**ptlmeunlink %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**ptlmeunlink %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_nm.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ptlput", 0); ChkMsg( err, MPI_ERR_OTHER, "**ptlput" ); { /* src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_nm.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ptlput", "**ptlput %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**ptlput %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_nm.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ptlget", 0); ChkMsg( err, MPI_ERR_OTHER, "**ptlget" ); { /* src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_nm.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ptlget", "**ptlget %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**ptlget %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_probe.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ptlmesearch", 0); ChkMsg( err, MPI_ERR_OTHER, "**ptlmesearch" ); { /* src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_probe.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ptlmesearch", "**ptlmesearch %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**ptlmesearch %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_recv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ptlmdrelease", 0); ChkMsg( err, MPI_ERR_OTHER, "**ptlmdrelease" ); { /* src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_recv.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ptlmdrelease", "**ptlmdrelease %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**ptlmdrelease %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_recv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ptlmdbind", 0); ChkMsg( err, MPI_ERR_OTHER, "**ptlmdbind" ); { /* src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_recv.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ptlmdbind", "**ptlmdbind %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**ptlmdbind %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_poll.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**eqdropped", 0); ChkMsg( err, MPI_ERR_OTHER, "**eqdropped" ); /* src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_poll.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ptleqget", 0); ChkMsg( err, MPI_ERR_OTHER, "**ptleqget" ); { /* src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_poll.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ptleqget", "**ptleqget %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**ptleqget %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_poll.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ptlni_fail", 0); ChkMsg( err, MPI_ERR_OTHER, "**ptlni_fail" ); { /* src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_poll.c */ char s1[] = "string1"; char s2[] = "string2"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ptlni_fail", "**ptlni_fail %s %s", s1, s2 ); ChkMsg( err, MPI_ERR_OTHER, "**ptlni_fail %s %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ptlinit", 0); ChkMsg( err, MPI_ERR_OTHER, "**ptlinit" ); { /* src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_init.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ptlinit", "**ptlinit %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**ptlinit %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ptlniinit", 0); ChkMsg( err, MPI_ERR_OTHER, "**ptlniinit" ); { /* src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_init.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ptlniinit", "**ptlniinit %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**ptlniinit %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ptlnifini", 0); ChkMsg( err, MPI_ERR_OTHER, "**ptlnifini" ); { /* src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_init.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ptlnifini", "**ptlnifini %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**ptlnifini %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ptleqalloc", 0); ChkMsg( err, MPI_ERR_OTHER, "**ptleqalloc" ); { /* src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_init.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ptleqalloc", "**ptleqalloc %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**ptleqalloc %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ptlptalloc", 0); ChkMsg( err, MPI_ERR_OTHER, "**ptlptalloc" ); { /* src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_init.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ptlptalloc", "**ptlptalloc %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**ptlptalloc %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ptlptfree", 0); ChkMsg( err, MPI_ERR_OTHER, "**ptlptfree" ); { /* src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_init.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ptlptfree", "**ptlptfree %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**ptlptfree %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ptlgetid", 0); ChkMsg( err, MPI_ERR_OTHER, "**ptlgetid" ); { /* src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_init.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ptlgetid", "**ptlgetid %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**ptlgetid %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/mxm/mxm_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mxm_config_read_opts", 0); ChkMsg( err, MPI_ERR_OTHER, "**mxm_config_read_opts" ); { /* src/mpid/ch3/channels/nemesis/netmod/mxm/mxm_init.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mxm_config_read_opts", "**mxm_config_read_opts %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mxm_config_read_opts %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/mxm/mxm_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mxm_init", 0); ChkMsg( err, MPI_ERR_OTHER, "**mxm_init" ); { /* src/mpid/ch3/channels/nemesis/netmod/mxm/mxm_init.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mxm_init", "**mxm_init %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mxm_init %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/mxm/mxm_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mxm_set_am_handler", 0); ChkMsg( err, MPI_ERR_OTHER, "**mxm_set_am_handler" ); { /* src/mpid/ch3/channels/nemesis/netmod/mxm/mxm_init.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mxm_set_am_handler", "**mxm_set_am_handler %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mxm_set_am_handler %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/mxm/mxm_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mxm_mq_create", 0); ChkMsg( err, MPI_ERR_OTHER, "**mxm_mq_create" ); { /* src/mpid/ch3/channels/nemesis/netmod/mxm/mxm_init.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mxm_mq_create", "**mxm_mq_create %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mxm_mq_create %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/mxm/mxm_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mxm_ep_create", 0); ChkMsg( err, MPI_ERR_OTHER, "**mxm_ep_create" ); { /* src/mpid/ch3/channels/nemesis/netmod/mxm/mxm_init.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mxm_ep_create", "**mxm_ep_create %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mxm_ep_create %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/mxm/mxm_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mxm_ep_get_address", 0); ChkMsg( err, MPI_ERR_OTHER, "**mxm_ep_get_address" ); { /* src/mpid/ch3/channels/nemesis/netmod/mxm/mxm_init.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mxm_ep_get_address", "**mxm_ep_get_address %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mxm_ep_get_address %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/mxm/mxm_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mxm_ep_connect", 0); ChkMsg( err, MPI_ERR_OTHER, "**mxm_ep_connect" ); { /* src/mpid/ch3/channels/nemesis/netmod/mxm/mxm_init.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mxm_ep_connect", "**mxm_ep_connect %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mxm_ep_connect %s" ); } /* src/mpid/ch3/channels/nemesis/netmod/mxm/mxm_init.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mxm_ep_disconnect", 0); ChkMsg( err, MPI_ERR_OTHER, "**mxm_ep_disconnect" ); { /* src/mpid/ch3/channels/nemesis/netmod/mxm/mxm_init.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**mxm_ep_disconnect", "**mxm_ep_disconnect %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**mxm_ep_disconnect %s" ); } /* src/mpid/ch3/channels/sock/src/ch3i_errno.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|sock|connclose", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|sock|connclose" ); /* src/mpid/ch3/channels/sock/src/ch3i_errno.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|sock|hostlookup", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|sock|hostlookup" ); /* src/mpid/ch3/channels/sock/src/ch3i_errno.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|sock|connrefused", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|sock|connrefused" ); /* src/mpid/ch3/channels/sock/src/ch3i_errno.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|sock|connterm", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|sock|connterm" ); /* src/mpid/ch3/channels/sock/src/ch3i_errno.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|sock|badsock", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|sock|badsock" ); /* src/mpid/ch3/channels/sock/src/ch3i_errno.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**buffer", 0); ChkMsg( err, MPI_ERR_OTHER, "**buffer" ); /* src/mpid/ch3/channels/sock/src/ch3i_errno.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|sock|addrinuse", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|sock|addrinuse" ); /* src/mpid/ch3/channels/sock/src/ch3i_errno.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|sock|failure", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|sock|failure" ); { /* src/mpid/ch3/channels/sock/src/ch3i_errno.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|sock|failure", "**ch3|sock|failure %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**ch3|sock|failure %d" ); } /* src/mpid/ch3/channels/sock/src/ch3_progress.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|sock|handle_sock_event", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|sock|handle_sock_event" ); /* src/mpid/ch3/channels/sock/src/ch3_progress.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**progress_sock_wait", 0); ChkMsg( err, MPI_ERR_OTHER, "**progress_sock_wait" ); /* src/mpid/ch3/channels/sock/src/ch3_progress.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|sock|immedwrite", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|sock|immedwrite" ); { /* src/mpid/ch3/channels/sock/src/ch3_progress.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|sock|immedwrite", "ch3|sock|immedwrite %p %p %p", s1, s2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "ch3|sock|immedwrite %p %p %p" ); } /* src/mpid/ch3/channels/sock/src/ch3_progress.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|sock|postwrite", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|sock|postwrite" ); { /* src/mpid/ch3/channels/sock/src/ch3_progress.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|sock|postwrite", "ch3|sock|postwrite %p %p %p", s1, s2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "ch3|sock|postwrite %p %p %p" ); } /* src/mpid/ch3/channels/sock/src/ch3_progress.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|sock|immedread", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|sock|immedread" ); { /* src/mpid/ch3/channels/sock/src/ch3_progress.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|sock|immedread", "ch3|sock|immedread %p %p %p", s1, s2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "ch3|sock|immedread %p %p %p" ); } /* src/mpid/ch3/channels/sock/src/ch3_progress.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|sock|postread", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|sock|postread" ); { /* src/mpid/ch3/channels/sock/src/ch3_progress.c */ char s1[] = "pointer1"; char s2[] = "pointer2"; char s3[] = "pointer3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|sock|postread", "ch3|sock|postread %p %p %p", s1, s2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "ch3|sock|postread %p %p %p" ); } /* src/mpid/ch3/channels/sock/src/ch3_istartmsgv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|sock|writefailed", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|sock|writefailed" ); { /* src/mpid/ch3/channels/sock/src/ch3_istartmsgv.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|sock|writefailed", "**ch3|sock|writefailed %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**ch3|sock|writefailed %d" ); } /* src/mpid/ch3/channels/sock/src/ch3_istartmsgv.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|sock|connectionfailed", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|sock|connectionfailed" ); /* src/mpid/ch3/util/unordered/unordered.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|pktordered", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|pktordered" ); /* src/mpid/ch3/util/unordered/unordered.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|nopktcontainermem", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|nopktcontainermem" ); /* src/mpid/ch3/util/unordered/unordered.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|ooocancelreq", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|ooocancelreq" ); /* src/mpid/ch3/util/sock/ch3u_init_sock.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**init_buscard", 0); ChkMsg( err, MPI_ERR_OTHER, "**init_buscard" ); /* src/mpid/ch3/util/sock/ch3u_connect_sock.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|sock|badhost", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|sock|badhost" ); { /* src/mpid/ch3/util/sock/ch3u_connect_sock.c */ char s1[] = "string1"; int i2 = 2; char s3[] = "string3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|sock|badhost", "**ch3|sock|badhost %s %d %s", s1, i2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**ch3|sock|badhost %s %d %s" ); } { /* src/mpid/ch3/util/sock/ch3u_connect_sock.c */ char s1[] = "string1"; int i2 = 2; char s3[] = "string3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|sock|connrefused", "**ch3|sock|connrefused %s %d %s", s1, i2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**ch3|sock|connrefused %s %d %s" ); } /* src/mpid/ch3/util/sock/ch3u_connect_sock.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**argstr_missinghost", 0); ChkMsg( err, MPI_ERR_OTHER, "**argstr_missinghost" ); /* src/mpid/ch3/util/sock/ch3u_connect_sock.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**argstr_hostd", 0); ChkMsg( err, MPI_ERR_OTHER, "**argstr_hostd" ); /* src/mpid/ch3/util/sock/ch3u_connect_sock.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**argstr_port", 0); ChkMsg( err, MPI_ERR_OTHER, "**argstr_port" ); /* src/mpid/ch3/util/sock/ch3u_connect_sock.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|sock|accept", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|sock|accept" ); /* src/mpid/ch3/util/sock/ch3u_connect_sock.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|sock|connfailed", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|sock|connfailed" ); /* src/mpid/ch3/util/sock/ch3u_connect_sock.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|sock|scconnaccept", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|sock|scconnaccept" ); /* src/mpid/ch3/util/sock/ch3u_connect_sock.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|sock|scopenresp", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|sock|scopenresp" ); /* src/mpid/ch3/util/sock/ch3u_connect_sock.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|sock|badpacket", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|sock|badpacket" ); { /* src/mpid/ch3/util/sock/ch3u_connect_sock.c */ int i1 = 1; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|sock|badpacket", "**ch3|sock|badpacket %d", i1 ); ChkMsg( err, MPI_ERR_OTHER, "**ch3|sock|badpacket %d" ); } /* src/mpid/ch3/util/sock/ch3u_connect_sock.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pglookup", 0); ChkMsg( err, MPI_ERR_OTHER, "**pglookup" ); { /* src/mpid/ch3/util/sock/ch3u_connect_sock.c */ char s1[] = "string1"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pglookup", "**pglookup %s", s1 ); ChkMsg( err, MPI_ERR_OTHER, "**pglookup %s" ); } /* src/mpid/ch3/util/sock/ch3u_connect_sock.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|sock|open_lrecv_data", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|sock|open_lrecv_data" ); /* src/mpid/ch3/util/sock/ch3u_connect_sock.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|sock|openlsend", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|sock|openlsend" ); /* src/mpid/ch3/util/sock/ch3u_connect_sock.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**sock_post_close", 0); ChkMsg( err, MPI_ERR_OTHER, "**sock_post_close" ); /* src/mpid/ch3/util/sock/ch3u_connect_sock.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|sock|postconnect", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|sock|postconnect" ); { /* src/mpid/ch3/util/sock/ch3u_connect_sock.c */ int i1 = 1; int i2 = 2; char s3[] = "string3"; err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|sock|postconnect", "**ch3|sock|postconnect %d %d %s", i1, i2, s3 ); ChkMsg( err, MPI_ERR_OTHER, "**ch3|sock|postconnect %d %d %s" ); } /* src/mpid/ch3/util/sock/ch3u_connect_sock.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ch3|sock|connalloc", 0); ChkMsg( err, MPI_ERR_OTHER, "**ch3|sock|connalloc" ); /* src/mpid/ch3/util/ftb/ftb.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**pmi_jobgetid", 0); ChkMsg( err, MPI_ERR_OTHER, "**pmi_jobgetid" ); /* src/mpid/ch3/util/ftb/ftb.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ftb_connect", 0); ChkMsg( err, MPI_ERR_OTHER, "**ftb_connect" ); /* src/mpid/ch3/util/ftb/ftb.c */ err = MPIR_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, "errcode::main", __LINE__, MPI_ERR_OTHER, "**ftb_declare_publishable_events", 0); ChkMsg( err, MPI_ERR_OTHER, "**ftb_declare_publishable_events" ); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errhan/errring.c0000644000175000017500000000173312620254305017457 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include "mpi.h" #define MPIR_ERR_FATAL 1 #define MPIR_ERR_RECOVERABLE 0 int MPIR_Err_create_code(int, int, char *, int, int, const char[], const char[], ...); void MPIR_Err_print_stack(FILE * fp, int errcode); int main(int argc, char **argv) { int err; MPI_Init(0, 0); err = MPIR_Err_create_code(MPI_ERR_INTERN, MPIR_ERR_RECOVERABLE, "main", __LINE__, MPI_ERR_UNKNOWN, "**buffer", 0); err = MPIR_Err_create_code(err, MPIR_ERR_RECOVERABLE, "main", __LINE__, MPI_ERR_UNKNOWN, "**count", 0); err = MPIR_Err_create_code(err, MPIR_ERR_RECOVERABLE, "main", __LINE__, MPI_ERR_UNKNOWN, "**dtype", 0); MPIR_Err_print_stack(stdout, err); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/errhan/errfatal.c0000644000175000017500000000243112620254305017603 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2004 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include /* FIXME: This behavior of this test is implementation specific. */ static int verbose = 0; int main(int argc, char **argv) { int MY_ERROR_CLASS; int MY_ERROR_CODE; char MY_ERROR_STRING[10]; sprintf(MY_ERROR_STRING, "MY ERROR"); MPI_Init(&argc, &argv); if (verbose) printf("Adding My Error Class\n"); MPI_Add_error_class(&MY_ERROR_CLASS); if (verbose) printf("Adding My Error Code\n"); MPI_Add_error_code(MY_ERROR_CLASS, &MY_ERROR_CODE); if (verbose) printf("Adding My Error String\n"); MPI_Add_error_string(MY_ERROR_CODE, MY_ERROR_STRING); if (verbose) printf("Calling Error Handler\n"); MPI_Comm_call_errhandler(MPI_COMM_WORLD, MY_ERROR_CODE); /* We should not get here, because the default error handler * is ERRORS_ARE_FATAL. This makes sure that the correct error * handler is called and that no failure occured (such as * a SEGV) in Comm_call_errhandler on the default * error handler. */ printf("After the Error Handler Has Been Called\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/mpi_t/0000755000175000017500000000000012621010235015461 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/mpi_t/mpi_t_str.c0000644000175000017500000002214612620254305017641 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* A test that MPI_T string handling is working as expected. Necessarily a weak * test, since we can't assume any particular variables are exposed by the * implementation. */ #include "mpi.h" #include #include #include #include #include #include #include "mpitestconf.h" /* assert-like macro that bumps the err count and emits a message */ #define check(x_) \ do { \ if (!(x_)) { \ ++errs; \ if (errs < 10) { \ fprintf(stderr, "check failed: (%s), line %d\n", #x_, __LINE__); \ } \ } \ } while (0) /* the usual multiple-evaluation caveats apply to this routine */ #define min(a,b) ((a) < (b) ? (a) : (b)) int main(int argc, char **argv) { int errs = 0; int i, j; int rank, size; int num_pvars, num_cvars, num_cat; #define STR_SZ (50) int name_len; char name[STR_SZ + 1] = ""; /* +1 to check for overrun */ int desc_len; char desc[STR_SZ + 1] = ""; /* +1 to check for overrun */ int verb; MPI_Datatype dtype; int count; int bind; int scope; int provided; /* Init'ed to a garbage value, to trigger MPI_T bugs easily if there are. */ MPI_T_enum enumtype = (MPI_T_enum) 0x31415926; MPI_Init(&argc, &argv); MPI_T_init_thread(MPI_THREAD_SINGLE, &provided); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); /* loop over all cvars and ask for string arguments with various valid * combinations of NULL and non-NULL to ensure that the library handles this * case correctly */ MPI_T_cvar_get_num(&num_cvars); for (i = 0; i < num_cvars; ++i) { int full_name_len, full_desc_len; /* pass NULL string, non-zero lengths; should get full lengths */ full_name_len = full_desc_len = 1; MPI_T_cvar_get_info(i, NULL, &full_name_len, &verb, &dtype, &enumtype, NULL, &full_desc_len, &bind, &scope); check(full_name_len >= 0); check(full_desc_len >= 0); /* pass non-NULL string, zero lengths; should get full lengths also */ name_len = desc_len = 0; MPI_T_cvar_get_info(i, name, &name_len, &verb, &dtype, &enumtype, desc, &desc_len, &bind, &scope); check(full_name_len == name_len); check(full_desc_len == desc_len); /* regular call, no NULLs; should truncate (with termination) to STR_SZ * if necessary, otherwise returns strlen+1 in the corresponding "_len" * var */ name_len = desc_len = STR_SZ; MPI_T_cvar_get_info(i, name, &name_len, &verb, &dtype, &enumtype, desc, &desc_len, &bind, &scope); check((strlen(name) + 1) == min(name_len, STR_SZ)); check((strlen(desc) + 1) == min(desc_len, STR_SZ)); /* pass NULL lengths, string buffers should be left alone */ for (j = 0; j < STR_SZ; ++j) { name[j] = j % CHAR_MAX; desc[j] = j % CHAR_MAX; } MPI_T_cvar_get_info(i, name, /*name_len= */ NULL, &verb, &dtype, &enumtype, desc, /*desc_len= */ NULL, &bind, &scope); for (j = 0; j < STR_SZ; ++j) { check(name[j] == j % CHAR_MAX); check(desc[j] == j % CHAR_MAX); } /* not much of a string test, just need a quick spot to stick a test for * the existence of the correct MPI_T prototype (tt#1727) */ /* Include test that enumtype is defined */ if (dtype == MPI_INT && enumtype != MPI_T_ENUM_NULL) { int num_enumtype = -1; name_len = STR_SZ; MPI_T_enum_get_info(enumtype, &num_enumtype, name, &name_len); check(num_enumtype >= 0); } } /* check string handling for performance variables */ MPI_T_pvar_get_num(&num_pvars); for (i = 0; i < num_pvars; ++i) { int varclass, bind, readonly, continuous, atomic; MPI_Datatype dtype; MPI_T_enum enumtype; int full_name_len, full_desc_len; /* pass NULL string, non-zero lengths; should get full lengths */ full_name_len = full_desc_len = 1; MPI_T_pvar_get_info(i, NULL, &full_name_len, &verb, &varclass, &dtype, &enumtype, NULL, &full_desc_len, &bind, &readonly, &continuous, &atomic); check(full_name_len >= 0); check(full_desc_len >= 0); /* pass non-NULL string, zero lengths; should get full lengths also */ name_len = desc_len = 0; MPI_T_pvar_get_info(i, name, &name_len, &verb, &varclass, &dtype, &enumtype, desc, &desc_len, &bind, &readonly, &continuous, &atomic); check(full_name_len == name_len); check(full_desc_len == desc_len); /* regular call, no NULLs; should truncate (with termination) to STR_SZ * if necessary, otherwise returns strlen+1 in the corresponding "_len" * var */ name[STR_SZ] = (char) 'Z'; desc[STR_SZ] = (char) 'Z'; name_len = desc_len = STR_SZ; MPI_T_pvar_get_info(i, name, &name_len, &verb, &varclass, &dtype, &enumtype, desc, &desc_len, &bind, &readonly, &continuous, &atomic); check((strlen(name) + 1) == min(name_len, STR_SZ)); check((strlen(desc) + 1) == min(desc_len, STR_SZ)); check(name[STR_SZ] == (char) 'Z'); check(desc[STR_SZ] == (char) 'Z'); /* pass NULL lengths, string buffers should be left alone */ for (j = 0; j < STR_SZ; ++j) { name[j] = j % CHAR_MAX; desc[j] = j % CHAR_MAX; } MPI_T_pvar_get_info(i, name, /*name_len= */ NULL, &verb, &varclass, &dtype, &enumtype, desc, /*desc_len= */ NULL, &bind, &readonly, &continuous, &atomic); for (j = 0; j < STR_SZ; ++j) { check(name[j] == j % CHAR_MAX); check(desc[j] == j % CHAR_MAX); } } /* check string handling for categories */ MPI_T_category_get_num(&num_cat); for (i = 0; i < num_cat; ++i) { int full_name_len, full_desc_len; /* pass NULL string, non-zero lengths; should get full lengths */ full_name_len = full_desc_len = 1; MPI_T_category_get_info(i, NULL, &full_name_len, NULL, &full_desc_len, &num_cvars, &num_pvars, /*num_categories= */ &j); check(full_name_len >= 0); check(full_desc_len >= 0); /* pass non-NULL string, zero lengths; should get full lengths also */ name_len = desc_len = 0; MPI_T_category_get_info(i, name, &name_len, desc, &desc_len, &num_cvars, &num_pvars, /*num_categories= */ &j); check(full_name_len == name_len); check(full_desc_len == desc_len); /* regular call, no NULLs; should truncate (with termination) to STR_SZ * if necessary, otherwise returns strlen+1 in the corresponding "_len" * var */ name[STR_SZ] = (char) 'Z'; desc[STR_SZ] = (char) 'Z'; name_len = desc_len = STR_SZ; MPI_T_category_get_info(i, name, &name_len, desc, &desc_len, &num_cvars, &num_pvars, /*num_categories= */ &j); check((strlen(name) + 1) == min(name_len, STR_SZ)); check((strlen(desc) + 1) == min(desc_len, STR_SZ)); check(name[STR_SZ] == (char) 'Z'); check(desc[STR_SZ] == (char) 'Z'); /* pass NULL lengths, string buffers should be left alone */ for (j = 0; j < STR_SZ; ++j) { name[j] = j % CHAR_MAX; desc[j] = j % CHAR_MAX; } MPI_T_category_get_info(i, name, /*name_len= */ NULL, desc, /*desc_len= */ NULL, &num_cvars, &num_pvars, /*num_categories= */ &j); for (j = 0; j < STR_SZ; ++j) { check(name[j] == j % CHAR_MAX); check(desc[j] == j % CHAR_MAX); } /* not really a string test, just need a quick spot to stick a test for the * existence of the correct MPI_T prototype (tt#1727) */ { int indices[1]; MPI_T_category_get_pvars(i, 1, indices); } } MPI_Allreduce(MPI_IN_PLACE, &errs, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD); if (rank == 0) { if (errs) { printf("found %d errors\n", errs); } else { printf(" No errors\n"); } } MPI_T_finalize(); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/mpi_t/cvarwrite.c0000644000175000017500000000745012620254305017650 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include #include "mpitest.h" #include "mpitestconf.h" #define MAX_STR_CVAR_LEN 512 #define MAX_VAR_NAME_LEN 128 int main(int argc, char *argv[]) { int i; int required, provided; int num_cvar; char name[MAX_VAR_NAME_LEN]; int namelen, verbosity, datatype, desclen, binding, scope, count; MPI_T_enum enumtype = MPI_T_ENUM_NULL; int iin, iout, iold; unsigned uin, uout, uold; unsigned long ulin, ulout, ulold; unsigned long long ullin, ullout, ullold; char cin[MAX_STR_CVAR_LEN], cout[MAX_STR_CVAR_LEN], cold[MAX_STR_CVAR_LEN]; MPI_T_cvar_handle chandle; int errs = 0; required = MPI_THREAD_SINGLE; namelen = sizeof(name); MTest_Init(&argc, &argv); MPI_T_init_thread(required, &provided); MPI_T_cvar_get_num(&num_cvar); MTestPrintfMsg(10, "Total %d MPI control variables\n", num_cvar); for (i = 0; i < num_cvar; i++) { MPI_T_cvar_get_info(i, name, &namelen, &verbosity, &datatype, &enumtype, NULL /* desc is intentionly ignored to test NULL input */ , &desclen, &binding, &scope); if (binding != MPI_T_BIND_NO_OBJECT) continue; MPI_T_cvar_handle_alloc(i, NULL, &chandle, &count); if (count == 1 || (datatype == MPI_CHAR && count < sizeof(cin))) { if (MPI_INT == datatype) { iin = 123; iout = 456; MPI_T_cvar_read(chandle, &iold); /* Read the old value */ MPI_T_cvar_write(chandle, &iin); /* Write an arbitrary value */ MPI_T_cvar_read(chandle, &iout); /* Read the value again */ MPI_T_cvar_write(chandle, &iold); /* Restore the old value */ if (iin != iout) errs++; } else if (MPI_UNSIGNED == datatype) { uin = 133; uout = 986; MPI_T_cvar_read(chandle, &uold); MPI_T_cvar_write(chandle, &uin); MPI_T_cvar_read(chandle, &uout); MPI_T_cvar_write(chandle, &uold); if (uin != uout) errs++; } else if (MPI_UNSIGNED_LONG == datatype) { ulin = 1830; ulout = 2014; MPI_T_cvar_read(chandle, &ulold); MPI_T_cvar_write(chandle, &ulin); MPI_T_cvar_read(chandle, &ulout); MPI_T_cvar_write(chandle, &ulold); if (ulin != ulout) errs++; } else if (MPI_UNSIGNED_LONG_LONG == datatype) { ullin = 11930; ullout = 52014; MPI_T_cvar_read(chandle, &ullold); MPI_T_cvar_write(chandle, &ullin); MPI_T_cvar_read(chandle, &ullout); MPI_T_cvar_write(chandle, &ullold); if (ullin != ullout) errs++; } else if (MPI_CHAR == datatype) { strcpy(cin, "GARBAGE MPI_CHAR CVAR VALUE"); strcpy(cout, "TEMPORARY MPI_CHAR CVAR VALUE"); MPI_T_cvar_read(chandle, cold); MPI_T_cvar_write(chandle, cin); MPI_T_cvar_read(chandle, cout); MPI_T_cvar_write(chandle, cold); /* printf("%s = %s\n", name, cold); */ if (strcmp(cin, cout)) errs++; } } MPI_T_cvar_handle_free(&chandle); } MPI_T_finalize(); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/mpi_t/testlist0000644000175000017500000000015412620254305017266 0ustar mbanckmbanckmpi_t_str 1 mpiversion=3.0 mpit_vars 1 mpiversion=3.0 cvarwrite 1 mpiversion=3.0 getindex 1 mpiversion=3.1 mpi-testsuite-3.2+dfsg/mpi_t/Makefile.in0000644000175000017500000005163012621010235017533 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = mpi_t_str$(EXEEXT) mpit_vars$(EXEEXT) \ cvarwrite$(EXEEXT) getindex$(EXEEXT) subdir = mpi_t ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) cvarwrite_SOURCES = cvarwrite.c cvarwrite_OBJECTS = cvarwrite.$(OBJEXT) cvarwrite_LDADD = $(LDADD) cvarwrite_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o getindex_SOURCES = getindex.c getindex_OBJECTS = getindex.$(OBJEXT) getindex_LDADD = $(LDADD) getindex_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o mpi_t_str_SOURCES = mpi_t_str.c mpi_t_str_OBJECTS = mpi_t_str.$(OBJEXT) mpi_t_str_LDADD = $(LDADD) mpi_t_str_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o mpit_vars_SOURCES = mpit_vars.c mpit_vars_OBJECTS = mpit_vars.$(OBJEXT) mpit_vars_LDADD = $(LDADD) mpit_vars_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = cvarwrite.c getindex.c mpi_t_str.c mpit_vars.c DIST_SOURCES = cvarwrite.c getindex.c mpi_t_str.c mpit_vars.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.mtest \ $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign mpi_t/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign mpi_t/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) cvarwrite$(EXEEXT): $(cvarwrite_OBJECTS) $(cvarwrite_DEPENDENCIES) $(EXTRA_cvarwrite_DEPENDENCIES) @rm -f cvarwrite$(EXEEXT) $(AM_V_CCLD)$(LINK) $(cvarwrite_OBJECTS) $(cvarwrite_LDADD) $(LIBS) getindex$(EXEEXT): $(getindex_OBJECTS) $(getindex_DEPENDENCIES) $(EXTRA_getindex_DEPENDENCIES) @rm -f getindex$(EXEEXT) $(AM_V_CCLD)$(LINK) $(getindex_OBJECTS) $(getindex_LDADD) $(LIBS) mpi_t_str$(EXEEXT): $(mpi_t_str_OBJECTS) $(mpi_t_str_DEPENDENCIES) $(EXTRA_mpi_t_str_DEPENDENCIES) @rm -f mpi_t_str$(EXEEXT) $(AM_V_CCLD)$(LINK) $(mpi_t_str_OBJECTS) $(mpi_t_str_LDADD) $(LIBS) mpit_vars$(EXEEXT): $(mpit_vars_OBJECTS) $(mpit_vars_DEPENDENCIES) $(EXTRA_mpit_vars_DEPENDENCIES) @rm -f mpit_vars$(EXEEXT) $(AM_V_CCLD)$(LINK) $(mpit_vars_OBJECTS) $(mpit_vars_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cvarwrite.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getindex.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpi_t_str.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpit_vars.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/mpi_t/Makefile.am0000644000175000017500000000071412620254305017526 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile.mtest EXTRA_DIST = testlist ## for all programs that are just built from the single corresponding source ## file, we don't need per-target _SOURCES rules, automake will infer them ## correctly noinst_PROGRAMS = \ mpi_t_str \ mpit_vars \ cvarwrite \ getindex mpi-testsuite-3.2+dfsg/mpi_t/getindex.c0000644000175000017500000000610012620254305017440 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Test MPI_T_xxx_get_index() for cvars, pvars and categories. */ #include #include "mpi.h" static int verbose = 0; int main(int argc, char *argv[]) { int i; int required, provided, namelen; int num_cvar, num_pvar, num_cat; int cvar_index, pvar_index, cat_index; int pvar_class; char name[128]; int errno, errs = 0; required = MPI_THREAD_SINGLE; MPI_T_init_thread(required, &provided); MPI_Init(&argc, &argv); /* Test MPI_T_cvar_get_index with both valid and bogus names */ MPI_T_cvar_get_num(&num_cvar); if (verbose) fprintf(stdout, "%d MPI Control Variables\n", num_cvar); for (i = 0; i < num_cvar; i++) { namelen = sizeof(name); MPI_T_cvar_get_info(i, name, &namelen, NULL, NULL, NULL, NULL, NULL, NULL, NULL); if (namelen <= 128) { errno = MPI_T_cvar_get_index(name, &cvar_index); if (errno != MPI_SUCCESS || cvar_index != i) errs++; } } errno = MPI_T_cvar_get_index("AN INVALID CVAR NAME FOR TEST", &cvar_index); if (errno != MPI_T_ERR_INVALID_NAME) errs++; if (errs) fprintf(stdout, "Errors found in MPI_T_cvar_get_index\n"); /* Test MPI_T_pvar_get_index with both valid and bogus names */ MPI_T_pvar_get_num(&num_pvar); if (verbose) fprintf(stdout, "%d MPI Performance Variables\n", num_pvar); for (i = 0; i < num_pvar; i++) { namelen = sizeof(name); MPI_T_pvar_get_info(i, name, &namelen, NULL, &pvar_class, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); if (namelen <= 128) { errno = MPI_T_pvar_get_index(name, pvar_class, &pvar_index); if (errno != MPI_SUCCESS || pvar_index != i) errs++; } } errno = MPI_T_pvar_get_index("AN INVALID PVAR NAME FOR TEST", MPI_T_PVAR_CLASS_COUNTER, &cvar_index); if (errno != MPI_T_ERR_INVALID_NAME) errs++; if (errs) fprintf(stdout, "Errors found in MPI_T_cvar_get_index\n"); /* Test MPI_T_category_get_index with both valid and bogus names */ MPI_T_category_get_num(&num_cat); if (verbose) fprintf(stdout, "%d MPI_T categories\n", num_cat); for (i = 0; i < num_cat; i++) { namelen = sizeof(name); MPI_T_category_get_info(i, name, &namelen, NULL, NULL, NULL, NULL, NULL); if (namelen <= 128) { errno = MPI_T_category_get_index(name, &cat_index); if (errno != MPI_SUCCESS || cat_index != i) errs++; } } errno = MPI_T_category_get_index("AN INVALID CATEGORY NAME FOR TEST", &cat_index); if (errno != MPI_T_ERR_INVALID_NAME) errs++; if (errs) fprintf(stdout, "Errors found in MPI_T_cvar_get_index\n"); MPI_T_finalize(); MPI_Finalize(); if (errs == 0) fprintf(stdout, " No Errors\n"); return 0; } mpi-testsuite-3.2+dfsg/mpi_t/mpit_vars.c0000644000175000017500000004504712620254305017652 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2013 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* To print out all MPI_T control variables, performance variables and their categories in the MPI implementation. But whether they function well as expected, is not tested. */ #include #include #include /* For strncpy */ #include #include "mpi.h" char *mpit_scopeToStr(int scope); char *mpit_bindingToStr(int binding); char *mpit_validDtypeStr(MPI_Datatype datatype); char *mpit_varclassToStr(int varClass); char *mpit_verbosityToStr(int verbosity); int perfvarReadInt(int pvarIndex, int isContinuous, int *found); unsigned int perfvarReadUint(int pvarIndex, int isContinuous, int *found); double perfvarReadDouble(int pvarIndex, int isContinuous, int *found); int PrintControlVars(FILE * fp); int PrintPerfVars(FILE * fp); int PrintCategories(FILE * fp); static int verbose = 0; int main(int argc, char *argv[]) { int required, provided; required = MPI_THREAD_SINGLE; MPI_T_init_thread(required, &provided); MPI_Init_thread(&argc, &argv, required, &provided); if (getenv("MPITEST_VERBOSE")) verbose = 1; PrintControlVars(stdout); if (verbose) fprintf(stdout, "\n"); PrintPerfVars(stdout); if (verbose) fprintf(stdout, "\n"); PrintCategories(stdout); /* Put MPI_T_finalize() after MPI_Finalize() will cause mpich memory * tracing facility falsely reports memory leaks, though these memories * are freed in MPI_T_finalize(). */ MPI_T_finalize(); MPI_Finalize(); fprintf(stdout, " No Errors\n"); return 0; } int PrintControlVars(FILE * fp) { int i, num_cvar, nameLen, verbosity, descLen, binding, scope; int ival, hasValue; char name[128], desc[1024]; MPI_T_enum enumtype = MPI_T_ENUM_NULL; MPI_Datatype datatype; MPI_T_cvar_get_num(&num_cvar); if (verbose) fprintf(fp, "%d MPI Control Variables\n", num_cvar); for (i = 0; i < num_cvar; i++) { hasValue = 0; nameLen = sizeof(name); descLen = sizeof(desc); MPI_T_cvar_get_info(i, name, &nameLen, &verbosity, &datatype, &enumtype, desc, &descLen, &binding, &scope); if (datatype == MPI_INT && enumtype != MPI_T_ENUM_NULL) { int enameLen, enumber; char ename[128]; enameLen = sizeof(ename); /* TODO: Extract a useful string to show for an enum */ MPI_T_enum_get_info(enumtype, &enumber, ename, &enameLen); } if (datatype == MPI_INT && binding == MPI_T_BIND_NO_OBJECT) { int count; MPI_T_cvar_handle chandle; MPI_T_cvar_handle_alloc(i, NULL, &chandle, &count); if (count == 1) { MPI_T_cvar_read(chandle, &ival); hasValue = 1; } MPI_T_cvar_handle_free(&chandle); } if (hasValue && verbose) { fprintf(fp, "\t%s=%d\t%s\t%s\t%s\t%s\t%s\n", name, ival, mpit_scopeToStr(scope), mpit_bindingToStr(binding), mpit_validDtypeStr(datatype), mpit_verbosityToStr(verbosity), desc); } else if (verbose) { fprintf(fp, "\t%s\t%s\t%s\t%s\t%s\t%s\n", name, mpit_scopeToStr(scope), mpit_bindingToStr(binding), mpit_validDtypeStr(datatype), mpit_verbosityToStr(verbosity), desc); } } return 0; } int PrintPerfVars(FILE * fp) { int i, numPvar, nameLen, descLen, verbosity, varClass; int binding, isReadonly, isContinuous, isAtomic; char name[128], desc[1024]; MPI_T_enum enumtype; MPI_Datatype datatype; MPI_T_pvar_get_num(&numPvar); if (verbose) fprintf(fp, "%d MPI Performance Variables\n", numPvar); for (i = 0; i < numPvar; i++) { nameLen = sizeof(name); descLen = sizeof(desc); MPI_T_pvar_get_info(i, name, &nameLen, &verbosity, &varClass, &datatype, &enumtype, desc, &descLen, &binding, &isReadonly, &isContinuous, &isAtomic); if (verbose) fprintf(fp, "\t%s\t%s\t%s\t%s\t%s\tReadonly=%s\tContinuous=%s\tAtomic=%s\t%s\n", name, mpit_varclassToStr(varClass), mpit_bindingToStr(binding), mpit_validDtypeStr(datatype), mpit_verbosityToStr(verbosity), isReadonly ? "T" : "F", isContinuous ? "T" : "F", isAtomic ? "T" : "F", desc); if (datatype == MPI_INT) { int val, isFound; val = perfvarReadInt(i, isContinuous, &isFound); if (isFound && verbose) fprintf(fp, "\tValue = %d\n", val); } else if (datatype == MPI_UNSIGNED) { int isFound; unsigned int val; val = perfvarReadUint(i, isContinuous, &isFound); if (isFound && verbose) fprintf(fp, "\tValue = %u\n", val); } else if (datatype == MPI_DOUBLE) { int isFound; double val; val = perfvarReadDouble(i, isContinuous, &isFound); if (isFound && verbose) fprintf(fp, "\tValue = %e\n", val); } } return 0; } int PrintCategories(FILE * fp) { int i, j, numCat, nameLen, descLen, numCvars, numPvars, numSubcat; char name[128], desc[1024]; MPI_T_category_get_num(&numCat); if (verbose) { if (numCat > 0) fprintf(fp, "%d MPI_T categories\n", numCat); else fprintf(fp, "No categories defined\n"); } for (i = 0; i < numCat; i++) { nameLen = sizeof(name); descLen = sizeof(desc); MPI_T_category_get_info(i, name, &nameLen, desc, &descLen, &numCvars, &numPvars, &numSubcat); if (verbose) { fprintf(fp, "Category %s has %d control variables, %d performance variables, %d subcategories\n", name, numCvars, numPvars, numSubcat); fprintf(fp, "\tDescription: %s\n", desc); } if (numCvars > 0) { if (verbose) fprintf(fp, "\tControl variables include: "); int *cvarIndex = (int *) malloc(numCvars * sizeof(int)); MPI_T_category_get_cvars(i, numCvars, cvarIndex); for (j = 0; j < numCvars; j++) { /* Get just the variable name */ int varnameLen, verb, binding, scope; MPI_Datatype datatype; char varname[128]; varnameLen = sizeof(varname); MPI_T_cvar_get_info(cvarIndex[j], varname, &varnameLen, &verb, &datatype, NULL, NULL, NULL, &binding, &scope); if (verbose) fprintf(fp, "%s, ", varname); } free(cvarIndex); if (verbose) fprintf(fp, "\n"); } if (numPvars > 0) { if (verbose) fprintf(fp, "\tPerformance variables include: "); int *pvarIndex = (int *) malloc(numPvars * sizeof(int)); MPI_T_category_get_pvars(i, numPvars, pvarIndex); for (j = 0; j < numPvars; j++) { int varnameLen, verb, varclass, binding; int isReadonly, isContinuous, isAtomic; MPI_Datatype datatype; char varname[128]; varnameLen = sizeof(varname); MPI_T_pvar_get_info(pvarIndex[j], varname, &varnameLen, &verb, &varclass, &datatype, NULL, NULL, NULL, &binding, &isReadonly, &isContinuous, &isAtomic); if (verbose) fprintf(fp, "%s, ", varname); } free(pvarIndex); if (verbose) fprintf(fp, "\n"); } /* TODO: Make it possible to recursively print category information */ if (numSubcat > 0) { if (verbose) fprintf(fp, "\tSubcategories include: "); int *subcatIndex = (int *) malloc(numSubcat * sizeof(int)); MPI_T_category_get_categories(i, numSubcat, subcatIndex); for (j = 0; j < numSubcat; j++) { int catnameLen, ncvars, npvars, nsubcats; char catname[128]; catnameLen = sizeof(catname); MPI_T_category_get_info(subcatIndex[j], catname, &catnameLen, NULL, NULL, &ncvars, &npvars, &nsubcats); if (verbose) fprintf(fp, "%s, ", catname); } free(subcatIndex); if (verbose) fprintf(fp, "\n"); } } return 0; } /* --- Support routines --- */ char *mpit_validDtypeStr(MPI_Datatype datatype) { char *p = 0; if (datatype == MPI_INT) p = "MPI_INT"; else if (datatype == MPI_UNSIGNED) p = "MPI_UNSIGNED"; else if (datatype == MPI_UNSIGNED_LONG) p = "MPI_UNSIGNED_LONG"; else if (datatype == MPI_UNSIGNED_LONG_LONG) p = "MPI_UNSIGNED_LONG_LONG"; else if (datatype == MPI_COUNT) p = "MPI_COUNT"; else if (datatype == MPI_CHAR) p = "MPI_CHAR"; else if (datatype == MPI_DOUBLE) p = "MPI_DOUBLE"; else { if (datatype == MPI_DATATYPE_NULL) { p = "Invalid MPI datatype:NULL"; } else { static char typename[MPI_MAX_OBJECT_NAME + 9]; int tlen; strncpy(typename, "Invalid:", MPI_MAX_OBJECT_NAME); MPI_Type_get_name(datatype, typename + 8, &tlen); /* We must check location typename[8] to see if * MPI_Type_get_name returned a name (not all datatypes * have names). If it did not, then we indicate that * with a different message */ if (typename[8]) p = typename; else p = "Invalid: Unknown datatype name"; } } return p; } char *mpit_scopeToStr(int scope) { char *p = 0; switch (scope) { case MPI_T_SCOPE_CONSTANT: p = "SCOPE_CONSTANT"; break; case MPI_T_SCOPE_READONLY: p = "SCOPE_READONLY"; break; case MPI_T_SCOPE_LOCAL: p = "SCOPE_LOCAL"; break; case MPI_T_SCOPE_GROUP: p = "SCOPE_GROUP"; break; case MPI_T_SCOPE_GROUP_EQ: p = "SCOPE_GROUP_EQ"; break; case MPI_T_SCOPE_ALL: p = "SCOPE_ALL"; break; case MPI_T_SCOPE_ALL_EQ: p = "SCOPE_ALL_EQ"; break; default: p = "Unrecoginized scope"; break; } return p; } char *mpit_bindingToStr(int binding) { char *p; switch (binding) { case MPI_T_BIND_NO_OBJECT: p = "NO_OBJECT"; break; case MPI_T_BIND_MPI_COMM: p = "MPI_COMM"; break; case MPI_T_BIND_MPI_DATATYPE: p = "MPI_DATATYPE"; break; case MPI_T_BIND_MPI_ERRHANDLER: p = "MPI_ERRHANDLER"; break; case MPI_T_BIND_MPI_FILE: p = "MPI_FILE"; break; case MPI_T_BIND_MPI_GROUP: p = "MPI_GROUP"; break; case MPI_T_BIND_MPI_OP: p = "MPI_OP"; break; case MPI_T_BIND_MPI_REQUEST: p = "MPI_REQUEST"; break; case MPI_T_BIND_MPI_WIN: p = "MPI_WIN"; break; case MPI_T_BIND_MPI_MESSAGE: p = "MPI_MESSAGE"; break; case MPI_T_BIND_MPI_INFO: p = "MPI_INFO"; break; default: p = "Unknown object binding"; } return p; } char *mpit_varclassToStr(int varClass) { char *p = 0; switch (varClass) { case MPI_T_PVAR_CLASS_STATE: p = "CLASS_STATE"; break; case MPI_T_PVAR_CLASS_LEVEL: p = "CLASS_LEVEL"; break; case MPI_T_PVAR_CLASS_SIZE: p = "CLASS_SIZE"; break; case MPI_T_PVAR_CLASS_PERCENTAGE: p = "CLASS_PERCENTAGE"; break; case MPI_T_PVAR_CLASS_HIGHWATERMARK: p = "CLASS_HIGHWATERMARK"; break; case MPI_T_PVAR_CLASS_LOWWATERMARK: p = "CLASS_LOWWATERMARK"; break; case MPI_T_PVAR_CLASS_COUNTER: p = "CLASS_COUNTER"; break; case MPI_T_PVAR_CLASS_AGGREGATE: p = "CLASS_AGGREGATE"; break; case MPI_T_PVAR_CLASS_TIMER: p = "CLASS_TIMER"; break; case MPI_T_PVAR_CLASS_GENERIC: p = "CLASS_GENERIC"; break; default: p = "Unrecognized pvar class"; break; } return p; } char *mpit_verbosityToStr(int verbosity) { char *p = 0; switch (verbosity) { case MPI_T_VERBOSITY_USER_BASIC: p = "VERBOSITY_USER_BASIC"; break; case MPI_T_VERBOSITY_USER_DETAIL: p = "VERBOSITY_USER_DETAIL"; break; case MPI_T_VERBOSITY_USER_ALL: p = "VERBOSITY_USER_ALL"; break; case MPI_T_VERBOSITY_TUNER_BASIC: p = "VERBOSITY_TUNER_BASIC"; break; case MPI_T_VERBOSITY_TUNER_DETAIL: p = "VERBOSITY_TUNER_DETAIL"; break; case MPI_T_VERBOSITY_TUNER_ALL: p = "VERBOSITY_TUNER_ALL"; break; case MPI_T_VERBOSITY_MPIDEV_BASIC: p = "VERBOSITY_MPIDEV_BASIC"; break; case MPI_T_VERBOSITY_MPIDEV_DETAIL: p = "VERBOSITY_MPIDEV_DETAIL"; break; case MPI_T_VERBOSITY_MPIDEV_ALL: p = "VERBOSITY_MPIDEV_ALL"; break; default: p = "Invalid verbosity"; break; } return p; } char *mpit_errclassToStr(int err) { char *p = 0; switch (err) { case MPI_T_ERR_MEMORY: p = "ERR_MEMORY"; break; case MPI_T_ERR_NOT_INITIALIZED: p = "ERR_NOT_INITIALIZED"; break; case MPI_T_ERR_CANNOT_INIT: p = "ERR_CANNOT_INIT"; break; case MPI_T_ERR_INVALID_INDEX: p = "ERR_INVALID_INDEX"; break; case MPI_T_ERR_INVALID_ITEM: p = "ERR_INVALID_ITEM"; break; case MPI_T_ERR_INVALID_HANDLE: p = "ERR_INVALID_HANDLE"; break; case MPI_T_ERR_OUT_OF_HANDLES: p = "ERR_OUT_OF_HANDLES"; break; case MPI_T_ERR_OUT_OF_SESSIONS: p = "ERR_OUT_OF_SESSIONS"; break; case MPI_T_ERR_INVALID_SESSION: p = "ERR_INVALID_SESSION"; break; case MPI_T_ERR_CVAR_SET_NOT_NOW: p = "ERR_CVAR_SET_NOT_NOW"; break; case MPI_T_ERR_CVAR_SET_NEVER: p = "ERR_CVAR_SET_NEVER"; break; case MPI_T_ERR_PVAR_NO_STARTSTOP: p = "ERR_PVAR_NO_STARTSTOP"; break; case MPI_T_ERR_PVAR_NO_WRITE: p = "ERR_PVAR_NO_WRITE"; break; case MPI_T_ERR_PVAR_NO_ATOMIC: p = "ERR_PVAR_NO_ATOMIC"; break; default: p = "Unknown MPI_T_ERR class"; break; } return p; } /* Return the value of the performance variable as the value */ int perfvarReadInt(int pvarIndex, int isContinuous, int *found) { int count, val = -1; int err1 = MPI_SUCCESS; int err2 = MPI_SUCCESS; MPI_T_pvar_session session; MPI_T_pvar_handle pvarHandle; MPI_T_pvar_session_create(&session); MPI_T_pvar_handle_alloc(session, pvarIndex, NULL, &pvarHandle, &count); MPI_T_pvar_start(session, MPI_T_PVAR_ALL_HANDLES); MPI_T_pvar_stop(session, MPI_T_PVAR_ALL_HANDLES); if (count == 1) { *found = 1; if (!isContinuous) { /* start and stop the variable (just because we can) */ err1 = MPI_T_pvar_start(session, pvarHandle); err2 = MPI_T_pvar_stop(session, pvarHandle); } MPI_T_pvar_read(session, pvarHandle, &val); } MPI_T_pvar_handle_free(session, &pvarHandle); MPI_T_pvar_session_free(&session); /* Above codes imply that err1 and err2 should be MPI_SUCCESS. * If not, catch errors here, e.g., when MPI_ERR_INTERN is returned. */ if (err1 != MPI_SUCCESS || err2 != MPI_SUCCESS) { fprintf(stderr, "Unexpected MPI_T_pvar_start/stop return code\n"); abort(); } return val; } /* Return the value of the performance variable as the value */ unsigned int perfvarReadUint(int pvarIndex, int isContinuous, int *found) { int count; unsigned int val = 0; int err1 = MPI_SUCCESS; int err2 = MPI_SUCCESS; MPI_T_pvar_session session; MPI_T_pvar_handle pvarHandle; *found = 0; MPI_T_pvar_session_create(&session); MPI_T_pvar_handle_alloc(session, pvarIndex, NULL, &pvarHandle, &count); MPI_T_pvar_start(session, MPI_T_PVAR_ALL_HANDLES); MPI_T_pvar_stop(session, MPI_T_PVAR_ALL_HANDLES); if (count == 1) { *found = 1; if (!isContinuous) { /* start and stop the variable (just because we can) */ err1 = MPI_T_pvar_start(session, pvarHandle); err2 = MPI_T_pvar_stop(session, pvarHandle); } MPI_T_pvar_read(session, pvarHandle, &val); } MPI_T_pvar_handle_free(session, &pvarHandle); MPI_T_pvar_session_free(&session); /* Above codes imply that err1 and err2 should be MPI_SUCCESS. * If not, catch errors here, e.g., when MPI_ERR_INTERN is returned. */ if (err1 != MPI_SUCCESS || err2 != MPI_SUCCESS) { fprintf(stderr, "Unexpected MPI_T_pvar_start/stop return code\n"); abort(); } return val; } double perfvarReadDouble(int pvarIndex, int isContinuous, int *found) { int count; double val = 0.0; int err1 = MPI_SUCCESS; int err2 = MPI_SUCCESS; MPI_T_pvar_session session; MPI_T_pvar_handle pvarHandle; *found = 0; MPI_T_pvar_session_create(&session); MPI_T_pvar_handle_alloc(session, pvarIndex, NULL, &pvarHandle, &count); MPI_T_pvar_start(session, MPI_T_PVAR_ALL_HANDLES); MPI_T_pvar_stop(session, MPI_T_PVAR_ALL_HANDLES); if (count == 1) { *found = 1; if (!isContinuous) { /* start and stop the variable (just because we can) */ err1 = MPI_T_pvar_start(session, pvarHandle); err2 = MPI_T_pvar_stop(session, pvarHandle); } MPI_T_pvar_read(session, pvarHandle, &val); } MPI_T_pvar_handle_free(session, &pvarHandle); MPI_T_pvar_session_free(&session); /* Catch errors if MPI_T_pvar_start/stop are not properly implemented */ if (err1 != MPI_SUCCESS || err2 != MPI_SUCCESS) { fprintf(stderr, "Unknown MPI_T return code when starting/stopping double pvar\n"); abort(); } return val; } mpi-testsuite-3.2+dfsg/aclocal.m40000644000175000017500000013200112621010230016201 0ustar mbanckmbanck# generated automatically by aclocal 1.15 -*- Autoconf -*- # Copyright (C) 1996-2014 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.15' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.15], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.15])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # Copyright (C) 2011-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_AR([ACT-IF-FAIL]) # ------------------------- # Try to determine the archiver interface, and trigger the ar-lib wrapper # if it is needed. If the detection of archiver interface fails, run # ACT-IF-FAIL (default is to abort configure with a proper error message). AC_DEFUN([AM_PROG_AR], [AC_BEFORE([$0], [LT_INIT])dnl AC_BEFORE([$0], [AC_PROG_LIBTOOL])dnl AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([ar-lib])dnl AC_CHECK_TOOLS([AR], [ar lib "link -lib"], [false]) : ${AR=ar} AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface], [AC_LANG_PUSH([C]) am_cv_ar_interface=ar AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int some_variable = 0;]])], [am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([am_ar_try]) if test "$ac_status" -eq 0; then am_cv_ar_interface=ar else am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([am_ar_try]) if test "$ac_status" -eq 0; then am_cv_ar_interface=lib else am_cv_ar_interface=unknown fi fi rm -f conftest.lib libconftest.a ]) AC_LANG_POP([C])]) case $am_cv_ar_interface in ar) ;; lib) # Microsoft lib, so override with the ar-lib wrapper script. # FIXME: It is wrong to rewrite AR. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__AR in this case, # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something # similar. AR="$am_aux_dir/ar-lib $AR" ;; unknown) m4_default([$1], [AC_MSG_ERROR([could not determine $AR interface])]) ;; esac AC_SUBST([AR])dnl ]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each '.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC]) [_AM_PROG_CC_C_O ]) # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi dnl The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering # Copyright (C) 1996-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAINTAINER_MODE([DEFAULT-MODE]) # ---------------------------------- # Control maintainer-specific portions of Makefiles. # Default is to disable them, unless 'enable' is passed literally. # For symmetry, 'disable' may be passed as well. Anyway, the user # can override the default with the --enable/--disable switch. AC_DEFUN([AM_MAINTAINER_MODE], [m4_case(m4_default([$1], [disable]), [enable], [m4_define([am_maintainer_other], [disable])], [disable], [m4_define([am_maintainer_other], [enable])], [m4_define([am_maintainer_other], [enable]) m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) dnl maintainer-mode's default is 'disable' unless 'enable' is passed AC_ARG_ENABLE([maintainer-mode], [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode], am_maintainer_other[ make rules and dependencies not useful (and sometimes confusing) to the casual installer])], [USE_MAINTAINER_MODE=$enableval], [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) AC_MSG_RESULT([$USE_MAINTAINER_MODE]) AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) MAINT=$MAINTAINER_MODE_TRUE AC_SUBST([MAINT])dnl ] ) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_CC_C_O # --------------- # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC # to automatically call this. AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar # AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([confdb/aclocal_cache.m4]) m4_include([confdb/aclocal_cc.m4]) m4_include([confdb/aclocal_cxx.m4]) m4_include([confdb/aclocal_f77.m4]) m4_include([confdb/aclocal_fc.m4]) m4_include([confdb/aclocal_make.m4]) m4_include([confdb/aclocal_runlog.m4]) m4_include([confdb/aclocal_util.m4]) mpi-testsuite-3.2+dfsg/pt2pt/0000755000175000017500000000000012621010263015423 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/pt2pt/rqstatus.c0000644000175000017500000000664612620254305017477 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test Request_get_status"; */ int main(int argc, char *argv[]) { int errs = 0; int rank, size, source, dest; int buf[2], flag, count; MPI_Comm comm; MPI_Status status, status2; MPI_Request req; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; /* Determine the sender and receiver */ MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); source = 0; dest = size - 1; /* Handling MPI_REQUEST_NULL in MPI_Request_get_status was only required * starting with MPI-2.2. */ #if MTEST_HAVE_MIN_MPI_VERSION(2,2) MPI_Request_get_status(MPI_REQUEST_NULL, &flag, &status); if (!flag) { errs++; fprintf(stderr, "flag not true for MPI_REQUEST_NULL, flag=%d\n", flag); } if ((status.MPI_SOURCE != MPI_ANY_SOURCE) || (status.MPI_TAG != MPI_ANY_TAG) || (status.MPI_ERROR != MPI_SUCCESS)) { errs++; fprintf(stderr, "non-empty MPI_Status returned for MPI_REQUEST_NULL\n"); } /* also pass MPI_STATUS_IGNORE to make sure the implementation doesn't * blow up when it is passed as the status argument */ MPI_Request_get_status(MPI_REQUEST_NULL, &flag, MPI_STATUS_IGNORE); if (!flag) { errs++; fprintf(stderr, "flag not true for MPI_REQUEST_NULL with MPI_STATUS_IGNORE, flag=%d\n", flag); } #endif if (rank == source) { buf[0] = size; buf[1] = 3; MPI_Ssend(buf, 2, MPI_INT, dest, 10, comm); } if (rank == dest) { MPI_Irecv(buf, 2, MPI_INT, source, 10, comm, &req); } MPI_Barrier(comm); /* At this point, we know that the receive has at least started, * because of the Ssend. Check the status on the request */ if (rank == dest) { status.MPI_SOURCE = -1; status.MPI_TAG = -1; MPI_Request_get_status(req, &flag, &status); if (flag) { if (status.MPI_TAG != 10) { errs++; fprintf(stderr, "Tag value %d should be 10\n", status.MPI_TAG); } if (status.MPI_SOURCE != source) { errs++; fprintf(stderr, "Source value %d should be %d\n", status.MPI_SOURCE, source); } MPI_Get_count(&status, MPI_INT, &count); if (count != 2) { errs++; fprintf(stderr, "Count value %d should be 2\n", count); } } else { errs++; fprintf(stderr, "Unexpected flag value from get_status\n"); } /* Now, complete the request */ MPI_Wait(&req, &status2); /* Check that the status is correct */ if (status2.MPI_TAG != 10) { errs++; fprintf(stderr, "(wait)Tag value %d should be 10\n", status2.MPI_TAG); } if (status2.MPI_SOURCE != source) { errs++; fprintf(stderr, "(wait)Source value %d should be %d\n", status2.MPI_SOURCE, source); } MPI_Get_count(&status2, MPI_INT, &count); if (count != 2) { errs++; fprintf(stderr, "(wait)Count value %d should be 2\n", count); } } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/pt2pt/probenull.c0000644000175000017500000000307712620254305017606 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2005 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include "mpi.h" #include "mpitest.h" /* * This program checks that MPI_Iprobe and MPI_Probe correctly handle * a source of MPI_PROC_NULL */ int main(int argc, char **argv) { int flag; int errs = 0; MPI_Status status; MTest_Init(&argc, &argv); MPI_Iprobe(MPI_PROC_NULL, 10, MPI_COMM_WORLD, &flag, &status); if (!flag) { errs++; printf("Iprobe of source=MPI_PROC_NULL returned flag=false\n"); } else { if (status.MPI_SOURCE != MPI_PROC_NULL) { printf("Status.MPI_SOURCE was %d, should be MPI_PROC_NULL\n", status.MPI_SOURCE); errs++; } if (status.MPI_TAG != MPI_ANY_TAG) { printf("Status.MPI_TAG was %d, should be MPI_ANY_TAGL\n", status.MPI_TAG); errs++; } } /* If Iprobe failed, probe is likely to as well. Avoid a possible hang * by testing Probe only if Iprobe test passed */ if (errs == 0) { MPI_Probe(MPI_PROC_NULL, 10, MPI_COMM_WORLD, &status); if (status.MPI_SOURCE != MPI_PROC_NULL) { printf("Status.MPI_SOURCE was %d, should be MPI_PROC_NULL\n", status.MPI_SOURCE); errs++; } if (status.MPI_TAG != MPI_ANY_TAG) { printf("Status.MPI_TAG was %d, should be MPI_ANY_TAGL\n", status.MPI_TAG); errs++; } } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/pt2pt/issendselfcancel.c0000644000175000017500000000144612620254305021107 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include "mpi.h" int main(int argc, char **argv) { MPI_Request req; MPI_Status status; MPI_Init(NULL, NULL); MPI_Issend(NULL, 0, MPI_BYTE, 0, 123, MPI_COMM_SELF, &req); MPI_Probe(MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_SELF, &status); assert(status.MPI_SOURCE == 0); assert(status.MPI_TAG == 123); MPI_Cancel(&req); assert(req != MPI_REQUEST_NULL); MPI_Request_free(&req); MPI_Irecv(NULL, 0, MPI_BYTE, 0, 123, MPI_COMM_SELF, &req); MPI_Cancel(&req); MPI_Wait(&req, &status); printf(" No Errors\n"); MPI_Finalize(); } mpi-testsuite-3.2+dfsg/pt2pt/rqfreeb.c0000644000175000017500000000753712620254305017237 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2006 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* Test Ibsend and Request_free */ int main(int argc, char *argv[]) { MPI_Comm comm = MPI_COMM_WORLD; int dest = 1, src = 0, tag = 1; int s1; char *buf, *bbuf; int smsg[5], rmsg[5]; int errs = 0, rank, size; int bufsize, bsize; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); if (src >= size || dest >= size) { int r = src; if (dest > r) r = dest; fprintf(stderr, "This program requires %d processes\n", r - 1); MPI_Abort(MPI_COMM_WORLD, 1); } if (rank == src) { MPI_Request r; MPI_Barrier(MPI_COMM_WORLD); /* According to the standard, we must use the PACK_SIZE length of each * message in the computation of the message buffer size */ MPI_Pack_size(5, MPI_INT, comm, &s1); bufsize = MPI_BSEND_OVERHEAD + s1 + 2000; buf = (char *) malloc(bufsize); MPI_Buffer_attach(buf, bufsize); MTestPrintfMsg(10, "About create and free Isend request\n"); smsg[0] = 10; MPI_Isend(&smsg[0], 1, MPI_INT, dest, tag, comm, &r); MPI_Request_free(&r); if (r != MPI_REQUEST_NULL) { errs++; fprintf(stderr, "Request not set to NULL after request free\n"); } MTestPrintfMsg(10, "About create and free Ibsend request\n"); smsg[1] = 11; MPI_Ibsend(&smsg[1], 1, MPI_INT, dest, tag + 1, comm, &r); MPI_Request_free(&r); if (r != MPI_REQUEST_NULL) { errs++; fprintf(stderr, "Request not set to NULL after request free\n"); } MTestPrintfMsg(10, "About create and free Issend request\n"); smsg[2] = 12; MPI_Issend(&smsg[2], 1, MPI_INT, dest, tag + 2, comm, &r); MPI_Request_free(&r); if (r != MPI_REQUEST_NULL) { errs++; fprintf(stderr, "Request not set to NULL after request free\n"); } MTestPrintfMsg(10, "About create and free Irsend request\n"); smsg[3] = 13; MPI_Irsend(&smsg[3], 1, MPI_INT, dest, tag + 3, comm, &r); MPI_Request_free(&r); if (r != MPI_REQUEST_NULL) { errs++; fprintf(stderr, "Request not set to NULL after request free\n"); } smsg[4] = 14; MPI_Isend(&smsg[4], 1, MPI_INT, dest, tag + 4, comm, &r); MPI_Wait(&r, MPI_STATUS_IGNORE); /* We can't guarantee that messages arrive until the detach */ MPI_Buffer_detach(&bbuf, &bsize); } if (rank == dest) { MPI_Request r[5]; int i; for (i = 0; i < 5; i++) { MPI_Irecv(&rmsg[i], 1, MPI_INT, src, tag + i, comm, &r[i]); } if (rank != src) /* Just in case rank == src */ MPI_Barrier(MPI_COMM_WORLD); for (i = 0; i < 4; i++) { MPI_Wait(&r[i], MPI_STATUS_IGNORE); if (rmsg[i] != 10 + i) { errs++; fprintf(stderr, "message %d (%d) should be %d\n", i, rmsg[i], 10 + i); } } /* The MPI standard says that there is no way to use MPI_Request_free * safely with receive requests. A strict MPI implementation may * choose to consider these erroreous (an IBM MPI implementation * does so) */ #ifdef USE_STRICT_MPI MPI_Wait(&r[4], MPI_STATUS_IGNORE); #else MTestPrintfMsg(10, "About free Irecv request\n"); MPI_Request_free(&r[4]); #endif } if (rank != dest && rank != src) { MPI_Barrier(MPI_COMM_WORLD); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/pt2pt/bsendfrag.c0000644000175000017500000000670612620254305017541 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include "mpi.h" #include "mpitest.h" /* static char MTEST_Descrip[] = "Test bsend message handling where \ different messages are received in different orders"; */ /* * Notes on the test. * * To ensure that messages remain in the bsend buffer until received, * messages are sent with size MSG_SIZE (ints). */ #define MSG_SIZE 17000 int main(int argc, char *argv[]) { int errs = 0; int b1[MSG_SIZE], b2[MSG_SIZE], b3[MSG_SIZE], b4[MSG_SIZE]; int src, dest, size, rank, i; MPI_Comm comm; MPI_Status status; MTest_Init(&argc, &argv); MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_RETURN); comm = MPI_COMM_WORLD; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); if (size < 2) { errs++; fprintf(stderr, "At least 2 processes required\n"); MPI_Abort(MPI_COMM_WORLD, 1); } src = 0; dest = 1; if (rank == src) { int *buf, bufsize, bsize; bufsize = 4 * (MSG_SIZE * sizeof(int) + MPI_BSEND_OVERHEAD); buf = (int *) malloc(bufsize); if (!buf) { fprintf(stderr, "Could not allocate buffer of %d bytes\n", bufsize); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Buffer_attach(buf, bufsize); /* Initialize data */ for (i = 0; i < MSG_SIZE; i++) { b1[i] = i; b2[i] = MSG_SIZE + i; b3[i] = 2 * MSG_SIZE + i; b4[i] = 3 * MSG_SIZE + i; } /* Send and reset buffers after bsend returns */ MPI_Bsend(b1, MSG_SIZE, MPI_INT, dest, 0, comm); for (i = 0; i < MSG_SIZE; i++) b1[i] = -b1[i]; MPI_Bsend(b2, MSG_SIZE, MPI_INT, dest, 1, comm); for (i = 0; i < MSG_SIZE; i++) b2[i] = -b2[i]; MPI_Bsend(b3, MSG_SIZE, MPI_INT, dest, 2, comm); for (i = 0; i < MSG_SIZE; i++) b3[i] = -b3[i]; MPI_Bsend(b4, MSG_SIZE, MPI_INT, dest, 3, comm); for (i = 0; i < MSG_SIZE; i++) b4[i] = -b4[i]; MPI_Barrier(comm); /* Detach waits until all messages received */ MPI_Buffer_detach(&buf, &bsize); } else if (rank == dest) { MPI_Barrier(comm); MPI_Recv(b2, MSG_SIZE, MPI_INT, src, 1, comm, &status); MPI_Recv(b1, MSG_SIZE, MPI_INT, src, 0, comm, &status); MPI_Recv(b4, MSG_SIZE, MPI_INT, src, 3, comm, &status); MPI_Recv(b3, MSG_SIZE, MPI_INT, src, 2, comm, &status); /* Check received data */ for (i = 0; i < MSG_SIZE; i++) { if (b1[i] != i) { errs++; if (errs < 16) printf("b1[%d] is %d\n", i, b1[i]); } if (b2[i] != MSG_SIZE + i) { errs++; if (errs < 16) printf("b2[%d] is %d\n", i, b2[i]); } if (b3[i] != 2 * MSG_SIZE + i) { errs++; if (errs < 16) printf("b3[%d] is %d\n", i, b3[i]); } if (b4[i] != 3 * MSG_SIZE + i) { errs++; if (errs < 16) printf("b4[%d] is %d\n", i, b4[i]); } } } else { MPI_Barrier(comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/pt2pt/waitany-null.c0000644000175000017500000000361312620254305020224 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include "mpitestconf.h" #ifdef HAVE_STRING_H #include #endif #include "mpi.h" static int verbose = 0; int main(int argc, char *argv[]); int parse_args(int argc, char **argv); int main(int argc, char *argv[]) { int i, err, errs = 0, rank, toterrs; int index; MPI_Request requests[10]; MPI_Status statuses[10]; MPI_Init(&argc, &argv); parse_args(argc, argv); for (i = 0; i < 10; i++) { requests[i] = MPI_REQUEST_NULL; } /* begin testing */ /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); err = MPI_Waitany(10, requests, &index, statuses); if (err != MPI_SUCCESS) { errs++; fprintf(stderr, "MPI_Waitany did not return MPI_SUCCESS\n"); } if (index != MPI_UNDEFINED) { errs++; fprintf(stderr, "MPI_Waitany did not set index to MPI_UNDEFINED\n"); } /* end testing */ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_ARE_FATAL); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Allreduce(&errs, &toterrs, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD); if (rank == 0) { if (toterrs) { fprintf(stderr, " Found %d errors\n", toterrs); } else { printf(" No Errors\n"); } } MPI_Finalize(); return 0; } int parse_args(int argc, char **argv) { /* * int ret; * * while ((ret = getopt(argc, argv, "v")) >= 0) * { * switch (ret) { * case 'v': * verbose = 1; * break; * } * } */ if (argc > 1 && strcmp(argv[1], "-v") == 0) verbose = 1; return 0; } mpi-testsuite-3.2+dfsg/pt2pt/isendselfprobe.c0000644000175000017500000000176312620254305020610 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include "mpi.h" #include "mpitest.h" int main(int argc, char *argv[]) { int rank; int sendMsg = 123; int recvMsg = 0; int flag = 0; int count; MPI_Status status; MPI_Request request; int errs = 0; MTest_Init(0, 0); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (rank == 0) { MPI_Isend(&sendMsg, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, &request); while (!flag) { MPI_Iprobe(0, 0, MPI_COMM_WORLD, &flag, &status); } MPI_Get_count(&status, MPI_INT, &count); if (count != 1) { errs++; } MPI_Recv(&recvMsg, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, &status); if (recvMsg != 123) { errs++; } MPI_Wait(&request, &status); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/pt2pt/sendflood.c0000644000175000017500000001126512620254305017557 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2008 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include "mpi.h" /* * Run this test with 8 processes. This test was submitted by xxx * as a result of problems seen with the ch3:shm device on a Solaris * system. The symptom is that the test hangs; this is due to losing * a message, probably due to a race condition in a message-queue update. * As a test for race conditions, it may need to be run multiple times * to expose a problem if a problem does exist. */ #define LOOP_COUNT 100000 #define DATA_SIZE 4 #define MP_TAG 999 #define PROGRESS_COUNT 0xfff static int verbose = 0; static int loopProgress = 0; int main(int argc, char *argv[]) { int nProc, rank; int i, j, status; FILE *pf = 0; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nProc); MPI_Comm_rank(MPI_COMM_WORLD, &rank); for (i = 1; i < argc; i++) { if (strcmp(argv[i], "-v") == 0 || strcmp(argv[i], "--verbose") == 0) verbose = 1; else if (strcmp(argv[i], "-p") == 0 || strcmp(argv[i], "--progress") == 0) loopProgress = 1; else { if (rank == 0) { fprintf(stderr, "%s: [ -v | --verbose ] [ -p | --progress ]\n", argv[0]); fflush(stderr); } } } if (verbose) { char buf[128]; sprintf(buf, "fast_mpi_%d.dmp", rank); pf = fopen(buf, "w"); } else if (loopProgress) { pf = stdout; } if (!rank) { int **psend; int **precv; psend = (int **) calloc(nProc, sizeof(int *)); precv = (int **) calloc(nProc, sizeof(int *)); for (i = 0; i < nProc; i++) { psend[i] = (int *) calloc(DATA_SIZE, sizeof(int)); precv[i] = (int *) calloc(DATA_SIZE, sizeof(int)); } for (i = 0; i < LOOP_COUNT; i++) { if (verbose) { fprintf(pf, "Master : loop %d\n", i); fflush(pf); } else if (loopProgress && (i & PROGRESS_COUNT) == 0) { fprintf(pf, "Master: loop %d\n", i); fflush(pf); } for (j = 1; j < nProc; j++) { if (verbose) { fprintf(pf, " read from child %d\n", j); fflush(pf); } status = MPI_Recv(precv[j], DATA_SIZE, MPI_INT, j, MP_TAG, MPI_COMM_WORLD, MPI_STATUS_IGNORE); if (verbose) { fprintf(pf, " read from child %d done, status = %d\n", j, status); fflush(pf); } } for (j = 1; j < nProc; j++) { if (verbose) { fprintf(pf, " send to child %d\n", j); fflush(pf); } status = MPI_Send(psend[j], DATA_SIZE - 1, MPI_INT, j, MP_TAG, MPI_COMM_WORLD); if (verbose) { fprintf(pf, " send to child %d done, status = %d\n", j, status); fflush(pf); } } } for (i = 0; i < nProc; i++) { free(psend[i]); free(precv[i]); } free(psend); free(precv); } else { int *psend; int *precv; psend = (int *) calloc(DATA_SIZE, sizeof(int)); precv = (int *) calloc(DATA_SIZE, sizeof(int)); for (i = 0; i < LOOP_COUNT; i++) { if (verbose) { fprintf(pf, " send to master\n"); fflush(pf); } /* * else if (loopProgress && (i & PROGRESS_COUNT) == 0) { * fprintf(pf, "Slave: loop %d\n", i); fflush(pf); * } */ status = MPI_Send(psend, DATA_SIZE - 1, MPI_INT, 0, MP_TAG, MPI_COMM_WORLD); if (verbose) { fprintf(pf, " send to master done, status = %d\n", status); fflush(pf); fprintf(pf, " read from master\n"); fflush(pf); } status = MPI_Recv(precv, DATA_SIZE, MPI_INT, 0, MP_TAG, MPI_COMM_WORLD, MPI_STATUS_IGNORE); if (verbose) { fprintf(pf, " read from master done, status = %d\n", status); fflush(pf); } } free(psend); free(precv); } if (verbose) { fclose(pf); } MPI_Finalize(); /* This test fails if it hangs */ if (rank == 0) { printf(" No Errors\n"); } return 0; } mpi-testsuite-3.2+dfsg/pt2pt/rcancel.c0000644000175000017500000000471412620254305017212 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test of various receive cancel calls, with multiple requests to cancel"; */ int main(int argc, char *argv[]) { int errs = 0; int rank, size, source, dest; MPI_Comm comm; MPI_Status status; MPI_Request req[4]; static int bufsizes[4] = { 1, 100, 10000, 1000000 }; char *bufs[4]; int flag, i; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); source = 0; dest = size - 1; if (rank == source) { MPI_Send(MPI_BOTTOM, 0, MPI_CHAR, dest, 1, MPI_COMM_WORLD); } else if (rank == dest) { /* Create 3 requests to cancel, plus one to use. * Then receive one message and exit */ for (i = 0; i < 4; i++) { bufs[i] = (char *) malloc(bufsizes[i]); MPI_Irecv(bufs[i], bufsizes[i], MPI_CHAR, source, i, MPI_COMM_WORLD, &req[i]); } /* Now, cancel them in a more interesting order, to ensure that the * queue operation work properly */ MPI_Cancel(&req[2]); MPI_Wait(&req[2], &status); MTestPrintfMsg(1, "Completed wait on irecv[2]\n"); MPI_Test_cancelled(&status, &flag); if (!flag) { errs++; printf("Failed to cancel a Irecv[2] request\n"); fflush(stdout); } MPI_Cancel(&req[3]); MPI_Wait(&req[3], &status); MTestPrintfMsg(1, "Completed wait on irecv[3]\n"); MPI_Test_cancelled(&status, &flag); if (!flag) { errs++; printf("Failed to cancel a Irecv[3] request\n"); fflush(stdout); } MPI_Cancel(&req[0]); MPI_Wait(&req[0], &status); MTestPrintfMsg(1, "Completed wait on irecv[0]\n"); MPI_Test_cancelled(&status, &flag); if (!flag) { errs++; printf("Failed to cancel a Irecv[0] request\n"); fflush(stdout); } MPI_Wait(&req[1], &status); MPI_Test_cancelled(&status, &flag); if (flag) { errs++; printf("Incorrectly cancelled Irecv[1]\n"); fflush(stdout); } } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/pt2pt/testlist0000644000175000017500000000151312621010263017221 0ustar mbanckmbancksendrecv1 4 sendrecv2 2 sendrecv3 2 sendflood 8 timeLimit=600 sendself 1 sendall 4 anyall 2 eagerdt 2 pingping 2 timeLimit=500 bottom 2 bsend1 1 bsend2 1 bsend3 1 bsend4 1 bsend5 4 bsendalign 2 bsendpending 2 isendself 1 issendselfcancel 1 isendirecv 10 bsendfrag 2 icsend 4 rqstatus 2 rqfreeb 4 greq1 1 probe-unexp 4 probenull 1 # For testing, scancel will run with 1 process as well scancel 2 xfail=ticket2266 xfail=ticket2270 scancel2 2 pscancel 2 xfail=ticket2266 xfail=ticket2270 rcancel 2 cancelrecv 2 xfail=ticket2266 xfail=ticket2270 scancel_unmatch 2 xfail=ticket2276 cancelanysrc 2 isendselfprobe 1 inactivereq 1 waittestnull 1 waitany-null 1 # this should be run only on machines with large amount of memory (>=8GB) # perhaps disable in the release tarball #large_message 3 mprobe 2 mpiversion=3.0 big_count_status 1 mpiversion=3.0 mpi-testsuite-3.2+dfsg/pt2pt/Makefile.in0000644000175000017500000012175212621010235017477 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = anyall$(EXEEXT) bottom$(EXEEXT) bsend1$(EXEEXT) \ bsend2$(EXEEXT) bsend3$(EXEEXT) bsend4$(EXEEXT) \ bsend5$(EXEEXT) bsendalign$(EXEEXT) cancelrecv$(EXEEXT) \ cancelanysrc$(EXEEXT) isendself$(EXEEXT) \ issendselfcancel$(EXEEXT) isendirecv$(EXEEXT) \ sendself$(EXEEXT) eagerdt$(EXEEXT) isendselfprobe$(EXEEXT) \ bsendfrag$(EXEEXT) bsendpending$(EXEEXT) icsend$(EXEEXT) \ rqstatus$(EXEEXT) rqfreeb$(EXEEXT) greq1$(EXEEXT) \ scancel$(EXEEXT) scancel2$(EXEEXT) rcancel$(EXEEXT) \ pscancel$(EXEEXT) scancel_unmatch$(EXEEXT) sendflood$(EXEEXT) \ sendrecv1$(EXEEXT) sendrecv2$(EXEEXT) sendrecv3$(EXEEXT) \ waitany-null$(EXEEXT) pingping$(EXEEXT) probe-unexp$(EXEEXT) \ probenull$(EXEEXT) inactivereq$(EXEEXT) waittestnull$(EXEEXT) \ sendall$(EXEEXT) large_message$(EXEEXT) mprobe$(EXEEXT) \ big_count_status$(EXEEXT) subdir = pt2pt ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) anyall_SOURCES = anyall.c anyall_OBJECTS = anyall.$(OBJEXT) anyall_LDADD = $(LDADD) anyall_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o big_count_status_SOURCES = big_count_status.c big_count_status_OBJECTS = big_count_status.$(OBJEXT) big_count_status_LDADD = $(LDADD) big_count_status_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o bottom_SOURCES = bottom.c bottom_OBJECTS = bottom.$(OBJEXT) bottom_LDADD = $(LDADD) bottom_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o bsend1_SOURCES = bsend1.c bsend1_OBJECTS = bsend1.$(OBJEXT) bsend1_LDADD = $(LDADD) bsend1_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o bsend2_SOURCES = bsend2.c bsend2_OBJECTS = bsend2.$(OBJEXT) bsend2_LDADD = $(LDADD) bsend2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o bsend3_SOURCES = bsend3.c bsend3_OBJECTS = bsend3.$(OBJEXT) bsend3_LDADD = $(LDADD) bsend3_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o bsend4_SOURCES = bsend4.c bsend4_OBJECTS = bsend4.$(OBJEXT) bsend4_LDADD = $(LDADD) bsend4_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o bsend5_SOURCES = bsend5.c bsend5_OBJECTS = bsend5.$(OBJEXT) bsend5_LDADD = $(LDADD) bsend5_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o bsendalign_SOURCES = bsendalign.c bsendalign_OBJECTS = bsendalign.$(OBJEXT) bsendalign_LDADD = $(LDADD) bsendalign_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o bsendfrag_SOURCES = bsendfrag.c bsendfrag_OBJECTS = bsendfrag.$(OBJEXT) bsendfrag_LDADD = $(LDADD) bsendfrag_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o bsendpending_SOURCES = bsendpending.c bsendpending_OBJECTS = bsendpending.$(OBJEXT) bsendpending_LDADD = $(LDADD) bsendpending_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o cancelanysrc_SOURCES = cancelanysrc.c cancelanysrc_OBJECTS = cancelanysrc.$(OBJEXT) cancelanysrc_LDADD = $(LDADD) cancelanysrc_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o cancelrecv_SOURCES = cancelrecv.c cancelrecv_OBJECTS = cancelrecv.$(OBJEXT) cancelrecv_LDADD = $(LDADD) cancelrecv_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o eagerdt_SOURCES = eagerdt.c eagerdt_OBJECTS = eagerdt.$(OBJEXT) eagerdt_LDADD = $(LDADD) eagerdt_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o greq1_SOURCES = greq1.c greq1_OBJECTS = greq1.$(OBJEXT) greq1_LDADD = $(LDADD) greq1_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o icsend_SOURCES = icsend.c icsend_OBJECTS = icsend.$(OBJEXT) icsend_LDADD = $(LDADD) icsend_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o inactivereq_SOURCES = inactivereq.c inactivereq_OBJECTS = inactivereq.$(OBJEXT) inactivereq_LDADD = $(LDADD) inactivereq_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o isendirecv_SOURCES = isendirecv.c isendirecv_OBJECTS = isendirecv.$(OBJEXT) isendirecv_LDADD = $(LDADD) isendirecv_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o isendself_SOURCES = isendself.c isendself_OBJECTS = isendself.$(OBJEXT) isendself_LDADD = $(LDADD) isendself_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o isendselfprobe_SOURCES = isendselfprobe.c isendselfprobe_OBJECTS = isendselfprobe.$(OBJEXT) isendselfprobe_LDADD = $(LDADD) isendselfprobe_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o issendselfcancel_SOURCES = issendselfcancel.c issendselfcancel_OBJECTS = issendselfcancel.$(OBJEXT) issendselfcancel_LDADD = $(LDADD) issendselfcancel_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o large_message_SOURCES = large_message.c large_message_OBJECTS = large_message.$(OBJEXT) large_message_LDADD = $(LDADD) large_message_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o mprobe_SOURCES = mprobe.c mprobe_OBJECTS = mprobe.$(OBJEXT) mprobe_LDADD = $(LDADD) mprobe_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o pingping_SOURCES = pingping.c pingping_OBJECTS = pingping.$(OBJEXT) pingping_LDADD = $(LDADD) pingping_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o probe_unexp_SOURCES = probe-unexp.c probe_unexp_OBJECTS = probe-unexp.$(OBJEXT) probe_unexp_LDADD = $(LDADD) probe_unexp_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o probenull_SOURCES = probenull.c probenull_OBJECTS = probenull.$(OBJEXT) probenull_LDADD = $(LDADD) probenull_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o pscancel_SOURCES = pscancel.c pscancel_OBJECTS = pscancel.$(OBJEXT) pscancel_LDADD = $(LDADD) pscancel_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o rcancel_SOURCES = rcancel.c rcancel_OBJECTS = rcancel.$(OBJEXT) rcancel_LDADD = $(LDADD) rcancel_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o rqfreeb_SOURCES = rqfreeb.c rqfreeb_OBJECTS = rqfreeb.$(OBJEXT) rqfreeb_LDADD = $(LDADD) rqfreeb_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o rqstatus_SOURCES = rqstatus.c rqstatus_OBJECTS = rqstatus.$(OBJEXT) rqstatus_LDADD = $(LDADD) rqstatus_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o scancel_SOURCES = scancel.c scancel_OBJECTS = scancel.$(OBJEXT) scancel_LDADD = $(LDADD) scancel_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o scancel2_SOURCES = scancel2.c scancel2_OBJECTS = scancel2.$(OBJEXT) scancel2_LDADD = $(LDADD) scancel2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o scancel_unmatch_SOURCES = scancel_unmatch.c scancel_unmatch_OBJECTS = scancel_unmatch.$(OBJEXT) scancel_unmatch_LDADD = $(LDADD) scancel_unmatch_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o sendall_SOURCES = sendall.c sendall_OBJECTS = sendall.$(OBJEXT) sendall_LDADD = $(LDADD) sendall_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o sendflood_SOURCES = sendflood.c sendflood_OBJECTS = sendflood.$(OBJEXT) sendflood_LDADD = $(LDADD) sendflood_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o sendrecv1_SOURCES = sendrecv1.c sendrecv1_OBJECTS = sendrecv1.$(OBJEXT) sendrecv1_LDADD = $(LDADD) sendrecv1_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o sendrecv2_SOURCES = sendrecv2.c sendrecv2_OBJECTS = sendrecv2.$(OBJEXT) sendrecv2_LDADD = $(LDADD) sendrecv2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o sendrecv3_SOURCES = sendrecv3.c sendrecv3_OBJECTS = sendrecv3.$(OBJEXT) sendrecv3_LDADD = $(LDADD) sendrecv3_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o sendself_SOURCES = sendself.c sendself_OBJECTS = sendself.$(OBJEXT) sendself_LDADD = $(LDADD) sendself_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o waitany_null_SOURCES = waitany-null.c waitany_null_OBJECTS = waitany-null.$(OBJEXT) waitany_null_LDADD = $(LDADD) waitany_null_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o waittestnull_SOURCES = waittestnull.c waittestnull_OBJECTS = waittestnull.$(OBJEXT) waittestnull_LDADD = $(LDADD) waittestnull_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = anyall.c big_count_status.c bottom.c bsend1.c bsend2.c \ bsend3.c bsend4.c bsend5.c bsendalign.c bsendfrag.c \ bsendpending.c cancelanysrc.c cancelrecv.c eagerdt.c greq1.c \ icsend.c inactivereq.c isendirecv.c isendself.c \ isendselfprobe.c issendselfcancel.c large_message.c mprobe.c \ pingping.c probe-unexp.c probenull.c pscancel.c rcancel.c \ rqfreeb.c rqstatus.c scancel.c scancel2.c scancel_unmatch.c \ sendall.c sendflood.c sendrecv1.c sendrecv2.c sendrecv3.c \ sendself.c waitany-null.c waittestnull.c DIST_SOURCES = anyall.c big_count_status.c bottom.c bsend1.c bsend2.c \ bsend3.c bsend4.c bsend5.c bsendalign.c bsendfrag.c \ bsendpending.c cancelanysrc.c cancelrecv.c eagerdt.c greq1.c \ icsend.c inactivereq.c isendirecv.c isendself.c \ isendselfprobe.c issendselfcancel.c large_message.c mprobe.c \ pingping.c probe-unexp.c probenull.c pscancel.c rcancel.c \ rqfreeb.c rqstatus.c scancel.c scancel2.c scancel_unmatch.c \ sendall.c sendflood.c sendrecv1.c sendrecv2.c sendrecv3.c \ sendself.c waitany-null.c waittestnull.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.mtest \ $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign pt2pt/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign pt2pt/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) anyall$(EXEEXT): $(anyall_OBJECTS) $(anyall_DEPENDENCIES) $(EXTRA_anyall_DEPENDENCIES) @rm -f anyall$(EXEEXT) $(AM_V_CCLD)$(LINK) $(anyall_OBJECTS) $(anyall_LDADD) $(LIBS) big_count_status$(EXEEXT): $(big_count_status_OBJECTS) $(big_count_status_DEPENDENCIES) $(EXTRA_big_count_status_DEPENDENCIES) @rm -f big_count_status$(EXEEXT) $(AM_V_CCLD)$(LINK) $(big_count_status_OBJECTS) $(big_count_status_LDADD) $(LIBS) bottom$(EXEEXT): $(bottom_OBJECTS) $(bottom_DEPENDENCIES) $(EXTRA_bottom_DEPENDENCIES) @rm -f bottom$(EXEEXT) $(AM_V_CCLD)$(LINK) $(bottom_OBJECTS) $(bottom_LDADD) $(LIBS) bsend1$(EXEEXT): $(bsend1_OBJECTS) $(bsend1_DEPENDENCIES) $(EXTRA_bsend1_DEPENDENCIES) @rm -f bsend1$(EXEEXT) $(AM_V_CCLD)$(LINK) $(bsend1_OBJECTS) $(bsend1_LDADD) $(LIBS) bsend2$(EXEEXT): $(bsend2_OBJECTS) $(bsend2_DEPENDENCIES) $(EXTRA_bsend2_DEPENDENCIES) @rm -f bsend2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(bsend2_OBJECTS) $(bsend2_LDADD) $(LIBS) bsend3$(EXEEXT): $(bsend3_OBJECTS) $(bsend3_DEPENDENCIES) $(EXTRA_bsend3_DEPENDENCIES) @rm -f bsend3$(EXEEXT) $(AM_V_CCLD)$(LINK) $(bsend3_OBJECTS) $(bsend3_LDADD) $(LIBS) bsend4$(EXEEXT): $(bsend4_OBJECTS) $(bsend4_DEPENDENCIES) $(EXTRA_bsend4_DEPENDENCIES) @rm -f bsend4$(EXEEXT) $(AM_V_CCLD)$(LINK) $(bsend4_OBJECTS) $(bsend4_LDADD) $(LIBS) bsend5$(EXEEXT): $(bsend5_OBJECTS) $(bsend5_DEPENDENCIES) $(EXTRA_bsend5_DEPENDENCIES) @rm -f bsend5$(EXEEXT) $(AM_V_CCLD)$(LINK) $(bsend5_OBJECTS) $(bsend5_LDADD) $(LIBS) bsendalign$(EXEEXT): $(bsendalign_OBJECTS) $(bsendalign_DEPENDENCIES) $(EXTRA_bsendalign_DEPENDENCIES) @rm -f bsendalign$(EXEEXT) $(AM_V_CCLD)$(LINK) $(bsendalign_OBJECTS) $(bsendalign_LDADD) $(LIBS) bsendfrag$(EXEEXT): $(bsendfrag_OBJECTS) $(bsendfrag_DEPENDENCIES) $(EXTRA_bsendfrag_DEPENDENCIES) @rm -f bsendfrag$(EXEEXT) $(AM_V_CCLD)$(LINK) $(bsendfrag_OBJECTS) $(bsendfrag_LDADD) $(LIBS) bsendpending$(EXEEXT): $(bsendpending_OBJECTS) $(bsendpending_DEPENDENCIES) $(EXTRA_bsendpending_DEPENDENCIES) @rm -f bsendpending$(EXEEXT) $(AM_V_CCLD)$(LINK) $(bsendpending_OBJECTS) $(bsendpending_LDADD) $(LIBS) cancelanysrc$(EXEEXT): $(cancelanysrc_OBJECTS) $(cancelanysrc_DEPENDENCIES) $(EXTRA_cancelanysrc_DEPENDENCIES) @rm -f cancelanysrc$(EXEEXT) $(AM_V_CCLD)$(LINK) $(cancelanysrc_OBJECTS) $(cancelanysrc_LDADD) $(LIBS) cancelrecv$(EXEEXT): $(cancelrecv_OBJECTS) $(cancelrecv_DEPENDENCIES) $(EXTRA_cancelrecv_DEPENDENCIES) @rm -f cancelrecv$(EXEEXT) $(AM_V_CCLD)$(LINK) $(cancelrecv_OBJECTS) $(cancelrecv_LDADD) $(LIBS) eagerdt$(EXEEXT): $(eagerdt_OBJECTS) $(eagerdt_DEPENDENCIES) $(EXTRA_eagerdt_DEPENDENCIES) @rm -f eagerdt$(EXEEXT) $(AM_V_CCLD)$(LINK) $(eagerdt_OBJECTS) $(eagerdt_LDADD) $(LIBS) greq1$(EXEEXT): $(greq1_OBJECTS) $(greq1_DEPENDENCIES) $(EXTRA_greq1_DEPENDENCIES) @rm -f greq1$(EXEEXT) $(AM_V_CCLD)$(LINK) $(greq1_OBJECTS) $(greq1_LDADD) $(LIBS) icsend$(EXEEXT): $(icsend_OBJECTS) $(icsend_DEPENDENCIES) $(EXTRA_icsend_DEPENDENCIES) @rm -f icsend$(EXEEXT) $(AM_V_CCLD)$(LINK) $(icsend_OBJECTS) $(icsend_LDADD) $(LIBS) inactivereq$(EXEEXT): $(inactivereq_OBJECTS) $(inactivereq_DEPENDENCIES) $(EXTRA_inactivereq_DEPENDENCIES) @rm -f inactivereq$(EXEEXT) $(AM_V_CCLD)$(LINK) $(inactivereq_OBJECTS) $(inactivereq_LDADD) $(LIBS) isendirecv$(EXEEXT): $(isendirecv_OBJECTS) $(isendirecv_DEPENDENCIES) $(EXTRA_isendirecv_DEPENDENCIES) @rm -f isendirecv$(EXEEXT) $(AM_V_CCLD)$(LINK) $(isendirecv_OBJECTS) $(isendirecv_LDADD) $(LIBS) isendself$(EXEEXT): $(isendself_OBJECTS) $(isendself_DEPENDENCIES) $(EXTRA_isendself_DEPENDENCIES) @rm -f isendself$(EXEEXT) $(AM_V_CCLD)$(LINK) $(isendself_OBJECTS) $(isendself_LDADD) $(LIBS) isendselfprobe$(EXEEXT): $(isendselfprobe_OBJECTS) $(isendselfprobe_DEPENDENCIES) $(EXTRA_isendselfprobe_DEPENDENCIES) @rm -f isendselfprobe$(EXEEXT) $(AM_V_CCLD)$(LINK) $(isendselfprobe_OBJECTS) $(isendselfprobe_LDADD) $(LIBS) issendselfcancel$(EXEEXT): $(issendselfcancel_OBJECTS) $(issendselfcancel_DEPENDENCIES) $(EXTRA_issendselfcancel_DEPENDENCIES) @rm -f issendselfcancel$(EXEEXT) $(AM_V_CCLD)$(LINK) $(issendselfcancel_OBJECTS) $(issendselfcancel_LDADD) $(LIBS) large_message$(EXEEXT): $(large_message_OBJECTS) $(large_message_DEPENDENCIES) $(EXTRA_large_message_DEPENDENCIES) @rm -f large_message$(EXEEXT) $(AM_V_CCLD)$(LINK) $(large_message_OBJECTS) $(large_message_LDADD) $(LIBS) mprobe$(EXEEXT): $(mprobe_OBJECTS) $(mprobe_DEPENDENCIES) $(EXTRA_mprobe_DEPENDENCIES) @rm -f mprobe$(EXEEXT) $(AM_V_CCLD)$(LINK) $(mprobe_OBJECTS) $(mprobe_LDADD) $(LIBS) pingping$(EXEEXT): $(pingping_OBJECTS) $(pingping_DEPENDENCIES) $(EXTRA_pingping_DEPENDENCIES) @rm -f pingping$(EXEEXT) $(AM_V_CCLD)$(LINK) $(pingping_OBJECTS) $(pingping_LDADD) $(LIBS) probe-unexp$(EXEEXT): $(probe_unexp_OBJECTS) $(probe_unexp_DEPENDENCIES) $(EXTRA_probe_unexp_DEPENDENCIES) @rm -f probe-unexp$(EXEEXT) $(AM_V_CCLD)$(LINK) $(probe_unexp_OBJECTS) $(probe_unexp_LDADD) $(LIBS) probenull$(EXEEXT): $(probenull_OBJECTS) $(probenull_DEPENDENCIES) $(EXTRA_probenull_DEPENDENCIES) @rm -f probenull$(EXEEXT) $(AM_V_CCLD)$(LINK) $(probenull_OBJECTS) $(probenull_LDADD) $(LIBS) pscancel$(EXEEXT): $(pscancel_OBJECTS) $(pscancel_DEPENDENCIES) $(EXTRA_pscancel_DEPENDENCIES) @rm -f pscancel$(EXEEXT) $(AM_V_CCLD)$(LINK) $(pscancel_OBJECTS) $(pscancel_LDADD) $(LIBS) rcancel$(EXEEXT): $(rcancel_OBJECTS) $(rcancel_DEPENDENCIES) $(EXTRA_rcancel_DEPENDENCIES) @rm -f rcancel$(EXEEXT) $(AM_V_CCLD)$(LINK) $(rcancel_OBJECTS) $(rcancel_LDADD) $(LIBS) rqfreeb$(EXEEXT): $(rqfreeb_OBJECTS) $(rqfreeb_DEPENDENCIES) $(EXTRA_rqfreeb_DEPENDENCIES) @rm -f rqfreeb$(EXEEXT) $(AM_V_CCLD)$(LINK) $(rqfreeb_OBJECTS) $(rqfreeb_LDADD) $(LIBS) rqstatus$(EXEEXT): $(rqstatus_OBJECTS) $(rqstatus_DEPENDENCIES) $(EXTRA_rqstatus_DEPENDENCIES) @rm -f rqstatus$(EXEEXT) $(AM_V_CCLD)$(LINK) $(rqstatus_OBJECTS) $(rqstatus_LDADD) $(LIBS) scancel$(EXEEXT): $(scancel_OBJECTS) $(scancel_DEPENDENCIES) $(EXTRA_scancel_DEPENDENCIES) @rm -f scancel$(EXEEXT) $(AM_V_CCLD)$(LINK) $(scancel_OBJECTS) $(scancel_LDADD) $(LIBS) scancel2$(EXEEXT): $(scancel2_OBJECTS) $(scancel2_DEPENDENCIES) $(EXTRA_scancel2_DEPENDENCIES) @rm -f scancel2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(scancel2_OBJECTS) $(scancel2_LDADD) $(LIBS) scancel_unmatch$(EXEEXT): $(scancel_unmatch_OBJECTS) $(scancel_unmatch_DEPENDENCIES) $(EXTRA_scancel_unmatch_DEPENDENCIES) @rm -f scancel_unmatch$(EXEEXT) $(AM_V_CCLD)$(LINK) $(scancel_unmatch_OBJECTS) $(scancel_unmatch_LDADD) $(LIBS) sendall$(EXEEXT): $(sendall_OBJECTS) $(sendall_DEPENDENCIES) $(EXTRA_sendall_DEPENDENCIES) @rm -f sendall$(EXEEXT) $(AM_V_CCLD)$(LINK) $(sendall_OBJECTS) $(sendall_LDADD) $(LIBS) sendflood$(EXEEXT): $(sendflood_OBJECTS) $(sendflood_DEPENDENCIES) $(EXTRA_sendflood_DEPENDENCIES) @rm -f sendflood$(EXEEXT) $(AM_V_CCLD)$(LINK) $(sendflood_OBJECTS) $(sendflood_LDADD) $(LIBS) sendrecv1$(EXEEXT): $(sendrecv1_OBJECTS) $(sendrecv1_DEPENDENCIES) $(EXTRA_sendrecv1_DEPENDENCIES) @rm -f sendrecv1$(EXEEXT) $(AM_V_CCLD)$(LINK) $(sendrecv1_OBJECTS) $(sendrecv1_LDADD) $(LIBS) sendrecv2$(EXEEXT): $(sendrecv2_OBJECTS) $(sendrecv2_DEPENDENCIES) $(EXTRA_sendrecv2_DEPENDENCIES) @rm -f sendrecv2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(sendrecv2_OBJECTS) $(sendrecv2_LDADD) $(LIBS) sendrecv3$(EXEEXT): $(sendrecv3_OBJECTS) $(sendrecv3_DEPENDENCIES) $(EXTRA_sendrecv3_DEPENDENCIES) @rm -f sendrecv3$(EXEEXT) $(AM_V_CCLD)$(LINK) $(sendrecv3_OBJECTS) $(sendrecv3_LDADD) $(LIBS) sendself$(EXEEXT): $(sendself_OBJECTS) $(sendself_DEPENDENCIES) $(EXTRA_sendself_DEPENDENCIES) @rm -f sendself$(EXEEXT) $(AM_V_CCLD)$(LINK) $(sendself_OBJECTS) $(sendself_LDADD) $(LIBS) waitany-null$(EXEEXT): $(waitany_null_OBJECTS) $(waitany_null_DEPENDENCIES) $(EXTRA_waitany_null_DEPENDENCIES) @rm -f waitany-null$(EXEEXT) $(AM_V_CCLD)$(LINK) $(waitany_null_OBJECTS) $(waitany_null_LDADD) $(LIBS) waittestnull$(EXEEXT): $(waittestnull_OBJECTS) $(waittestnull_DEPENDENCIES) $(EXTRA_waittestnull_DEPENDENCIES) @rm -f waittestnull$(EXEEXT) $(AM_V_CCLD)$(LINK) $(waittestnull_OBJECTS) $(waittestnull_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/anyall.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/big_count_status.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bottom.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bsend1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bsend2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bsend3.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bsend4.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bsend5.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bsendalign.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bsendfrag.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bsendpending.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cancelanysrc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cancelrecv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eagerdt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/greq1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icsend.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inactivereq.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isendirecv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isendself.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isendselfprobe.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/issendselfcancel.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/large_message.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mprobe.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pingping.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/probe-unexp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/probenull.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pscancel.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rcancel.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rqfreeb.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rqstatus.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scancel.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scancel2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scancel_unmatch.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendall.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendflood.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendrecv1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendrecv2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendrecv3.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendself.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/waitany-null.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/waittestnull.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/pt2pt/sendrecv1.c0000644000175000017500000000605112620254305017471 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Send-Recv"; */ int main(int argc, char *argv[]) { int errs = 0, err; int rank, size, source, dest; int minsize = 2, count; MPI_Comm comm; MTestDatatype sendtype, recvtype; MTest_Init(&argc, &argv); /* The following illustrates the use of the routines to * run through a selection of communicators and datatypes. * Use subsets of these for tests that do not involve combinations * of communicators, datatypes, and counts of datatypes */ while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; /* Determine the sender and receiver */ MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); source = 0; dest = size - 1; /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(comm, MPI_ERRORS_RETURN); MTEST_DATATYPE_FOR_EACH_COUNT(count) { while (MTestGetDatatypes(&sendtype, &recvtype, count)) { /* Make sure that everyone has a recv buffer */ recvtype.InitBuf(&recvtype); if (rank == source) { sendtype.InitBuf(&sendtype); err = MPI_Send(sendtype.buf, sendtype.count, sendtype.datatype, dest, 0, comm); if (err) { errs++; if (errs < 10) { MTestPrintError(err); } } } else if (rank == dest) { err = MPI_Recv(recvtype.buf, recvtype.count, recvtype.datatype, source, 0, comm, MPI_STATUS_IGNORE); if (err) { errs++; if (errs < 10) { MTestPrintError(err); } } err = MTestCheckRecv(0, &recvtype); if (err) { if (errs < 10) { printf ("Data in target buffer did not match for destination datatype %s and source datatype %s, count = %d\n", MTestGetDatatypeName(&recvtype), MTestGetDatatypeName(&sendtype), count); recvtype.printErrors = 1; (void) MTestCheckRecv(0, &recvtype); } errs += err; } } MTestFreeDatatype(&sendtype); MTestFreeDatatype(&recvtype); } } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/pt2pt/sendself.c0000644000175000017500000001043712620254305017405 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2006 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test of sending to self (with a preposted receive)"; */ int main(int argc, char *argv[]) { int errs = 0, err; int rank, size; int count; MPI_Comm comm; MPI_Request req; MTestDatatype sendtype, recvtype; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(comm, MPI_ERRORS_RETURN); MTEST_DATATYPE_FOR_EACH_COUNT(count) { while (MTestGetDatatypes(&sendtype, &recvtype, count)) { sendtype.InitBuf(&sendtype); recvtype.InitBuf(&recvtype); err = MPI_Irecv(recvtype.buf, recvtype.count, recvtype.datatype, rank, 0, comm, &req); if (err) { errs++; if (errs < 10) { MTestPrintError(err); } } err = MPI_Send(sendtype.buf, sendtype.count, sendtype.datatype, rank, 0, comm); if (err) { errs++; if (errs < 10) { MTestPrintError(err); } } err = MPI_Wait(&req, MPI_STATUS_IGNORE); err = MTestCheckRecv(0, &recvtype); if (err) { if (errs < 10) { printf ("Data in target buffer did not match for destination datatype %s and source datatype %s, count = %d\n", MTestGetDatatypeName(&recvtype), MTestGetDatatypeName(&sendtype), count); recvtype.printErrors = 1; (void) MTestCheckRecv(0, &recvtype); } errs += err; } err = MPI_Irecv(recvtype.buf, recvtype.count, recvtype.datatype, rank, 0, comm, &req); if (err) { errs++; if (errs < 10) { MTestPrintError(err); } } err = MPI_Ssend(sendtype.buf, sendtype.count, sendtype.datatype, rank, 0, comm); if (err) { errs++; if (errs < 10) { MTestPrintError(err); } } err = MPI_Wait(&req, MPI_STATUS_IGNORE); err = MTestCheckRecv(0, &recvtype); if (err) { if (errs < 10) { printf ("Data in target buffer did not match for destination datatype %s and source datatype %s, count = %d\n", MTestGetDatatypeName(&recvtype), MTestGetDatatypeName(&sendtype), count); recvtype.printErrors = 1; (void) MTestCheckRecv(0, &recvtype); } errs += err; } err = MPI_Irecv(recvtype.buf, recvtype.count, recvtype.datatype, rank, 0, comm, &req); if (err) { errs++; if (errs < 10) { MTestPrintError(err); } } err = MPI_Rsend(sendtype.buf, sendtype.count, sendtype.datatype, rank, 0, comm); if (err) { errs++; if (errs < 10) { MTestPrintError(err); } } err = MPI_Wait(&req, MPI_STATUS_IGNORE); err = MTestCheckRecv(0, &recvtype); if (err) { if (errs < 10) { printf ("Data in target buffer did not match for destination datatype %s and source datatype %s, count = %d\n", MTestGetDatatypeName(&recvtype), MTestGetDatatypeName(&sendtype), count); recvtype.printErrors = 1; (void) MTestCheckRecv(0, &recvtype); } errs += err; } MTestFreeDatatype(&sendtype); MTestFreeDatatype(&recvtype); } } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/pt2pt/bsend2.c0000644000175000017500000000327012620254305016754 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include "mpi.h" #include "mpitest.h" #define BUFSIZE 2000 int main(int argc, char *argv[]) { MPI_Status status; int a[10], b[10]; int buf[BUFSIZE], *bptr, bl, i, j, rank, size; int errs = 0; MTest_Init(0, 0); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Buffer_attach(buf, BUFSIZE); for (j = 0; j < 10; j++) { for (i = 0; i < 10; i++) { a[i] = (rank + 10 * j) * size + i; } MPI_Bsend(a, 10, MPI_INT, 0, 27 + j, MPI_COMM_WORLD); } if (rank == 0) { for (i = 0; i < size; i++) { for (j = 0; j < 10; j++) { int k; status.MPI_TAG = -10; status.MPI_SOURCE = -20; MPI_Recv(b, 10, MPI_INT, i, 27 + j, MPI_COMM_WORLD, &status); if (status.MPI_TAG != 27 + j) { errs++; printf("Wrong tag = %d\n", status.MPI_TAG); } if (status.MPI_SOURCE != i) { errs++; printf("Wrong source = %d\n", status.MPI_SOURCE); } for (k = 0; k < 10; k++) { if (b[k] != (i + 10 * j) * size + k) { errs++; printf("received b[%d] = %d from %d tag %d\n", k, b[k], i, 27 + j); } } } } } MPI_Buffer_detach(&bptr, &bl); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/pt2pt/waittestnull.c0000644000175000017500000000441512620254305020340 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2005 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include "mpi.h" #include "mpitest.h" /* * This program checks that the various MPI_Test and MPI_Wait routines * allow both null requests and in the multiple completion cases, empty * lists of requests. */ int main(int argc, char **argv) { int errs = 0; MPI_Status status, *status_array = 0; int count = 0, flag, idx, rc, errlen, *indices = 0, outcnt; MPI_Request *reqs = 0; char errmsg[MPI_MAX_ERROR_STRING]; MTest_Init(&argc, &argv); MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); rc = MPI_Testall(count, reqs, &flag, status_array); if (rc != MPI_SUCCESS) { MPI_Error_string(rc, errmsg, &errlen); printf("MPI_Testall returned failure: %s\n", errmsg); errs++; } else if (!flag) { printf("MPI_Testall(0, ...) did not return a true flag\n"); errs++; } rc = MPI_Waitall(count, reqs, status_array); if (rc != MPI_SUCCESS) { MPI_Error_string(rc, errmsg, &errlen); printf("MPI_Waitall returned failure: %s\n", errmsg); errs++; } rc = MPI_Testany(count, reqs, &idx, &flag, &status); if (rc != MPI_SUCCESS) { MPI_Error_string(rc, errmsg, &errlen); printf("MPI_Testany returned failure: %s\n", errmsg); errs++; } else if (!flag) { printf("MPI_Testany(0, ...) did not return a true flag\n"); errs++; } rc = MPI_Waitany(count, reqs, &idx, &status); if (rc != MPI_SUCCESS) { MPI_Error_string(rc, errmsg, &errlen); printf("MPI_Waitany returned failure: %s\n", errmsg); errs++; } rc = MPI_Testsome(count, reqs, &outcnt, indices, status_array); if (rc != MPI_SUCCESS) { MPI_Error_string(rc, errmsg, &errlen); printf("MPI_Testsome returned failure: %s\n", errmsg); errs++; } rc = MPI_Waitsome(count, reqs, &outcnt, indices, status_array); if (rc != MPI_SUCCESS) { MPI_Error_string(rc, errmsg, &errlen); printf("MPI_Waitsome returned failure: %s\n", errmsg); errs++; } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/pt2pt/anyall.c0000644000175000017500000000467312620254305017067 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2009 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #define MAX_MSGS 30 /* static char MTEST_Descrip[] = "One implementation delivered incorrect data when an MPI recieve uses both ANY_SOURCE and ANY_TAG"; */ int main(int argc, char *argv[]) { int wrank, wsize, master, worker, i, j, idx, count; int errs = 0; MPI_Request r[MAX_MSGS]; int buf[MAX_MSGS][MAX_MSGS]; MPI_Comm comm; MPI_Status status; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &wrank); MPI_Comm_size(MPI_COMM_WORLD, &wsize); comm = MPI_COMM_WORLD; master = 0; worker = 1; /* The test takes advantage of the ordering rules for messages */ if (wrank == master) { /* Initialize the send buffer */ for (i = 0; i < MAX_MSGS; i++) { for (j = 0; j < MAX_MSGS; j++) { buf[i][j] = i * MAX_MSGS + j; } } MPI_Barrier(MPI_COMM_WORLD); for (i = 0; i < MAX_MSGS; i++) { MPI_Send(buf[i], MAX_MSGS - i, MPI_INT, worker, 3, comm); } } else if (wrank == worker) { /* Initialize the recv buffer */ for (i = 0; i < MAX_MSGS; i++) { for (j = 0; j < MAX_MSGS; j++) { buf[i][j] = -1; } } for (i = 0; i < MAX_MSGS; i++) { MPI_Irecv(buf[i], MAX_MSGS - i, MPI_INT, MPI_ANY_SOURCE, MPI_ANY_TAG, comm, &r[i]); } MPI_Barrier(MPI_COMM_WORLD); for (i = 0; i < MAX_MSGS; i++) { MPI_Waitany(MAX_MSGS, r, &idx, &status); /* Message idx should have length MAX_MSGS-idx */ MPI_Get_count(&status, MPI_INT, &count); if (count != MAX_MSGS - idx) { errs++; } else { /* Check for the correct answers */ for (j = 0; j < MAX_MSGS - idx; j++) { if (buf[idx][j] != idx * MAX_MSGS + j) { errs++; printf("Message %d [%d] is %d, should be %d\n", idx, j, buf[idx][j], idx * MAX_MSGS + j); } } } } } else { MPI_Barrier(MPI_COMM_WORLD); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/pt2pt/Makefile.am0000644000175000017500000000234612620254305017472 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile.mtest EXTRA_DIST = testlist ## for all programs that are just built from the single corresponding source ## file, we don't need per-target _SOURCES rules, automake will infer them ## correctly noinst_PROGRAMS = \ anyall \ bottom \ bsend1 \ bsend2 \ bsend3 \ bsend4 \ bsend5 \ bsendalign \ cancelrecv \ cancelanysrc \ isendself \ issendselfcancel \ isendirecv \ sendself \ eagerdt \ isendselfprobe \ bsendfrag \ bsendpending \ icsend \ rqstatus \ rqfreeb \ greq1 \ scancel \ scancel2 \ rcancel \ pscancel \ scancel_unmatch\ sendflood \ sendrecv1 \ sendrecv2 \ sendrecv3 \ waitany-null \ pingping \ probe-unexp \ probenull \ inactivereq \ waittestnull \ sendall \ large_message \ mprobe \ big_count_status mpi-testsuite-3.2+dfsg/pt2pt/bsendalign.c0000644000175000017500000000435712620254305017714 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include "mpi.h" #include "mpitest.h" /* Test bsend with a buffer with arbitray alignment */ #define BUFSIZE 2000*4 int main(int argc, char *argv[]) { MPI_Status status; int a[10], b[10]; int align; char buf[BUFSIZE + 8], *bptr; int bl, i, j, rank, size; int errs = 0; MTest_Init(0, 0); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); for (align = 0; align < 7; align++) { MPI_Buffer_attach(buf + align, BUFSIZE); for (j = 0; j < 10; j++) { for (i = 0; i < 10; i++) { a[i] = (rank + 10 * j) * size + i; } MPI_Bsend(a, 10, MPI_INT, 0, 27 + j, MPI_COMM_WORLD); } if (rank == 0) { for (i = 0; i < size; i++) { for (j = 0; j < 10; j++) { int k; status.MPI_TAG = -10; status.MPI_SOURCE = -20; MPI_Recv(b, 10, MPI_INT, i, 27 + j, MPI_COMM_WORLD, &status); if (status.MPI_TAG != 27 + j) { errs++; printf("Wrong tag = %d\n", status.MPI_TAG); } if (status.MPI_SOURCE != i) { errs++; printf("Wrong source = %d\n", status.MPI_SOURCE); } for (k = 0; k < 10; k++) { if (b[k] != (i + 10 * j) * size + k) { errs++; printf("(Align=%d) received b[%d] = %d (expected %d) from %d tag %d\n", align, k, b[k], (i + 10 * j), i, 27 + j); } } } } } MPI_Buffer_detach(&bptr, &bl); if (bptr != buf + align) { errs++; printf ("Did not recieve the same buffer on detach that was provided on init (%p vs %p)\n", bptr, buf); } } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/pt2pt/sendrecv3.c0000644000175000017500000000637412620254305017503 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Head to head send-recv to test backoff in device when large messages are being transferred"; */ #define MAX_NMSGS 100 int main(int argc, char *argv[]) { int errs = 0; int rank, size, source, dest, partner; int i, testnum; double tsend; static int msgsizes[] = { 100, 1000, 10000, 100000, -1 }; static int nmsgs[] = { 100, 10, 10, 4 }; MPI_Comm comm; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); source = 0; dest = 1; if (size < 2) { printf("This test requires at least 2 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } for (testnum = 0; msgsizes[testnum] > 0; testnum++) { if (rank == source || rank == dest) { int nmsg = nmsgs[testnum]; int msgSize = msgsizes[testnum]; MPI_Request r[MAX_NMSGS]; int *buf[MAX_NMSGS]; for (i = 0; i < nmsg; i++) { buf[i] = (int *) malloc(msgSize * sizeof(int)); if (!buf[i]) { fprintf(stderr, "Unable to allocate %d bytes\n", msgSize); MPI_Abort(MPI_COMM_WORLD, 1); } } partner = (rank + 1) % size; MPI_Sendrecv(MPI_BOTTOM, 0, MPI_INT, partner, 10, MPI_BOTTOM, 0, MPI_INT, partner, 10, comm, MPI_STATUS_IGNORE); /* Try to fill up the outgoing message buffers */ for (i = 0; i < nmsg; i++) { MPI_Isend(buf[i], msgSize, MPI_INT, partner, testnum, comm, &r[i]); } for (i = 0; i < nmsg; i++) { MPI_Recv(buf[i], msgSize, MPI_INT, partner, testnum, comm, MPI_STATUS_IGNORE); } MPI_Waitall(nmsg, r, MPI_STATUSES_IGNORE); /* Repeat the test, but make one of the processes sleep */ MPI_Sendrecv(MPI_BOTTOM, 0, MPI_INT, partner, 10, MPI_BOTTOM, 0, MPI_INT, partner, 10, comm, MPI_STATUS_IGNORE); if (rank == dest) MTestSleep(1); /* Try to fill up the outgoing message buffers */ tsend = MPI_Wtime(); for (i = 0; i < nmsg; i++) { MPI_Isend(buf[i], msgSize, MPI_INT, partner, testnum, comm, &r[i]); } tsend = MPI_Wtime() - tsend; for (i = 0; i < nmsg; i++) { MPI_Recv(buf[i], msgSize, MPI_INT, partner, testnum, comm, MPI_STATUS_IGNORE); } MPI_Waitall(nmsg, r, MPI_STATUSES_IGNORE); if (tsend > 0.5) { printf("Isends for %d messages of size %d took too long (%f seconds)\n", nmsg, msgSize, tsend); errs++; } MTestPrintfMsg(1, "%d Isends for size = %d took %f seconds\n", nmsg, msgSize, tsend); for (i = 0; i < nmsg; i++) { free(buf[i]); } } } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/pt2pt/bsend1.c0000644000175000017500000000507212620254305016755 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include "mpitestconf.h" #ifdef HAVE_STRING_H #include #endif /* * This is a simple program that tests bsend. It may be run as a single * process to simplify debugging; in addition, bsend allows send-to-self * programs. */ int main(int argc, char *argv[]) { MPI_Comm comm = MPI_COMM_WORLD; int dest = 0, src = 0, tag = 1; int s1, s2, s3; char *buf, *bbuf; char msg1[7], msg3[17]; double msg2[2]; char rmsg1[64], rmsg3[64]; double rmsg2[64]; int errs = 0, rank; int bufsize, bsize; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); /* According to the standard, we must use the PACK_SIZE length of each * message in the computation of the message buffer size */ MPI_Pack_size(7, MPI_CHAR, comm, &s1); MPI_Pack_size(2, MPI_DOUBLE, comm, &s2); MPI_Pack_size(17, MPI_CHAR, comm, &s3); bufsize = 3 * MPI_BSEND_OVERHEAD + s1 + s2 + s3; buf = (char *) malloc(bufsize); MPI_Buffer_attach(buf, bufsize); strncpy(msg1, "012345", 7); strncpy(msg3, "0123401234012341", 17); msg2[0] = 1.23; msg2[1] = 3.21; if (rank == src) { /* These message sizes are chosen to expose any alignment problems */ MPI_Bsend(msg1, 7, MPI_CHAR, dest, tag, comm); MPI_Bsend(msg2, 2, MPI_DOUBLE, dest, tag, comm); MPI_Bsend(msg3, 17, MPI_CHAR, dest, tag, comm); } if (rank == dest) { MPI_Recv(rmsg1, 7, MPI_CHAR, src, tag, comm, MPI_STATUS_IGNORE); MPI_Recv(rmsg2, 10, MPI_DOUBLE, src, tag, comm, MPI_STATUS_IGNORE); MPI_Recv(rmsg3, 17, MPI_CHAR, src, tag, comm, MPI_STATUS_IGNORE); if (strcmp(rmsg1, msg1) != 0) { errs++; fprintf(stderr, "message 1 (%s) should be %s\n", rmsg1, msg1); } if (rmsg2[0] != msg2[0] || rmsg2[1] != msg2[1]) { errs++; fprintf(stderr, "message 2 incorrect, values are (%f,%f) but should be (%f,%f)\n", rmsg2[0], rmsg2[1], msg2[0], msg2[1]); } if (strcmp(rmsg3, msg3) != 0) { errs++; fprintf(stderr, "message 3 (%s) should be %s\n", rmsg3, msg3); } } /* We can't guarantee that messages arrive until the detach */ MPI_Buffer_detach(&bbuf, &bsize); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/pt2pt/bsend4.c0000644000175000017500000000337112620254305016760 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include "mpi.h" #include "mpitest.h" #define BUFSIZE 2000 int main(int argc, char *argv[]) { MPI_Status status; MPI_Request request; int a[10], b[10]; int buf[BUFSIZE], *bptr, bl, i, j, rank, size, errs = 0; MTest_Init(0, 0); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Buffer_attach(buf, BUFSIZE); for (j = 0; j < 10; j++) { for (i = 0; i < 10; i++) { a[i] = (rank + 10 * j) * size + i; } MPI_Ibsend(a, 10, MPI_INT, 0, 27 + j, MPI_COMM_WORLD, &request); MPI_Wait(&request, &status); } if (rank == 0) { for (i = 0; i < size; i++) { for (j = 0; j < 10; j++) { int k; status.MPI_TAG = -10; status.MPI_SOURCE = -20; MPI_Recv(b, 10, MPI_INT, i, 27 + j, MPI_COMM_WORLD, &status); if (status.MPI_TAG != 27 + j) { errs++; printf("Wrong tag = %d\n", status.MPI_TAG); } if (status.MPI_SOURCE != i) { errs++; printf("Wrong source = %d\n", status.MPI_SOURCE); } for (k = 0; k < 10; k++) { if (b[k] != (i + 10 * j) * size + k) { errs++; printf("received b[%d] = %d from %d tag %d\n", k, b[k], i, 27 + j); } } } } } MPI_Buffer_detach(&bptr, &bl); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/pt2pt/eagerdt.c0000644000175000017500000000404312620254305017211 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2006 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test of a large number of derived-datatype messages eagerly, with no preposted receive so that an MPI implementation may have to queue up messages on the sending side"; */ #define MAX_MSGS 30 int main(int argc, char *argv[]) { int errs = 0; int rank, size, dest, source; int i, indices[40]; MPI_Aint extent; int *buf, *bufs[MAX_MSGS]; MPI_Comm comm; MPI_Datatype dtype; MPI_Request req[MAX_MSGS]; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); source = 0; dest = size - 1; /* Setup by creating a blocked datatype that is likely to be processed * in a piecemeal fashion */ for (i = 0; i < 30; i++) { indices[i] = i * 40; } /* 30 blocks of size 10 */ MPI_Type_create_indexed_block(30, 10, indices, MPI_INT, &dtype); MPI_Type_commit(&dtype); /* Create the corresponding message buffers */ MPI_Type_extent(dtype, &extent); for (i = 0; i < MAX_MSGS; i++) { bufs[i] = (int *) malloc(extent); if (!bufs[i]) { fprintf(stderr, "Unable to allocate buffer %d of size %ld\n", i, (long) extent); MPI_Abort(MPI_COMM_WORLD, 1); } } buf = (int *) malloc(10 * 30 * sizeof(int)); MPI_Barrier(MPI_COMM_WORLD); if (rank == dest) { MTestSleep(2); for (i = 0; i < MAX_MSGS; i++) { MPI_Recv(buf, 10 * 30, MPI_INT, source, i, comm, MPI_STATUS_IGNORE); } } else if (rank == source) { for (i = 0; i < MAX_MSGS; i++) { MPI_Isend(bufs[i], 1, dtype, dest, i, comm, &req[i]); } MPI_Waitall(MAX_MSGS, req, MPI_STATUSES_IGNORE); } MPI_Type_free(&dtype); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/pt2pt/isendself.c0000644000175000017500000000302312620254305017547 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include "mpi.h" #include "mpitest.h" int main(int argc, char *argv[]) { int a[10], b[10], i; MPI_Status status; MPI_Request request; int rank, count; int errs = 0; MTest_Init(0, 0); MPI_Comm_rank(MPI_COMM_WORLD, &rank); for (i = 0; i < 10; i++) a[i] = i + 1; status.MPI_ERROR = 0; MPI_Isend(a, 0, MPI_INT, rank, 0, MPI_COMM_WORLD, &request); MPI_Recv(b, 1, MPI_INT, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &status); MPI_Get_count(&status, MPI_INT, &count); if (status.MPI_SOURCE != rank || status.MPI_TAG != 0 || status.MPI_ERROR != 0 || count != 0) { errs++; printf("1 status = %d %d %d %d\n", status.MPI_SOURCE, status.MPI_TAG, status.MPI_ERROR, count); } /* printf("b[0] = %d\n", b[0]); */ MPI_Wait(&request, &status); MPI_Isend(NULL, 0, MPI_INT, rank, 0, MPI_COMM_WORLD, &request); MPI_Recv(NULL, 0, MPI_INT, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &status); MPI_Get_count(&status, MPI_INT, &count); if (status.MPI_SOURCE != rank || status.MPI_TAG != 0 || status.MPI_ERROR != 0 || count != 0) { errs++; printf("2 status = %d %d %d %d\n", status.MPI_SOURCE, status.MPI_TAG, status.MPI_ERROR, count); } MPI_Wait(&request, &status); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/pt2pt/bsendpending.c0000644000175000017500000001136412620254305020242 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test the handling of BSend operations when a detach occurs before the bsend data has been sent."; */ int main(int argc, char *argv[]) { int errs = 0; int rank, size, source, dest; unsigned char *buf, *bufp; int minsize = 2; int i, msgsize, bufsize, outsize; unsigned char *msg1, *msg2, *msg3; MPI_Comm comm; MPI_Status status1, status2, status3; MTest_Init(&argc, &argv); /* The following illustrates the use of the routines to * run through a selection of communicators and datatypes. * Use subsets of these for tests that do not involve combinations * of communicators, datatypes, and counts of datatypes */ msgsize = 128 * 1024; msg1 = (unsigned char *) malloc(3 * msgsize); msg2 = msg1 + msgsize; msg3 = msg2 + msgsize; while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; /* Determine the sender and receiver */ MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); source = 0; dest = size - 1; /* Here is the test: The sender */ if (rank == source) { /* Get a bsend buffer. Make it large enough that the Bsend * internals will (probably) not use a eager send for the data. * Have three such messages */ bufsize = 3 * (MPI_BSEND_OVERHEAD + msgsize); buf = (unsigned char *) malloc(bufsize); if (!buf) { fprintf(stderr, "Unable to allocate a buffer of %d bytes\n", bufsize); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Buffer_attach(buf, bufsize); /* Initialize the buffers */ for (i = 0; i < msgsize; i++) { msg1[i] = 0xff ^ (i & 0xff); msg2[i] = 0xff ^ (3 * i & 0xff); msg3[i] = 0xff ^ (5 * i & 0xff); } /* Initiate the bsends */ MPI_Bsend(msg1, msgsize, MPI_UNSIGNED_CHAR, dest, 0, comm); MPI_Bsend(msg2, msgsize, MPI_UNSIGNED_CHAR, dest, 0, comm); MPI_Bsend(msg3, msgsize, MPI_UNSIGNED_CHAR, dest, 0, comm); /* Synchronize with our partner */ MPI_Sendrecv(NULL, 0, MPI_UNSIGNED_CHAR, dest, 10, NULL, 0, MPI_UNSIGNED_CHAR, dest, 10, comm, MPI_STATUS_IGNORE); /* Detach the buffers. There should be pending operations */ MPI_Buffer_detach(&bufp, &outsize); if (bufp != buf) { fprintf(stderr, "Wrong buffer returned\n"); errs++; } if (outsize != bufsize) { fprintf(stderr, "Wrong buffer size returned\n"); errs++; } } else if (rank == dest) { double tstart; /* Clear the message buffers */ for (i = 0; i < msgsize; i++) { msg1[i] = 0; msg2[i] = 0; msg3[i] = 0; } /* Wait for the synchronize */ MPI_Sendrecv(NULL, 0, MPI_UNSIGNED_CHAR, source, 10, NULL, 0, MPI_UNSIGNED_CHAR, source, 10, comm, MPI_STATUS_IGNORE); /* Wait 2 seconds */ tstart = MPI_Wtime(); while (MPI_Wtime() - tstart < 2.0); /* Now receive the messages */ MPI_Recv(msg1, msgsize, MPI_UNSIGNED_CHAR, source, 0, comm, &status1); MPI_Recv(msg2, msgsize, MPI_UNSIGNED_CHAR, source, 0, comm, &status2); MPI_Recv(msg3, msgsize, MPI_UNSIGNED_CHAR, source, 0, comm, &status3); /* Check that we have the correct data */ for (i = 0; i < msgsize; i++) { if (msg1[i] != (0xff ^ (i & 0xff))) { if (errs < 10) { fprintf(stderr, "msg1[%d] = %d\n", i, msg1[i]); } errs++; } if (msg2[i] != (0xff ^ (3 * i & 0xff))) { if (errs < 10) { fprintf(stderr, "msg2[%d] = %d\n", i, msg2[i]); } errs++; } if (msg3[i] != (0xff ^ (5 * i & 0xff))) { if (errs < 10) { fprintf(stderr, "msg2[%d] = %d\n", i, msg2[i]); } errs++; } } } MTestFreeComm(&comm); } free(msg1); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/pt2pt/mprobe.c0000644000175000017500000005046012620254305017066 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include "mpi.h" #include "mpitest.h" /* This is a temporary #ifdef to control whether we test this functionality. A * configure-test or similar would be better. Eventually the MPI-3 standard * will be released and this can be gated on a MPI_VERSION check */ #if !defined(USE_STRICT_MPI) && defined(MPICH) #define TEST_MPROBE_ROUTINES 1 #endif /* assert-like macro that bumps the err count and emits a message */ #define check(x_) \ do { \ if (!(x_)) { \ ++errs; \ if (errs < 10) { \ fprintf(stderr, "check failed: (%s), line %d\n", #x_, __LINE__); \ } \ } \ } while (0) #define LARGE_DIM 512 #define LARGE_SZ (LARGE_DIM * LARGE_DIM) int main(int argc, char **argv) { int errs = 0; int found, completed; int rank, size; int *sendbuf = NULL, *recvbuf = NULL; int count, i; #ifdef TEST_MPROBE_ROUTINES MPI_Message msg; #endif MPI_Request rreq; MPI_Status s1, s2; MPI_Datatype vectype; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); if (size < 2) { printf("this test requires at least 2 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } /* all processes besides ranks 0 & 1 aren't used by this test */ if (rank >= 2) { goto epilogue; } #ifdef TEST_MPROBE_ROUTINES sendbuf = (int *) malloc(LARGE_SZ * sizeof(int)); recvbuf = (int *) malloc(LARGE_SZ * sizeof(int)); if (sendbuf == NULL || recvbuf == NULL) { printf("Error in memory allocation\n"); MPI_Abort(MPI_COMM_WORLD, 1); } /* test 0: simple send & mprobe+mrecv */ if (rank == 0) { sendbuf[0] = 0xdeadbeef; sendbuf[1] = 0xfeedface; MPI_Send(sendbuf, 2, MPI_INT, 1, 5, MPI_COMM_WORLD); } else { memset(&s1, 0xab, sizeof(MPI_Status)); memset(&s2, 0xab, sizeof(MPI_Status)); /* the error field should remain unmodified */ s1.MPI_ERROR = MPI_ERR_DIMS; s2.MPI_ERROR = MPI_ERR_TOPOLOGY; msg = MPI_MESSAGE_NULL; MPI_Mprobe(0, 5, MPI_COMM_WORLD, &msg, &s1); check(s1.MPI_SOURCE == 0); check(s1.MPI_TAG == 5); check(s1.MPI_ERROR == MPI_ERR_DIMS); check(msg != MPI_MESSAGE_NULL); count = -1; MPI_Get_count(&s1, MPI_INT, &count); check(count == 2); recvbuf[0] = 0x01234567; recvbuf[1] = 0x89abcdef; MPI_Mrecv(recvbuf, count, MPI_INT, &msg, &s2); check(recvbuf[0] == 0xdeadbeef); check(recvbuf[1] == 0xfeedface); check(s2.MPI_SOURCE == 0); check(s2.MPI_TAG == 5); check(s2.MPI_ERROR == MPI_ERR_TOPOLOGY); check(msg == MPI_MESSAGE_NULL); } /* test 1: simple send & mprobe+imrecv */ if (rank == 0) { sendbuf[0] = 0xdeadbeef; sendbuf[1] = 0xfeedface; MPI_Send(sendbuf, 2, MPI_INT, 1, 5, MPI_COMM_WORLD); } else { memset(&s1, 0xab, sizeof(MPI_Status)); memset(&s2, 0xab, sizeof(MPI_Status)); /* the error field should remain unmodified */ s1.MPI_ERROR = MPI_ERR_DIMS; s2.MPI_ERROR = MPI_ERR_TOPOLOGY; msg = MPI_MESSAGE_NULL; MPI_Mprobe(0, 5, MPI_COMM_WORLD, &msg, &s1); check(s1.MPI_SOURCE == 0); check(s1.MPI_TAG == 5); check(s1.MPI_ERROR == MPI_ERR_DIMS); check(msg != MPI_MESSAGE_NULL); count = -1; MPI_Get_count(&s1, MPI_INT, &count); check(count == 2); rreq = MPI_REQUEST_NULL; recvbuf[0] = 0x01234567; recvbuf[1] = 0x89abcdef; MPI_Imrecv(recvbuf, count, MPI_INT, &msg, &rreq); check(rreq != MPI_REQUEST_NULL); MPI_Wait(&rreq, &s2); check(recvbuf[0] == 0xdeadbeef); check(recvbuf[1] == 0xfeedface); check(s2.MPI_SOURCE == 0); check(s2.MPI_TAG == 5); check(s2.MPI_ERROR == MPI_ERR_TOPOLOGY); check(msg == MPI_MESSAGE_NULL); } /* test 2: simple send & improbe+mrecv */ if (rank == 0) { sendbuf[0] = 0xdeadbeef; sendbuf[1] = 0xfeedface; MPI_Send(sendbuf, 2, MPI_INT, 1, 5, MPI_COMM_WORLD); } else { memset(&s1, 0xab, sizeof(MPI_Status)); memset(&s2, 0xab, sizeof(MPI_Status)); /* the error field should remain unmodified */ s1.MPI_ERROR = MPI_ERR_DIMS; s2.MPI_ERROR = MPI_ERR_TOPOLOGY; msg = MPI_MESSAGE_NULL; do { check(msg == MPI_MESSAGE_NULL); MPI_Improbe(0, 5, MPI_COMM_WORLD, &found, &msg, &s1); } while (!found); check(msg != MPI_MESSAGE_NULL); check(s1.MPI_SOURCE == 0); check(s1.MPI_TAG == 5); check(s1.MPI_ERROR == MPI_ERR_DIMS); count = -1; MPI_Get_count(&s1, MPI_INT, &count); check(count == 2); recvbuf[0] = 0x01234567; recvbuf[1] = 0x89abcdef; MPI_Mrecv(recvbuf, count, MPI_INT, &msg, &s2); check(recvbuf[0] == 0xdeadbeef); check(recvbuf[1] == 0xfeedface); check(s2.MPI_SOURCE == 0); check(s2.MPI_TAG == 5); check(s2.MPI_ERROR == MPI_ERR_TOPOLOGY); check(msg == MPI_MESSAGE_NULL); } /* test 3: simple send & improbe+imrecv */ if (rank == 0) { sendbuf[0] = 0xdeadbeef; sendbuf[1] = 0xfeedface; MPI_Send(sendbuf, 2, MPI_INT, 1, 5, MPI_COMM_WORLD); } else { memset(&s1, 0xab, sizeof(MPI_Status)); memset(&s2, 0xab, sizeof(MPI_Status)); /* the error field should remain unmodified */ s1.MPI_ERROR = MPI_ERR_DIMS; s2.MPI_ERROR = MPI_ERR_TOPOLOGY; msg = MPI_MESSAGE_NULL; do { check(msg == MPI_MESSAGE_NULL); MPI_Improbe(0, 5, MPI_COMM_WORLD, &found, &msg, &s1); } while (!found); check(msg != MPI_MESSAGE_NULL); check(s1.MPI_SOURCE == 0); check(s1.MPI_TAG == 5); check(s1.MPI_ERROR == MPI_ERR_DIMS); count = -1; MPI_Get_count(&s1, MPI_INT, &count); check(count == 2); rreq = MPI_REQUEST_NULL; MPI_Imrecv(recvbuf, count, MPI_INT, &msg, &rreq); check(rreq != MPI_REQUEST_NULL); MPI_Wait(&rreq, &s2); check(recvbuf[0] == 0xdeadbeef); check(recvbuf[1] == 0xfeedface); check(s2.MPI_SOURCE == 0); check(s2.MPI_TAG == 5); check(s2.MPI_ERROR == MPI_ERR_TOPOLOGY); check(msg == MPI_MESSAGE_NULL); } /* test 4: mprobe+mrecv with MPI_PROC_NULL */ { memset(&s1, 0xab, sizeof(MPI_Status)); memset(&s2, 0xab, sizeof(MPI_Status)); /* the error field should remain unmodified */ s1.MPI_ERROR = MPI_ERR_DIMS; s2.MPI_ERROR = MPI_ERR_TOPOLOGY; msg = MPI_MESSAGE_NULL; MPI_Mprobe(MPI_PROC_NULL, 5, MPI_COMM_WORLD, &msg, &s1); check(s1.MPI_SOURCE == MPI_PROC_NULL); check(s1.MPI_TAG == MPI_ANY_TAG); check(s1.MPI_ERROR == MPI_ERR_DIMS); check(msg == MPI_MESSAGE_NO_PROC); count = -1; MPI_Get_count(&s1, MPI_INT, &count); check(count == 0); recvbuf[0] = 0x01234567; recvbuf[1] = 0x89abcdef; MPI_Mrecv(recvbuf, count, MPI_INT, &msg, &s2); /* recvbuf should remain unmodified */ check(recvbuf[0] == 0x01234567); check(recvbuf[1] == 0x89abcdef); /* should get back "proc null status" */ check(s2.MPI_SOURCE == MPI_PROC_NULL); check(s2.MPI_TAG == MPI_ANY_TAG); check(s2.MPI_ERROR == MPI_ERR_TOPOLOGY); check(msg == MPI_MESSAGE_NULL); count = -1; MPI_Get_count(&s2, MPI_INT, &count); check(count == 0); } /* test 5: mprobe+imrecv with MPI_PROC_NULL */ { memset(&s1, 0xab, sizeof(MPI_Status)); memset(&s2, 0xab, sizeof(MPI_Status)); /* the error field should remain unmodified */ s1.MPI_ERROR = MPI_ERR_DIMS; s2.MPI_ERROR = MPI_ERR_TOPOLOGY; msg = MPI_MESSAGE_NULL; MPI_Mprobe(MPI_PROC_NULL, 5, MPI_COMM_WORLD, &msg, &s1); check(s1.MPI_SOURCE == MPI_PROC_NULL); check(s1.MPI_TAG == MPI_ANY_TAG); check(s1.MPI_ERROR == MPI_ERR_DIMS); check(msg == MPI_MESSAGE_NO_PROC); count = -1; MPI_Get_count(&s1, MPI_INT, &count); check(count == 0); rreq = MPI_REQUEST_NULL; recvbuf[0] = 0x01234567; recvbuf[1] = 0x89abcdef; MPI_Imrecv(recvbuf, count, MPI_INT, &msg, &rreq); check(rreq != MPI_REQUEST_NULL); completed = 0; MPI_Test(&rreq, &completed, &s2); /* single test should always succeed */ check(completed); /* recvbuf should remain unmodified */ check(recvbuf[0] == 0x01234567); check(recvbuf[1] == 0x89abcdef); /* should get back "proc null status" */ check(s2.MPI_SOURCE == MPI_PROC_NULL); check(s2.MPI_TAG == MPI_ANY_TAG); check(s2.MPI_ERROR == MPI_ERR_TOPOLOGY); check(msg == MPI_MESSAGE_NULL); count = -1; MPI_Get_count(&s2, MPI_INT, &count); check(count == 0); } /* test 6: improbe+mrecv with MPI_PROC_NULL */ { memset(&s1, 0xab, sizeof(MPI_Status)); memset(&s2, 0xab, sizeof(MPI_Status)); /* the error field should remain unmodified */ s1.MPI_ERROR = MPI_ERR_DIMS; s2.MPI_ERROR = MPI_ERR_TOPOLOGY; msg = MPI_MESSAGE_NULL; found = 0; MPI_Improbe(MPI_PROC_NULL, 5, MPI_COMM_WORLD, &found, &msg, &s1); check(found); check(msg == MPI_MESSAGE_NO_PROC); check(s1.MPI_SOURCE == MPI_PROC_NULL); check(s1.MPI_TAG == MPI_ANY_TAG); check(s1.MPI_ERROR == MPI_ERR_DIMS); count = -1; MPI_Get_count(&s1, MPI_INT, &count); check(count == 0); recvbuf[0] = 0x01234567; recvbuf[1] = 0x89abcdef; MPI_Mrecv(recvbuf, count, MPI_INT, &msg, &s2); /* recvbuf should remain unmodified */ check(recvbuf[0] == 0x01234567); check(recvbuf[1] == 0x89abcdef); /* should get back "proc null status" */ check(s2.MPI_SOURCE == MPI_PROC_NULL); check(s2.MPI_TAG == MPI_ANY_TAG); check(s2.MPI_ERROR == MPI_ERR_TOPOLOGY); check(msg == MPI_MESSAGE_NULL); count = -1; MPI_Get_count(&s2, MPI_INT, &count); check(count == 0); } /* test 7: improbe+imrecv */ { memset(&s1, 0xab, sizeof(MPI_Status)); memset(&s2, 0xab, sizeof(MPI_Status)); /* the error field should remain unmodified */ s1.MPI_ERROR = MPI_ERR_DIMS; s2.MPI_ERROR = MPI_ERR_TOPOLOGY; msg = MPI_MESSAGE_NULL; MPI_Improbe(MPI_PROC_NULL, 5, MPI_COMM_WORLD, &found, &msg, &s1); check(found); check(msg == MPI_MESSAGE_NO_PROC); check(s1.MPI_SOURCE == MPI_PROC_NULL); check(s1.MPI_TAG == MPI_ANY_TAG); check(s1.MPI_ERROR == MPI_ERR_DIMS); count = -1; MPI_Get_count(&s1, MPI_INT, &count); check(count == 0); rreq = MPI_REQUEST_NULL; MPI_Imrecv(recvbuf, count, MPI_INT, &msg, &rreq); check(rreq != MPI_REQUEST_NULL); completed = 0; MPI_Test(&rreq, &completed, &s2); /* single test should always succeed */ check(completed); /* recvbuf should remain unmodified */ check(recvbuf[0] == 0x01234567); check(recvbuf[1] == 0x89abcdef); /* should get back "proc null status" */ check(s2.MPI_SOURCE == MPI_PROC_NULL); check(s2.MPI_TAG == MPI_ANY_TAG); check(s2.MPI_ERROR == MPI_ERR_TOPOLOGY); check(msg == MPI_MESSAGE_NULL); count = -1; MPI_Get_count(&s2, MPI_INT, &count); check(count == 0); } /* test 8: simple ssend & mprobe+mrecv */ if (rank == 0) { sendbuf[0] = 0xdeadbeef; sendbuf[1] = 0xfeedface; MPI_Ssend(sendbuf, 2, MPI_INT, 1, 5, MPI_COMM_WORLD); } else { memset(&s1, 0xab, sizeof(MPI_Status)); memset(&s2, 0xab, sizeof(MPI_Status)); /* the error field should remain unmodified */ s1.MPI_ERROR = MPI_ERR_DIMS; s2.MPI_ERROR = MPI_ERR_TOPOLOGY; msg = MPI_MESSAGE_NULL; MPI_Mprobe(0, 5, MPI_COMM_WORLD, &msg, &s1); check(s1.MPI_SOURCE == 0); check(s1.MPI_TAG == 5); check(s1.MPI_ERROR == MPI_ERR_DIMS); check(msg != MPI_MESSAGE_NULL); count = -1; MPI_Get_count(&s1, MPI_INT, &count); check(count == 2); recvbuf[0] = 0x01234567; recvbuf[1] = 0x89abcdef; MPI_Mrecv(recvbuf, count, MPI_INT, &msg, &s2); check(recvbuf[0] == 0xdeadbeef); check(recvbuf[1] == 0xfeedface); check(s2.MPI_SOURCE == 0); check(s2.MPI_TAG == 5); check(s2.MPI_ERROR == MPI_ERR_TOPOLOGY); check(msg == MPI_MESSAGE_NULL); } /* test 9: mprobe+mrecv LARGE */ if (rank == 0) { for (i = 0; i < LARGE_SZ; i++) sendbuf[i] = i; MPI_Send(sendbuf, LARGE_SZ, MPI_INT, 1, 5, MPI_COMM_WORLD); } else { memset(&s1, 0xab, sizeof(MPI_Status)); memset(&s2, 0xab, sizeof(MPI_Status)); /* the error field should remain unmodified */ s1.MPI_ERROR = MPI_ERR_DIMS; s2.MPI_ERROR = MPI_ERR_TOPOLOGY; msg = MPI_MESSAGE_NULL; MPI_Mprobe(0, 5, MPI_COMM_WORLD, &msg, &s1); check(s1.MPI_SOURCE == 0); check(s1.MPI_TAG == 5); check(s1.MPI_ERROR == MPI_ERR_DIMS); check(msg != MPI_MESSAGE_NULL); count = -1; MPI_Get_count(&s1, MPI_INT, &count); check(count == LARGE_SZ); memset(recvbuf, 0xFF, LARGE_SZ * sizeof(int)); MPI_Mrecv(recvbuf, count, MPI_INT, &msg, &s2); for (i = 0; i < LARGE_SZ; i++) check(recvbuf[i] == i); check(s2.MPI_SOURCE == 0); check(s2.MPI_TAG == 5); check(s2.MPI_ERROR == MPI_ERR_TOPOLOGY); check(msg == MPI_MESSAGE_NULL); } /* test 10: mprobe+mrecv noncontiguous datatype */ MPI_Type_vector(2, 1, 4, MPI_INT, &vectype); MPI_Type_commit(&vectype); if (rank == 0) { memset(sendbuf, 0, 8 * sizeof(int)); sendbuf[0] = 0xdeadbeef; sendbuf[4] = 0xfeedface; MPI_Send(sendbuf, 1, vectype, 1, 5, MPI_COMM_WORLD); } else { memset(&s1, 0xab, sizeof(MPI_Status)); memset(&s2, 0xab, sizeof(MPI_Status)); /* the error field should remain unmodified */ s1.MPI_ERROR = MPI_ERR_DIMS; s2.MPI_ERROR = MPI_ERR_TOPOLOGY; msg = MPI_MESSAGE_NULL; MPI_Mprobe(0, 5, MPI_COMM_WORLD, &msg, &s1); check(s1.MPI_SOURCE == 0); check(s1.MPI_TAG == 5); check(s1.MPI_ERROR == MPI_ERR_DIMS); check(msg != MPI_MESSAGE_NULL); count = -1; MPI_Get_count(&s1, vectype, &count); check(count == 1); memset(recvbuf, 0, 8 * sizeof(int)); MPI_Mrecv(recvbuf, 1, vectype, &msg, &s2); check(recvbuf[0] == 0xdeadbeef); for (i = 1; i < 4; i++) check(recvbuf[i] == 0); check(recvbuf[4] = 0xfeedface); for (i = 5; i < 8; i++) check(recvbuf[i] == 0); check(s2.MPI_SOURCE == 0); check(s2.MPI_TAG == 5); check(s2.MPI_ERROR == MPI_ERR_TOPOLOGY); check(msg == MPI_MESSAGE_NULL); } MPI_Type_free(&vectype); /* test 11: mprobe+mrecv noncontiguous datatype LARGE */ MPI_Type_vector(LARGE_DIM, LARGE_DIM - 1, LARGE_DIM, MPI_INT, &vectype); MPI_Type_commit(&vectype); if (rank == 0) { for (i = 0; i < LARGE_SZ; i++) sendbuf[i] = i; MPI_Send(sendbuf, 1, vectype, 1, 5, MPI_COMM_WORLD); } else { int idx = 0; memset(&s1, 0xab, sizeof(MPI_Status)); memset(&s2, 0xab, sizeof(MPI_Status)); /* the error field should remain unmodified */ s1.MPI_ERROR = MPI_ERR_DIMS; s2.MPI_ERROR = MPI_ERR_TOPOLOGY; msg = MPI_MESSAGE_NULL; MPI_Mprobe(0, 5, MPI_COMM_WORLD, &msg, &s1); check(s1.MPI_SOURCE == 0); check(s1.MPI_TAG == 5); check(s1.MPI_ERROR == MPI_ERR_DIMS); check(msg != MPI_MESSAGE_NULL); count = -1; MPI_Get_count(&s1, vectype, &count); check(count == 1); memset(recvbuf, 0, LARGE_SZ * sizeof(int)); MPI_Mrecv(recvbuf, 1, vectype, &msg, &s2); for (i = 0; i < LARGE_DIM; i++) { int j; for (j = 0; j < LARGE_DIM - 1; j++) { check(recvbuf[idx] == idx); ++idx; } check(recvbuf[idx++] == 0); } check(s2.MPI_SOURCE == 0); check(s2.MPI_TAG == 5); check(s2.MPI_ERROR == MPI_ERR_TOPOLOGY); check(msg == MPI_MESSAGE_NULL); } MPI_Type_free(&vectype); /* test 12: order test */ if (rank == 0) { MPI_Request lrequest[2]; sendbuf[0] = 0xdeadbeef; sendbuf[1] = 0xfeedface; sendbuf[2] = 0xdeadbeef; sendbuf[3] = 0xfeedface; sendbuf[4] = 0xdeadbeef; sendbuf[5] = 0xfeedface; MPI_Isend(&sendbuf[0], 4, MPI_INT, 1, 6, MPI_COMM_WORLD, &lrequest[0]); MPI_Isend(&sendbuf[4], 2, MPI_INT, 1, 6, MPI_COMM_WORLD, &lrequest[1]); MPI_Waitall(2, &lrequest[0], MPI_STATUSES_IGNORE); } else { memset(&s1, 0xab, sizeof(MPI_Status)); memset(&s2, 0xab, sizeof(MPI_Status)); /* the error field should remain unmodified */ s1.MPI_ERROR = MPI_ERR_DIMS; s2.MPI_ERROR = MPI_ERR_TOPOLOGY; msg = MPI_MESSAGE_NULL; MPI_Mprobe(0, 6, MPI_COMM_WORLD, &msg, &s1); check(s1.MPI_SOURCE == 0); check(s1.MPI_TAG == 6); check(s1.MPI_ERROR == MPI_ERR_DIMS); check(msg != MPI_MESSAGE_NULL); count = -1; MPI_Get_count(&s1, MPI_INT, &count); check(count == 4); recvbuf[0] = 0x01234567; recvbuf[1] = 0x89abcdef; MPI_Recv(recvbuf, 2, MPI_INT, 0, 6, MPI_COMM_WORLD, &s2); check(s2.MPI_SOURCE == 0); check(s2.MPI_TAG == 6); check(recvbuf[0] == 0xdeadbeef); check(recvbuf[1] == 0xfeedface); recvbuf[0] = 0x01234567; recvbuf[1] = 0x89abcdef; recvbuf[2] = 0x01234567; recvbuf[3] = 0x89abcdef; s2.MPI_ERROR = MPI_ERR_TOPOLOGY; MPI_Mrecv(recvbuf, count, MPI_INT, &msg, &s2); check(recvbuf[0] == 0xdeadbeef); check(recvbuf[1] == 0xfeedface); check(recvbuf[2] == 0xdeadbeef); check(recvbuf[3] == 0xfeedface); check(s2.MPI_SOURCE == 0); check(s2.MPI_TAG == 6); check(s2.MPI_ERROR == MPI_ERR_TOPOLOGY); check(msg == MPI_MESSAGE_NULL); } free(sendbuf); free(recvbuf); /* TODO MPI_ANY_SOURCE and MPI_ANY_TAG should be tested as well */ /* TODO a full range of message sizes should be tested too */ /* TODO threaded tests are also needed, but they should go in a separate * program */ /* simple test to ensure that c2f/f2c routines are present (initially missed * in MPICH impl) */ { MPI_Fint f_handle = 0xdeadbeef; f_handle = MPI_Message_c2f(MPI_MESSAGE_NULL); msg = MPI_Message_f2c(f_handle); check(f_handle != 0xdeadbeef); check(msg == MPI_MESSAGE_NULL); /* PMPI_ versions should also exists */ f_handle = 0xdeadbeef; f_handle = PMPI_Message_c2f(MPI_MESSAGE_NULL); msg = PMPI_Message_f2c(f_handle); check(f_handle != 0xdeadbeef); check(msg == MPI_MESSAGE_NULL); } #endif /* TEST_MPROBE_ROUTINES */ epilogue: MPI_Reduce((rank == 0 ? MPI_IN_PLACE : &errs), &errs, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (rank == 0) { if (errs) { printf("found %d errors\n", errs); } else { printf(" No errors\n"); } } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/pt2pt/big_count_status.c0000644000175000017500000000314412620254305021153 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2013 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include int test_count(MPI_Count count) { MPI_Status stat; int cancelled, cancelled2; MPI_Count bcount, bcount2; int nerrs = 0; bcount = count; cancelled = 0; MPI_Status_set_cancelled(&stat, cancelled); MPI_Status_set_elements_x(&stat, MPI_BYTE, bcount); MPI_Get_elements_x(&stat, MPI_BYTE, &bcount2); MPI_Test_cancelled(&stat, &cancelled2); if (bcount != bcount2) { fprintf(stderr, "Count Error: expected %llx, got %llx\n", (long long int) bcount, (long long int) bcount2); nerrs++; } if (cancelled != cancelled2) { fprintf(stderr, "Cancelled Error: expected %d, got %d\n", cancelled, cancelled2); nerrs++; } return nerrs; } int main(int argc, char **argv) { int nerrors = 0; MPI_Init(&argc, &argv); /* baseline: this tiny value should pose no problems */ nerrors += test_count(60); /* one with no next-to-high-bits set */ nerrors += test_count(0x3654321f71234567); /* masking after shift can help the count_high, but count_low is still * wrong */ nerrors += test_count(0x7654321f71234567); /* original problematic count reported by Artem Yalozo */ nerrors += test_count(0x7654321ff1234567); if (nerrors != 0) { fprintf(stderr, "found %d errors\n", nerrors); } else { printf(" No Errors\n"); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/pt2pt/bsend5.c0000644000175000017500000000365212620254305016763 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include "mpi.h" #include "mpitest.h" #define BUFSIZE 2000 int main(int argc, char *argv[]) { MPI_Status status; MPI_Comm comm, scomm; int a[10], b[10]; int buf[BUFSIZE], *bptr, bl, i, j, rank, size, color, errs = 0; MTest_Init(0, 0); MPI_Comm_rank(MPI_COMM_WORLD, &rank); color = rank % 2; MPI_Comm_split(MPI_COMM_WORLD, color, rank, &scomm); MPI_Intercomm_create(scomm, 0, MPI_COMM_WORLD, 1 - color, 52, &comm); MPI_Comm_rank(comm, &rank); MPI_Comm_remote_size(comm, &size); MPI_Buffer_attach(buf, BUFSIZE); for (j = 0; j < 10; j++) { for (i = 0; i < 10; i++) { a[i] = (rank + 10 * j) * size + i; } MPI_Bsend(a, 10, MPI_INT, 0, 27 + j, comm); } if (rank == 0) { for (i = 0; i < size; i++) { for (j = 0; j < 10; j++) { int k; status.MPI_TAG = -10; status.MPI_SOURCE = -20; MPI_Recv(b, 10, MPI_INT, i, 27 + j, comm, &status); if (status.MPI_TAG != 27 + j) { errs++; printf("Wrong tag = %d\n", status.MPI_TAG); } if (status.MPI_SOURCE != i) { errs++; printf("Wrong source = %d\n", status.MPI_SOURCE); } for (k = 0; k < 10; k++) { if (b[k] != (i + 10 * j) * size + k) { errs++; printf("received b[%d] = %d from %d tag %d\n", k, b[k], i, 27 + j); } } } } } MPI_Buffer_detach(&bptr, &bl); MPI_Comm_free(&scomm); MPI_Comm_free(&comm); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/pt2pt/inactivereq.c0000644000175000017500000001002312620254305020103 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2005 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* This test program checks that the point-to-point completion routines can be applied to an inactive persistent request, as required by the MPI-1 standard. See section 3.7.3, for example, One is allowed to call MPI TEST with a null or inactive request argument. In such a case the operation returns with flag = true and empty status. */ int StatusEmpty(MPI_Status * s); int StatusEmpty(MPI_Status * s) { int errs = 0; int count = 10; if (s->MPI_TAG != MPI_ANY_TAG) { errs++; printf("MPI_TAG not MPI_ANY_TAG in status\n"); } if (s->MPI_SOURCE != MPI_ANY_SOURCE) { errs++; printf("MPI_SOURCE not MPI_ANY_SOURCE in status\n"); } MPI_Get_count(s, MPI_INT, &count); if (count != 0) { errs++; printf("count in status is not 0\n"); } /* Return true only if status passed all tests */ return errs ? 0 : 1; } int main(int argc, char *argv[]) { MPI_Request r; MPI_Status s; int errs = 0; int flag; int buf[10]; int rbuf[10]; int tag = 27; int dest = 0; int rank, size; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); /* Create a persistent send request */ MPI_Send_init(buf, 10, MPI_INT, dest, tag, MPI_COMM_WORLD, &r); flag = 0; s.MPI_TAG = 10; s.MPI_SOURCE = 10; MPI_Test(&r, &flag, &s); if (!flag) { errs++; printf("Flag not true after MPI_Test (send)\n"); printf("Aborting further tests to avoid hanging in MPI_Wait\n"); MTest_Finalize(errs); MPI_Finalize(); return 0; } if (!StatusEmpty(&s)) { errs++; printf("Status not empty after MPI_Test (send)\n"); } s.MPI_TAG = 10; s.MPI_SOURCE = 10; MPI_Wait(&r, &s); if (!StatusEmpty(&s)) { errs++; printf("Status not empty after MPI_Wait (send)\n"); } /* Now try to use that request, then check again */ if (rank == 0) { int i; MPI_Request *rr = (MPI_Request *) malloc(size * sizeof(MPI_Request)); for (i = 0; i < size; i++) { MPI_Irecv(rbuf, 10, MPI_INT, i, tag, MPI_COMM_WORLD, &rr[i]); } MPI_Start(&r); MPI_Wait(&r, &s); MPI_Waitall(size, rr, MPI_STATUSES_IGNORE); } else { MPI_Start(&r); MPI_Wait(&r, &s); } flag = 0; s.MPI_TAG = 10; s.MPI_SOURCE = 10; MPI_Test(&r, &flag, &s); if (!flag) { errs++; printf("Flag not true after MPI_Test (send)\n"); printf("Aborting further tests to avoid hanging in MPI_Wait\n"); MTest_Finalize(errs); MPI_Finalize(); return 0; } if (!StatusEmpty(&s)) { errs++; printf("Status not empty after MPI_Test (send)\n"); } s.MPI_TAG = 10; s.MPI_SOURCE = 10; MPI_Wait(&r, &s); if (!StatusEmpty(&s)) { errs++; printf("Status not empty after MPI_Wait (send)\n"); } MPI_Request_free(&r); /* Create a persistent receive request */ MPI_Recv_init(buf, 10, MPI_INT, dest, tag, MPI_COMM_WORLD, &r); flag = 0; s.MPI_TAG = 10; s.MPI_SOURCE = 10; MPI_Test(&r, &flag, &s); if (!flag) { errs++; printf("Flag not true after MPI_Test (recv)\n"); printf("Aborting further tests to avoid hanging in MPI_Wait\n"); MTest_Finalize(errs); MPI_Finalize(); return 0; } if (!StatusEmpty(&s)) { errs++; printf("Status not empty after MPI_Test (recv)\n"); } s.MPI_TAG = 10; s.MPI_SOURCE = 10; MPI_Wait(&r, &s); if (!StatusEmpty(&s)) { errs++; printf("Status not empty after MPI_Wait (recv)\n"); } MPI_Request_free(&r); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/pt2pt/scancel.c0000644000175000017500000002204612620254305017211 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test of various send cancel calls"; */ int main(int argc, char *argv[]) { int errs = 0; int rank, size, source, dest; MPI_Comm comm; MPI_Status status; MPI_Request req; static int bufsizes[4] = { 1, 100, 10000, 1000000 }; char *buf; #ifdef TEST_IRSEND int veryPicky = 0; /* Set to 1 to test "quality of implementation" in * a tricky part of cancel */ #endif int cs, flag, n; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); source = 0; dest = size - 1; MTestPrintfMsg(1, "Starting scancel test\n"); for (cs = 0; cs < 4; cs++) { if (rank == 0) { n = bufsizes[cs]; buf = (char *) malloc(n); if (!buf) { fprintf(stderr, "Unable to allocate %d bytes\n", n); MPI_Abort(MPI_COMM_WORLD, 1); } MTestPrintfMsg(1, "(%d) About to create isend and cancel\n", cs); MPI_Isend(buf, n, MPI_CHAR, dest, cs + n + 1, comm, &req); MPI_Cancel(&req); MPI_Wait(&req, &status); MTestPrintfMsg(1, "Completed wait on isend\n"); MPI_Test_cancelled(&status, &flag); if (!flag) { errs++; printf("Failed to cancel an Isend request\n"); fflush(stdout); } else { n = 0; } /* Send the size, zero for successfully cancelled */ MPI_Send(&n, 1, MPI_INT, dest, 123, comm); /* Send the tag so the message can be received */ n = cs + n + 1; MPI_Send(&n, 1, MPI_INT, dest, 123, comm); free(buf); } else if (rank == dest) { int nn, tag; char *btemp; MPI_Recv(&nn, 1, MPI_INT, 0, 123, comm, &status); MPI_Recv(&tag, 1, MPI_INT, 0, 123, comm, &status); if (nn > 0) { /* If the message was not cancelled, receive it here */ btemp = (char *) malloc(nn); if (!btemp) { fprintf(stderr, "Unable to allocate %d bytes\n", nn); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Recv(btemp, nn, MPI_CHAR, 0, tag, comm, &status); free(btemp); } } MPI_Barrier(comm); if (rank == 0) { char *bsendbuf; int bsendbufsize; int bf, bs; n = bufsizes[cs]; buf = (char *) malloc(n); if (!buf) { fprintf(stderr, "Unable to allocate %d bytes\n", n); MPI_Abort(MPI_COMM_WORLD, 1); } bsendbufsize = n + MPI_BSEND_OVERHEAD; bsendbuf = (char *) malloc(bsendbufsize); if (!bsendbuf) { fprintf(stderr, "Unable to allocate %d bytes for bsend\n", n); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Buffer_attach(bsendbuf, bsendbufsize); MTestPrintfMsg(1, "About to create and cancel ibsend\n"); MPI_Ibsend(buf, n, MPI_CHAR, dest, cs + n + 2, comm, &req); MPI_Cancel(&req); MPI_Wait(&req, &status); MPI_Test_cancelled(&status, &flag); if (!flag) { errs++; printf("Failed to cancel an Ibsend request\n"); fflush(stdout); } else { n = 0; } /* Send the size, zero for successfully cancelled */ MPI_Send(&n, 1, MPI_INT, dest, 123, comm); /* Send the tag so the message can be received */ n = cs + n + 2; MPI_Send(&n, 1, MPI_INT, dest, 123, comm); free(buf); MPI_Buffer_detach(&bf, &bs); free(bsendbuf); } else if (rank == dest) { int nn, tag; char *btemp; MPI_Recv(&nn, 1, MPI_INT, 0, 123, comm, &status); MPI_Recv(&tag, 1, MPI_INT, 0, 123, comm, &status); if (nn > 0) { /* If the message was not cancelled, receive it here */ btemp = (char *) malloc(nn); if (!btemp) { fprintf(stderr, "Unable to allocate %d bytes\n", nn); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Recv(btemp, nn, MPI_CHAR, 0, tag, comm, &status); free(btemp); } } MPI_Barrier(comm); /* Because this test is erroneous, we do not perform it unless * TEST_IRSEND is defined. */ #ifdef TEST_IRSEND /* We avoid ready send to self because an implementation * is free to detect the error in delivering a message to * itself without a pending receive; we could also check * for an error return from the MPI_Irsend */ if (rank == 0 && dest != rank) { n = bufsizes[cs]; buf = (char *) malloc(n); if (!buf) { fprintf(stderr, "Unable to allocate %d bytes\n", n); MPI_Abort(MPI_COMM_WORLD, 1); } MTestPrintfMsg(1, "About to create and cancel irsend\n"); MPI_Irsend(buf, n, MPI_CHAR, dest, cs + n + 3, comm, &req); MPI_Cancel(&req); MPI_Wait(&req, &status); MPI_Test_cancelled(&status, &flag); /* This can be pretty ugly. The standard is clear (Section 3.8) * that either a sent message is received or the * sent message is successfully cancelled. Since this message * can never be received, the cancel must complete * successfully. * * However, since there is no matching receive, this * program is erroneous. In this case, we can't really * flag this as an error */ if (!flag && veryPicky) { errs++; printf("Failed to cancel an Irsend request\n"); fflush(stdout); } if (flag) { n = 0; } /* Send the size, zero for successfully cancelled */ MPI_Send(&n, 1, MPI_INT, dest, 123, comm); /* Send the tag so the message can be received */ n = cs + n + 3; MPI_Send(&n, 1, MPI_INT, dest, 123, comm); free(buf); } else if (rank == dest) { int n, tag; char *btemp; MPI_Recv(&n, 1, MPI_INT, 0, 123, comm, &status); MPI_Recv(&tag, 1, MPI_INT, 0, 123, comm, &status); if (n > 0) { /* If the message was not cancelled, receive it here */ btemp = (char *) malloc(n); if (!btemp) { fprintf(stderr, "Unable to allocate %d bytes\n", n); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Recv(btemp, n, MPI_CHAR, 0, tag, comm, &status); free(btemp); } } MPI_Barrier(comm); #endif if (rank == 0) { n = bufsizes[cs]; buf = (char *) malloc(n); if (!buf) { fprintf(stderr, "Unable to allocate %d bytes\n", n); MPI_Abort(MPI_COMM_WORLD, 1); } MTestPrintfMsg(1, "About to create and cancel issend\n"); MPI_Issend(buf, n, MPI_CHAR, dest, cs + n + 4, comm, &req); MPI_Cancel(&req); MPI_Wait(&req, &status); MPI_Test_cancelled(&status, &flag); if (!flag) { errs++; printf("Failed to cancel an Issend request\n"); fflush(stdout); } else { n = 0; } /* Send the size, zero for successfully cancelled */ MPI_Send(&n, 1, MPI_INT, dest, 123, comm); /* Send the tag so the message can be received */ n = cs + n + 4; MPI_Send(&n, 1, MPI_INT, dest, 123, comm); free(buf); } else if (rank == dest) { int nn, tag; char *btemp; MPI_Recv(&nn, 1, MPI_INT, 0, 123, comm, &status); MPI_Recv(&tag, 1, MPI_INT, 0, 123, comm, &status); if (nn > 0) { /* If the message was not cancelled, receive it here */ btemp = (char *) malloc(nn); if (!btemp) { fprintf(stderr, "Unable to allocate %d bytes\n", nn); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Recv(btemp, nn, MPI_CHAR, 0, tag, comm, &status); free(btemp); } } MPI_Barrier(comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/pt2pt/large_message.c0000644000175000017500000000421312620254305020373 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2010 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include "mpitest.h" /* tests send/recv of a message > 2GB. count=270M, type=long long run with 3 processes to exercise both shared memory and TCP in Nemesis tests*/ int main(int argc, char *argv[]) { int ierr, i, size, rank; int cnt = 270000000; int stat_cnt = 0; MPI_Status status; long long *cols; int errs = 0; MTest_Init(&argc, &argv); /* need large memory */ if (sizeof(void *) < 8) { MTest_Finalize(errs); MPI_Finalize(); return 0; } ierr = MPI_Comm_size(MPI_COMM_WORLD, &size); ierr = MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (size != 3) { fprintf(stderr, "[%d] usage: mpiexec -n 3 %s\n", rank, argv[0]); MPI_Abort(MPI_COMM_WORLD, 1); } cols = malloc(cnt * sizeof(long long)); if (cols == NULL) { printf("malloc of >2GB array failed\n"); errs++; MTest_Finalize(errs); MPI_Finalize(); return 0; } if (rank == 0) { for (i = 0; i < cnt; i++) cols[i] = i; /* printf("[%d] sending...\n",rank); */ ierr = MPI_Send(cols, cnt, MPI_LONG_LONG_INT, 1, 0, MPI_COMM_WORLD); ierr = MPI_Send(cols, cnt, MPI_LONG_LONG_INT, 2, 0, MPI_COMM_WORLD); } else { /* printf("[%d] receiving...\n",rank); */ for (i = 0; i < cnt; i++) cols[i] = -1; ierr = MPI_Recv(cols, cnt, MPI_LONG_LONG_INT, 0, 0, MPI_COMM_WORLD, &status); ierr = MPI_Get_count(&status,MPI_LONG_LONG_INT,&stat_cnt); if (cnt != stat_cnt) { fprintf(stderr, "Output of MPI_Get_count (%d) does not match expected count (%d).\n", stat_cnt, cnt); errs++; } for (i = 0; i < cnt; i++) { if (cols[i] != i) { /*printf("Rank %d, cols[i]=%lld, should be %d\n", rank, cols[i], i); */ errs++; } } } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/pt2pt/isendirecv.c0000644000175000017500000000212612620254305017731 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" int main(int argc, char *argv[]) { int errors = 0; int elems = 20; int rank, nproc, dest, i; float *in_buf, *out_buf; MPI_Comm comm; MPI_Request *reqs; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &nproc); reqs = (MPI_Request *) malloc(2 * nproc * sizeof(MPI_Request)); in_buf = (float *) malloc(elems * nproc * sizeof(float)); out_buf = (float *) malloc(elems * nproc * sizeof(float)); for (i = 0; i < nproc; i++) { MPI_Irecv(&in_buf[elems * i], elems, MPI_FLOAT, i, 0, comm, &reqs[i]); } for (i = 0; i < nproc; i++) { MPI_Isend(&out_buf[elems * i], elems, MPI_FLOAT, i, 0, comm, &reqs[i + nproc]); } MPI_Waitall(nproc * 2, reqs, MPI_STATUSES_IGNORE); MTest_Finalize(errors); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/pt2pt/probe-unexp.c0000644000175000017500000001400212620254305020036 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include "mpi.h" #include "mpitest.h" #define MAX_BUF_SIZE_LG 22 #define NUM_MSGS_PER_BUF_SIZE 5 char buf[1 << MAX_BUF_SIZE_LG]; /* * This program verifies that MPI_Probe() is operating properly in the face of * unexpected messages arriving after MPI_Probe() has * been called. This program may hang if MPI_Probe() does not return when the * message finally arrives (see req #375). */ int main(int argc, char **argv) { int p_size; int p_rank; int msg_size_lg; int errs = 0; int mpi_errno; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &p_size); MPI_Comm_rank(MPI_COMM_WORLD, &p_rank); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); for (msg_size_lg = 0; msg_size_lg <= MAX_BUF_SIZE_LG; msg_size_lg++) { const int msg_size = 1 << msg_size_lg; int msg_cnt; MTestPrintfMsg(2, "testing messages of size %d\n", msg_size); for (msg_cnt = 0; msg_cnt < NUM_MSGS_PER_BUF_SIZE; msg_cnt++) { MPI_Status status; const int tag = msg_size_lg * NUM_MSGS_PER_BUF_SIZE + msg_cnt; MTestPrintfMsg(2, "Message count %d\n", msg_cnt); if (p_rank == 0) { int p; for (p = 1; p < p_size; p++) { /* Wait for synchronization message */ mpi_errno = MPI_Recv(NULL, 0, MPI_BYTE, MPI_ANY_SOURCE, tag, MPI_COMM_WORLD, &status); if (mpi_errno != MPI_SUCCESS && errs++ < 10) { MTestPrintError(mpi_errno); } if (status.MPI_TAG != tag && errs++ < 10) { printf ("ERROR: unexpected message tag from MPI_Recv(): lp=0, rp=%d, expected=%d, actual=%d, count=%d\n", status.MPI_SOURCE, status.MPI_TAG, tag, msg_cnt); } # if defined(VERBOSE) { printf("sending message: p=%d s=%d c=%d\n", status.MPI_SOURCE, msg_size, msg_cnt); } # endif /* Send unexpected message which hopefully MPI_Probe() is * already waiting for at the remote process */ mpi_errno = MPI_Send(buf, msg_size, MPI_BYTE, status.MPI_SOURCE, status.MPI_TAG, MPI_COMM_WORLD); if (mpi_errno != MPI_SUCCESS && errs++ < 10) { MTestPrintError(mpi_errno); } } } else { int incoming_msg_size; /* Send synchronization message */ mpi_errno = MPI_Send(NULL, 0, MPI_BYTE, 0, tag, MPI_COMM_WORLD); if (mpi_errno != MPI_SUCCESS && errs++ < 10) { MTestPrintError(mpi_errno); } /* Perform probe, hopefully before the master process can * send its reply */ mpi_errno = MPI_Probe(MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &status); if (mpi_errno != MPI_SUCCESS && errs++ < 10) { MTestPrintError(mpi_errno); } mpi_errno = MPI_Get_count(&status, MPI_BYTE, &incoming_msg_size); if (mpi_errno != MPI_SUCCESS && errs++ < 10) { MTestPrintError(mpi_errno); } if (status.MPI_SOURCE != 0 && errs++ < 10) { printf ("ERROR: unexpected message source from MPI_Probe(): p=%d, expected=0, actual=%d, count=%d\n", p_rank, status.MPI_SOURCE, msg_cnt); } if (status.MPI_TAG != tag && errs++ < 10) { printf ("ERROR: unexpected message tag from MPI_Probe(): p=%d, expected=%d, actual=%d, count=%d\n", p_rank, tag, status.MPI_TAG, msg_cnt); } if (incoming_msg_size != msg_size && errs++ < 10) { printf ("ERROR: unexpected message size from MPI_Probe(): p=%d, expected=%d, actual=%d, count=%d\n", p_rank, msg_size, incoming_msg_size, msg_cnt); } /* Receive the probed message from the master process */ mpi_errno = MPI_Recv(buf, msg_size, MPI_BYTE, 0, tag, MPI_COMM_WORLD, &status); if (mpi_errno != MPI_SUCCESS && errs++ < 10) { MTestPrintError(mpi_errno); } mpi_errno = MPI_Get_count(&status, MPI_BYTE, &incoming_msg_size); if (mpi_errno != MPI_SUCCESS && errs++ < 10) { MTestPrintError(mpi_errno); } if (status.MPI_SOURCE != 0 && errs++ < 10) { printf ("ERROR: unexpected message source from MPI_Recv(): p=%d, expected=0, actual=%d, count=%d\n", p_rank, status.MPI_SOURCE, msg_cnt); } if (status.MPI_TAG != tag && errs++ < 10) { printf ("ERROR: unexpected message tag from MPI_Recv(): p=%d, expected=%d, actual=%d, count=%d\n", p_rank, tag, status.MPI_TAG, msg_cnt); } if (incoming_msg_size != msg_size && errs++ < 10) { printf ("ERROR: unexpected message size from MPI_Recv(): p=%d, expected=%d, actual=%d, count=%d\n", p_rank, msg_size, incoming_msg_size, msg_cnt); } } } } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/pt2pt/scancel_unmatch.c0000644000175000017500000000272712620254305020734 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test message reception ordering issues after cancelling a send"; */ int main(int argc, char *argv[]) { int a, b, flag = 0, errs = 0; MPI_Request requests[2]; MPI_Status statuses[2]; MPI_Init(&argc, &argv); int rank, size; MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); int source = 0; int dest = size - 1; if (rank == 0) { a = 10; b = 20; MPI_Isend(&a, 1, MPI_INT, 1, 0, MPI_COMM_WORLD, &requests[0]); MPI_Isend(&b, 1, MPI_INT, 1, 0, MPI_COMM_WORLD, &requests[1]); MPI_Cancel(&requests[1]); MPI_Wait(&requests[1], &statuses[1]); MPI_Test_cancelled(&statuses[1], &flag); if (!flag) { printf("Failed to cancel send"); errs++; } MPI_Barrier(MPI_COMM_WORLD); MPI_Wait(&requests[0], MPI_STATUS_IGNORE); } else if (rank == 1) { MPI_Barrier(MPI_COMM_WORLD); MPI_Recv(&a, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); if (a == 20) { printf("Failed! got the data from the wrong send!\n"); errs++; } } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/pt2pt/bottom.c0000644000175000017500000000360712620254305017107 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Use of MPI_BOTTOM in communication"; */ int main(int argc, char *argv[]) { int errs = 0, err; int rank, size, source, dest, len, ii; MPI_Comm comm; MPI_Status status; MPI_Datatype newtype, oldtype; MPI_Aint disp; MTest_Init(&argc, &argv); MPI_Get_address(&ii, &disp); len = 1; oldtype = MPI_INT; MPI_Type_create_struct(1, &len, &disp, &oldtype, &newtype); MPI_Type_commit(&newtype); comm = MPI_COMM_WORLD; MPI_Comm_size(comm, &size); MPI_Comm_rank(comm, &rank); if (size < 2) { errs++; fprintf(stderr, "This test requires at least two processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } source = 0; dest = 1; /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(comm, MPI_ERRORS_RETURN); if (rank == source) { ii = 2; err = MPI_Send(MPI_BOTTOM, 1, newtype, dest, 0, comm); if (err) { errs++; MTestPrintError(err); printf("MPI_Send did not return MPI_SUCCESS\n"); } } else if (rank == dest) { ii = -1; err = MPI_Recv(MPI_BOTTOM, 1, newtype, source, 0, comm, &status); if (err) { MTestPrintError(err); errs++; printf("MPI_Recv did not return MPI_SUCCESS\n"); } if (ii != 2) { errs++; printf("Received %d but expected %d\n", ii, 2); } } MPI_Comm_set_errhandler(comm, MPI_ERRORS_ARE_FATAL); MPI_Type_free(&newtype); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/pt2pt/pingping.c0000644000175000017500000001051512620254305017412 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Send flood test"; */ #define MAX_MSG_SIZE 40000000 #define MAX_COUNT 4000 int main(int argc, char *argv[]) { int errs = 0, err; int rank, size, source, dest; int minsize = 2, count, nmsg, maxmsg; MPI_Comm comm; MTestDatatype sendtype, recvtype; MTest_Init(&argc, &argv); /* The following illustrates the use of the routines to * run through a selection of communicators and datatypes. * Use subsets of these for tests that do not involve combinations * of communicators, datatypes, and counts of datatypes */ while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; /* Determine the sender and receiver */ MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); source = 0; dest = size - 1; /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(comm, MPI_ERRORS_RETURN); for (count = 1; count < MAX_COUNT; count = count * 2) { /* To shorten test time, only run the default version of datatype tests * for comm world and run the minimum version for other communicators. */ if (comm != MPI_COMM_WORLD) { MTestInitMinDatatypes(); } while (MTestGetDatatypes(&sendtype, &recvtype, count)) { int nbytes; MPI_Type_size(sendtype.datatype, &nbytes); /* We may want to limit the total message size sent */ if (nbytes > MAX_MSG_SIZE) { /* We do not need to free, as we haven't * initialized any of the buffers (?) */ continue; } maxmsg = MAX_COUNT - count; MTestPrintfMsg(1, "Sending count = %d of sendtype %s of total size %d bytes\n", count, MTestGetDatatypeName(&sendtype), nbytes * count); /* Make sure that everyone has a recv buffer */ recvtype.InitBuf(&recvtype); if (rank == source) { sendtype.InitBuf(&sendtype); for (nmsg = 1; nmsg < maxmsg; nmsg++) { err = MPI_Send(sendtype.buf, sendtype.count, sendtype.datatype, dest, 0, comm); if (err) { errs++; if (errs < 10) { MTestPrintError(err); } } } } else if (rank == dest) { for (nmsg = 1; nmsg < maxmsg; nmsg++) { err = MPI_Recv(recvtype.buf, recvtype.count, recvtype.datatype, source, 0, comm, MPI_STATUS_IGNORE); if (err) { errs++; if (errs < 10) { MTestPrintError(err); } } err = MTestCheckRecv(0, &recvtype); if (err) { if (errs < 10) { printf ("Data in target buffer did not match for destination datatype %s and source datatype %s, count = %d, message iteration %d of %d\n", MTestGetDatatypeName(&recvtype), MTestGetDatatypeName(&sendtype), count, nmsg, maxmsg); recvtype.printErrors = 1; (void) MTestCheckRecv(0, &recvtype); } errs += err; } } } MTestFreeDatatype(&recvtype); MTestFreeDatatype(&sendtype); } } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/pt2pt/pscancel.c0000644000175000017500000002172012620254305017367 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test of various send cancel calls"; */ int main(int argc, char *argv[]) { int errs = 0; int rank, size, source, dest; MPI_Comm comm; MPI_Status status; MPI_Request req; static int bufsizes[4] = { 1, 100, 10000, 1000000 }; char *buf; int cs, flag, n; #ifdef TEST_IRSEND int veryPicky = 0; /* Set to 1 to test "quality of implementation" in * a tricky part of cancel */ #endif MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); source = 0; dest = size - 1; for (cs = 0; cs < 4; cs++) { if (rank == 0) { n = bufsizes[cs]; buf = (char *) malloc(n); if (!buf) { fprintf(stderr, "Unable to allocate %d bytes\n", n); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Send_init(buf, n, MPI_CHAR, dest, cs + n + 1, comm, &req); MPI_Start(&req); MPI_Cancel(&req); MPI_Wait(&req, &status); MPI_Test_cancelled(&status, &flag); if (!flag) { errs++; printf("Failed to cancel a persistent send request\n"); fflush(stdout); } else { n = 0; } MPI_Request_free(&req); /* Send the size, zero for successfully cancelled */ MPI_Send(&n, 1, MPI_INT, dest, 123, comm); /* Send the tag so the message can be received */ n = cs + n + 1; MPI_Send(&n, 1, MPI_INT, dest, 123, comm); free(buf); } else if (rank == dest) { int nn, tag; char *btemp; MPI_Recv(&nn, 1, MPI_INT, 0, 123, comm, &status); MPI_Recv(&tag, 1, MPI_INT, 0, 123, comm, &status); if (nn > 0) { /* If the message was not cancelled, receive it here */ btemp = (char *) malloc(nn); if (!btemp) { fprintf(stderr, "Unable to allocate %d bytes\n", nn); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Recv(btemp, nn, MPI_CHAR, 0, tag, comm, &status); free(btemp); } } MPI_Barrier(comm); if (rank == 0) { char *bsendbuf; int bsendbufsize; int bf, bs; n = bufsizes[cs]; buf = (char *) malloc(n); if (!buf) { fprintf(stderr, "Unable to allocate %d bytes\n", n); MPI_Abort(MPI_COMM_WORLD, 1); } bsendbufsize = n + MPI_BSEND_OVERHEAD; bsendbuf = (char *) malloc(bsendbufsize); if (!bsendbuf) { fprintf(stderr, "Unable to allocate %d bytes for bsend\n", n); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Buffer_attach(bsendbuf, bsendbufsize); MPI_Bsend_init(buf, n, MPI_CHAR, dest, cs + n + 2, comm, &req); MPI_Start(&req); MPI_Cancel(&req); MPI_Wait(&req, &status); MPI_Test_cancelled(&status, &flag); if (!flag) { errs++; printf("Failed to cancel a persistent bsend request\n"); fflush(stdout); } else { n = 0; } MPI_Request_free(&req); /* Send the size, zero for successfully cancelled */ MPI_Send(&n, 1, MPI_INT, dest, 123, comm); /* Send the tag so the message can be received */ n = cs + n + 2; MPI_Send(&n, 1, MPI_INT, dest, 123, comm); free(buf); MPI_Buffer_detach(&bf, &bs); free(bsendbuf); } else if (rank == dest) { int nn, tag; char *btemp; MPI_Recv(&nn, 1, MPI_INT, 0, 123, comm, &status); MPI_Recv(&tag, 1, MPI_INT, 0, 123, comm, &status); if (nn > 0) { /* If the message was not cancelled, receive it here */ btemp = (char *) malloc(nn); if (!btemp) { fprintf(stderr, "Unable to allocate %d bytes\n", nn); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Recv(btemp, nn, MPI_CHAR, 0, tag, comm, &status); free(btemp); } } MPI_Barrier(comm); /* Because this test is erroneous, we do not perform it unless * TEST_IRSEND is defined. */ #ifdef TEST_IRSEND /* We avoid ready send to self because an implementation * is free to detect the error in delivering a message to * itself without a pending receive; we could also check * for an error return from the MPI_Irsend */ if (rank == 0 && dest != rank) { n = bufsizes[cs]; buf = (char *) malloc(n); if (!buf) { fprintf(stderr, "Unable to allocate %d bytes\n", n); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Rsend_init(buf, n, MPI_CHAR, dest, cs + n + 3, comm, &req); MPI_Start(&req); MPI_Cancel(&req); MPI_Wait(&req, &status); MPI_Test_cancelled(&status, &flag); /* This can be pretty ugly. The standard is clear (Section 3.8) * that either a sent message is received or the * sent message is successfully cancelled. Since this message * can never be received, the cancel must complete * successfully. * * However, since there is no matching receive, this * program is erroneous. In this case, we can't really * flag this as an error */ if (!flag && veryPicky) { errs++; printf("Failed to cancel a persistent rsend request\n"); fflush(stdout); } if (flag) { n = 0; } MPI_Request_free(&req); /* Send the size, zero for successfully cancelled */ MPI_Send(&n, 1, MPI_INT, dest, 123, comm); /* Send the tag so the message can be received */ n = cs + n + 3; MPI_Send(&n, 1, MPI_INT, dest, 123, comm); free(buf); } else if (rank == dest) { int n, tag; char *btemp; MPI_Recv(&n, 1, MPI_INT, 0, 123, comm, &status); MPI_Recv(&tag, 1, MPI_INT, 0, 123, comm, &status); if (n > 0) { /* If the message was not cancelled, receive it here */ btemp = (char *) malloc(n); if (!btemp) { fprintf(stderr, "Unable to allocate %d bytes\n", n); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Recv(btemp, n, MPI_CHAR, 0, tag, comm, &status); free(btemp); } } MPI_Barrier(comm); #endif if (rank == 0) { n = bufsizes[cs]; buf = (char *) malloc(n); if (!buf) { fprintf(stderr, "Unable to allocate %d bytes\n", n); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Ssend_init(buf, n, MPI_CHAR, dest, cs + n + 4, comm, &req); MPI_Start(&req); MPI_Cancel(&req); MPI_Wait(&req, &status); MPI_Test_cancelled(&status, &flag); if (!flag) { errs++; printf("Failed to cancel a persistent ssend request\n"); fflush(stdout); } else { n = 0; } MPI_Request_free(&req); /* Send the size, zero for successfully cancelled */ MPI_Send(&n, 1, MPI_INT, dest, 123, comm); /* Send the tag so the message can be received */ n = cs + n + 4; MPI_Send(&n, 1, MPI_INT, dest, 123, comm); free(buf); } else if (rank == dest) { int nn, tag; char *btemp; MPI_Recv(&nn, 1, MPI_INT, 0, 123, comm, &status); MPI_Recv(&tag, 1, MPI_INT, 0, 123, comm, &status); if (nn > 0) { /* If the message was not cancelled, receive it here */ btemp = (char *) malloc(nn); if (!btemp) { fprintf(stderr, "Unable to allocate %d bytes\n", nn); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Recv(btemp, nn, MPI_CHAR, 0, tag, comm, &status); free(btemp); } } MPI_Barrier(comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/pt2pt/bsend3.c0000644000175000017500000000350612620254305016757 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include "mpi.h" #include "mpitest.h" #define BUFSIZE 2000 int main(int argc, char *argv[]) { MPI_Status status; MPI_Request request; int a[10], b[10]; int buf[BUFSIZE], *bptr, bl, i, j, rank, size; int errs = 0; MTest_Init(0, 0); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Buffer_attach(buf, BUFSIZE); for (j = 0; j < 10; j++) { MPI_Bsend_init(a, 10, MPI_INT, 0, 27 + j, MPI_COMM_WORLD, &request); for (i = 0; i < 10; i++) { a[i] = (rank + 10 * j) * size + i; } MPI_Start(&request); MPI_Wait(&request, &status); MPI_Request_free(&request); } if (rank == 0) { for (i = 0; i < size; i++) { for (j = 0; j < 10; j++) { int k; status.MPI_TAG = -10; status.MPI_SOURCE = -20; MPI_Recv(b, 10, MPI_INT, i, 27 + j, MPI_COMM_WORLD, &status); if (status.MPI_TAG != 27 + j) { errs++; printf("Wrong tag = %d\n", status.MPI_TAG); } if (status.MPI_SOURCE != i) { errs++; printf("Wrong source = %d\n", status.MPI_SOURCE); } for (k = 0; k < 10; k++) { if (b[k] != (i + 10 * j) * size + k) { errs++; printf("received b[%d] = %d from %d tag %d\n", k, b[k], i, 27 + j); } } } } } MPI_Buffer_detach(&bptr, &bl); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/pt2pt/sendall.c0000644000175000017500000000405112620254305017217 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2007 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include "mpi.h" #include "mpitest.h" /* * This test makes sure that each process can send to each other process. * If there are bugs in the handling of request completions or in * queue operations, then this test may fail on them (it did with * early EagerShort handling). */ #define MAXPES 32 #define MYBUFSIZE 16*1024 static int buffer[MAXPES][MYBUFSIZE]; #define NUM_RUNS 10 int main(int argc, char *argv[]) { int i; int count, size; int self, npes; double secs; MPI_Request request[MAXPES]; MPI_Status status; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &self); MPI_Comm_size(MPI_COMM_WORLD, &npes); if (npes > MAXPES) { fprintf(stderr, "This program requires a comm_world no larger than %d", MAXPES); MPI_Abort(MPI_COMM_WORLD, 1); } for (size = 1; size <= MYBUFSIZE; size += size) { secs = -MPI_Wtime(); for (count = 0; count < NUM_RUNS; count++) { MPI_Barrier(MPI_COMM_WORLD); for (i = 0; i < npes; i++) { if (i != self) MPI_Irecv(buffer[i], size, MPI_INT, i, MPI_ANY_TAG, MPI_COMM_WORLD, &request[i]); } for (i = 0; i < npes; i++) { if (i != self) MPI_Send(buffer[self], size, MPI_INT, i, 0, MPI_COMM_WORLD); } for (i = 0; i < npes; i++) { if (i != self) MPI_Wait(&request[i], &status); } } MPI_Barrier(MPI_COMM_WORLD); secs += MPI_Wtime(); if (self == 0) { secs = secs / (double) NUM_RUNS; MTestPrintfMsg(1, "length = %d ints\n", size); } } /* Simple completion is all that we normally ask of this program */ MTest_Finalize(0); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/pt2pt/cancelanysrc.c0000644000175000017500000000244112620254305020243 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include "mpi.h" int main(int argc, char **argv) { int size, rank, msg, cancelled; MPI_Request request; MPI_Status status; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (size != 2) { fprintf(stderr, "ERROR: must be run with 2 processes"); MPI_Abort(MPI_COMM_WORLD, 1); } if (rank == 0) { msg = -1; /* Post, then cancel MPI_ANY_SOURCE recv */ MPI_Irecv(&msg, 1, MPI_INT, MPI_ANY_SOURCE, 0, MPI_COMM_WORLD, &request); MPI_Cancel(&request); MPI_Wait(&request, &status); MPI_Test_cancelled(&status, &cancelled); assert(cancelled); MPI_Barrier(MPI_COMM_WORLD); MPI_Irecv(&msg, 1, MPI_INT, MPI_ANY_SOURCE, 0, MPI_COMM_WORLD, &request); MPI_Wait(&request, &status); assert(msg == 42); } else { MPI_Barrier(MPI_COMM_WORLD); msg = 42; MPI_Send(&msg, 1, MPI_INT, 0, 0, MPI_COMM_WORLD); } if (rank == 0) printf(" No Errors\n"); MPI_Finalize(); } mpi-testsuite-3.2+dfsg/pt2pt/scancel2.c0000644000175000017500000000413412620254305017271 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test of send cancel (failure) calls"; */ int main(int argc, char *argv[]) { int errs = 0; int rank, size, source, dest; MPI_Comm comm; MPI_Status status; MPI_Request req; static int bufsizes[4] = { 1, 100, 10000, 1000000 }; char *buf; int cs, flag, n; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); source = 0; dest = size - 1; MTestPrintfMsg(1, "Starting scancel test\n"); for (cs = 0; cs < 4; cs++) { n = bufsizes[cs]; buf = (char *) malloc(n); if (!buf) { fprintf(stderr, "Unable to allocate %d bytes\n", n); MPI_Abort(MPI_COMM_WORLD, 1); } if (rank == source) { MTestPrintfMsg(1, "(%d) About to create isend and cancel\n", cs); MPI_Isend(buf, n, MPI_CHAR, dest, cs + n + 1, comm, &req); MPI_Barrier(comm); MPI_Cancel(&req); MPI_Wait(&req, &status); MTestPrintfMsg(1, "Completed wait on isend\n"); MPI_Test_cancelled(&status, &flag); if (flag) { errs++; printf("Cancelled a matched Isend request (msg size = %d)!\n", n); fflush(stdout); } else { n = 0; } /* Send the size, zero for not cancelled (success) */ MPI_Send(&n, 1, MPI_INT, dest, 123, comm); } else if (rank == dest) { MPI_Recv(buf, n, MPI_CHAR, source, cs + n + 1, comm, &status); MPI_Barrier(comm); MPI_Recv(&n, 1, MPI_INT, source, 123, comm, &status); } else { MPI_Barrier(comm); } MPI_Barrier(comm); free(buf); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/pt2pt/cancelrecv.c0000644000175000017500000000751512620254305017712 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2006 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include /* For memset */ int main(int argc, char *argv[]) { MPI_Request r[3]; MPI_Status s[3]; int *buf0, *buf1, *buf2; int rank, size, src, dest, flag, errs = 0; int n0, n1, n2; MPI_Comm comm; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); if (size < 2) { fprintf(stderr, "Must run with at least 2 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_rank(MPI_COMM_WORLD, &rank); dest = 0; src = 1; comm = MPI_COMM_WORLD; n0 = n1 = n2 = 65536; buf0 = (int *) malloc(n0 * sizeof(int)); buf1 = (int *) malloc(n1 * sizeof(int)); buf2 = (int *) malloc(n2 * sizeof(int)); if (!buf0 || !buf1 || !buf2) { fprintf(stderr, "Unable to allocate buffers of size %d\n", n0 * (int) sizeof(int)); MPI_Abort(MPI_COMM_WORLD, 1); } memset(buf0, -1, n0 * sizeof(int)); memset(buf1, -1, n0 * sizeof(int)); memset(buf2, -1, n0 * sizeof(int)); if (rank == dest) { MPI_Irecv(buf0, n0, MPI_INT, src, 0, comm, &r[0]); MPI_Irecv(buf1, n1, MPI_INT, src, 1, comm, &r[1]); MPI_Irecv(buf2, n2, MPI_INT, src, 2, comm, &r[2]); MPI_Barrier(comm); MPI_Cancel(&r[1]); MPI_Barrier(comm); memset(s, -1, sizeof(s)); MPI_Waitall(3, r, s); MPI_Test_cancelled(&s[0], &flag); if (flag) { errs++; printf("request 0 was cancelled!\n"); } MPI_Test_cancelled(&s[1], &flag); if (!flag) { errs++; printf("request 1 was not cancelled!\n"); } MPI_Test_cancelled(&s[2], &flag); if (flag) { errs++; printf("request 2 was cancelled!\n"); } MPI_Barrier(comm); } if (rank == src) { int tflag; MPI_Barrier(comm); MPI_Barrier(comm); MPI_Send(buf0, n0, MPI_INT, dest, 0, comm); MPI_Isend(buf2, n2, MPI_INT, dest, 2, comm, &r[1]); MPI_Isend(buf1, n1, MPI_INT, dest, 4, comm, &r[0]); MPI_Cancel(&r[0]); memset(s, -3, sizeof(s)); s[0].MPI_ERROR = -3; s[1].MPI_ERROR = -3; MPI_Testall(2, r, &tflag, s); if (tflag) { MPI_Test_cancelled(&s[0], &flag); if (!flag) { errs++; printf("send request 0 was not cancelled!\n"); } MPI_Test_cancelled(&s[1], &flag); if (flag) { errs++; printf("send request 1 was cancelled!\n"); } } else { /* If all requests are not complete, then neither r nor s * may be changed */ if ((s[0].MPI_ERROR) != -3) { errs++; printf("Send request status 0 modified. s[0].MPI_ERROR = %x\n", s[0].MPI_ERROR); } if ((s[1].MPI_ERROR) != -3) { errs++; printf("Send request status 1 modified. s[1].MPI_ERROR = %x\n", s[1].MPI_ERROR); } } MPI_Barrier(comm); while (!tflag) { MPI_Testall(2, r, &tflag, s); } MPI_Test_cancelled(&s[0], &flag); if (!flag) { errs++; printf("send request 0 was not cancelled!\n"); } MPI_Test_cancelled(&s[1], &flag); if (flag) { errs++; printf("send request 1 was cancelled!\n"); } } if (rank != src && rank != dest) { MPI_Barrier(comm); MPI_Barrier(comm); MPI_Barrier(comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/pt2pt/sendrecv2.c0000644000175000017500000000671612620254305017502 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #include #include #ifdef HAVE_STRING_H #include #endif static int verbose = 0; static int parse_args(int argc, char **argv); int main(int argc, char *argv[]) { int i, j, errs = 0; int rank, size; MPI_Datatype newtype; char *buf = NULL; MPI_Init(&argc, &argv); parse_args(argc, argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); if (size < 2) { if (verbose) fprintf(stderr, "comm size must be > 1\n"); errs++; goto fn_exit; } buf = malloc(64 * 129); if (buf == NULL) { if (verbose) fprintf(stderr, "error allocating buffer\n"); errs++; goto fn_exit; } for (i = 8; i < 64; i += 4) { MPI_Type_vector(i, 128, 129, MPI_CHAR, &newtype); MPI_Type_commit(&newtype); memset(buf, 0, 64 * 129); if (rank == 0) { /* init buffer */ for (j = 0; j < i; j++) { int k; for (k = 0; k < 129; k++) { buf[129 * j + k] = (char) j; } } /* send */ MPI_Send(buf, 1, newtype, 1, i, MPI_COMM_WORLD); } else if (rank == 1) { /* recv */ MPI_Recv(buf, 1, newtype, 0, i, MPI_COMM_WORLD, MPI_STATUS_IGNORE); /* check buffer */ for (j = 0; j < i; j++) { int k; for (k = 0; k < 129; k++) { if (k < 128 && buf[129 * j + k] != (char) j) { if (verbose) fprintf(stderr, "(i=%d, pos=%d) should be %d but is %d\n", i, 129 * j + k, j, (int) buf[129 * j + k]); errs++; } else if (k == 128 && buf[129 * j + k] != (char) 0) { if (verbose) fprintf(stderr, "(i=%d, pos=%d) should be %d but is %d\n", i, 129 * j + k, 0, (int) buf[129 * j + k]); errs++; } } } } MPI_Type_free(&newtype); } if (rank == 0) { int recv_errs = 0; MPI_Recv(&recv_errs, 1, MPI_INT, 1, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); if (recv_errs) { if (verbose) fprintf(stderr, "%d errors reported from receiver\n", recv_errs); errs += recv_errs; } } else if (rank == 1) { MPI_Send(&errs, 1, MPI_INT, 0, 0, MPI_COMM_WORLD); } fn_exit: free(buf); /* print message and exit */ if (errs) { if (rank == 0) fprintf(stderr, "Found %d errors\n", errs); } else { if (rank == 0) printf(" No Errors\n"); } MPI_Finalize(); return 0; } static int parse_args(int argc, char **argv) { /* * int ret; * * while ((ret = getopt(argc, argv, "v")) >= 0) * { * switch (ret) { * case 'v': * verbose = 1; * break; * } * } */ if (argc > 1 && strcmp(argv[1], "-v") == 0) verbose = 1; return 0; } mpi-testsuite-3.2+dfsg/pt2pt/greq1.c0000644000175000017500000000447312620254305016624 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Simple test of generalized requests"; */ int query_fn(void *extra_state, MPI_Status * status); int query_fn(void *extra_state, MPI_Status * status) { /* Set a default status */ status->MPI_SOURCE = MPI_UNDEFINED; status->MPI_TAG = MPI_UNDEFINED; MPI_Status_set_cancelled(status, 0); MPI_Status_set_elements(status, MPI_BYTE, 0); return 0; } int free_fn(void *extra_state); int free_fn(void *extra_state) { int *b = (int *) extra_state; if (b) *b = *b - 1; /* The value returned by the free function is the error code * returned by the wait/test function */ return 0; } int cancel_fn(void *extra_state, int complete); int cancel_fn(void *extra_state, int complete) { return 0; } /* * This is a very simple test of generalized requests. Normally, the * MPI_Grequest_complete function would be called from another routine, * often running in a separate thread. This simple code allows us to * check that requests can be created, tested, and waited on in the * case where the request is complete before the wait is called. * * Note that MPI did *not* define a routine that can be called within * test or wait to advance the state of a generalized request. * Most uses of generalized requests will need to use a separate thread. */ int main(int argc, char *argv[]) { int errs = 0; int counter, flag; MPI_Status status; MPI_Request request; MTest_Init(&argc, &argv); MPI_Grequest_start(query_fn, free_fn, cancel_fn, NULL, &request); MPI_Test(&request, &flag, &status); if (flag) { errs++; fprintf(stderr, "Generalized request marked as complete\n"); } MPI_Grequest_complete(request); MPI_Wait(&request, &status); counter = 1; MPI_Grequest_start(query_fn, free_fn, cancel_fn, &counter, &request); MPI_Grequest_complete(request); MPI_Wait(&request, MPI_STATUS_IGNORE); if (counter) { errs++; fprintf(stderr, "Free routine not called, or not called with extra_data"); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/pt2pt/icsend.c0000644000175000017500000000377112620254305017052 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Simple test of intercommunicator send and receive"; */ int main(int argc, char *argv[]) { int errs = 0; int leftGroup, buf, rank, remote_size, i; MPI_Comm comm; MPI_Status status; MTest_Init(&argc, &argv); while (MTestGetIntercomm(&comm, &leftGroup, 4)) { if (comm == MPI_COMM_NULL) continue; if (leftGroup) { MPI_Comm_rank(comm, &rank); buf = rank; MPI_Send(&buf, 1, MPI_INT, 0, 0, comm); } else { MPI_Comm_remote_size(comm, &remote_size); MPI_Comm_rank(comm, &rank); if (rank == 0) { for (i = 0; i < remote_size; i++) { buf = -1; MPI_Recv(&buf, 1, MPI_INT, i, 0, comm, &status); if (buf != i) { errs++; fprintf(stderr, "buf = %d, should be %d\n", buf, i); } } } } /* Now, reverse it and send back */ if (!leftGroup) { MPI_Comm_rank(comm, &rank); buf = rank; MPI_Send(&buf, 1, MPI_INT, 0, 0, comm); } else { MPI_Comm_remote_size(comm, &remote_size); MPI_Comm_rank(comm, &rank); if (rank == 0) { for (i = 0; i < remote_size; i++) { buf = -1; MPI_Recv(&buf, 1, MPI_INT, i, 0, comm, &status); if (buf != i) { errs++; fprintf(stderr, "buf = %d, should be %d\n", buf, i); } } } } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/Makefile.mtest0000644000175000017500000000315112620254305017153 0ustar mbanckmbanck## -*- Mode: Makefile; -*- ## vim: set ft=automake : ## ## (C) 2011 by Argonne National Laboratory. ## See COPYRIGHT in top-level directory. ## ## This is an automake makefile fragment that should be included by: ## ## include $(top_srcdir)/Makefile.mtest ## ## It provides a "testing" rule that uses runtests, cleanup for summary.xml, and ## adds appropriate includes and linker flags for using the MTest framework. ## The goal is to reduce the amount of boilerplate that needs to exist in each ## Makefile.am # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o LDADD += $(top_builddir)/util/mtest_datatype.o LDADD += $(top_builddir)/util/mtest_datatype_gen.o ## FIXME "DEPADD" is a simplemake concept, which we can handle on a per-target ## prog_DEPENDENCIES variable, but it would be better to figure out the right ## way to do this ##DEPADD = @MPILIBLOC@ $(top_builddir)/util/mtest.o $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml CLEANFILES = summary.xml summary.tap summary.junit.xml mpi-testsuite-3.2+dfsg/f08/0000755000175000017500000000000012621010233014744 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f08/init/0000755000175000017500000000000012621010233015707 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f08/init/testlist0000644000175000017500000000001512620254305017512 0ustar mbanckmbanckbaseenvf90 1 mpi-testsuite-3.2+dfsg/f08/init/Makefile.in0000644000175000017500000005110012621010233017751 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = baseenvf90$(EXEEXT) EXTRA_PROGRAMS = checksizes$(EXEEXT) subdir = f08/init ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) baseenvf90_SOURCES = baseenvf90.f90 baseenvf90_OBJECTS = baseenvf90.$(OBJEXT) baseenvf90_LDADD = $(LDADD) baseenvf90_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o nodist_checksizes_OBJECTS = checksizes.$(OBJEXT) checksizes_OBJECTS = $(nodist_checksizes_OBJECTS) checksizes_DEPENDENCIES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = SOURCES = baseenvf90.f90 $(nodist_checksizes_SOURCES) DIST_SOURCES = baseenvf90.f90 am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_f08.mtest $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F08 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f08/util/mtestf08.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 # Checksizes is created by configure, and is a C program that tests that # configure has correctly computed the sizes of MPI_Aint and MPI_Offset # for Fortran. This is not run by default but can be used to check # that configure found the correct values. checksizes_LDADD = nodist_checksizes_SOURCES = checksizes.c DISTCLEANFILES = checksizes.c all: all-am .SUFFIXES: .SUFFIXES: .c .f90 .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f08.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f08/init/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f08/init/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f08.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) baseenvf90$(EXEEXT): $(baseenvf90_OBJECTS) $(baseenvf90_DEPENDENCIES) $(EXTRA_baseenvf90_DEPENDENCIES) @rm -f baseenvf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(baseenvf90_OBJECTS) $(baseenvf90_LDADD) $(LIBS) checksizes$(EXEEXT): $(checksizes_OBJECTS) $(checksizes_DEPENDENCIES) $(EXTRA_checksizes_DEPENDENCIES) @rm -f checksizes$(EXEEXT) $(AM_V_CCLD)$(LINK) $(checksizes_OBJECTS) $(checksizes_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/checksizes.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f08/util/mtestf08.o: $(top_srcdir)/f08/util/mtestf08.f90 (cd $(top_builddir)/f08/util && $(MAKE) mtestf08.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f08/init/Makefile.am0000644000175000017500000000127612620254305017762 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f08.mtest EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 noinst_PROGRAMS = baseenvf90 EXTRA_PROGRAMS = checksizes # Checksizes is created by configure, and is a C program that tests that # configure has correctly computed the sizes of MPI_Aint and MPI_Offset # for Fortran. This is not run by default but can be used to check # that configure found the correct values. checksizes_LDADD = nodist_checksizes_SOURCES = checksizes.c DISTCLEANFILES = checksizes.c mpi-testsuite-3.2+dfsg/f08/init/baseenvf90.f900000644000175000017500000000526012620254305020205 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer ierr, provided, errs, rank, size integer iv, isubv, qprovided logical flag errs = 0 flag = .true. call mpi_finalized( flag, ierr ) if (flag) then errs = errs + 1 print *, 'Returned true for finalized before init' endif flag = .true. call mpi_initialized( flag, ierr ) if (flag) then errs = errs + 1 print *, 'Return true for initialized before init' endif provided = -1 call mpi_init_thread( MPI_THREAD_MULTIPLE, provided, ierr ) if (provided .ne. MPI_THREAD_MULTIPLE .and. & & provided .ne. MPI_THREAD_SERIALIZED .and. & & provided .ne. MPI_THREAD_FUNNELED .and. & & provided .ne. MPI_THREAD_SINGLE) then errs = errs + 1 print *, ' Unrecognized value for provided = ', provided endif iv = -1 isubv = -1 call mpi_get_version( iv, isubv, ierr ) if (iv .ne. MPI_VERSION .or. isubv .ne. MPI_SUBVERSION) then errs = errs + 1 print *, 'Version in mpif.h and get_version do not agree' print *, 'Version in mpif.h is ', MPI_VERSION, '.', & & MPI_SUBVERSION print *, 'Version in get_version is ', iv, '.', isubv endif if (iv .lt. 1 .or. iv .gt. 3) then errs = errs + 1 print *, 'Version of MPI is invalid (=', iv, ')' endif if (isubv.lt.0 .or. isubv.gt.2) then errs = errs + 1 print *, 'Subversion of MPI is invalid (=', isubv, ')' endif call mpi_comm_rank( MPI_COMM_WORLD, rank, ierr ) call mpi_comm_size( MPI_COMM_WORLD, size, ierr ) flag = .false. call mpi_is_thread_main( flag, ierr ) if (.not.flag) then errs = errs + 1 print *, 'is_thread_main returned false for main thread' endif call mpi_query_thread( qprovided, ierr ) if (qprovided .ne. provided) then errs = errs + 1 print *,'query thread and init thread disagree on'// & & ' thread level' endif call mpi_finalize( ierr ) flag = .false. call mpi_finalized( flag, ierr ) if (.not. flag) then errs = errs + 1 print *, 'finalized returned false after finalize' endif if (rank .eq. 0) then if (errs .eq. 0) then print *, ' No Errors' else print *, ' Found ', errs, ' errors' endif endif end mpi-testsuite-3.2+dfsg/f08/info/0000755000175000017500000000000012621010233015677 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f08/info/testlist0000644000175000017500000000003512620254305017504 0ustar mbanckmbanckinfotestf90 1 infotest2f90 1 mpi-testsuite-3.2+dfsg/f08/info/Makefile.in0000644000175000017500000004512212621010233017750 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = infotestf90$(EXEEXT) infotest2f90$(EXEEXT) subdir = f08/info ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) infotest2f90_SOURCES = infotest2f90.f90 infotest2f90_OBJECTS = infotest2f90.$(OBJEXT) infotest2f90_LDADD = $(LDADD) infotest2f90_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o infotestf90_SOURCES = infotestf90.f90 infotestf90_OBJECTS = infotestf90.$(OBJEXT) infotestf90_LDADD = $(LDADD) infotestf90_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = SOURCES = infotest2f90.f90 infotestf90.f90 DIST_SOURCES = infotest2f90.f90 infotestf90.f90 am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_f08.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F08 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f08/util/mtestf08.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 all: all-am .SUFFIXES: .SUFFIXES: .f90 .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f08.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f08/info/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f08/info/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f08.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) infotest2f90$(EXEEXT): $(infotest2f90_OBJECTS) $(infotest2f90_DEPENDENCIES) $(EXTRA_infotest2f90_DEPENDENCIES) @rm -f infotest2f90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(infotest2f90_OBJECTS) $(infotest2f90_LDADD) $(LIBS) infotestf90$(EXEEXT): $(infotestf90_OBJECTS) $(infotestf90_DEPENDENCIES) $(EXTRA_infotestf90_DEPENDENCIES) @rm -f infotestf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(infotestf90_OBJECTS) $(infotestf90_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f08/util/mtestf08.o: $(top_srcdir)/f08/util/mtestf08.f90 (cd $(top_builddir)/f08/util && $(MAKE) mtestf08.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f08/info/Makefile.am0000644000175000017500000000052412620254305017745 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f08.mtest EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 noinst_PROGRAMS = infotestf90 infotest2f90 mpi-testsuite-3.2+dfsg/f08/info/infotest2f90.f900000644000175000017500000001134212620254305020465 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer ierr, errs type(MPI_Info) i1, i2 integer nkeys, i, j, sumindex, vlen, ln, valuelen logical found, flag character*(MPI_MAX_INFO_KEY) keys(6) character*(MPI_MAX_INFO_VAL) values(6) character*(MPI_MAX_INFO_KEY) mykey character*(MPI_MAX_INFO_VAL) myvalue ! data keys/"Key1", "key2", "KeY3", "A Key With Blanks","See Below", & & "last"/ data values/"value 1", "value 2", "VaLue 3", "key=valu:3","false", & & "no test"/ ! errs = 0 call mtest_init( ierr ) ! Note that the MPI standard requires that leading an trailing blanks ! are stripped from keys and values (Section 4.10, The Info Object) ! ! First, create and initialize an info call mpi_info_create( i1, ierr ) call mpi_info_set( i1, keys(1), values(1), ierr ) call mpi_info_set( i1, keys(2), values(2), ierr ) call mpi_info_set( i1, keys(3), values(3), ierr ) call mpi_info_set( i1, keys(4), values(4), ierr ) call mpi_info_set( i1, " See Below", values(5), ierr ) call mpi_info_set( i1, keys(6), " no test ", ierr ) ! call mpi_info_get_nkeys( i1, nkeys, ierr ) if (nkeys .ne. 6) then print *, ' Number of keys should be 6, is ', nkeys endif sumindex = 0 do i=1, nkeys ! keys are number from 0 to n-1, even in Fortran (Section 4.10) call mpi_info_get_nthkey( i1, i-1, mykey, ierr ) found = .false. do j=1, 6 if (mykey .eq. keys(j)) then found = .true. sumindex = sumindex + j call mpi_info_get_valuelen( i1, mykey, vlen, flag, ierr ) if (.not.flag) then errs = errs + 1 print *, ' no value for key', mykey else call mpi_info_get( i1, mykey, MPI_MAX_INFO_VAL, & & myvalue, flag, ierr ) if (myvalue .ne. values(j)) then errs = errs + 1 print *, ' Value for ', mykey, ' not expected' else do ln=MPI_MAX_INFO_VAL,1,-1 if (myvalue(ln:ln) .ne. ' ') then if (vlen .ne. ln) then errs = errs + 1 print *, ' length is ', ln, & & ' but valuelen gave ', vlen, & & ' for key ', mykey endif goto 100 endif enddo 100 continue endif endif endif enddo if (.not.found) then print *, i, 'th key ', mykey, ' not in list' endif enddo if (sumindex .ne. 21) then errs = errs + 1 print *, ' Not all keys found' endif ! ! delete 2, then dup, then delete 2 more call mpi_info_delete( i1, keys(1), ierr ) call mpi_info_delete( i1, keys(2), ierr ) call mpi_info_dup( i1, i2, ierr ) call mpi_info_delete( i1, keys(3), ierr ) ! ! check the contents of i2 ! valuelen does not signal an error for unknown keys; instead, sets ! flag to false do i=1,2 flag = .true. call mpi_info_get_valuelen( i2, keys(i), valuelen, flag, ierr ) if (flag) then errs = errs + 1 print *, ' Found unexpected key ', keys(i) endif myvalue = 'A test' call mpi_info_get( i2, keys(i), MPI_MAX_INFO_VAL, & & myvalue, flag, ierr ) if (flag) then errs = errs + 1 print *, ' Found unexpected key in MPI_Info_get ', keys(i) else if (myvalue .ne. 'A test') then errs = errs + 1 print *, ' Returned value overwritten, is now ', myvalue endif endif enddo do i=3,6 myvalue = ' ' call mpi_info_get( i2, keys(i), MPI_MAX_INFO_VAL, & & myvalue, flag, ierr ) if (.not. flag) then errs = errs + 1 print *, ' Did not find key ', keys(i) else if (myvalue .ne. values(i)) then errs = errs + 1 print *, ' Found wrong value (', myvalue, ') for key ', & & keys(i) endif endif enddo ! ! Free info call mpi_info_free( i1, ierr ) call mpi_info_free( i2, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/info/infotestf90.f900000644000175000017500000000276012620254305020407 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! Simple info test program main use mpi_f08 type(MPI_Info) i1, i2 integer i, errs, ierr integer valuelen parameter (valuelen=64) character*(valuelen) value logical flag ! errs = 0 call MTest_Init( ierr ) call mpi_info_create( i1, ierr ) call mpi_info_create( i2, ierr ) call mpi_info_set( i1, "key1", "value1", ierr ) call mpi_info_set( i2, "key2", "value2", ierr ) call mpi_info_get( i1, "key2", valuelen, value, flag, ierr ) if (flag) then print *, "Found key2 in info1" errs = errs + 1 endif call MPI_Info_get( i1, "key1", 64, value, flag, ierr ) if (.not. flag ) then print *, "Did not find key1 in info1" errs = errs + 1 else if (value .ne. "value1") then print *, "Found wrong value (", value, "), expected value1" errs = errs + 1 else ! check for trailing blanks do i=7,valuelen if (value(i:i) .ne. " ") then print *, "Found non blank in info value" errs = errs + 1 endif enddo endif endif call mpi_info_free( i1, ierr ) call mpi_info_free( i2, ierr ) call MTest_Finalize( errs ) call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/datatype/0000755000175000017500000000000012621010233016557 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f08/datatype/typem2f08.f900000644000175000017500000001314012620254305020645 0ustar mbanckmbanck! This file created from test/mpi/f77/datatype/typem2f.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer errs, ierr, i, intsize TYPE(MPI_Datatype) type1, type2, type3, type4, type5 integer max_asizev parameter (max_asizev = 10) integer (kind=MPI_ADDRESS_KIND) aint, aintv(max_asizev) integer blocklens(max_asizev) TYPE(MPI_Datatype) dtypes(max_asizev) integer displs(max_asizev) integer recvbuf(6*max_asizev) integer sendbuf(max_asizev) TYPE(MPI_Status) status integer rank, size errs = 0 call mtest_init( ierr ) call mpi_comm_size( MPI_COMM_WORLD, size, ierr ) call mpi_comm_rank( MPI_COMM_WORLD, rank, ierr ) ! call mpi_type_size( MPI_INTEGER, intsize, ierr ) ! aintv(1) = 0 aintv(2) = 3 * intsize call mpi_type_create_resized( MPI_INTEGER, aintv(1), aintv(2), & & type1, ierr ) call mpi_type_commit( type1, ierr ) aintv(1) = -1 aintv(2) = -1 call mpi_type_get_extent( type1, aintv(1), aintv(2), ierr ) if (aintv(1) .ne. 0) then errs = errs + 1 print *, 'Did not get expected lb' endif if (aintv(2) .ne. 3*intsize) then errs = errs + 1 print *, 'Did not get expected extent' endif aintv(1) = -1 aintv(2) = -1 call mpi_type_get_true_extent( type1, aintv(1), aintv(2), ierr ) if (aintv(1) .ne. 0) then errs = errs + 1 print *, 'Did not get expected true lb' endif if (aintv(2) .ne. intsize) then errs = errs + 1 print *, 'Did not get expected true extent (', aintv(2), ') ', & & ' expected ', intsize endif ! do i=1,10 blocklens(i) = 1 aintv(i) = (i-1) * 3 * intsize enddo call mpi_type_create_hindexed( 10, blocklens, aintv, & & MPI_INTEGER, type2, ierr ) call mpi_type_commit( type2, ierr ) ! aint = 3 * intsize call mpi_type_create_hvector( 10, 1, aint, MPI_INTEGER, type3, & & ierr ) call mpi_type_commit( type3, ierr ) ! do i=1,10 blocklens(i) = 1 dtypes(i) = MPI_INTEGER aintv(i) = (i-1) * 3 * intsize enddo call mpi_type_create_struct( 10, blocklens, aintv, dtypes, & & type4, ierr ) call mpi_type_commit( type4, ierr ) do i=1,10 displs(i) = (i-1) * 3 enddo call mpi_type_create_indexed_block( 10, 1, displs, & & MPI_INTEGER, type5, ierr ) call mpi_type_commit( type5, ierr ) ! ! Using each time, send and receive using these types do i=1, max_asizev*3 recvbuf(i) = -1 enddo do i=1, max_asizev sendbuf(i) = i enddo call mpi_sendrecv( sendbuf, max_asizev, MPI_INTEGER, rank, 0, & & recvbuf, max_asizev, type1, rank, 0, & & MPI_COMM_WORLD, status, ierr ) do i=1, max_asizev if (recvbuf(1+(i-1)*3) .ne. i ) then errs = errs + 1 print *, 'type1:', i, 'th element = ', recvbuf(1+(i-1)*3) endif enddo ! do i=1, max_asizev*3 recvbuf(i) = -1 enddo do i=1, max_asizev sendbuf(i) = i enddo call mpi_sendrecv( sendbuf, max_asizev, MPI_INTEGER, rank, 0, & & recvbuf, 1, type2, rank, 0, & & MPI_COMM_WORLD, status, ierr ) do i=1, max_asizev if (recvbuf(1+(i-1)*3) .ne. i ) then errs = errs + 1 print *, 'type2:', i, 'th element = ', recvbuf(1+(i-1)*3) endif enddo ! do i=1, max_asizev*3 recvbuf(i) = -1 enddo do i=1, max_asizev sendbuf(i) = i enddo call mpi_sendrecv( sendbuf, max_asizev, MPI_INTEGER, rank, 0, & & recvbuf, 1, type3, rank, 0, & & MPI_COMM_WORLD, status, ierr ) do i=1, max_asizev if (recvbuf(1+(i-1)*3) .ne. i ) then errs = errs + 1 print *, 'type3:', i, 'th element = ', recvbuf(1+(i-1)*3) endif enddo ! do i=1, max_asizev*3 recvbuf(i) = -1 enddo do i=1, max_asizev sendbuf(i) = i enddo call mpi_sendrecv( sendbuf, max_asizev, MPI_INTEGER, rank, 0, & & recvbuf, 1, type4, rank, 0, & & MPI_COMM_WORLD, status, ierr ) do i=1, max_asizev if (recvbuf(1+(i-1)*3) .ne. i ) then errs = errs + 1 print *, 'type4:', i, 'th element = ', recvbuf(1+(i-1)*3) endif enddo ! do i=1, max_asizev*3 recvbuf(i) = -1 enddo do i=1, max_asizev sendbuf(i) = i enddo call mpi_sendrecv( sendbuf, max_asizev, MPI_INTEGER, rank, 0, & & recvbuf, 1, type5, rank, 0, & & MPI_COMM_WORLD, status, ierr ) do i=1, max_asizev if (recvbuf(1+(i-1)*3) .ne. i ) then errs = errs + 1 print *, 'type5:', i, 'th element = ', recvbuf(1+(i-1)*3) endif enddo ! call mpi_type_free( type1, ierr ) call mpi_type_free( type2, ierr ) call mpi_type_free( type3, ierr ) call mpi_type_free( type4, ierr ) call mpi_type_free( type5, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/datatype/typename3f08.f900000644000175000017500000000231712620254305021336 0ustar mbanckmbanck! This file created from test/mpi/f77/datatype/typename3f.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! ! (C) 2012 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 character*(MPI_MAX_OBJECT_NAME) name integer namelen integer ierr, errs errs = 0 call mtest_init( ierr ) ! ! Check each Fortran datatype, including the size-specific ones ! See the C version (typename.c) for the relevant MPI sections call MPI_Type_get_name( MPI_AINT, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_AINT") then errs = errs + 1 print *, "Expected MPI_AINT but got "//name(1:namelen) endif call MPI_Type_get_name( MPI_OFFSET, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_OFFSET") then errs = errs + 1 print *, "Expected MPI_OFFSET but got "//name(1:namelen) endif call MPI_Type_get_name( MPI_COUNT, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_COUNT") then errs = errs + 1 print *, "Expected MPI_COUNT but got "//name(1:namelen) endif call mtest_finalize( errs ) call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/datatype/createf08.f900000644000175000017500000000444712620254305020702 0ustar mbanckmbanck! ! (C) 2004 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer ierr integer errs integer nints, nadds, ndtypes, combiner integer nparms(2) TYPE(MPI_Datatype) dummy(1) integer (kind=MPI_ADDRESS_KIND) adummy(1) integer nsize, i TYPE(MPI_Datatype) ntype1, ntype2, ntype3 ! ! Test the Type_create_f90_xxx routines ! errs = 0 call mtest_init( ierr ) ! integers with upto 9 are 4 bytes integers; r of 4 are 2 byte, ! and r of 2 is 1 byte call mpi_type_create_f90_integer( 9, ntype1, ierr ) ! ! Check with get contents and envelope... call mpi_type_get_envelope( ntype1, nints, nadds, ndtypes, & combiner, ierr ) if (nadds .ne. 0) then errs = errs + 1 print *, "There should be no addresses on created type (r=9)" endif if (ndtypes .ne. 0) then errs = errs + 1 print *, "There should be no datatypes on created type (r=9)" endif if (nints .ne. 1) then errs = errs + 1 print *, "There should be exactly 1 integer on create type (r=9)" endif if (combiner .ne. MPI_COMBINER_F90_INTEGER) then errs = errs + 1 print *, "The combiner should be INTEGER, not ", combiner endif if (nints .eq. 1) then call mpi_type_get_contents( ntype1, 1, 0, 0, & nparms, adummy, dummy, ierr ) if (nparms(1) .ne. 9) then errs = errs + 1 print *, "parameter was ", nparms(1), " should be 9" endif endif call mpi_type_create_f90_integer( 8, ntype2, ierr ) if (ntype1 .eq. ntype2) then errs = errs + 1 print *, "Types with r = 8 and r = 9 are the same, ", & "should be distinct" endif ! ! Check that we don't create new types each time. This test will fail only ! if the MPI implementation checks for un-freed types or runs out of space do i=1, 100000 call mpi_type_create_f90_integer( 8, ntype3, ierr ) enddo call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/datatype/packef08.f900000644000175000017500000001534312620254305020517 0ustar mbanckmbanck! This file created from test/mpi/f77/datatype/packef.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer ierr, errs integer inbuf(10), ioutbuf(10), inbuf2(10), ioutbuf2(10) integer i, insize, rsize, csize, insize2 character*(16) cbuf, coutbuf double precision rbuf(10), routbuf(10) integer packbuf(1000), pbufsize, intsize integer max_asizev parameter (max_asizev = 3) integer (kind=MPI_ADDRESS_KIND) aint, aintv(max_asizev) errs = 0 call mtest_init( ierr ) call mpi_type_size( MPI_INTEGER, intsize, ierr ) pbufsize = 1000 * intsize call mpi_pack_external_size( 'external32', 10, MPI_INTEGER, & & aint, ierr ) if (aint .ne. 10 * 4) then errs = errs + 1 print *, 'Expected 40 for size of 10 external32 integers', & & ', got ', aint endif call mpi_pack_external_size( 'external32', 10, MPI_LOGICAL, & & aint, ierr ) if (aint .ne. 10 * 4) then errs = errs + 1 print *, 'Expected 40 for size of 10 external32 logicals', & & ', got ', aint endif call mpi_pack_external_size( 'external32', 10, MPI_CHARACTER, & & aint, ierr ) if (aint .ne. 10 * 1) then errs = errs + 1 print *, 'Expected 10 for size of 10 external32 characters', & & ', got ', aint endif call mpi_pack_external_size( 'external32', 3, MPI_INTEGER2, & & aint, ierr ) if (aint .ne. 3 * 2) then errs = errs + 1 print *, 'Expected 6 for size of 3 external32 INTEGER*2', & & ', got ', aint endif call mpi_pack_external_size( 'external32', 3, MPI_INTEGER4, & & aint, ierr ) if (aint .ne. 3 * 4) then errs = errs + 1 print *, 'Expected 12 for size of 3 external32 INTEGER*4', & & ', got ', aint endif call mpi_pack_external_size( 'external32', 3, MPI_REAL4, & & aint, ierr ) if (aint .ne. 3 * 4) then errs = errs + 1 print *, 'Expected 12 for size of 3 external32 REAL*4', & & ', got ', aint endif call mpi_pack_external_size( 'external32', 3, MPI_REAL8, & & aint, ierr ) if (aint .ne. 3 * 8) then errs = errs + 1 print *, 'Expected 24 for size of 3 external32 REAL*8', & & ', got ', aint endif if (MPI_INTEGER1 .ne. MPI_DATATYPE_NULL) then call mpi_pack_external_size( 'external32', 3, MPI_INTEGER1, & & aint, ierr ) if (aint .ne. 3 * 1) then errs = errs + 1 print *, 'Expected 3 for size of 3 external32 INTEGER*1', & & ', got ', aint endif endif if (MPI_INTEGER8 .ne. MPI_DATATYPE_NULL) then call mpi_pack_external_size( 'external32', 3, MPI_INTEGER8, & & aint, ierr ) if (aint .ne. 3 * 8) then errs = errs + 1 print *, 'Expected 24 for size of 3 external32 INTEGER*8', & & ', got ', aint endif endif ! ! Initialize values ! insize = 10 do i=1, insize inbuf(i) = i enddo rsize = 3 do i=1, rsize rbuf(i) = 1000.0 * i enddo cbuf = 'This is a string' csize = 16 insize2 = 7 do i=1, insize2 inbuf2(i) = 5000-i enddo ! aintv(1) = pbufsize aintv(2) = 0 aintv(3) = 0 ! One MPI implementation failed to increment the position; instead, ! it set the value with the amount of data packed in this call ! We use aintv(3) to detect and report this specific error call mpi_pack_external( 'external32', inbuf, insize, MPI_INTEGER, & & packbuf, aintv(1), aintv(2), ierr ) if (aintv(2) .le. aintv(3)) then print *, ' Position decreased after pack of integer!' endif aintv(3) = aintv(2) call mpi_pack_external( 'external32', rbuf, rsize, & & MPI_DOUBLE_PRECISION, packbuf, aintv(1), & & aintv(2), ierr ) if (aintv(2) .le. aintv(3)) then print *, ' Position decreased after pack of real!' endif aintv(3) = aintv(2) call mpi_pack_external( 'external32', cbuf, csize, & & MPI_CHARACTER, packbuf, aintv(1), & & aintv(2), ierr ) if (aintv(2) .le. aintv(3)) then print *, ' Position decreased after pack of character!' endif aintv(3) = aintv(2) call mpi_pack_external( 'external32', inbuf2, insize2, & & MPI_INTEGER, & & packbuf, aintv(1), aintv(2), ierr ) if (aintv(2) .le. aintv(3)) then print *, ' Position decreased after pack of integer (2nd)!' endif aintv(3) = aintv(2) ! ! We could try sending this with MPI_BYTE... aintv(2) = 0 call mpi_unpack_external( 'external32', packbuf, aintv(1), & & aintv(2), ioutbuf, insize, MPI_INTEGER, ierr ) call mpi_unpack_external( 'external32', packbuf, aintv(1), & & aintv(2), routbuf, rsize, MPI_DOUBLE_PRECISION, ierr ) call mpi_unpack_external( 'external32', packbuf, aintv(1), & & aintv(2), coutbuf, csize, MPI_CHARACTER, ierr ) call mpi_unpack_external( 'external32', packbuf, aintv(1), & & aintv(2), ioutbuf2, insize2, MPI_INTEGER, ierr ) ! ! Now, test the values ! do i=1, insize if (ioutbuf(i) .ne. i) then errs = errs + 1 print *, 'ioutbuf(',i,') = ', ioutbuf(i), ' expected ', i endif enddo do i=1, rsize if (routbuf(i) .ne. 1000.0 * i) then errs = errs + 1 print *, 'routbuf(',i,') = ', routbuf(i), ' expected ', & & 1000.0 * i endif enddo if (coutbuf(1:csize) .ne. 'This is a string') then errs = errs + 1 print *, 'coutbuf = ', coutbuf(1:csize), ' expected ', & & 'This is a string' endif do i=1, insize2 if (ioutbuf2(i) .ne. 5000-i) then errs = errs + 1 print *, 'ioutbuf2(',i,') = ', ioutbuf2(i), ' expected ', & & 5000-i endif enddo ! call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/datatype/testlist0000644000175000017500000000043412620254305020367 0ustar mbanckmbancktypenamef08 1 typename3f08 1 mpiversion=3.0 typesnamef08 1 typecntsf08 1 typem2f08 1 typesubf08 1 packef08 1 gaddressf08 1 allctypesf08 1 hindex1f08 1 hindexed_blockf08 1 mpiversion=3.0 structf 2 indtype 2 createf08 1 sizeof 1 kinds 2 mpiversion=2.2 trf08 1 get_elem_d 2 get_elem_u 2 mpi-testsuite-3.2+dfsg/f08/datatype/Makefile.in0000644000175000017500000006316412621010233020636 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This Makefile.am generated automatically by f77tof90 # from test/mpi/f77/datatype/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = typenamef08$(EXEEXT) typesnamef08$(EXEEXT) \ typecntsf08$(EXEEXT) typesubf08$(EXEEXT) typem2f08$(EXEEXT) \ gaddressf08$(EXEEXT) packef08$(EXEEXT) allctypesf08$(EXEEXT) \ hindex1f08$(EXEEXT) hindexed_blockf08$(EXEEXT) \ typename3f08$(EXEEXT) structf$(EXEEXT) indtype$(EXEEXT) \ createf08$(EXEEXT) sizeof$(EXEEXT) kinds$(EXEEXT) \ trf08$(EXEEXT) get_elem_d$(EXEEXT) get_elem_u$(EXEEXT) subdir = f08/datatype ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) allctypesf08_SOURCES = allctypesf08.f90 allctypesf08_OBJECTS = allctypesf08.$(OBJEXT) allctypesf08_LDADD = $(LDADD) allctypesf08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o createf08_SOURCES = createf08.f90 createf08_OBJECTS = createf08.$(OBJEXT) createf08_LDADD = $(LDADD) createf08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o gaddressf08_SOURCES = gaddressf08.f90 gaddressf08_OBJECTS = gaddressf08.$(OBJEXT) gaddressf08_LDADD = $(LDADD) gaddressf08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o get_elem_d_SOURCES = get_elem_d.f90 get_elem_d_OBJECTS = get_elem_d.$(OBJEXT) get_elem_d_LDADD = $(LDADD) get_elem_d_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o get_elem_u_SOURCES = get_elem_u.f90 get_elem_u_OBJECTS = get_elem_u.$(OBJEXT) get_elem_u_LDADD = $(LDADD) get_elem_u_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o hindex1f08_SOURCES = hindex1f08.f90 hindex1f08_OBJECTS = hindex1f08.$(OBJEXT) hindex1f08_LDADD = $(LDADD) hindex1f08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o hindexed_blockf08_SOURCES = hindexed_blockf08.f90 hindexed_blockf08_OBJECTS = hindexed_blockf08.$(OBJEXT) hindexed_blockf08_LDADD = $(LDADD) hindexed_blockf08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o indtype_SOURCES = indtype.f90 indtype_OBJECTS = indtype.$(OBJEXT) indtype_LDADD = $(LDADD) indtype_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o kinds_SOURCES = kinds.f90 kinds_OBJECTS = kinds.$(OBJEXT) kinds_LDADD = $(LDADD) kinds_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o packef08_SOURCES = packef08.f90 packef08_OBJECTS = packef08.$(OBJEXT) packef08_LDADD = $(LDADD) packef08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o sizeof_SOURCES = sizeof.f90 sizeof_OBJECTS = sizeof.$(OBJEXT) sizeof_LDADD = $(LDADD) sizeof_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o structf_SOURCES = structf.f90 structf_OBJECTS = structf.$(OBJEXT) structf_LDADD = $(LDADD) structf_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o trf08_SOURCES = trf08.f90 trf08_OBJECTS = trf08.$(OBJEXT) trf08_LDADD = $(LDADD) trf08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o typecntsf08_SOURCES = typecntsf08.f90 typecntsf08_OBJECTS = typecntsf08.$(OBJEXT) typecntsf08_LDADD = $(LDADD) typecntsf08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o typem2f08_SOURCES = typem2f08.f90 typem2f08_OBJECTS = typem2f08.$(OBJEXT) typem2f08_LDADD = $(LDADD) typem2f08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o typename3f08_SOURCES = typename3f08.f90 typename3f08_OBJECTS = typename3f08.$(OBJEXT) typename3f08_LDADD = $(LDADD) typename3f08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o typenamef08_SOURCES = typenamef08.f90 typenamef08_OBJECTS = typenamef08.$(OBJEXT) typenamef08_LDADD = $(LDADD) typenamef08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o typesnamef08_SOURCES = typesnamef08.f90 typesnamef08_OBJECTS = typesnamef08.$(OBJEXT) typesnamef08_LDADD = $(LDADD) typesnamef08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o typesubf08_SOURCES = typesubf08.f90 typesubf08_OBJECTS = typesubf08.$(OBJEXT) typesubf08_LDADD = $(LDADD) typesubf08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = SOURCES = allctypesf08.f90 createf08.f90 gaddressf08.f90 \ get_elem_d.f90 get_elem_u.f90 hindex1f08.f90 \ hindexed_blockf08.f90 indtype.f90 kinds.f90 packef08.f90 \ sizeof.f90 structf.f90 trf08.f90 typecntsf08.f90 typem2f08.f90 \ typename3f08.f90 typenamef08.f90 typesnamef08.f90 \ typesubf08.f90 DIST_SOURCES = allctypesf08.f90 createf08.f90 gaddressf08.f90 \ get_elem_d.f90 get_elem_u.f90 hindex1f08.f90 \ hindexed_blockf08.f90 indtype.f90 kinds.f90 packef08.f90 \ sizeof.f90 structf.f90 trf08.f90 typecntsf08.f90 typem2f08.f90 \ typename3f08.f90 typenamef08.f90 typesnamef08.f90 \ typesubf08.f90 am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_f08.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F08 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f08/util/mtestf08.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 all: all-am .SUFFIXES: .SUFFIXES: .f90 .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f08.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f08/datatype/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f08/datatype/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f08.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) allctypesf08$(EXEEXT): $(allctypesf08_OBJECTS) $(allctypesf08_DEPENDENCIES) $(EXTRA_allctypesf08_DEPENDENCIES) @rm -f allctypesf08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(allctypesf08_OBJECTS) $(allctypesf08_LDADD) $(LIBS) createf08$(EXEEXT): $(createf08_OBJECTS) $(createf08_DEPENDENCIES) $(EXTRA_createf08_DEPENDENCIES) @rm -f createf08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(createf08_OBJECTS) $(createf08_LDADD) $(LIBS) gaddressf08$(EXEEXT): $(gaddressf08_OBJECTS) $(gaddressf08_DEPENDENCIES) $(EXTRA_gaddressf08_DEPENDENCIES) @rm -f gaddressf08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(gaddressf08_OBJECTS) $(gaddressf08_LDADD) $(LIBS) get_elem_d$(EXEEXT): $(get_elem_d_OBJECTS) $(get_elem_d_DEPENDENCIES) $(EXTRA_get_elem_d_DEPENDENCIES) @rm -f get_elem_d$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(get_elem_d_OBJECTS) $(get_elem_d_LDADD) $(LIBS) get_elem_u$(EXEEXT): $(get_elem_u_OBJECTS) $(get_elem_u_DEPENDENCIES) $(EXTRA_get_elem_u_DEPENDENCIES) @rm -f get_elem_u$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(get_elem_u_OBJECTS) $(get_elem_u_LDADD) $(LIBS) hindex1f08$(EXEEXT): $(hindex1f08_OBJECTS) $(hindex1f08_DEPENDENCIES) $(EXTRA_hindex1f08_DEPENDENCIES) @rm -f hindex1f08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(hindex1f08_OBJECTS) $(hindex1f08_LDADD) $(LIBS) hindexed_blockf08$(EXEEXT): $(hindexed_blockf08_OBJECTS) $(hindexed_blockf08_DEPENDENCIES) $(EXTRA_hindexed_blockf08_DEPENDENCIES) @rm -f hindexed_blockf08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(hindexed_blockf08_OBJECTS) $(hindexed_blockf08_LDADD) $(LIBS) indtype$(EXEEXT): $(indtype_OBJECTS) $(indtype_DEPENDENCIES) $(EXTRA_indtype_DEPENDENCIES) @rm -f indtype$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(indtype_OBJECTS) $(indtype_LDADD) $(LIBS) kinds$(EXEEXT): $(kinds_OBJECTS) $(kinds_DEPENDENCIES) $(EXTRA_kinds_DEPENDENCIES) @rm -f kinds$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(kinds_OBJECTS) $(kinds_LDADD) $(LIBS) packef08$(EXEEXT): $(packef08_OBJECTS) $(packef08_DEPENDENCIES) $(EXTRA_packef08_DEPENDENCIES) @rm -f packef08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(packef08_OBJECTS) $(packef08_LDADD) $(LIBS) sizeof$(EXEEXT): $(sizeof_OBJECTS) $(sizeof_DEPENDENCIES) $(EXTRA_sizeof_DEPENDENCIES) @rm -f sizeof$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(sizeof_OBJECTS) $(sizeof_LDADD) $(LIBS) structf$(EXEEXT): $(structf_OBJECTS) $(structf_DEPENDENCIES) $(EXTRA_structf_DEPENDENCIES) @rm -f structf$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(structf_OBJECTS) $(structf_LDADD) $(LIBS) trf08$(EXEEXT): $(trf08_OBJECTS) $(trf08_DEPENDENCIES) $(EXTRA_trf08_DEPENDENCIES) @rm -f trf08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(trf08_OBJECTS) $(trf08_LDADD) $(LIBS) typecntsf08$(EXEEXT): $(typecntsf08_OBJECTS) $(typecntsf08_DEPENDENCIES) $(EXTRA_typecntsf08_DEPENDENCIES) @rm -f typecntsf08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(typecntsf08_OBJECTS) $(typecntsf08_LDADD) $(LIBS) typem2f08$(EXEEXT): $(typem2f08_OBJECTS) $(typem2f08_DEPENDENCIES) $(EXTRA_typem2f08_DEPENDENCIES) @rm -f typem2f08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(typem2f08_OBJECTS) $(typem2f08_LDADD) $(LIBS) typename3f08$(EXEEXT): $(typename3f08_OBJECTS) $(typename3f08_DEPENDENCIES) $(EXTRA_typename3f08_DEPENDENCIES) @rm -f typename3f08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(typename3f08_OBJECTS) $(typename3f08_LDADD) $(LIBS) typenamef08$(EXEEXT): $(typenamef08_OBJECTS) $(typenamef08_DEPENDENCIES) $(EXTRA_typenamef08_DEPENDENCIES) @rm -f typenamef08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(typenamef08_OBJECTS) $(typenamef08_LDADD) $(LIBS) typesnamef08$(EXEEXT): $(typesnamef08_OBJECTS) $(typesnamef08_DEPENDENCIES) $(EXTRA_typesnamef08_DEPENDENCIES) @rm -f typesnamef08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(typesnamef08_OBJECTS) $(typesnamef08_LDADD) $(LIBS) typesubf08$(EXEEXT): $(typesubf08_OBJECTS) $(typesubf08_DEPENDENCIES) $(EXTRA_typesubf08_DEPENDENCIES) @rm -f typesubf08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(typesubf08_OBJECTS) $(typesubf08_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f08/util/mtestf08.o: $(top_srcdir)/f08/util/mtestf08.f90 (cd $(top_builddir)/f08/util && $(MAKE) mtestf08.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f08/datatype/allctypesf08.f900000644000175000017500000001304412620254305021430 0ustar mbanckmbanck! This file created from test/mpi/f77/datatype/allctypesf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2004 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer atype, ierr ! call mtest_init(ierr) call mpi_comm_set_errhandler( MPI_COMM_WORLD, MPI_ERRORS_RETURN, & & ierr ) ! ! Check that all Ctypes are available in Fortran (MPI 2.1, p 483, line 46) ! call checkdtype( MPI_CHAR, "MPI_CHAR", ierr ) call checkdtype( MPI_SIGNED_CHAR, "MPI_SIGNED_CHAR", ierr ) call checkdtype( MPI_UNSIGNED_CHAR, "MPI_UNSIGNED_CHAR", ierr ) call checkdtype( MPI_BYTE, "MPI_BYTE", ierr ) call checkdtype( MPI_WCHAR, "MPI_WCHAR", ierr ) call checkdtype( MPI_SHORT, "MPI_SHORT", ierr ) call checkdtype( MPI_UNSIGNED_SHORT, "MPI_UNSIGNED_SHORT", ierr ) call checkdtype( MPI_INT, "MPI_INT", ierr ) call checkdtype( MPI_UNSIGNED, "MPI_UNSIGNED", ierr ) call checkdtype( MPI_LONG, "MPI_LONG", ierr ) call checkdtype( MPI_UNSIGNED_LONG, "MPI_UNSIGNED_LONG", ierr ) call checkdtype( MPI_FLOAT, "MPI_FLOAT", ierr ) call checkdtype( MPI_DOUBLE, "MPI_DOUBLE", ierr ) if (MPI_LONG_DOUBLE .ne. MPI_DATATYPE_NULL) then call checkdtype( MPI_LONG_DOUBLE, "MPI_LONG_DOUBLE", ierr ) endif if (MPI_LONG_LONG_INT .ne. MPI_DATATYPE_NULL) then call checkdtype2( MPI_LONG_LONG_INT, "MPI_LONG_LONG_INT", & & "MPI_LONG_LONG", ierr ) endif if (MPI_UNSIGNED_LONG_LONG .ne. MPI_DATATYPE_NULL) then call checkdtype( MPI_UNSIGNED_LONG_LONG, & & "MPI_UNSIGNED_LONG_LONG", ierr ) endif if (MPI_LONG_LONG .ne. MPI_DATATYPE_NULL) then call checkdtype2( MPI_LONG_LONG, "MPI_LONG_LONG", & & "MPI_LONG_LONG_INT", ierr ) endif call checkdtype( MPI_PACKED, "MPI_PACKED", ierr ) call checkdtype( MPI_LB, "MPI_LB", ierr ) call checkdtype( MPI_UB, "MPI_UB", ierr ) call checkdtype( MPI_FLOAT_INT, "MPI_FLOAT_INT", ierr ) call checkdtype( MPI_DOUBLE_INT, "MPI_DOUBLE_INT", ierr ) call checkdtype( MPI_LONG_INT, "MPI_LONG_INT", ierr ) call checkdtype( MPI_SHORT_INT, "MPI_SHORT_INT", ierr ) call checkdtype( MPI_2INT, "MPI_2INT", ierr ) if (MPI_LONG_DOUBLE_INT .ne. MPI_DATATYPE_NULL) then call checkdtype( MPI_LONG_DOUBLE_INT, "MPI_LONG_DOUBLE_INT", & & ierr) endif ! ! Check that all Ctypes are available in Fortran (MPI 2.2) ! Note that because of implicit declarations in Fortran, this ! code should compile even with pre MPI 2.2 implementations. ! if (MPI_VERSION .gt. 2 .or. (MPI_VERSION .eq. 2 .and. & & MPI_SUBVERSION .ge. 2)) then call checkdtype( MPI_INT8_T, "MPI_INT8_T", ierr ) call checkdtype( MPI_INT16_T, "MPI_INT16_T", ierr ) call checkdtype( MPI_INT32_T, "MPI_INT32_T", ierr ) call checkdtype( MPI_INT64_T, "MPI_INT64_T", ierr ) call checkdtype( MPI_UINT8_T, "MPI_UINT8_T", ierr ) call checkdtype( MPI_UINT16_T, "MPI_UINT16_T", ierr ) call checkdtype( MPI_UINT32_T, "MPI_UINT32_T", ierr ) call checkdtype( MPI_UINT64_T, "MPI_UINT64_T", ierr ) ! other C99 types call checkdtype( MPI_C_BOOL, "MPI_C_BOOL", ierr ) call checkdtype( MPI_C_FLOAT_COMPLEX, "MPI_C_FLOAT_COMPLEX", & & ierr) call checkdtype2( MPI_C_COMPLEX, "MPI_C_COMPLEX", & & "MPI_C_FLOAT_COMPLEX", ierr ) call checkdtype( MPI_C_DOUBLE_COMPLEX, "MPI_C_DOUBLE_COMPLEX", & & ierr ) if (MPI_C_LONG_DOUBLE_COMPLEX .ne. MPI_DATATYPE_NULL) then call checkdtype( MPI_C_LONG_DOUBLE_COMPLEX, & & "MPI_C_LONG_DOUBLE_COMPLEX", ierr ) endif ! address/offset types call checkdtype( MPI_AINT, "MPI_AINT", ierr ) call checkdtype( MPI_OFFSET, "MPI_OFFSET", ierr ) endif ! call mtest_finalize( ierr ) call MPI_Finalize( ierr ) end ! ! Check name of datatype subroutine CheckDtype( intype, name, ierr ) use mpi_f08 integer ierr TYPE(MPI_Datatype) intype character *(*) name integer ir, rlen character *(MPI_MAX_OBJECT_NAME) outname ! outname = "" call MPI_TYPE_GET_NAME( intype, outname, rlen, ir ) if (ir .ne. MPI_SUCCESS) then print *, " Datatype ", name, " not available in Fortran" ierr = ierr + 1 else if (outname .ne. name) then print *, " For datatype ", name, " found name ", & & outname(1:rlen) ierr = ierr + 1 endif endif return end ! ! Check name of datatype (allows alias) subroutine CheckDtype2( intype, name, name2, ierr ) use mpi_f08 integer ierr TYPE(MPI_Datatype) intype character *(*) name, name2 integer ir, rlen character *(MPI_MAX_OBJECT_NAME) outname ! outname = "" call MPI_TYPE_GET_NAME( intype, outname, rlen, ir ) if (ir .ne. MPI_SUCCESS) then print *, " Datatype ", name, " not available in Fortran" ierr = ierr + 1 else if (outname .ne. name .and. outname .ne. name2) then print *, " For datatype ", name, " found name ", & & outname(1:rlen) ierr = ierr + 1 endif endif return end mpi-testsuite-3.2+dfsg/f08/datatype/hindex1f08.f900000644000175000017500000000324312620254305020770 0ustar mbanckmbanck! This file created from test/mpi/f77/datatype/hindex1f.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! ! (C) 2011 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer errs, ierr, intsize integer i, displs(10), counts(10) TYPE(MPI_Datatype) dtype integer bufsize parameter (bufsize=100) integer inbuf(bufsize), outbuf(bufsize), packbuf(bufsize) integer position, len, psize ! ! Test for hindexed; ! errs = 0 call mtest_init( ierr ) call mpi_type_size( MPI_INTEGER, intsize, ierr ) do i=1, 10 displs(i) = (10-i)*intsize counts(i) = 1 enddo call mpi_type_hindexed( 10, counts, displs, MPI_INTEGER, dtype, & & ierr ) call mpi_type_commit( dtype, ierr ) ! call mpi_pack_size( 1, dtype, MPI_COMM_WORLD, psize, ierr ) if (psize .gt. bufsize*intsize) then errs = errs + 1 else do i=1,10 inbuf(i) = i outbuf(i) = -i enddo position = 0 call mpi_pack( inbuf, 1, dtype, packbuf, psize, position, & & MPI_COMM_WORLD, ierr ) ! len = position position = 0 call mpi_unpack( packbuf, len, position, outbuf, 10, & & MPI_INTEGER, MPI_COMM_WORLD, ierr ) ! do i=1, 10 if (outbuf(i) .ne. 11-i) then errs = errs + 1 print *, 'outbuf(',i,')=',outbuf(i),', expected ', 10-i endif enddo endif ! call mpi_type_free( dtype, ierr ) ! call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/datatype/hindexed_blockf08.f900000644000175000017500000001324212620254305022372 0ustar mbanckmbanck! This file created from test/mpi/f77/datatype/hindexed_blockf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer errs, ierr, i, intsize TYPE(MPI_Datatype) type1, type2, type3, type4, type5 integer max_asizev parameter (max_asizev = 10) integer (kind=MPI_ADDRESS_KIND) aint, aintv(max_asizev) integer blocklens(max_asizev) TYPE(MPI_Datatype) dtypes(max_asizev) integer displs(max_asizev) integer recvbuf(6*max_asizev) integer sendbuf(max_asizev) TYPE(MPI_Status) status integer rank, size errs = 0 call mtest_init( ierr ) call mpi_comm_size( MPI_COMM_WORLD, size, ierr ) call mpi_comm_rank( MPI_COMM_WORLD, rank, ierr ) ! call mpi_type_size( MPI_INTEGER, intsize, ierr ) ! aintv(1) = 0 aintv(2) = 3 * intsize call mpi_type_create_resized( MPI_INTEGER, aintv(1), aintv(2), & & type1, ierr ) call mpi_type_commit( type1, ierr ) aintv(1) = -1 aintv(2) = -1 call mpi_type_get_extent( type1, aintv(1), aintv(2), ierr ) if (aintv(1) .ne. 0) then errs = errs + 1 print *, 'Did not get expected lb' endif if (aintv(2) .ne. 3*intsize) then errs = errs + 1 print *, 'Did not get expected extent' endif aintv(1) = -1 aintv(2) = -1 call mpi_type_get_true_extent( type1, aintv(1), aintv(2), ierr ) if (aintv(1) .ne. 0) then errs = errs + 1 print *, 'Did not get expected true lb' endif if (aintv(2) .ne. intsize) then errs = errs + 1 print *, 'Did not get expected true extent (', aintv(2), ') ', & & ' expected ', intsize endif ! do i=1,10 blocklens(i) = 1 aintv(i) = (i-1) * 3 * intsize enddo call mpi_type_create_hindexed( 10, blocklens, aintv, & & MPI_INTEGER, type2, ierr ) call mpi_type_commit( type2, ierr ) ! aint = 3 * intsize call mpi_type_create_hvector( 10, 1, aint, MPI_INTEGER, type3, & & ierr ) call mpi_type_commit( type3, ierr ) ! do i=1,10 blocklens(i) = 1 dtypes(i) = MPI_INTEGER aintv(i) = (i-1) * 3 * intsize enddo call mpi_type_create_struct( 10, blocklens, aintv, dtypes, & & type4, ierr ) call mpi_type_commit( type4, ierr ) call mpi_type_get_extent(MPI_INTEGER, aintv(1), aint, ierr) do i=1,10 aintv(i) = (i-1) * 3 * aint enddo call mpi_type_create_hindexed_block( 10, 1, aintv, & & MPI_INTEGER, type5, ierr ) call mpi_type_commit( type5, ierr ) ! ! Using each time, send and receive using these types do i=1, max_asizev*3 recvbuf(i) = -1 enddo do i=1, max_asizev sendbuf(i) = i enddo call mpi_sendrecv( sendbuf, max_asizev, MPI_INTEGER, rank, 0, & & recvbuf, max_asizev, type1, rank, 0, & & MPI_COMM_WORLD, status, ierr ) do i=1, max_asizev if (recvbuf(1+(i-1)*3) .ne. i ) then errs = errs + 1 print *, 'type1:', i, 'th element = ', recvbuf(1+(i-1)*3) endif enddo ! do i=1, max_asizev*3 recvbuf(i) = -1 enddo do i=1, max_asizev sendbuf(i) = i enddo call mpi_sendrecv( sendbuf, max_asizev, MPI_INTEGER, rank, 0, & & recvbuf, 1, type2, rank, 0, & & MPI_COMM_WORLD, status, ierr ) do i=1, max_asizev if (recvbuf(1+(i-1)*3) .ne. i ) then errs = errs + 1 print *, 'type2:', i, 'th element = ', recvbuf(1+(i-1)*3) endif enddo ! do i=1, max_asizev*3 recvbuf(i) = -1 enddo do i=1, max_asizev sendbuf(i) = i enddo call mpi_sendrecv( sendbuf, max_asizev, MPI_INTEGER, rank, 0, & & recvbuf, 1, type3, rank, 0, & & MPI_COMM_WORLD, status, ierr ) do i=1, max_asizev if (recvbuf(1+(i-1)*3) .ne. i ) then errs = errs + 1 print *, 'type3:', i, 'th element = ', recvbuf(1+(i-1)*3) endif enddo ! do i=1, max_asizev*3 recvbuf(i) = -1 enddo do i=1, max_asizev sendbuf(i) = i enddo call mpi_sendrecv( sendbuf, max_asizev, MPI_INTEGER, rank, 0, & & recvbuf, 1, type4, rank, 0, & & MPI_COMM_WORLD, status, ierr ) do i=1, max_asizev if (recvbuf(1+(i-1)*3) .ne. i ) then errs = errs + 1 print *, 'type4:', i, 'th element = ', recvbuf(1+(i-1)*3) endif enddo ! do i=1, max_asizev*3 recvbuf(i) = -1 enddo do i=1, max_asizev sendbuf(i) = i enddo call mpi_sendrecv( sendbuf, max_asizev, MPI_INTEGER, rank, 0, & & recvbuf, 1, type5, rank, 0, & & MPI_COMM_WORLD, status, ierr ) do i=1, max_asizev if (recvbuf(1+(i-1)*3) .ne. i ) then errs = errs + 1 print *, 'type5:', i, 'th element = ', recvbuf(1+(i-1)*3) endif enddo ! call mpi_type_free( type1, ierr ) call mpi_type_free( type2, ierr ) call mpi_type_free( type3, ierr ) call mpi_type_free( type4, ierr ) call mpi_type_free( type5, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/datatype/structf.f900000644000175000017500000000630612620254305020607 0ustar mbanckmbanck! ! (C) 2004 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! Thanks to ! William R. Magro ! for this test ! ! It has been modifiedly slightly to work with the automated MPI ! tests. ! WDG. ! ! It was further modified to use MPI_Get_address instead of MPI_Address ! for MPICH, and to fit in the MPICH test harness - WDG ! program bustit use mpi_f08 implicit none TYPE(MPI_Comm) comm TYPE(MPI_Datatype) newtype integer me integer position TYPE(MPI_Datatype) type(5) integer length(5) integer (kind=MPI_ADDRESS_KIND) disp(5) integer bufsize integer errs, toterrs parameter (bufsize=100) character buf(bufsize) character name*(10) TYPE(MPI_Status) status integer i, size double precision x integer src, dest integer ierr errs = 0 ! Enroll in MPI call mpi_init(ierr) ! get my rank call mpi_comm_rank(MPI_COMM_WORLD, me, ierr) call mpi_comm_size(MPI_COMM_WORLD, size, ierr ) if (size .lt. 2) then print *, "Must have at least 2 processes" call MPI_Abort( MPI_COMM_WORLD, 1, ierr ) endif comm = MPI_COMM_WORLD src = 0 dest = 1 if(me.eq.src) then i=5 x=5.1234d0 name="Hello" type(1)=MPI_CHARACTER length(1)=5 call mpi_get_address(name,disp(1),ierr) type(2)=MPI_DOUBLE_PRECISION length(2)=1 call mpi_get_address(x,disp(2),ierr) call mpi_type_create_struct(2,length,disp,type,newtype,ierr) call mpi_type_commit(newtype,ierr) call mpi_barrier( MPI_COMM_WORLD, ierr ) call mpi_send(MPI_BOTTOM,1,newtype,dest,1,comm,ierr) call mpi_type_free(newtype,ierr) ! write(*,*) "Sent ",name(1:5),x else ! Everyone calls barrier incase size > 2 call mpi_barrier( MPI_COMM_WORLD, ierr ) if (me.eq.dest) then position=0 name = " " x = 0.0d0 call mpi_recv(buf,bufsize,MPI_PACKED, src, & & 1, comm, status, ierr) call mpi_unpack(buf,bufsize,position, & & name,5,MPI_CHARACTER, comm,ierr) call mpi_unpack(buf,bufsize,position, & & x,1,MPI_DOUBLE_PRECISION, comm,ierr) ! Check the return values (/= is not-equal in F90) if (name /= "Hello") then errs = errs + 1 print *, "Received ", name, " but expected Hello" endif if (abs(x-5.1234) .gt. 1.0e-6) then errs = errs + 1 print *, "Received ", x, " but expected 5.1234" endif endif endif ! ! Sum up errs and report the result call mpi_reduce( errs, toterrs, 1, MPI_INTEGER, MPI_SUM, 0, & & MPI_COMM_WORLD, ierr ) if (me .eq. 0) then if (toterrs .eq. 0) then print *, " No Errors" else print *, " Found ", toterrs, " errors" endif endif call mpi_finalize(ierr) end mpi-testsuite-3.2+dfsg/f08/datatype/Makefile.am0000644000175000017500000000123212620254305020622 0ustar mbanckmbanck# This Makefile.am generated automatically by f77tof90 # from test/mpi/f77/datatype/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f08.mtest EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 noinst_PROGRAMS = typenamef08 typesnamef08 typecntsf08 typesubf08 typem2f08 gaddressf08 \ packef08 allctypesf08 hindex1f08 hindexed_blockf08 typename3f08 structf \ indtype createf08 sizeof kinds trf08 get_elem_d get_elem_u mpi-testsuite-3.2+dfsg/f08/datatype/typesubf08.f900000644000175000017500000000430412620254305021122 0ustar mbanckmbanck! This file created from test/mpi/f77/datatype/typesubf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer errs, ierr integer maxn, maxm parameter (maxn=10,maxm=15) integer fullsizes(2), subsizes(2), starts(2) integer fullarr(maxn,maxm),subarr(maxn-3,maxm-4) integer i,j, ssize integer size, rank, ans TYPE(MPI_Datatype) newtype errs = 0 call mtest_init( ierr ) call mpi_comm_size( MPI_COMM_WORLD, size, ierr ) call mpi_comm_rank( MPI_COMM_WORLD, rank, ierr ) ! ! Create a Fortran-style subarray fullsizes(1) = maxn fullsizes(2) = maxm subsizes(1) = maxn - 3 subsizes(2) = maxm - 4 ! starts are from zero, even in Fortran starts(1) = 1 starts(2) = 2 ! In Fortran 90 notation, the original array is ! integer a(maxn,maxm) ! and the subarray is ! a(1+1:(maxn-3) +(1+1)-1,2+1:(maxm-4)+(2+1)-1) ! i.e., a (start:(len + start - 1),...) call mpi_type_create_subarray( 2, fullsizes, subsizes, starts, & & MPI_ORDER_FORTRAN, MPI_INTEGER, newtype, ierr ) call mpi_type_commit( newtype, ierr ) ! ! Prefill the array do j=1, maxm do i=1, maxn fullarr(i,j) = (i-1) + (j-1) * maxn enddo enddo do j=1, subsizes(2) do i=1, subsizes(1) subarr(i,j) = -1 enddo enddo ssize = subsizes(1)*subsizes(2) call mpi_sendrecv( fullarr, 1, newtype, rank, 0, & & subarr, ssize, MPI_INTEGER, rank, 0, & & MPI_COMM_WORLD, MPI_STATUS_IGNORE, ierr ) ! ! Check the data do j=1, subsizes(2) do i=1, subsizes(1) ans = (i+starts(1)-1) + (j+starts(2)-1) * maxn if (subarr(i,j) .ne. ans) then errs = errs + 1 if (errs .le. 10) then print *, rank, 'subarr(',i,',',j,') = ', subarr(i,j) endif endif enddo enddo call mpi_type_free( newtype, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/datatype/sizeof.f900000644000175000017500000001033012620254305020404 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2007 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! This program tests that the MPI_SIZEOF routine is implemented for the ! predefined scalar Fortran types. It confirms that the size of these ! types matches the size of the corresponding MPI datatypes. ! program main use mpi_f08 integer ierr, errs integer rank, size, mpisize logical verbose real r1,r1v(2) double precision d1,d1v(3) complex c1,c1v(4) integer i1,i1v(5) character ch1,ch1v(6) logical l1,l1v(7) verbose = .false. errs = 0 call mtest_init ( ierr ) call mpi_comm_rank( MPI_COMM_WORLD, rank, ierr ) ! Test of scalar types call mpi_sizeof( r1, size, ierr ) call mpi_type_size( MPI_REAL, mpisize, ierr ) if (size .ne. mpisize) then errs = errs + 1 print *, "Size of MPI_REAL = ", mpisize, & & " but MPI_SIZEOF gives ", size endif call mpi_sizeof( d1, size, ierr ) call mpi_type_size( MPI_DOUBLE_PRECISION, mpisize, ierr ) if (size .ne. mpisize) then errs = errs + 1 print *, "Size of MPI_DOUBLE_PRECISION = ", mpisize, & " but MPI_SIZEOF gives ", size endif call mpi_sizeof( i1, size, ierr ) call mpi_type_size( MPI_INTEGER, mpisize, ierr ) if (size .ne. mpisize) then errs = errs + 1 print *, "Size of MPI_INTEGER = ", mpisize, & & " but MPI_SIZEOF gives ", size endif call mpi_sizeof( c1, size, ierr ) call mpi_type_size( MPI_COMPLEX, mpisize, ierr ) if (size .ne. mpisize) then errs = errs + 1 print *, "Size of MPI_COMPLEX = ", mpisize, & & " but MPI_SIZEOF gives ", size endif call mpi_sizeof( ch1, size, ierr ) call mpi_type_size( MPI_CHARACTER, mpisize, ierr ) if (size .ne. mpisize) then errs = errs + 1 print *, "Size of MPI_CHARACTER = ", mpisize, & " but MPI_SIZEOF gives ", size endif call mpi_sizeof( l1, size, ierr ) call mpi_type_size( MPI_LOGICAL, mpisize, ierr ) if (size .ne. mpisize) then errs = errs + 1 print *, "Size of MPI_LOGICAL = ", mpisize, & & " but MPI_SIZEOF gives ", size endif ! ! Test of vector types (1-dimensional) call mpi_sizeof( r1v, size, ierr ) call mpi_type_size( MPI_REAL, mpisize, ierr ) if (size .ne. mpisize) then errs = errs + 1 print *, "Size of MPI_REAL = ", mpisize, & & " but MPI_SIZEOF gives ", size endif call mpi_sizeof( d1v, size, ierr ) call mpi_type_size( MPI_DOUBLE_PRECISION, mpisize, ierr ) if (size .ne. mpisize) then errs = errs + 1 print *, "Size of MPI_DOUBLE_PRECISION = ", mpisize, & " but MPI_SIZEOF gives ", size endif call mpi_sizeof( i1v, size, ierr ) call mpi_type_size( MPI_INTEGER, mpisize, ierr ) if (size .ne. mpisize) then errs = errs + 1 print *, "Size of MPI_INTEGER = ", mpisize, & & " but MPI_SIZEOF gives ", size endif call mpi_sizeof( c1v, size, ierr ) call mpi_type_size( MPI_COMPLEX, mpisize, ierr ) if (size .ne. mpisize) then errs = errs + 1 print *, "Size of MPI_COMPLEX = ", mpisize, & & " but MPI_SIZEOF gives ", size endif call mpi_sizeof( ch1v, size, ierr ) call mpi_type_size( MPI_CHARACTER, mpisize, ierr ) if (size .ne. mpisize) then errs = errs + 1 print *, "Size of MPI_CHARACTER = ", mpisize, & " but MPI_SIZEOF gives ", size endif call mpi_sizeof( l1v, size, ierr ) call mpi_type_size( MPI_LOGICAL, mpisize, ierr ) if (size .ne. mpisize) then errs = errs + 1 print *, "Size of MPI_LOGICAL = ", mpisize, & & " but MPI_SIZEOF gives ", size endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/datatype/gaddressf08.f900000644000175000017500000000200412620254305021216 0ustar mbanckmbanck! This file created from test/mpi/f77/datatype/gaddressf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer max_asizev parameter (max_asizev=2) integer (kind=MPI_ADDRESS_KIND) aint, aintv(max_asizev) integer iarray(200), gap, intsize integer ierr, errs errs = 0 call MPI_Init(ierr) call MPI_Get_address( iarray(1), aintv(1), ierr ) call MPI_Get_address( iarray(200), aintv(2), ierr ) gap = aintv(2) - aintv(1) call MPI_Type_size( MPI_INTEGER, intsize, ierr ) if (gap .ne. 199 * intsize) then errs = errs + 1 print *, ' Using get_address, computed a gap of ', gap print *, ' Expected a gap of ', 199 * intsize endif if (errs .gt. 0) then print *, ' Found ', errs, ' errors' else print *, ' No Errors' endif call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/datatype/typesnamef08.f900000644000175000017500000000350612620254305021437 0ustar mbanckmbanck! This file created from test/mpi/f77/datatype/typesnamef.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 character*(MPI_MAX_OBJECT_NAME) cname integer rlen, ln integer errs, ierr TYPE(MPI_Datatype) ntype1, ntype2 errs = 0 call MTest_Init( ierr ) call mpi_type_vector( 10, 1, 100, MPI_INTEGER, ntype1, ierr ) rlen = -1 cname = 'XXXXXX' call mpi_type_get_name( ntype1, cname, rlen, ierr ) if (rlen .ne. 0) then errs = errs + 1 print *, ' Expected length 0, got ', rlen endif rlen = 0 do ln=MPI_MAX_OBJECT_NAME,1,-1 if (cname(ln:ln) .ne. ' ') then rlen = ln goto 100 endif enddo 100 continue if (rlen .ne. 0) then errs = errs + 1 print *, 'Datatype name is not all blank' endif ! ! now add a name, then dup call mpi_type_set_name( ntype1, 'a vector type', ierr ) call mpi_type_dup( ntype1, ntype2, ierr ) rlen = -1 cname = 'XXXXXX' call mpi_type_get_name( ntype2, cname, rlen, ierr ) if (rlen .ne. 0) then errs = errs + 1 print *, ' (type2) Expected length 0, got ', rlen endif rlen = 0 do ln=MPI_MAX_OBJECT_NAME,1,-1 if (cname(ln:ln) .ne. ' ') then rlen = ln goto 110 endif enddo 110 continue if (rlen .ne. 0) then errs = errs + 1 print *, ' (type2) Datatype name is not all blank' endif call mpi_type_free( ntype1, ierr ) call mpi_type_free( ntype2, ierr ) call MTest_Finalize( errs ) call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/datatype/typenamef08.f900000644000175000017500000001645512620254305021263 0ustar mbanckmbanck! This file created from test/mpi/f77/datatype/typenamef.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 character*(MPI_MAX_OBJECT_NAME) name integer namelen integer ierr, errs errs = 0 call mtest_init( ierr ) ! ! Check each Fortran datatype, including the size-specific ones ! See the C version (typename.c) for the relevant MPI sections call MPI_Type_get_name( MPI_COMPLEX, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_COMPLEX") then errs = errs + 1 print *, "Expected MPI_COMPLEX but got "//name(1:namelen) endif call MPI_Type_get_name( MPI_DOUBLE_COMPLEX, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_DOUBLE_COMPLEX") then errs = errs + 1 print *, "Expected MPI_DOUBLE_COMPLEX but got "// & & name(1:namelen) endif call MPI_Type_get_name( MPI_LOGICAL, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_LOGICAL") then errs = errs + 1 print *, "Expected MPI_LOGICAL but got "//name(1:namelen) endif call MPI_Type_get_name( MPI_REAL, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_REAL") then errs = errs + 1 print *, "Expected MPI_REAL but got "//name(1:namelen) endif call MPI_Type_get_name( MPI_DOUBLE_PRECISION, name, namelen, ierr) if (name(1:namelen) .ne. "MPI_DOUBLE_PRECISION") then errs = errs + 1 print *, "Expected MPI_DOUBLE_PRECISION but got "// & & name(1:namelen) endif call MPI_Type_get_name( MPI_INTEGER, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_INTEGER") then errs = errs + 1 print *, "Expected MPI_INTEGER but got "//name(1:namelen) endif call MPI_Type_get_name( MPI_2INTEGER, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_2INTEGER") then errs = errs + 1 print *, "Expected MPI_2INTEGER but got "//name(1:namelen) endif ! 2COMPLEX was present only in MPI 1.0 ! call MPI_Type_get_name( MPI_2COMPLEX, name, namelen, ierr ) ! if (name(1:namelen) .ne. "MPI_2COMPLEX") then ! errs = errs + 1 ! print *, "Expected MPI_2COMPLEX but got "//name(1:namelen) ! endif ! call MPI_Type_get_name(MPI_2DOUBLE_PRECISION, name, namelen, ierr) if (name(1:namelen) .ne. "MPI_2DOUBLE_PRECISION") then errs = errs + 1 print *, "Expected MPI_2DOUBLE_PRECISION but got "// & & name(1:namelen) endif call MPI_Type_get_name( MPI_2REAL, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_2REAL") then errs = errs + 1 print *, "Expected MPI_2REAL but got "//name(1:namelen) endif ! 2DOUBLE_COMPLEX isn't in MPI 2.1 ! call MPI_Type_get_name( MPI_2DOUBLE_COMPLEX, name, namelen, ierr ) ! if (name(1:namelen) .ne. "MPI_2DOUBLE_COMPLEX") then ! errs = errs + 1 ! print *, "Expected MPI_2DOUBLE_COMPLEX but got "// ! & name(1:namelen) ! endif call MPI_Type_get_name( MPI_CHARACTER, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_CHARACTER") then errs = errs + 1 print *, "Expected MPI_CHARACTER but got "//name(1:namelen) endif call MPI_Type_get_name( MPI_BYTE, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_BYTE") then errs = errs + 1 print *, "Expected MPI_BYTE but got "//name(1:namelen) endif if (MPI_REAL4 .ne. MPI_DATATYPE_NULL) then call MPI_Type_get_name( MPI_REAL4, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_REAL4") then errs = errs + 1 print *, "Expected MPI_REAL4 but got "//name(1:namelen) endif endif if (MPI_REAL8 .ne. MPI_DATATYPE_NULL) then call MPI_Type_get_name( MPI_REAL8, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_REAL8") then errs = errs + 1 print *, "Expected MPI_REAL8 but got "//name(1:namelen) endif endif if (MPI_REAL16 .ne. MPI_DATATYPE_NULL) then call MPI_Type_get_name( MPI_REAL16, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_REAL16") then errs = errs + 1 print *, "Expected MPI_REAL16 but got "//name(1:namelen) endif endif if (MPI_COMPLEX8 .ne. MPI_DATATYPE_NULL) then call MPI_Type_get_name( MPI_COMPLEX8, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_COMPLEX8") then errs = errs + 1 print *, "Expected MPI_COMPLEX8 but got "// & & name(1:namelen) endif endif if (MPI_COMPLEX16 .ne. MPI_DATATYPE_NULL) then call MPI_Type_get_name( MPI_COMPLEX16, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_COMPLEX16") then errs = errs + 1 print *, "Expected MPI_COMPLEX16 but got "// & & name(1:namelen) endif endif if (MPI_COMPLEX32 .ne. MPI_DATATYPE_NULL) then call MPI_Type_get_name( MPI_COMPLEX32, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_COMPLEX32") then errs = errs + 1 print *, "Expected MPI_COMPLEX32 but got "// & & name(1:namelen) endif endif if (MPI_INTEGER1 .ne. MPI_DATATYPE_NULL) then call MPI_Type_get_name( MPI_INTEGER1, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_INTEGER1") then errs = errs + 1 print *, "Expected MPI_INTEGER1 but got "// & & name(1:namelen) endif endif if (MPI_INTEGER2 .ne. MPI_DATATYPE_NULL) then call MPI_Type_get_name( MPI_INTEGER2, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_INTEGER2") then errs = errs + 1 print *, "Expected MPI_INTEGER2 but got "// & & name(1:namelen) endif endif if (MPI_INTEGER4 .ne. MPI_DATATYPE_NULL) then call MPI_Type_get_name( MPI_INTEGER4, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_INTEGER4") then errs = errs + 1 print *, "Expected MPI_INTEGER4 but got "// & & name(1:namelen) endif endif if (MPI_INTEGER8 .ne. MPI_DATATYPE_NULL) then call MPI_Type_get_name( MPI_INTEGER8, name, namelen, ierr ) if (name(1:namelen) .ne. "MPI_INTEGER8") then errs = errs + 1 print *, "Expected MPI_INTEGER8 but got "// & & name(1:namelen) endif endif ! MPI_INTEGER16 is in MPI 2.1, but it is missing from most tables ! Some MPI implementations may not provide it ! if (MPI_INTEGER16 .ne. MPI_DATATYPE_NULL) then ! call MPI_Type_get_name( MPI_INTEGER16, name, namelen, ierr ) ! if (name(1:namelen) .ne. "MPI_INTEGER16") then ! errs = errs + 1 ! print *, "Expected MPI_INTEGER16 but got "// ! & name(1:namelen) ! endif ! endif call mtest_finalize( errs ) call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/datatype/get_elem_u.f900000644000175000017500000000354012620254305021217 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2013 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! Based on a test written by Jim Hoekstra on behalf of Cray, Inc. ! see ticket #884 https://trac.mpich.org/projects/mpich/ticket/884 PROGRAM get_elem_u USE mpi_f08 IMPLICIT NONE INTEGER RANK, SIZE, IERR, errs TYPE(MPI_COMM) COMM INTEGER MAX, I, K, dest TYPE(MPI_STATUS) STATUS INTEGER, PARAMETER :: nb=2 INTEGER :: blklen(nb)=(/1,1/) TYPE(MPI_DATATYPE) :: types(nb) INTEGER(kind=MPI_ADDRESS_KIND) :: disp(nb)=(/0,8/) INTEGER, PARAMETER :: amax=200 INTEGER :: extent TYPE(MPI_DATATYPE) type1, type2 REAL :: a(amax) errs = 0 CALL MPI_Init( ierr ) COMM = MPI_COMM_WORLD types(1) = MPI_DOUBLE_PRECISION types(2) = MPI_CHAR CALL MPI_Comm_rank(COMM,RANK,IERR) CALL MPI_Comm_size(COMM,SIZE,IERR) dest=size-1 CALL MPI_Type_create_struct(nb, blklen, disp, types, type1, ierr) CALL MPI_Type_commit(type1, ierr) CALL MPI_Type_extent(type1, extent, ierr) CALL MPI_Type_contiguous(4, Type1, Type2, ierr) CALL MPI_Type_commit(Type2, ierr) CALL MPI_Type_extent(Type2, extent, ierr) DO k=1,17 IF(rank .EQ. 0) THEN ! send k copies of datatype Type1 CALL MPI_Send(a, k, Type1, dest, 0, comm, ierr) ELSE IF (rank == dest) THEN CALL MPI_Recv(a, 200, Type2, 0, 0, comm, status, ierr) CALL MPI_Get_elements(status, Type2, i, ierr) IF (i .NE. 2*k) THEN errs = errs+1 PRINT *, "k=",k," MPI_Get_elements returns", i, ", but it should be", 2*k END IF ELSE ! thix rank does not particupate END IF enddo CALL MPI_Type_free(type1, ierr) CALL MPI_Type_free(type2, ierr) CALL MPI_Finalize( ierr ) IF(rank .EQ. 0 .AND. errs .EQ. 0) THEN PRINT *, " No Errors" END IF END PROGRAM get_elem_u mpi-testsuite-3.2+dfsg/f08/datatype/get_elem_d.f900000644000175000017500000000712112620254305021175 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2013 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! Based on a test written by Jim Hoekstra on behalf of Cray, Inc. ! see ticket #884 https://trac.mpich.org/projects/mpich/ticket/884 program get_elem_d use mpi_f08 implicit none integer, parameter :: verbose=0 integer, parameter :: cmax=100,dmax=100,imax=60 integer, parameter :: nb=2 integer :: rank,size,dest,ierror,errs=0 TYPE(MPI_Comm) :: comm TYPE(MPI_Status) :: status integer :: i,ii,count,ka,j,jj,k,kj integer :: blklen(nb)=(/2,2/) TYPE(MPI_Datatype) :: types(nb) integer(kind=MPI_ADDRESS_KIND) :: disp(nb) integer :: ntlen,ians(20),ians0(0:3),ians1(24),ians2(20) TYPE(MPI_Datatype) :: newtype double precision :: dbuff(dmax), a integer :: ibuff(imax) character :: cbuff(cmax)='X' call MPI_Init(ierror) comm=MPI_COMM_WORLD types(1) = MPI_DOUBLE_PRECISION types(2) = MPI_INTEGER call MPI_Comm_size(comm, size, ierror) dest=size-1 call MPI_Comm_rank(comm, rank, ierror) call MPI_Sizeof (j, kj, ierror) call MPI_Sizeof (a, ka, ierror) ntlen=2*ka+2*kj disp=(/0,2*ka/) ! calculate answers for expected i values for Get_elements with derived type ians0(0)=ka ians0(1)=2*ka ians0(2)=2*ka+kj ians0(3)=2*ka+2*kj ii=0 do i=1,24 ! answers for the test sending 1~24 bytes if (i .eq. ians0(ii)) ii=ii+1 ians1(i)=ii enddo if (rank == 0 .and. verbose > 0) print *, (ians1(k),k=1,24) jj=0 do j=1,17,4 ! 4 means newtype has 4 primitives ians(j)=jj+ka/kj ians(j+1)=jj+2*(ka/kj) ians(j+2)=jj+2*(ka/kj)+1 ians(j+3)=jj+2*(ka/kj)+2 if (rank == 0 .and. verbose > 0) print *, (ians(k),k=j,j+3) jj=jj+ntlen/kj enddo ! To have k elements, need to receive ians(k) integers ii=0 do i=1,20 ! answers for the test sending 1~20 integers if (i .eq. ians(ii+1)) ii=ii+1 ians2(i)=ii enddo if (rank == 0 .and. verbose > 0) print *, (ians2(k),k=1,20) if (verbose > 0) print *, MPI_UNDEFINED call MPI_Type_create_struct(nb, blklen, disp, types, newtype, ierror) call MPI_Type_commit(newtype, ierror) do i=1,24 ! sending 1~24 bytes if (rank == 0) then call MPI_Send(cbuff, i, MPI_BYTE, dest, 100, comm, ierror) else if (rank == dest) then ! first receive call MPI_Recv(dbuff, dmax, newtype, 0, 100, comm, status, ierror) ! check on MPI_Get_elements call MPI_Get_elements(status, newtype, count, ierror) if (count .ne. ians1(i)) then errs=errs+1 write (*,fmt="(i2,' R1 Get_elements count=',i3,& &' but should be ',i3)") i,count,ians1(i) endif else ! other ranks do not participate endif enddo do i=1,20 ! sending 1~20 integers if (rank == 0) then call MPI_Send(ibuff, i, MPI_INTEGER, dest, 100, comm, ierror) else if (rank == dest) then ! second receive call MPI_Recv(dbuff, dmax, newtype, 0, 100, comm, status, ierror) ! check on MPI_Get_elements call MPI_Get_elements(status, newtype, count, ierror) if (count .ne. ians2(i)) then errs=errs+1 write (*,fmt="(i2,' R2 Get_elements count=',i3,& &' but should be ',i3)") i,count,ians2(i) endif else ! other ranks do not participate endif enddo if (rank .eq. dest) then if (errs .eq. 0) then write (*,*) " No Errors" else print *, 'errs=',errs endif endif call MPI_Type_free(newtype, ierror) call MPI_Finalize(ierror) end program get_elem_d mpi-testsuite-3.2+dfsg/f08/datatype/typecntsf08.f900000644000175000017500000000665012620254305021306 0ustar mbanckmbanck! This file created from test/mpi/f77/datatype/typecntsf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer errs, ierr TYPE(MPI_Datatype) ntype1, ntype2 ! ! This is a very simple test that just tests that the contents/envelope ! routines can be called. This should be upgraded to test the new ! MPI-2 datatype routines (which use address-sized integers) ! errs = 0 call mtest_init( ierr ) call explore( MPI_INTEGER, MPI_COMBINER_NAMED, errs ) call explore( MPI_BYTE, MPI_COMBINER_NAMED, errs ) call mpi_type_vector( 10, 1, 30, MPI_DOUBLE_PRECISION, ntype1, & & ierr ) call explore( ntype1, MPI_COMBINER_VECTOR, errs ) call mpi_type_dup( ntype1, ntype2, ierr ) call explore( ntype2, MPI_COMBINER_DUP, errs ) call mpi_type_free( ntype2, ierr ) call mpi_type_free( ntype1, ierr ) ! call mtest_finalize( errs ) call mpi_finalize( ierr ) end ! subroutine explore( dtype, mycomb, errs ) use mpi_f08 integer mycomb, errs TYPE(MPI_Datatype) dtype integer ierr integer nints, nadds, ntype, combiner integer max_nints, max_dtypes, max_asizev parameter (max_nints = 10, max_dtypes = 10, max_asizev=10) integer intv(max_nints) TYPE(MPI_Datatype) dtypesv(max_dtypes) integer (kind=MPI_ADDRESS_KIND) aint, aintv(max_asizev) ! call mpi_type_get_envelope( dtype, nints, nadds, ntype, & & combiner, ierr ) ! if (combiner .ne. MPI_COMBINER_NAMED) then call mpi_type_get_contents( dtype, & & max_nints, max_asizev, max_dtypes, & & intv, aintv, dtypesv, ierr ) ! ! dtypesv of constructed types must be free'd now ! if (combiner .eq. MPI_COMBINER_DUP) then call mpi_type_free( dtypesv(1), ierr ) endif endif if (combiner .ne. mycomb) then errs = errs + 1 print *, ' Expected combiner ', mycomb, ' but got ', & & combiner endif ! ! List all combiner types to check that they are defined in mpif.h if (combiner .eq. MPI_COMBINER_NAMED) then else if (combiner .eq. MPI_COMBINER_DUP) then else if (combiner .eq. MPI_COMBINER_CONTIGUOUS) then else if (combiner .eq. MPI_COMBINER_VECTOR) then else if (combiner .eq. MPI_COMBINER_HVECTOR_INTEGER) then else if (combiner .eq. MPI_COMBINER_HVECTOR) then else if (combiner .eq. MPI_COMBINER_INDEXED) then else if (combiner .eq. MPI_COMBINER_HINDEXED_INTEGER) then else if (combiner .eq. MPI_COMBINER_HINDEXED) then else if (combiner .eq. MPI_COMBINER_INDEXED_BLOCK) then else if (combiner .eq. MPI_COMBINER_STRUCT_INTEGER) then else if (combiner .eq. MPI_COMBINER_STRUCT) then else if (combiner .eq. MPI_COMBINER_SUBARRAY) then else if (combiner .eq. MPI_COMBINER_DARRAY) then else if (combiner .eq. MPI_COMBINER_F90_REAL) then else if (combiner .eq. MPI_COMBINER_F90_COMPLEX) then else if (combiner .eq. MPI_COMBINER_F90_INTEGER) then else if (combiner .eq. MPI_COMBINER_RESIZED) then else errs = errs + 1 print *, ' Unknown combiner ', combiner endif return end mpi-testsuite-3.2+dfsg/f08/datatype/indtype.f900000644000175000017500000000564212620254305020573 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! This test contributed by Kim McMahon, Cray ! program main use mpi_f08 implicit none integer ierr, i, j, count,errs TYPE(MPI_Datatype) type parameter (count = 4) integer rank, size, xfersize TYPE(MPI_Status) status integer blocklens(count), displs(count) double precision,dimension(:,:),allocatable :: sndbuf, rcvbuf logical verbose verbose = .false. call mtest_init ( ierr ) call mpi_comm_size( MPI_COMM_WORLD, size, ierr ) call mpi_comm_rank( MPI_COMM_WORLD, rank, ierr ) if (size .lt. 2) then print *, "Must have at least 2 processes" call MPI_Abort( MPI_COMM_WORLD, 1, ierr ) endif errs = 0 allocate(sndbuf(7,100)) allocate(rcvbuf(7,100)) do j=1,100 do i=1,7 sndbuf(i,j) = (i+j) * 1.0 enddo enddo do i=1,count blocklens(i) = 7 enddo ! bug occurs when first two displacements are 0 displs(1) = 0 displs(2) = 0 displs(3) = 10 displs(4) = 10 call mpi_type_indexed( count, blocklens, displs*blocklens(1), & & MPI_DOUBLE_PRECISION, type, ierr ) call mpi_type_commit( type, ierr ) ! send using this new type if (rank .eq. 0) then call mpi_send( sndbuf(1,1), 1, type, 1, 0, MPI_COMM_WORLD,ierr ) else if (rank .eq. 1) then xfersize=count * blocklens(1) call mpi_recv( rcvbuf(1,1), xfersize, MPI_DOUBLE_PRECISION, 0, 0, & & MPI_COMM_WORLD,status, ierr ) ! Values that should be sent if (verbose) then ! displacement = 0 j=1 do i=1, 7 print*,'sndbuf(',i,j,') = ',sndbuf(i,j) enddo ! displacement = 10 j=11 do i=1,7 print*,'sndbuf(',i,j,') = ',sndbuf(i,j) enddo print*,' ' ! Values received do j=1,count do i=1,7 print*,'rcvbuf(',i,j,') = ',rcvbuf(i,j) enddo enddo endif ! Error checking do j=1,2 do i=1,7 if (rcvbuf(i,j) .ne. sndbuf(i,1)) then print*,'ERROR in rcvbuf(',i,j,')' print*,'Received ', rcvbuf(i,j),' expected ',sndbuf(i,11) errs = errs+1 endif enddo enddo do j=3,4 do i=1,7 if (rcvbuf(i,j) .ne. sndbuf(i,11)) then print*,'ERROR in rcvbuf(',i,j,')' print*,'Received ', rcvbuf(i,j),' expected ',sndbuf(i,11) errs = errs+1 endif enddo enddo endif ! call mpi_type_free( type, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/datatype/createf90.f900000644000175000017500000000435712620254305020703 0ustar mbanckmbanck! ! (C) 2004 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer ierr integer errs integer nints, nadds, ndtypes, combiner integer nparms(2), dummy(1) integer (kind=MPI_ADDRESS_KIND) adummy(1) integer ntype1, nsize, ntype2, ntype3, i ! ! Test the Type_create_f90_xxx routines ! errs = 0 call mtest_init( ierr ) ! integers with upto 9 are 4 bytes integers; r of 4 are 2 byte, ! and r of 2 is 1 byte call mpi_type_create_f90_integer( 9, ntype1, ierr ) ! ! Check with get contents and envelope... call mpi_type_get_envelope( ntype1, nints, nadds, ndtypes, & combiner, ierr ) if (nadds .ne. 0) then errs = errs + 1 print *, "There should be no addresses on created type (r=9)" endif if (ndtypes .ne. 0) then errs = errs + 1 print *, "There should be no datatypes on created type (r=9)" endif if (nints .ne. 1) then errs = errs + 1 print *, "There should be exactly 1 integer on create type (r=9)" endif if (combiner .ne. MPI_COMBINER_F90_INTEGER) then errs = errs + 1 print *, "The combiner should be INTEGER, not ", combiner endif if (nints .eq. 1) then call mpi_type_get_contents( ntype1, 1, 0, 0, & nparms, adummy, dummy, ierr ) if (nparms(1) .ne. 9) then errs = errs + 1 print *, "parameter was ", nparms(1), " should be 9" endif endif call mpi_type_create_f90_integer( 8, ntype2, ierr ) if (ntype1 .eq. ntype2) then errs = errs + 1 print *, "Types with r = 8 and r = 9 are the same, ", & "should be distinct" endif ! ! Check that we don't create new types each time. This test will fail only ! if the MPI implementation checks for un-freed types or runs out of space do i=1, 100000 call mpi_type_create_f90_integer( 8, ntype3, ierr ) enddo call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/datatype/kinds.f900000644000175000017500000000634112620254305020224 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2011 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! This program tests that all of the integer kinds defined in MPI 2.2 are ! available. ! program main use mpi_f08 integer (kind=MPI_ADDRESS_KIND) aint, taint integer (kind=MPI_OFFSET_KIND) oint, toint integer (kind=MPI_INTEGER_KIND) iint, tiint TYPE(MPI_Status) s integer i, wsize, wrank, ierr, errs ! errs = 0 ! call MTEST_INIT(ierr) call MPI_COMM_SIZE(MPI_COMM_WORLD,wsize,ierr) call MPI_COMM_RANK(MPI_COMM_WORLD,wrank,ierr) if (wsize .lt. 2) then print *, "This test requires at least 2 processes" call MPI_ABORT( MPI_COMM_WORLD, 1, ierr ) endif ! ! Some compilers (e.g., gfortran) will issue an error if, at compile time, ! an assignment would cause overflow, even if appropriated guarded. To ! avoid this problem, we must compute the value in the integer (the ! code here is simple; there are faster fixes for this but this is easy if (wrank .eq. 0) then if (range(aint) .ge. 10) then aint = 1 do i=1, range(aint)-1 aint = aint * 10 enddo aint = aint - 1 else aint = 12345678 endif if (range(oint) .ge. 10) then oint = 1 do i=1, range(oint)-1 oint = oint * 10 enddo oint = oint - 1 else oint = 12345678 endif if (range(iint) .ge. 10) then iint = 1 do i=1, range(iint)-1 iint = iint * 10 enddo iint = iint - 1 else iint = 12345678 endif call MPI_SEND( aint, 1, MPI_AINT, 1, 0, MPI_COMM_WORLD, ierr ) call MPI_SEND( oint, 1, MPI_OFFSET, 1, 1, MPI_COMM_WORLD, ierr ) call MPI_SEND( iint, 1, MPI_INTEGER, 1, 2, MPI_COMM_WORLD, ierr ) ! else if (wrank .eq. 1) then if (range(taint) .ge. 10) then taint = 1 do i=1, range(taint)-1 taint = taint * 10 enddo taint = taint - 1 else taint = 12345678 endif if (range(toint) .ge. 10) then toint = 1 do i=1, range(toint)-1 toint = toint * 10 enddo toint = toint - 1 else toint = 12345678 endif if (range(tiint) .ge. 10) then tiint = 1 do i=1, range(tiint)-1 tiint = tiint * 10 enddo tiint = tiint - 1 else tiint = 12345678 endif call MPI_RECV( aint, 1, MPI_AINT, 0, 0, MPI_COMM_WORLD, s, ierr ) if (taint .ne. aint) then print *, "Address-sized int not correctly transfered" print *, "Value should be ", taint, " but is ", aint errs = errs + 1 endif call MPI_RECV( oint, 1, MPI_OFFSET, 0, 1, MPI_COMM_WORLD, s, ierr ) if (toint .ne. oint) then print *, "Offset-sized int not correctly transfered" print *, "Value should be ", toint, " but is ", oint errs = errs + 1 endif call MPI_RECV( iint, 1, MPI_INTEGER, 0, 2, MPI_COMM_WORLD, s, ierr ) if (tiint .ne. iint) then print *, "Integer (by kind) not correctly transfered" print *, "Value should be ", tiint, " but is ", iint errs = errs + 1 endif ! endif ! call MTEST_FINALIZE(errs) call MPI_FINALIZE(ierr) end mpi-testsuite-3.2+dfsg/f08/datatype/trf08.f900000644000175000017500000000113612620254305020054 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2011 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! Based on a sample program that triggered a segfault in MPICH program testf90_mpi use mpi_f08 implicit none integer errs integer :: ierr TYPE(MPI_Datatype) :: ctype, rk_mpi errs = 0 call mtest_init(ierr) call MPI_Type_create_f90_real(15, MPI_UNDEFINED, rk_mpi, ierr) call MPI_Type_contiguous(19, rk_mpi, ctype, ierr) call MPI_Type_commit(ctype, ierr) call MPI_Type_free(ctype, ierr) call mtest_finalize(errs) call MPI_Finalize(ierr) end program testf90_mpi mpi-testsuite-3.2+dfsg/f08/testlist0000644000175000017500000000013212620254305016547 0ustar mbanckmbanckattr pt2pt coll datatype comm rma subarray topo ext info init io misc spawn timer profile mpi-testsuite-3.2+dfsg/f08/Makefile.in0000644000175000017500000005201012621010233017007 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = f08 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_f08.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F08 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f08/util/mtestf08.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist SUBDIRS = attr coll comm datatype ext info init io misc profile pt2pt rma spawn subarray timer topo DIST_SUBDIRS = $(SUBDIRS) util all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f08.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f08/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f08/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f08.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic cscopelist-am ctags ctags-am \ distclean distclean-generic distclean-tags distdir dvi dvi-am \ html html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile $(top_builddir)/f08/util/mtestf08.o: $(top_srcdir)/f08/util/mtestf08.f90 (cd $(top_builddir)/f08/util && $(MAKE) mtestf08.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f08/spawn/0000755000175000017500000000000012621010234016075 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f08/spawn/spawnmultf03.f900000644000175000017500000001307612620254305020777 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! This tests spawn_mult by using the same executable but different ! command-line options. ! program main ! declared on the old sparc compilers use mpi_f08 integer errs, err integer rank, size, rsize, wsize, i integer np(2) type(MPI_Info) infos(2) integer errcodes(2) type(MPI_Comm) parentcomm, intercomm type(MPI_Status) status character*(10) inargv(2,6), outargv(2,6) character*(30) cmds(2) character*(80) argv(64) integer argc integer ierr integer can_spawn ! ! Arguments are stored by rows, not columns in the vector. ! We write the data in a way that looks like the transpose, ! since Fortran stores by column data inargv /"a", "-p", & & "b=c", "27", & & "d e", "-echo", & & "-pf", " ", & & "Ss", " ", & & " ", " "/ data outargv /"a", "-p", & & "b=c", "27", & & "d e", "-echo", & & "-pf", " ", & & "Ss", " ", & & " ", " "/ errs = 0 call MTest_Init( ierr ) call MTestSpawnPossible( can_spawn, errs ) if ( can_spawn .eq. 0 ) then call MTest_Finalize( errs ) goto 300 endif call MPI_Comm_get_parent( parentcomm, ierr ) if (parentcomm .eq. MPI_COMM_NULL) then ! Create 2 more processes cmds(1) = "./spawnmultf03" cmds(2) = "./spawnmultf03" np(1) = 1 np(2) = 1 infos(1)= MPI_INFO_NULL infos(2)= MPI_INFO_NULL call MPI_Comm_spawn_multiple( 2, cmds, inargv, & & np, infos, 0, & & MPI_COMM_WORLD, intercomm, errcodes, ierr ) else intercomm = parentcomm endif ! We now have a valid intercomm call MPI_Comm_remote_size( intercomm, rsize, ierr ) call MPI_Comm_size( intercomm, size, ierr ) call MPI_Comm_rank( intercomm, rank, ierr ) if (parentcomm .eq. MPI_COMM_NULL) then ! Master if (rsize .ne. np(1) + np(2)) then errs = errs + 1 print *, "Did not create ", np(1)+np(2), & & " processes (got ", rsize, ")" endif do i=0, rsize-1 call MPI_Send( i, 1, MPI_INTEGER, i, 0, intercomm, ierr ) enddo ! We could use intercomm reduce to get the errors from the ! children, but we'll use a simpler loop to make sure that ! we get valid data do i=0, rsize-1 call MPI_Recv( err, 1, MPI_INTEGER, i, 1, intercomm, & & MPI_STATUS_IGNORE, ierr ) errs = errs + err enddo else ! Child ! FIXME: This assumes that stdout is handled for the children ! (the error count will still be reported to the parent) argc = command_argument_count() do i=1, argc call get_command_argument( i, argv(i) ) enddo if (size .ne. 2) then errs = errs + 1 print *, "(Child) Did not create ", 2, & & " processes (got ",size, ")" call mpi_comm_size( MPI_COMM_WORLD, wsize, ierr ) if (wsize .eq. 2) then errs = errs + 1 print *, "(Child) world size is 2 but ", & & " local intercomm size is not 2" endif endif call MPI_Recv( i, 1, MPI_INTEGER, 0, 0, intercomm, status, ierr & & ) if (i .ne. rank) then errs = errs + 1 print *, "Unexpected rank on child ", rank, "(",i,")" endif ! Check the command line do i=1, argc if (outargv(rank+1,i) .eq. " ") then errs = errs + 1 print *, "Wrong number of arguments (", argc, ")" goto 200 endif if (argv(i) .ne. outargv(rank+1,i)) then errs = errs + 1 print *, "Found arg ", argv(i), " but expected ", & & outargv(rank+1,i) endif enddo 200 continue if (outargv(rank+1,i) .ne. " ") then ! We had too few args in the spawned command errs = errs + 1 print *, "Too few arguments to spawned command" endif ! Send the errs back to the master process call MPI_Ssend( errs, 1, MPI_INTEGER, 0, 1, intercomm, ierr ) endif ! It isn't necessary to free the intercomm, but it should not hurt call MPI_Comm_free( intercomm, ierr ) ! Note that the MTest_Finalize get errs only over COMM_WORLD if (parentcomm .eq. MPI_COMM_NULL) then call MTest_Finalize( errs ) endif 300 continue call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/spawn/Makefile.in0000644000175000017500000005313112621010234020145 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = namepubf90$(EXEEXT) spawnf90$(EXEEXT) \ spawnargvf90$(EXEEXT) spawnmultf90$(EXEEXT) \ spawnmult2f90$(EXEEXT) connaccf90$(EXEEXT) \ spawnargvf03$(EXEEXT) spawnmultf03$(EXEEXT) subdir = f08/spawn ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = testlist CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) connaccf90_SOURCES = connaccf90.f90 connaccf90_OBJECTS = connaccf90.$(OBJEXT) connaccf90_LDADD = $(LDADD) connaccf90_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o namepubf90_SOURCES = namepubf90.f90 namepubf90_OBJECTS = namepubf90.$(OBJEXT) namepubf90_LDADD = $(LDADD) namepubf90_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o am_spawnargvf03_OBJECTS = spawnargvf03.$(OBJEXT) spawnargvf03_OBJECTS = $(am_spawnargvf03_OBJECTS) spawnargvf03_LDADD = $(LDADD) spawnargvf03_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o spawnargvf90_SOURCES = spawnargvf90.f90 spawnargvf90_OBJECTS = spawnargvf90.$(OBJEXT) am__DEPENDENCIES_1 = spawnargvf90_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_1) spawnf90_SOURCES = spawnf90.f90 spawnf90_OBJECTS = spawnf90.$(OBJEXT) spawnf90_LDADD = $(LDADD) spawnf90_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o spawnmult2f90_SOURCES = spawnmult2f90.f90 spawnmult2f90_OBJECTS = spawnmult2f90.$(OBJEXT) spawnmult2f90_LDADD = $(LDADD) spawnmult2f90_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o am_spawnmultf03_OBJECTS = spawnmultf03.$(OBJEXT) spawnmultf03_OBJECTS = $(am_spawnmultf03_OBJECTS) spawnmultf03_LDADD = $(LDADD) spawnmultf03_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o spawnmultf90_SOURCES = spawnmultf90.f90 spawnmultf90_OBJECTS = spawnmultf90.$(OBJEXT) spawnmultf90_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_1) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = SOURCES = connaccf90.f90 namepubf90.f90 $(spawnargvf03_SOURCES) \ spawnargvf90.f90 spawnf90.f90 spawnmult2f90.f90 \ $(spawnmultf03_SOURCES) spawnmultf90.f90 DIST_SOURCES = connaccf90.f90 namepubf90.f90 $(spawnargvf03_SOURCES) \ spawnargvf90.f90 spawnf90.f90 spawnmult2f90.f90 \ $(spawnmultf03_SOURCES) spawnmultf90.f90 am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/testlist.in \ $(top_srcdir)/Makefile_f08.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F08 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f08/util/mtestf08.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 # add "-lU77" (or equivalent) to the link line for these tests that use getarg spawnargvf90_LDADD = $(LDADD) $(FC_GETARG_LIBS) spawnmultf90_LDADD = $(LDADD) $(FC_GETARG_LIBS) spawnargvf03_SOURCES = spawnargvf03.f90 spawnmultf03_SOURCES = spawnmultf03.f90 all: all-am .SUFFIXES: .SUFFIXES: .f90 .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f08.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f08/spawn/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f08/spawn/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f08.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): testlist: $(top_builddir)/config.status $(srcdir)/testlist.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) connaccf90$(EXEEXT): $(connaccf90_OBJECTS) $(connaccf90_DEPENDENCIES) $(EXTRA_connaccf90_DEPENDENCIES) @rm -f connaccf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(connaccf90_OBJECTS) $(connaccf90_LDADD) $(LIBS) namepubf90$(EXEEXT): $(namepubf90_OBJECTS) $(namepubf90_DEPENDENCIES) $(EXTRA_namepubf90_DEPENDENCIES) @rm -f namepubf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(namepubf90_OBJECTS) $(namepubf90_LDADD) $(LIBS) spawnargvf03$(EXEEXT): $(spawnargvf03_OBJECTS) $(spawnargvf03_DEPENDENCIES) $(EXTRA_spawnargvf03_DEPENDENCIES) @rm -f spawnargvf03$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(spawnargvf03_OBJECTS) $(spawnargvf03_LDADD) $(LIBS) spawnargvf90$(EXEEXT): $(spawnargvf90_OBJECTS) $(spawnargvf90_DEPENDENCIES) $(EXTRA_spawnargvf90_DEPENDENCIES) @rm -f spawnargvf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(spawnargvf90_OBJECTS) $(spawnargvf90_LDADD) $(LIBS) spawnf90$(EXEEXT): $(spawnf90_OBJECTS) $(spawnf90_DEPENDENCIES) $(EXTRA_spawnf90_DEPENDENCIES) @rm -f spawnf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(spawnf90_OBJECTS) $(spawnf90_LDADD) $(LIBS) spawnmult2f90$(EXEEXT): $(spawnmult2f90_OBJECTS) $(spawnmult2f90_DEPENDENCIES) $(EXTRA_spawnmult2f90_DEPENDENCIES) @rm -f spawnmult2f90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(spawnmult2f90_OBJECTS) $(spawnmult2f90_LDADD) $(LIBS) spawnmultf03$(EXEEXT): $(spawnmultf03_OBJECTS) $(spawnmultf03_DEPENDENCIES) $(EXTRA_spawnmultf03_DEPENDENCIES) @rm -f spawnmultf03$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(spawnmultf03_OBJECTS) $(spawnmultf03_LDADD) $(LIBS) spawnmultf90$(EXEEXT): $(spawnmultf90_OBJECTS) $(spawnmultf90_DEPENDENCIES) $(EXTRA_spawnmultf90_DEPENDENCIES) @rm -f spawnmultf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(spawnmultf90_OBJECTS) $(spawnmultf90_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f08/util/mtestf08.o: $(top_srcdir)/f08/util/mtestf08.f90 (cd $(top_builddir)/f08/util && $(MAKE) mtestf08.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f08/spawn/namepubf90.f900000644000175000017500000000610112620254305020371 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer errs character*(MPI_MAX_PORT_NAME) port_name character*(MPI_MAX_PORT_NAME) port_name_out character*(256) serv_name integer merr, mclass character*(MPI_MAX_ERROR_STRING) errmsg integer msglen, rank integer ierr errs = 0 call MTest_Init( ierr ) call MPI_Comm_rank(MPI_COMM_WORLD, rank, ierr ) ! Note that according to the MPI standard, port_name must ! have been created by MPI_Open_port. For current testing ! purposes, we'll use a fake name. This test should eventually use ! a valid name from Open_port port_name = 'otherhost:122' serv_name = 'MyTest' call MPI_Comm_set_errhandler( MPI_COMM_WORLD, MPI_ERRORS_RETURN, & & ierr ) if (rank .eq. 0) then merr = -1 call MPI_Publish_name( serv_name, MPI_INFO_NULL, port_name, & & merr ) if (merr .ne. MPI_SUCCESS) then errs = errs + 1 call MPI_Error_string( merr, errmsg, msglen, ierr ) print *, "Error in Publish_name ", errmsg(1:msglen) endif call MPI_Barrier(MPI_COMM_WORLD, ierr ) call MPI_Barrier(MPI_COMM_WORLD, ierr ) merr = -1 call MPI_Unpublish_name( serv_name, MPI_INFO_NULL, port_name, & & merr) if (merr .ne. MPI_SUCCESS) then errs = errs + 1 call MPI_Error_string( merr, errmsg, msglen, ierr ) print *, "Error in Unpublish name ", errmsg(1:msglen) endif else call MPI_Barrier(MPI_COMM_WORLD, ierr ) merr = -1 call MPI_Lookup_name( serv_name, MPI_INFO_NULL, port_name_out, & & merr) if (merr .ne. MPI_SUCCESS) then errs = errs + 1 call MPI_Error_string( merr, errmsg, msglen, ierr ) print *, "Error in Lookup name", errmsg(1:msglen) else if (port_name .ne. port_name_out) then errs = errs + 1 print *, "Lookup name returned the wrong value (", & & port_name_out, "), expected (", port_name, ")" endif endif call MPI_Barrier(MPI_COMM_WORLD, ierr ) endif call MPI_Barrier(MPI_COMM_WORLD, ierr ) merr = -1 call MPI_Lookup_name( serv_name, MPI_INFO_NULL, port_name_out, & & merr ) if (merr .eq. MPI_SUCCESS) then errs = errs + 1 print *, "Lookup name returned name after it was unpublished" else ! Must be class MPI_ERR_NAME call MPI_Error_class( merr, mclass, ierr ) if (mclass .ne. MPI_ERR_NAME) then errs = errs + 1 call MPI_Error_string( merr, errmsg, msglen, ierr ) print *, "Lookup name returned the wrong error class & & (",mclass,"), msg ", errmsg endif endif call MTest_Finalize( errs ) call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/spawn/spawnmultf90.f900000644000175000017500000001314212620254305020777 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! This is a special test that requires an getarg/iargc routine ! This tests spawn_mult by using the same executable but different ! command-line options. ! program main ! declared on the old sparc compilers use mpi_f08 integer errs, err integer rank, size, rsize, wsize, i integer np(2) type(MPI_Info) infos(2) integer errcodes(2) type(MPI_Comm) parentcomm, intercomm type(MPI_Status) status character*(10) inargv(2,6), outargv(2,6) character*(30) cmds(2) character*(80) argv(64) integer argc integer ierr integer can_spawn ! ! Arguments are stored by rows, not columns in the vector. ! We write the data in a way that looks like the transpose, ! since Fortran stores by column data inargv /"a", "-p", & & "b=c", "27", & & "d e", "-echo", & & "-pf", " ", & & "Ss", " ", & & " ", " "/ data outargv /"a", "-p", & & "b=c", "27", & & "d e", "-echo", & & "-pf", " ", & & "Ss", " ", & & " ", " "/ errs = 0 call MTest_Init( ierr ) call MTestSpawnPossible( can_spawn, errs ) if ( can_spawn .eq. 0 ) then call MTest_Finalize( errs ) goto 300 endif call MPI_Comm_get_parent( parentcomm, ierr ) if (parentcomm .eq. MPI_COMM_NULL) then ! Create 2 more processes cmds(1) = "./spawnmultf90" cmds(2) = "./spawnmultf90" np(1) = 1 np(2) = 1 infos(1)= MPI_INFO_NULL infos(2)= MPI_INFO_NULL call MPI_Comm_spawn_multiple( 2, cmds, inargv, & & np, infos, 0, & & MPI_COMM_WORLD, intercomm, errcodes, ierr ) else intercomm = parentcomm endif ! We now have a valid intercomm call MPI_Comm_remote_size( intercomm, rsize, ierr ) call MPI_Comm_size( intercomm, size, ierr ) call MPI_Comm_rank( intercomm, rank, ierr ) if (parentcomm .eq. MPI_COMM_NULL) then ! Master if (rsize .ne. np(1) + np(2)) then errs = errs + 1 print *, "Did not create ", np(1)+np(2), & & " processes (got ", rsize, ")" endif do i=0, rsize-1 call MPI_Send( i, 1, MPI_INTEGER, i, 0, intercomm, ierr ) enddo ! We could use intercomm reduce to get the errors from the ! children, but we'll use a simpler loop to make sure that ! we get valid data do i=0, rsize-1 call MPI_Recv( err, 1, MPI_INTEGER, i, 1, intercomm, & & MPI_STATUS_IGNORE, ierr ) errs = errs + err enddo else ! Child ! FIXME: This assumes that stdout is handled for the children ! (the error count will still be reported to the parent) argc = iargc() do i=1, argc call getarg( i, argv(i) ) enddo if (size .ne. 2) then errs = errs + 1 print *, "(Child) Did not create ", 2, & & " processes (got ",size, ")" call mpi_comm_size( MPI_COMM_WORLD, wsize, ierr ) if (wsize .eq. 2) then errs = errs + 1 print *, "(Child) world size is 2 but ", & & " local intercomm size is not 2" endif endif call MPI_Recv( i, 1, MPI_INTEGER, 0, 0, intercomm, status, ierr & & ) if (i .ne. rank) then errs = errs + 1 print *, "Unexpected rank on child ", rank, "(",i,")" endif ! Check the command line do i=1, argc if (outargv(rank+1,i) .eq. " ") then errs = errs + 1 print *, "Wrong number of arguments (", argc, ")" goto 200 endif if (argv(i) .ne. outargv(rank+1,i)) then errs = errs + 1 print *, "Found arg ", argv(i), " but expected ", & & outargv(rank+1,i) endif enddo 200 continue if (outargv(rank+1,i) .ne. " ") then ! We had too few args in the spawned command errs = errs + 1 print *, "Too few arguments to spawned command" endif ! Send the errs back to the master process call MPI_Ssend( errs, 1, MPI_INTEGER, 0, 1, intercomm, ierr ) endif ! It isn't necessary to free the intercomm, but it should not hurt call MPI_Comm_free( intercomm, ierr ) ! Note that the MTest_Finalize get errs only over COMM_WORLD if (parentcomm .eq. MPI_COMM_NULL) then call MTest_Finalize( errs ) endif 300 continue call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/spawn/spawnf90.f900000644000175000017500000000575512620254305020110 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer errs, err integer rank, size, rsize, i integer np integer errcodes(2) type(MPI_Comm) parentcomm, intercomm type(MPI_Status) status integer ierr integer can_spawn errs = 0 np = 2 call MTest_Init( ierr ) call MTestSpawnPossible( can_spawn, errs ) if ( can_spawn .eq. 0 ) then call MTest_Finalize( errs ) goto 300 endif call MPI_Comm_get_parent( parentcomm, ierr ) if (parentcomm .eq. MPI_COMM_NULL) then ! Create 2 more processes call MPI_Comm_spawn( "./spawnf90", MPI_ARGV_NULL, np, & & MPI_INFO_NULL, 0, MPI_COMM_WORLD, intercomm, errcodes & & ,ierr ) else intercomm = parentcomm endif ! We now have a valid intercomm call MPI_Comm_remote_size( intercomm, rsize, ierr ) call MPI_Comm_size( intercomm, size, ierr ) call MPI_Comm_rank( intercomm, rank, ierr ) if (parentcomm .eq. MPI_COMM_NULL) then ! Master if (rsize .ne. np) then errs = errs + 1 print *, "Did not create ", np, " processes (got ", rsize, & & ")" endif if (rank .eq. 0) then do i=0,rsize-1 call MPI_Send( i, 1, MPI_INTEGER, i, 0, intercomm, ierr & & ) enddo ! We could use intercomm reduce to get the errors from the ! children, but we'll use a simpler loop to make sure that ! we get valid data do i=0, rsize-1 call MPI_Recv( err, 1, MPI_INTEGER, i, 1, intercomm, & & MPI_STATUS_IGNORE, ierr ) errs = errs + err enddo endif else ! Child if (size .ne. np) then errs = errs + 1 print *, "(Child) Did not create ", np, " processes (got " & & ,size, ")" endif call MPI_Recv( i, 1, MPI_INTEGER, 0, 0, intercomm, status, & & ierr ) if (i .ne. rank) then errs = errs + 1 print *, "Unexpected rank on child ", rank, "(",i,")" endif ! Send the errs back to the master process call MPI_Ssend( errs, 1, MPI_INTEGER, 0, 1, intercomm, ierr ) endif ! It isn't necessary to free the intercomm, but it should not hurt call MPI_Comm_free( intercomm, ierr ) ! Note that the MTest_Finalize get errs only over COMM_WORLD ! Note also that both the parent and child will generate "No ! Errors" if both call MTest_Finalize if (parentcomm .eq. MPI_COMM_NULL) then call MTest_Finalize( errs ) endif 300 continue call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/spawn/Makefile.am0000644000175000017500000000126012620254305020140 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f08.mtest EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 noinst_PROGRAMS = namepubf90 spawnf90 spawnargvf90 spawnmultf90 spawnmult2f90 connaccf90 # add "-lU77" (or equivalent) to the link line for these tests that use getarg spawnargvf90_LDADD = $(LDADD) $(FC_GETARG_LIBS) spawnmultf90_LDADD = $(LDADD) $(FC_GETARG_LIBS) noinst_PROGRAMS += spawnargvf03 spawnmultf03 spawnargvf03_SOURCES = spawnargvf03.f90 spawnmultf03_SOURCES = spawnmultf03.f90 mpi-testsuite-3.2+dfsg/f08/spawn/testlist.in0000644000175000017500000000021712620254305020310 0ustar mbanckmbanck@namepub_tests@namepubf90 2 spawnf90 1 spawnargvf90 1 @namepub_tests@connaccf90 2 spawnmultf90 1 spawnmult2f90 2 spawnargvf03 1 spawnmultf03 1 mpi-testsuite-3.2+dfsg/f08/spawn/spawnmult2f90.f900000644000175000017500000001064212620254305021063 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! This tests spawn_mult by using the same executable and no command-line ! options. The attribute MPI_APPNUM is used to determine which ! executable is running. ! program main use mpi_f08 integer (kind=MPI_ADDRESS_KIND) aint integer errs, err integer rank, size, rsize, wsize, i integer np(2) type(MPI_Info) infos(2) integer errcodes(2) type(MPI_Comm) parentcomm, intercomm type(MPI_Status) status character*(30) cmds(2) integer appnum logical flag integer ierr integer can_spawn errs = 0 call MTest_Init( ierr ) call MTestSpawnPossible( can_spawn, errs ) if ( can_spawn .eq. 0 ) then call MTest_Finalize( errs ) goto 300 endif call MPI_Comm_get_parent( parentcomm, ierr ) if (parentcomm .eq. MPI_COMM_NULL) then ! Create 2 more processes cmds(1) = "./spawnmult2f90" cmds(2) = "./spawnmult2f90" np(1) = 1 np(2) = 1 infos(1)= MPI_INFO_NULL infos(2)= MPI_INFO_NULL call MPI_Comm_spawn_multiple( 2, cmds, MPI_ARGVS_NULL, & & np, infos, 0, & & MPI_COMM_WORLD, intercomm, errcodes, ierr ) else intercomm = parentcomm endif ! We now have a valid intercomm call MPI_Comm_remote_size( intercomm, rsize, ierr ) call MPI_Comm_size( intercomm, size, ierr ) call MPI_Comm_rank( intercomm, rank, ierr ) if (parentcomm .eq. MPI_COMM_NULL) then ! Master if (rsize .ne. np(1) + np(2)) then errs = errs + 1 print *, "Did not create ", np(1)+np(2), & & " processes (got ", rsize, ")" endif ! Allow a multi-process parent if (rank .eq. 0) then do i=0, rsize-1 call MPI_Send( i, 1, MPI_INTEGER, i, 0, intercomm, & & ierr ) enddo ! We could use intercomm reduce to get the errors from the ! children, but we'll use a simpler loop to make sure that ! we get valid data do i=0, rsize-1 call MPI_Recv( err, 1, MPI_INTEGER, i, 1, intercomm, & & MPI_STATUS_IGNORE, ierr ) errs = errs + err enddo endif else ! Child ! FIXME: This assumes that stdout is handled for the children ! (the error count will still be reported to the parent) if (size .ne. 2) then errs = errs + 1 print *, "(Child) Did not create ", 2, & & " processes (got ",size, ")" call mpi_comm_size( MPI_COMM_WORLD, wsize, ierr ) if (wsize .eq. 2) then errs = errs + 1 print *, "(Child) world size is 2 but ", & & " local intercomm size is not 2" endif endif call MPI_Recv( i, 1, MPI_INTEGER, 0, 0, intercomm, status, ierr & & ) if (i .ne. rank) then errs = errs + 1 print *, "Unexpected rank on child ", rank, "(",i,")" endif ! ! Check for correct APPNUM call mpi_comm_get_attr( MPI_COMM_WORLD, MPI_APPNUM, aint, & & flag, ierr ) ! My appnum should be my rank in comm world if (flag) then appnum = aint if (appnum .ne. rank) then errs = errs + 1 print *, "appnum is ", appnum, " but should be ", rank endif else errs = errs + 1 print *, "appnum was not set" endif ! Send the errs back to the master process call MPI_Ssend( errs, 1, MPI_INTEGER, 0, 1, intercomm, ierr ) endif ! It isn't necessary to free the intercomm, but it should not hurt call MPI_Comm_free( intercomm, ierr ) ! Note that the MTest_Finalize get errs only over COMM_WORLD if (parentcomm .eq. MPI_COMM_NULL) then call MTest_Finalize( errs ) endif 300 continue call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/spawn/connaccf90.f900000644000175000017500000001166312620254305020357 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer size, rank, ierr, errs, eclass integer color type(MPI_Comm) comm, intercomm integer s1, s2 character*(MPI_MAX_PORT_NAME) portname errs = 0 call mtest_init( ierr ) call mpi_comm_size( MPI_COMM_WORLD, size, ierr ) call mpi_comm_rank( MPI_COMM_WORLD, rank, ierr ) if (size .lt. 2) then print *, 'This example must have at least 2 processes' call mpi_abort( MPI_COMM_WORLD, 1, ierr ) endif ! ! Part of this test is to ensure that lookups cleanly fail when ! a name is not present. This code is used to ensure that the ! name is not in use before the test. ! The MPI Standard (10.4.4 Name Publishing) requires that a process that ! has published a name unpublish it before it exits. ! This code attempts to lookup the name that we want to use as the ! service name for this example. If it is found (it should not be, but ! might if an MPI program with this service name exits without unpublishing ! the servicename, and the runtime that provides the name publishing ! leaves the servicename in use. This block of code should not be necessary ! in a robust MPI implementation, but should not cause problems for a correct. ! call mpi_barrier( MPI_COMM_WORLD, ierr ) call mpi_comm_set_errhandler( MPI_COMM_WORLD, MPI_ERRORS_RETURN, & & ierr ) call mpi_lookup_name( "fservtest", MPI_INFO_NULL, portname, ierr ) if (ierr .eq. MPI_SUCCESS) then call mpi_unpublish_name( "fservtest", MPI_INFO_NULL, portname, & & ierr ) endif call mpi_barrier( MPI_COMM_WORLD, ierr ) ! Ignore errors from unpublish_name (such as name-not-found) call mpi_comm_set_errhandler( MPI_COMM_WORLD, & & MPI_ERRORS_ARE_FATAL, ierr ) ! ! The server (accept) side is rank < size/2 and the client (connect) ! side is rank >= size/2 color = 0 if (rank .ge. size/2) color = 1 call mpi_comm_split( MPI_COMM_WORLD, color, rank, comm, ierr ) ! if (rank .lt. size/2) then ! Server call mpi_barrier( MPI_COMM_WORLD, ierr ) if (rank .eq. 0) then call mpi_open_port( MPI_INFO_NULL, portname, ierr ) call mpi_publish_name( "fservtest", MPI_INFO_NULL, & & portname, ierr ) endif call mpi_barrier( MPI_COMM_WORLD, ierr ) call mpi_comm_accept( portname, MPI_INFO_NULL, 0, comm, & & intercomm, ierr ) if (rank .eq. 0) then call mpi_close_port( portname, ierr ) call mpi_unpublish_name( "fservtest", MPI_INFO_NULL, & & portname, ierr ) endif else ! Client call mpi_comm_set_errhandler( MPI_COMM_WORLD,MPI_ERRORS_RETURN, & & ierr ) ierr = MPI_SUCCESS call mpi_lookup_name( "fservtest", MPI_INFO_NULL, & & portname, ierr ) if (ierr .eq. MPI_SUCCESS) then errs = errs + 1 print *, 'lookup name returned a value before published' else call mpi_error_class( ierr, eclass, ierr ) if (eclass .ne. MPI_ERR_NAME) then errs = errs + 1 print *, ' Wrong error class, is ', eclass, ' must be ', & & MPI_ERR_NAME ! See the MPI-2 Standard, 5.4.4 endif endif call mpi_comm_set_errhandler( MPI_COMM_WORLD, & & MPI_ERRORS_ARE_FATAL, ierr ) call mpi_barrier( MPI_COMM_WORLD, ierr ) call mpi_barrier( MPI_COMM_WORLD, ierr ) call mpi_lookup_name( "fservtest", MPI_INFO_NULL, & & portname, ierr ) ! This should not happen (ERRORS_ARE_FATAL), but just in case... if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 print *, ' Major error: errors_are_fatal set but returned' print *, ' non MPI_SUCCESS value. Details:' call MTestPrintErrorMsg( ' Unable to lookup fservtest port', & & ierr ) ! Unable to continue without a valid port call mpi_abort( MPI_COMM_WORLD, 1, ierr ) endif call mpi_comm_connect( portname, MPI_INFO_NULL, 0, comm, & & intercomm, ierr ) endif ! ! Check that this is an acceptable intercomm call mpi_comm_size( intercomm, s1, ierr ) call mpi_comm_remote_size( intercomm, s2, ierr ) if (s1 + s2 .ne. size) then errs = errs + 1 print *, ' Wrong size for intercomm = ', s1+s2 endif call mpi_comm_free(comm, ierr) ! Everyone can now abandon the new intercomm call mpi_comm_disconnect( intercomm, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/spawn/spawnargvf90.f900000644000175000017500000000763512620254305020767 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! This is a special test that requires an getarg/iargc routine ! program main ! declared on the old sparc compilers use mpi_f08 integer errs, err integer rank, size, rsize, i integer np integer errcodes(2) type(MPI_Comm) parentcomm, intercomm type(MPI_Status) status character*(10) inargv(6), outargv(6) character*(80) argv(64) integer argc data inargv /"a", "b=c", "d e", "-pf", " Ss", " " / data outargv /"a", "b=c", "d e", "-pf", " Ss", " " / integer ierr integer can_spawn errs = 0 np = 2 call MTest_Init( ierr ) call MTestSpawnPossible( can_spawn, errs ) if ( can_spawn .eq. 0 ) then call MTest_Finalize( errs ) goto 300 endif call MPI_Comm_get_parent( parentcomm, ierr ) if (parentcomm .eq. MPI_COMM_NULL) then ! Create 2 more processes call MPI_Comm_spawn( "./spawnargvf90", inargv, np, & & MPI_INFO_NULL, 0, MPI_COMM_WORLD, intercomm, errcodes, & & ierr ) else intercomm = parentcomm endif ! We now have a valid intercomm call MPI_Comm_remote_size( intercomm, rsize, ierr ) call MPI_Comm_size( intercomm, size, ierr ) call MPI_Comm_rank( intercomm, rank, ierr ) if (parentcomm .eq. MPI_COMM_NULL) then ! Master if (rsize .ne. np) then errs = errs + 1 print *, "Did not create ", np, " processes (got & & ", rsize, ")" endif do i=0, rsize-1 call MPI_Send( i, 1, MPI_INTEGER, i, 0, intercomm, ierr ) enddo ! We could use intercomm reduce to get the errors from the ! children, but we'll use a simpler loop to make sure that ! we get valid data do i=0, rsize-1 call MPI_Recv( err, 1, MPI_INTEGER, i, 1, intercomm, & & MPI_STATUS_IGNORE, ierr ) errs = errs + err enddo else ! Child ! FIXME: This assumes that stdout is handled for the children ! (the error count will still be reported to the parent) argc = iargc() do i=1, argc call getarg( i, argv(i) ) enddo if (size .ne. np) then errs = errs + 1 print *, "(Child) Did not create ", np, " processes (got ", & & size, ")" endif call MPI_Recv( i, 1, MPI_INTEGER, 0, 0, intercomm, status, ierr & & ) if (i .ne. rank) then errs = errs + 1 print *, "Unexpected rank on child ", rank, "(",i,")" endif ! Check the command line do i=1, argc if (outargv(i) .eq. " ") then errs = errs + 1 print *, "Wrong number of arguments (", argc, ")" goto 200 endif if (argv(i) .ne. outargv(i)) then errs = errs + 1 print *, "Found arg ", argv(i), " but expected ", & & outargv(i) endif enddo 200 continue if (outargv(i) .ne. " ") then ! We had too few args in the spawned command errs = errs + 1 print *, "Too few arguments to spawned command" endif ! Send the errs back to the master process call MPI_Ssend( errs, 1, MPI_INTEGER, 0, 1, intercomm, ierr ) endif ! It isn't necessary to free the intercomm, but it should not hurt call MPI_Comm_free( intercomm, ierr ) ! Note that the MTest_Finalize get errs only over COMM_WORLD if (parentcomm .eq. MPI_COMM_NULL) then call MTest_Finalize( errs ) endif 300 continue call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/spawn/spawnargvf03.f900000644000175000017500000000775612620254305020765 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! This test makes use of routines to access the command line added in ! Fortran 2003 ! program main ! declared on the old sparc compilers use mpi_f08 integer errs, err integer rank, size, rsize, i integer np integer errcodes(2) type(MPI_Comm) parentcomm, intercomm type(MPI_Status) status character*(10) inargv(6), outargv(6) character*(80) argv(64) integer argc data inargv /"a", "b=c", "d e", "-pf", " Ss", " " / data outargv /"a", "b=c", "d e", "-pf", " Ss", " " / integer ierr integer comm_size integer can_spawn errs = 0 np = 2 call MTest_Init( ierr ) call MTestSpawnPossible( can_spawn, errs ) if ( can_spawn .eq. 0 ) then call MTest_Finalize( errs ) goto 300 endif call MPI_Comm_get_parent( parentcomm, ierr ) if (parentcomm .eq. MPI_COMM_NULL) then ! Create 2 more processes call MPI_Comm_spawn( "./spawnargvf03", inargv, np, & & MPI_INFO_NULL, 0, MPI_COMM_WORLD, intercomm, errcodes, & & ierr ) else intercomm = parentcomm endif ! We now have a valid intercomm call MPI_Comm_remote_size( intercomm, rsize, ierr ) call MPI_Comm_size( intercomm, size, ierr ) call MPI_Comm_rank( intercomm, rank, ierr ) if (parentcomm .eq. MPI_COMM_NULL) then ! Master if (rsize .ne. np) then errs = errs + 1 print *, "Did not create ", np, " processes (got & & ", rsize, ")" endif do i=0, rsize-1 call MPI_Send( i, 1, MPI_INTEGER, i, 0, intercomm, ierr ) enddo ! We could use intercomm reduce to get the errors from the ! children, but we'll use a simpler loop to make sure that ! we get valid data do i=0, rsize-1 call MPI_Recv( err, 1, MPI_INTEGER, i, 1, intercomm, & & MPI_STATUS_IGNORE, ierr ) errs = errs + err enddo else ! Child ! FIXME: This assumes that stdout is handled for the children ! (the error count will still be reported to the parent) argc = command_argument_count() do i=1, argc call get_command_argument( i, argv(i) ) enddo if (size .ne. np) then errs = errs + 1 print *, "(Child) Did not create ", np, " processes (got ", & & size, ")" endif call MPI_Recv( i, 1, MPI_INTEGER, 0, 0, intercomm, status, ierr & & ) if (i .ne. rank) then errs = errs + 1 print *, "Unexpected rank on child ", rank, "(",i,")" endif ! Check the command line do i=1, argc if (outargv(i) .eq. " ") then errs = errs + 1 print *, "Wrong number of arguments (", argc, ")" goto 200 endif if (argv(i) .ne. outargv(i)) then errs = errs + 1 print *, "Found arg ", argv(i), " but expected ", & & outargv(i) endif enddo 200 continue if (outargv(i) .ne. " ") then ! We had too few args in the spawned command errs = errs + 1 print *, "Too few arguments to spawned command" endif ! Send the errs back to the master process call MPI_Ssend( errs, 1, MPI_INTEGER, 0, 1, intercomm, ierr ) endif ! It isn't necessary to free the intercomm, but it should not hurt call MPI_Comm_free( intercomm, ierr ) ! Note that the MTest_Finalize get errs only over COMM_WORLD if (parentcomm .eq. MPI_COMM_NULL) then call MTest_Finalize( errs ) endif 300 continue call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/coll/0000755000175000017500000000000012621010233015675 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f08/coll/allredint8f08.f900000644000175000017500000000100312620254305020604 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2006 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer*8 inbuf, outbuf integer errs, ierr errs = 0 call mtest_init( ierr ) ! ! A simple test of allreduce for the optional integer*8 type call mpi_allreduce(inbuf, outbuf, 1, MPI_INTEGER8, MPI_SUM, & & MPI_COMM_WORLD, ierr) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/coll/split_typef08.f900000644000175000017500000000260412620254305020742 0ustar mbanckmbanck! This file created from test/mpi/f77/coll/split_typef.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2012 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer ierr, errs integer i, ans, size, rank, color TYPE(MPI_Comm) comm, newcomm integer maxSize, displ parameter (maxSize=128) integer scounts(maxSize), sdispls(maxSize) integer rcounts(maxSize), rdispls(maxSize) TYPE(MPI_Datatype) stype, rtype integer sbuf(maxSize), rbuf(maxSize) errs = 0 call mtest_init( ierr ) call mpi_comm_dup( MPI_COMM_WORLD, comm, ierr ) call mpi_comm_split_type( comm, MPI_COMM_TYPE_SHARED, rank, & & MPI_INFO_NULL, newcomm, ierr ) call mpi_comm_rank( newcomm, rank, ierr ) call mpi_comm_size( newcomm, size, ierr ) do i=1, size scounts(i) = 1 sdispls(i) = (i-1) stype = MPI_INTEGER sbuf(i) = rank * size + i rcounts(i) = 1 rdispls(i) = (i-1) rtype = MPI_INTEGER rbuf(i) = -1 enddo call mpi_alltoallv( sbuf, scounts, sdispls, stype, & & rbuf, rcounts, rdispls, rtype, newcomm, ierr ) call mpi_comm_free( newcomm, ierr ) call mpi_comm_free( comm, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/coll/testlist0000644000175000017500000000043112620254305017502 0ustar mbanckmbanckuallreducef08 4 exscanf08 5 alltoallwf08 7 alltoallvf08 7 inplacef08 4 reducelocalf08 2 mpiversion=2.2 redscatf08 4 split_typef08 4 mpiversion=3.0 nonblockingf08 4 mpiversion=3.0 vw_inplacef08 4 mpiversion=2.2 red_scat_blockf08 4 mpiversion=2.2 nonblocking_inpf08 4 mpiversion=3.0 mpi-testsuite-3.2+dfsg/f08/coll/Makefile.in0000644000175000017500000006027412621010233017753 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = uallreducef08$(EXEEXT) exscanf08$(EXEEXT) \ alltoallwf08$(EXEEXT) inplacef08$(EXEEXT) \ allredint8f08$(EXEEXT) allredopttf08$(EXEEXT) \ reducelocalf08$(EXEEXT) alltoallvf08$(EXEEXT) \ redscatf08$(EXEEXT) split_typef08$(EXEEXT) \ nonblockingf08$(EXEEXT) vw_inplacef08$(EXEEXT) \ red_scat_blockf08$(EXEEXT) nonblocking_inpf08$(EXEEXT) subdir = f08/coll ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) allredint8f08_SOURCES = allredint8f08.f90 allredint8f08_OBJECTS = allredint8f08.$(OBJEXT) allredint8f08_LDADD = $(LDADD) allredint8f08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o allredopttf08_SOURCES = allredopttf08.f90 allredopttf08_OBJECTS = allredopttf08.$(OBJEXT) allredopttf08_LDADD = $(LDADD) allredopttf08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o alltoallvf08_SOURCES = alltoallvf08.f90 alltoallvf08_OBJECTS = alltoallvf08.$(OBJEXT) alltoallvf08_LDADD = $(LDADD) alltoallvf08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o alltoallwf08_SOURCES = alltoallwf08.f90 alltoallwf08_OBJECTS = alltoallwf08.$(OBJEXT) alltoallwf08_LDADD = $(LDADD) alltoallwf08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o exscanf08_SOURCES = exscanf08.f90 exscanf08_OBJECTS = exscanf08.$(OBJEXT) exscanf08_LDADD = $(LDADD) exscanf08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o inplacef08_SOURCES = inplacef08.f90 inplacef08_OBJECTS = inplacef08.$(OBJEXT) inplacef08_LDADD = $(LDADD) inplacef08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o nonblocking_inpf08_SOURCES = nonblocking_inpf08.f90 nonblocking_inpf08_OBJECTS = nonblocking_inpf08.$(OBJEXT) nonblocking_inpf08_LDADD = $(LDADD) nonblocking_inpf08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o nonblockingf08_SOURCES = nonblockingf08.f90 nonblockingf08_OBJECTS = nonblockingf08.$(OBJEXT) nonblockingf08_LDADD = $(LDADD) nonblockingf08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o red_scat_blockf08_SOURCES = red_scat_blockf08.f90 red_scat_blockf08_OBJECTS = red_scat_blockf08.$(OBJEXT) red_scat_blockf08_LDADD = $(LDADD) red_scat_blockf08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o redscatf08_SOURCES = redscatf08.f90 redscatf08_OBJECTS = redscatf08.$(OBJEXT) redscatf08_LDADD = $(LDADD) redscatf08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o reducelocalf08_SOURCES = reducelocalf08.f90 reducelocalf08_OBJECTS = reducelocalf08.$(OBJEXT) reducelocalf08_LDADD = $(LDADD) reducelocalf08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o split_typef08_SOURCES = split_typef08.f90 split_typef08_OBJECTS = split_typef08.$(OBJEXT) split_typef08_LDADD = $(LDADD) split_typef08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o uallreducef08_SOURCES = uallreducef08.f90 uallreducef08_OBJECTS = uallreducef08.$(OBJEXT) uallreducef08_LDADD = $(LDADD) uallreducef08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o vw_inplacef08_SOURCES = vw_inplacef08.f90 vw_inplacef08_OBJECTS = vw_inplacef08.$(OBJEXT) vw_inplacef08_LDADD = $(LDADD) vw_inplacef08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = SOURCES = allredint8f08.f90 allredopttf08.f90 alltoallvf08.f90 \ alltoallwf08.f90 exscanf08.f90 inplacef08.f90 \ nonblocking_inpf08.f90 nonblockingf08.f90 \ red_scat_blockf08.f90 redscatf08.f90 reducelocalf08.f90 \ split_typef08.f90 uallreducef08.f90 vw_inplacef08.f90 DIST_SOURCES = allredint8f08.f90 allredopttf08.f90 alltoallvf08.f90 \ alltoallwf08.f90 exscanf08.f90 inplacef08.f90 \ nonblocking_inpf08.f90 nonblockingf08.f90 \ red_scat_blockf08.f90 redscatf08.f90 reducelocalf08.f90 \ split_typef08.f90 uallreducef08.f90 vw_inplacef08.f90 am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_f08.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F08 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f08/util/mtestf08.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 all: all-am .SUFFIXES: .SUFFIXES: .f90 .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f08.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f08/coll/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f08/coll/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f08.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) allredint8f08$(EXEEXT): $(allredint8f08_OBJECTS) $(allredint8f08_DEPENDENCIES) $(EXTRA_allredint8f08_DEPENDENCIES) @rm -f allredint8f08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(allredint8f08_OBJECTS) $(allredint8f08_LDADD) $(LIBS) allredopttf08$(EXEEXT): $(allredopttf08_OBJECTS) $(allredopttf08_DEPENDENCIES) $(EXTRA_allredopttf08_DEPENDENCIES) @rm -f allredopttf08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(allredopttf08_OBJECTS) $(allredopttf08_LDADD) $(LIBS) alltoallvf08$(EXEEXT): $(alltoallvf08_OBJECTS) $(alltoallvf08_DEPENDENCIES) $(EXTRA_alltoallvf08_DEPENDENCIES) @rm -f alltoallvf08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(alltoallvf08_OBJECTS) $(alltoallvf08_LDADD) $(LIBS) alltoallwf08$(EXEEXT): $(alltoallwf08_OBJECTS) $(alltoallwf08_DEPENDENCIES) $(EXTRA_alltoallwf08_DEPENDENCIES) @rm -f alltoallwf08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(alltoallwf08_OBJECTS) $(alltoallwf08_LDADD) $(LIBS) exscanf08$(EXEEXT): $(exscanf08_OBJECTS) $(exscanf08_DEPENDENCIES) $(EXTRA_exscanf08_DEPENDENCIES) @rm -f exscanf08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(exscanf08_OBJECTS) $(exscanf08_LDADD) $(LIBS) inplacef08$(EXEEXT): $(inplacef08_OBJECTS) $(inplacef08_DEPENDENCIES) $(EXTRA_inplacef08_DEPENDENCIES) @rm -f inplacef08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(inplacef08_OBJECTS) $(inplacef08_LDADD) $(LIBS) nonblocking_inpf08$(EXEEXT): $(nonblocking_inpf08_OBJECTS) $(nonblocking_inpf08_DEPENDENCIES) $(EXTRA_nonblocking_inpf08_DEPENDENCIES) @rm -f nonblocking_inpf08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(nonblocking_inpf08_OBJECTS) $(nonblocking_inpf08_LDADD) $(LIBS) nonblockingf08$(EXEEXT): $(nonblockingf08_OBJECTS) $(nonblockingf08_DEPENDENCIES) $(EXTRA_nonblockingf08_DEPENDENCIES) @rm -f nonblockingf08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(nonblockingf08_OBJECTS) $(nonblockingf08_LDADD) $(LIBS) red_scat_blockf08$(EXEEXT): $(red_scat_blockf08_OBJECTS) $(red_scat_blockf08_DEPENDENCIES) $(EXTRA_red_scat_blockf08_DEPENDENCIES) @rm -f red_scat_blockf08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(red_scat_blockf08_OBJECTS) $(red_scat_blockf08_LDADD) $(LIBS) redscatf08$(EXEEXT): $(redscatf08_OBJECTS) $(redscatf08_DEPENDENCIES) $(EXTRA_redscatf08_DEPENDENCIES) @rm -f redscatf08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(redscatf08_OBJECTS) $(redscatf08_LDADD) $(LIBS) reducelocalf08$(EXEEXT): $(reducelocalf08_OBJECTS) $(reducelocalf08_DEPENDENCIES) $(EXTRA_reducelocalf08_DEPENDENCIES) @rm -f reducelocalf08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(reducelocalf08_OBJECTS) $(reducelocalf08_LDADD) $(LIBS) split_typef08$(EXEEXT): $(split_typef08_OBJECTS) $(split_typef08_DEPENDENCIES) $(EXTRA_split_typef08_DEPENDENCIES) @rm -f split_typef08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(split_typef08_OBJECTS) $(split_typef08_LDADD) $(LIBS) uallreducef08$(EXEEXT): $(uallreducef08_OBJECTS) $(uallreducef08_DEPENDENCIES) $(EXTRA_uallreducef08_DEPENDENCIES) @rm -f uallreducef08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(uallreducef08_OBJECTS) $(uallreducef08_LDADD) $(LIBS) vw_inplacef08$(EXEEXT): $(vw_inplacef08_OBJECTS) $(vw_inplacef08_DEPENDENCIES) $(EXTRA_vw_inplacef08_DEPENDENCIES) @rm -f vw_inplacef08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(vw_inplacef08_OBJECTS) $(vw_inplacef08_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f08/util/mtestf08.o: $(top_srcdir)/f08/util/mtestf08.f90 (cd $(top_builddir)/f08/util && $(MAKE) mtestf08.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f08/coll/reducelocalf08.f900000644000175000017500000000464512620254305021037 0ustar mbanckmbanck! This file created from test/mpi/f77/coll/reducelocalf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2009 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! ! Test Fortran MPI_Reduce_local with MPI_OP_SUM and with user-defined operation. ! subroutine user_op( invec, outvec, count, datatype ) use mpi_f08 integer invec(*), outvec(*) integer count TYPE(MPI_Datatype) datatype integer ii if (datatype .ne. MPI_INTEGER) then write(6,*) 'Invalid datatype passed to user_op()' return endif do ii=1, count outvec(ii) = invec(ii) * 2 + outvec(ii) enddo end program main use mpi_f08 integer max_buf_size parameter (max_buf_size=65000) integer vin(max_buf_size), vout(max_buf_size) external user_op integer ierr, errs integer count TYPE(MPI_Op) myop integer ii errs = 0 call mtest_init(ierr) count = 0 do while (count .le. max_buf_size ) do ii = 1,count vin(ii) = ii vout(ii) = ii enddo call mpi_reduce_local( vin, vout, count, & & MPI_INTEGER, MPI_SUM, ierr ) ! Check if the result is correct do ii = 1,count if ( vin(ii) .ne. ii ) then errs = errs + 1 endif if ( vout(ii) .ne. 2*ii ) then errs = errs + 1 endif enddo if ( count .gt. 0 ) then count = count + count else count = 1 endif enddo call mpi_op_create( user_op, .false., myop, ierr ) count = 0 do while (count .le. max_buf_size) do ii = 1, count vin(ii) = ii vout(ii) = ii enddo call mpi_reduce_local( vin, vout, count, & & MPI_INTEGER, myop, ierr ) ! Check if the result is correct do ii = 1, count if ( vin(ii) .ne. ii ) then errs = errs + 1 endif if ( vout(ii) .ne. 3*ii ) then errs = errs + 1 endif enddo if ( count .gt. 0 ) then count = count + count else count = 1 endif enddo call mpi_op_free( myop, ierr ) call mtest_finalize(errs) call mpi_finalize(ierr) end mpi-testsuite-3.2+dfsg/f08/coll/allredopttf08.f900000644000175000017500000000270012620254305020715 0ustar mbanckmbanck! This file created from test/mpi/f77/coll/allredopttf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2007 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer*8 inbuf, outbuf double complex zinbuf, zoutbuf integer wsize integer errs, ierr errs = 0 call mtest_init( ierr ) call mpi_comm_size( MPI_COMM_WORLD, wsize, ierr ) ! ! A simple test of allreduce for the optional integer*8 type inbuf = 1 outbuf = 0 call mpi_allreduce(inbuf, outbuf, 1, MPI_INTEGER8, MPI_SUM, & & MPI_COMM_WORLD, ierr) if (outbuf .ne. wsize ) then errs = errs + 1 print *, "result wrong for sum with integer*8 = got ", outbuf, & & " but should have ", wsize endif zinbuf = (1,1) zoutbuf = (0,0) call mpi_allreduce(zinbuf, zoutbuf, 1, MPI_DOUBLE_COMPLEX, & & MPI_SUM, MPI_COMM_WORLD, ierr) if (dreal(zoutbuf) .ne. wsize ) then errs = errs + 1 print *, "result wrong for sum with double complex = got ", & & outbuf, " but should have ", wsize endif if (dimag(zoutbuf) .ne. wsize ) then errs = errs + 1 print *, "result wrong for sum with double complex = got ", & & outbuf, " but should have ", wsize endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/coll/uallreducef08.f900000644000175000017500000000320212620254305020666 0ustar mbanckmbanck! This file created from test/mpi/f77/coll/uallreducef.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! ! Test user-defined operations. This tests a simple commutative operation ! subroutine uop( cin, cout, count, datatype ) use mpi_f08 integer cin(*), cout(*) integer count TYPE(MPI_Datatype) datatype integer i if (datatype .ne. MPI_INTEGER) then print *, 'Invalid datatype (',datatype,') passed to user_op()' return endif do i=1, count cout(i) = cin(i) + cout(i) enddo end program main use mpi_f08 external uop integer ierr, errs integer count, vin(65000), vout(65000), i, size TYPE(MPI_Op) sumop TYPE(MPI_Comm) comm errs = 0 call mtest_init(ierr) call mpi_op_create( uop, .true., sumop, ierr ) comm = MPI_COMM_WORLD call mpi_comm_size( comm, size, ierr ) count = 1 do while (count .lt. 65000) do i=1, count vin(i) = i vout(i) = -1 enddo call mpi_allreduce( vin, vout, count, MPI_INTEGER, sumop, & & comm, ierr ) ! Check that all results are correct do i=1, count if (vout(i) .ne. i * size) then errs = errs + 1 if (errs .lt. 10) print *, "vout(",i,") = ", vout(i) endif enddo count = count + count enddo call mpi_op_free( sumop, ierr ) call mtest_finalize(errs) call mpi_finalize(ierr) end mpi-testsuite-3.2+dfsg/f08/coll/nonblocking_inpf08.f900000644000175000017500000001042312620254305021715 0ustar mbanckmbanck! This file created from test/mpi/f77/coll/nonblocking_inpf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2012 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! A simple test for Fortran support of the MPI_IN_PLACE value in Alltoall[vw]. ! program main use mpi_f08 integer SIZEOFINT integer MAX_SIZE parameter (MAX_SIZE=1024) integer rbuf(MAX_SIZE) integer rdispls(MAX_SIZE), rcounts(MAX_SIZE) TYPE(MPI_Datatype) rtypes(MAX_SIZE) integer rank, size TYPE(MPI_Comm) comm TYPE(MPI_Request) req integer sumval, ierr, errs integer iexpected, igot integer i, j errs = 0 call mtest_init( ierr ) comm = MPI_COMM_WORLD call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) call mpi_type_size( MPI_INTEGER, SIZEOFINT, ierr ) do i=1,MAX_SIZE rbuf(i) = -1 enddo do i=1,size rbuf(i) = (i-1) * size + rank enddo call mpi_ialltoall( MPI_IN_PLACE, -1, MPI_DATATYPE_NULL, & & rbuf, 1, MPI_INTEGER, comm, req, ierr ) call mpi_wait( req, MPI_STATUS_IGNORE, ierr ) do i=1,size if (rbuf(i) .ne. (rank*size + i - 1)) then errs = errs + 1 print *, '[', rank, ']: IALLTOALL rbuf(', i, ') = ', & & rbuf(i), ', should be', rank * size + i - 1 endif enddo do i=1,MAX_SIZE rbuf(i) = -1 enddo do i=1,size rcounts(i) = i-1 + rank rdispls(i) = (i-1) * (2*size) do j=0,rcounts(i)-1 rbuf(rdispls(i)+j+1) = 100 * rank + 10 * (i-1) + j enddo enddo call mpi_ialltoallv( MPI_IN_PLACE, [0], [0], MPI_DATATYPE_NULL, & & rbuf, rcounts, rdispls, MPI_INTEGER, & & comm, req, ierr ) call mpi_wait( req, MPI_STATUS_IGNORE, ierr ) do i=1,size do j=0,rcounts(i)-1 iexpected = 100 * (i-1) + 10 * rank + j igot = rbuf(rdispls(i)+j+1) if ( igot .ne. iexpected ) then errs = errs + 1 print *, '[', rank, ']: IALLTOALLV got ', igot, & & ',but expected ', iexpected, & & ' for block=', i-1, ' element=', j endif enddo enddo do i=1,MAX_SIZE rbuf(i) = -1 enddo do i=1,size rcounts(i) = i-1 + rank rdispls(i) = (i-1) * (2*size) * SIZEOFINT rtypes(i) = MPI_INTEGER do j=0,rcounts(i)-1 rbuf(rdispls(i)/SIZEOFINT+j+1) = 100 * rank & & + 10 * (i-1) + j enddo enddo call mpi_ialltoallw( MPI_IN_PLACE, [0], [0], [MPI_DATATYPE_NULL], & & rbuf, rcounts, rdispls, rtypes, & & comm, req, ierr ) call mpi_wait( req, MPI_STATUS_IGNORE, ierr ) do i=1,size do j=0,rcounts(i)-1 iexpected = 100 * (i-1) + 10 * rank + j igot = rbuf(rdispls(i)/SIZEOFINT+j+1) if ( igot .ne. iexpected ) then errs = errs + 1 print *, '[', rank, ']: IALLTOALLW got ', igot, & & ',but expected ', iexpected, & & ' for block=', i-1, ' element=', j endif enddo enddo do i=1,MAX_SIZE rbuf(i) = -1 enddo do i = 1, size rbuf(i) = rank + (i-1) enddo call mpi_ireduce_scatter_block( MPI_IN_PLACE, rbuf, 1, & & MPI_INTEGER, MPI_SUM, comm, & & req, ierr ) call mpi_wait( req, MPI_STATUS_IGNORE, ierr ) sumval = size * rank + ((size-1) * size)/2 if ( rbuf(1) .ne. sumval ) then errs = errs + 1 print *, 'Ireduce_scatter_block does not get expected value.' print *, '[', rank, ']:', 'Got ', rbuf(1), ' but expected ', & & sumval, '.' endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/coll/vw_inplacef08.f900000644000175000017500000000715112620254305020677 0ustar mbanckmbanck! This file created from test/mpi/f77/coll/vw_inplacef.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2012 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! A simple test for Fortran support of the MPI_IN_PLACE value in Alltoall[vw]. ! program main use mpi_f08 integer SIZEOFINT integer MAX_SIZE parameter (MAX_SIZE=1024) integer rbuf(MAX_SIZE) integer rdispls(MAX_SIZE), rcounts(MAX_SIZE) TYPE(MPI_Datatype) rtypes(MAX_SIZE) integer ierr, errs integer root TYPE(MPI_Comm) comm integer rank, size integer iexpected, igot integer i, j errs = 0 call mtest_init( ierr ) comm = MPI_COMM_WORLD call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) call mpi_type_size( MPI_INTEGER, SIZEOFINT, ierr ) if (size .gt. MAX_SIZE) then print *, ' At most ', MAX_SIZE, ' processes allowed' call mpi_abort( MPI_COMM_WORLD, 1, ierr ) endif ! do i=1,MAX_SIZE rbuf(i) = -1 enddo do i=1,size rbuf(i) = (i-1) * size + rank enddo call mpi_alltoall( MPI_IN_PLACE, -1, MPI_DATATYPE_NULL, & & rbuf, 1, MPI_INTEGER, comm, ierr ) do i=1,size if (rbuf(i) .ne. (rank*size + i - 1)) then errs = errs + 1 print *, '[', rank, '] rbuf(', i, ') = ', rbuf(i), & & ', should be', rank * size + i - 1 endif enddo do i=1,MAX_SIZE rbuf(i) = -1 enddo do i=1,size rcounts(i) = (i-1) + rank rdispls(i) = (i-1) * (2*size) do j=0,rcounts(i)-1 rbuf(rdispls(i)+j+1) = 100 * rank + 10 * (i-1) + j enddo enddo call mpi_alltoallv( MPI_IN_PLACE, [0], [0], MPI_DATATYPE_NULL, & & rbuf, rcounts, rdispls, MPI_INTEGER, & & comm, ierr ) do i=1,size do j=0,rcounts(i)-1 iexpected = 100 * (i-1) + 10 * rank + j igot = rbuf(rdispls(i)+j+1) if ( igot .ne. iexpected ) then errs = errs + 1 print *, '[', rank, '] ALLTOALLV got ', igot, & & ',but expected ', iexpected, & & ' for block=', i-1, ' element=', j endif enddo enddo do i=1,MAX_SIZE rbuf(i) = -1 enddo ! Alltoallw's displs[] are in bytes not in type extents. do i=1,size rcounts(i) = (i-1) + rank rdispls(i) = (i-1) * (2*size) * SIZEOFINT rtypes(i) = MPI_INTEGER do j=0,rcounts(i)-1 rbuf(rdispls(i)/SIZEOFINT+j+1) = 100 * rank & & + 10 * (i-1) + j enddo enddo call mpi_alltoallw( MPI_IN_PLACE, [0], [0], [MPI_DATATYPE_NULL], & & rbuf, rcounts, rdispls, rtypes, & & comm, ierr ) do i=1,size do j=0,rcounts(i)-1 iexpected = 100 * (i-1) + 10 * rank + j igot = rbuf(rdispls(i)/SIZEOFINT+j+1) if ( igot .ne. iexpected ) then errs = errs + 1 print *, '[', rank, '] ALLTOALLW got ', igot, & & ',but expected ', iexpected, & & ' for block=', i-1, ' element=', j endif enddo enddo call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/coll/exscanf08.f900000644000175000017500000000611712620254305020032 0ustar mbanckmbanck! This file created from test/mpi/f77/coll/exscanf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! subroutine uop( cin, cout, count, datatype ) use mpi_f08 integer cin(*), cout(*) integer count TYPE(MPI_Datatype) datatype integer i if (datatype .ne. MPI_INTEGER) then write(6,*) 'Invalid datatype passed to user_op()' return endif do i=1, count cout(i) = cin(i) + cout(i) enddo end ! program main use mpi_f08 integer inbuf(2), outbuf(2) integer ans, rank, size TYPE(MPI_Comm) comm integer errs, ierr TYPE(MPI_Op) sumop external uop errs = 0 call mtest_init( ierr ) ! ! A simple test of exscan comm = MPI_COMM_WORLD call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) inbuf(1) = rank inbuf(2) = -rank call mpi_exscan( inbuf, outbuf, 2, MPI_INTEGER, MPI_SUM, comm, & & ierr ) ! this process has the sum of i from 0 to rank-1, which is ! (rank)(rank-1)/2 and -i ans = (rank * (rank - 1))/2 if (rank .gt. 0) then if (outbuf(1) .ne. ans) then errs = errs + 1 print *, rank, ' Expected ', ans, ' got ', outbuf(1) endif if (outbuf(2) .ne. -ans) then errs = errs + 1 print *, rank, ' Expected ', -ans, ' got ', outbuf(1) endif endif ! ! Try a user-defined operation ! call mpi_op_create( uop, .true., sumop, ierr ) inbuf(1) = rank inbuf(2) = -rank call mpi_exscan( inbuf, outbuf, 2, MPI_INTEGER, sumop, comm, & & ierr ) ! this process has the sum of i from 0 to rank-1, which is ! (rank)(rank-1)/2 and -i ans = (rank * (rank - 1))/2 if (rank .gt. 0) then if (outbuf(1) .ne. ans) then errs = errs + 1 print *, rank, ' sumop: Expected ', ans, ' got ', outbuf(1) endif if (outbuf(2) .ne. -ans) then errs = errs + 1 print *, rank, ' sumop: Expected ', -ans, ' got ', outbuf(1) endif endif call mpi_op_free( sumop, ierr ) ! ! Try a user-defined operation (and don't claim it is commutative) ! call mpi_op_create( uop, .false., sumop, ierr ) inbuf(1) = rank inbuf(2) = -rank call mpi_exscan( inbuf, outbuf, 2, MPI_INTEGER, sumop, comm, & & ierr ) ! this process has the sum of i from 0 to rank-1, which is ! (rank)(rank-1)/2 and -i ans = (rank * (rank - 1))/2 if (rank .gt. 0) then if (outbuf(1) .ne. ans) then errs = errs + 1 print *, rank, ' sumop2: Expected ', ans, ' got ', outbuf(1) endif if (outbuf(2) .ne. -ans) then errs = errs + 1 print *, rank, ' sumop2: Expected ', -ans, ' got ',outbuf(1) endif endif call mpi_op_free( sumop, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/coll/Makefile.am0000644000175000017500000000152612620254305017746 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f08.mtest EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 noinst_PROGRAMS = uallreducef08 \ exscanf08 \ alltoallwf08 \ inplacef08 \ allredint8f08 \ allredopttf08 \ reducelocalf08 \ alltoallvf08 \ redscatf08 \ split_typef08 \ nonblockingf08 \ vw_inplacef08 \ red_scat_blockf08 \ nonblocking_inpf08 mpi-testsuite-3.2+dfsg/f08/coll/red_scat_blockf08.f900000644000175000017500000000333012620254305021501 0ustar mbanckmbanck! This file created from test/mpi/f77/coll/red_scat_blockf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2012 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! A simple test for Fortran support of Reduce_scatter_block ! with or withoutMPI_IN_PLACE. ! program main use mpi_f08 integer MAX_SIZE parameter (MAX_SIZE=1024) integer sbuf(MAX_SIZE), rbuf(MAX_SIZE) integer rank, size TYPE(MPI_Comm) comm integer sumval, ierr, errs, i errs = 0 call mtest_init( ierr ) comm = MPI_COMM_WORLD call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) do i = 1, size sbuf(i) = rank + (i-1) enddo call MPI_Reduce_scatter_block(sbuf, rbuf, 1, MPI_INTEGER, & & MPI_SUM, comm, ierr) sumval = size * rank + ((size-1) * size)/2 if ( rbuf(1) .ne. sumval ) then errs = errs + 1 print *, 'Reduce_scatter_block does not get expected value.' print *, '[', rank, ']', 'Got ', rbuf(1), ' but expected ', & & sumval, '.' endif ! Try MPI_IN_PLACE do i = 1, size rbuf(i) = rank + (i-1) enddo call MPI_Reduce_scatter_block(MPI_IN_PLACE, rbuf, 1, MPI_INTEGER, & & MPI_SUM, comm, ierr) if ( rbuf(1) .ne. sumval ) then errs = errs + 1 print *, 'Reduce_scatter_block does not get expected value.' print *, '[', rank, ']', 'Got ', rbuf(1), ' but expected ', & & sumval, '.' endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/coll/nonblockingf08.f900000644000175000017500000000667312620254305021063 0ustar mbanckmbanck! This file created from test/mpi/f77/coll/nonblockingf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2012 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer NUM_INTS parameter (NUM_INTS=2) integer maxSize parameter (maxSize=128) integer scounts(maxSize), sdispls(maxSize) integer rcounts(maxSize), rdispls(maxSize) TYPE(MPI_Datatype) types(maxSize) integer sbuf(maxSize), rbuf(maxSize) integer size, rank TYPE(MPI_Comm) comm TYPE(MPI_Request) req integer ierr, errs integer ii, ans errs = 0 call mtest_init(ierr) comm = MPI_COMM_WORLD call MPI_Comm_size(comm, size, ierr) call MPI_Comm_rank(comm, rank, ierr) ! do ii = 1, size sbuf(2*ii-1) = ii sbuf(2*ii) = ii sbuf(2*ii-1) = ii sbuf(2*ii) = ii scounts(ii) = NUM_INTS rcounts(ii) = NUM_INTS sdispls(ii) = (ii-1) * NUM_INTS rdispls(ii) = (ii-1) * NUM_INTS types(ii) = MPI_INTEGER enddo call MPI_Ibarrier(comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call MPI_Ibcast(sbuf, NUM_INTS, MPI_INTEGER, 0, comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call MPI_Igather(sbuf, NUM_INTS, MPI_INTEGER, & & rbuf, NUM_INTS, MPI_INTEGER, & & 0, comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call MPI_Igatherv(sbuf, NUM_INTS, MPI_INTEGER, & & rbuf, rcounts, rdispls, MPI_INTEGER, & & 0, comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call MPI_Ialltoall(sbuf, NUM_INTS, MPI_INTEGER, & & rbuf, NUM_INTS, MPI_INTEGER, & & comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call MPI_Ialltoallv(sbuf, scounts, sdispls, MPI_INTEGER, & & rbuf, rcounts, rdispls, MPI_INTEGER, & & comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call MPI_Ialltoallw(sbuf, scounts, sdispls, types, & & rbuf, rcounts, rdispls, types, & & comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call MPI_Ireduce(sbuf, rbuf, NUM_INTS, MPI_INTEGER, & & MPI_SUM, 0, comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call MPI_Iallreduce(sbuf, rbuf, NUM_INTS, MPI_INTEGER, & & MPI_SUM, comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call MPI_Ireduce_scatter(sbuf, rbuf, rcounts, MPI_INTEGER, & & MPI_SUM, comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call MPI_Ireduce_scatter_block(sbuf, rbuf, NUM_INTS, MPI_INTEGER, & & MPI_SUM, comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call MPI_Iscan(sbuf, rbuf, NUM_INTS, MPI_INTEGER, & & MPI_SUM, comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call MPI_Iexscan(sbuf, rbuf, NUM_INTS, MPI_INTEGER, & & MPI_SUM, comm, req, ierr) call MPI_Wait(req, MPI_STATUS_IGNORE, ierr) call mtest_finalize( errs ) call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/coll/redscatf08.f900000644000175000017500000000443612620254305020200 0ustar mbanckmbanck! This file created from test/mpi/f77/coll/redscatf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2011 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! subroutine uop( cin, cout, count, datatype ) use mpi_f08 integer cin(*), cout(*) integer count TYPE(MPI_Datatype) datatype integer i if (datatype .ne. MPI_INTEGER) then write(6,*) 'Invalid datatype ',datatype,' passed to user_op()' return endif do i=1, count cout(i) = cin(i) + cout(i) enddo end ! ! Test of reduce scatter. ! ! Each processor contributes its rank + the index to the reduction, ! then receives the ith sum ! ! Can be called with any number of processors. ! program main use mpi_f08 integer errs, ierr, toterr integer maxsize parameter (maxsize=1024) integer sendbuf(maxsize), recvbuf, recvcounts(maxsize) integer size, rank, i, sumval TYPE(MPI_Comm) comm TYPE(MPI_Op) sumop external uop errs = 0 call mtest_init( ierr ) comm = MPI_COMM_WORLD call mpi_comm_size( comm, size, ierr ) call mpi_comm_rank( comm, rank, ierr ) if (size .gt. maxsize) then endif do i=1, size sendbuf(i) = rank + i - 1 recvcounts(i) = 1 enddo call mpi_reduce_scatter( sendbuf, recvbuf, recvcounts, & & MPI_INTEGER, MPI_SUM, comm, ierr ) sumval = size * rank + ((size - 1) * size)/2 ! recvbuf should be size * (rank + i) if (recvbuf .ne. sumval) then errs = errs + 1 print *, "Did not get expected value for reduce scatter" print *, rank, " Got ", recvbuf, " expected ", sumval endif call mpi_op_create( uop, .true., sumop, ierr ) call mpi_reduce_scatter( sendbuf, recvbuf, recvcounts, & & MPI_INTEGER, sumop, comm, ierr ) sumval = size * rank + ((size - 1) * size)/2 ! recvbuf should be size * (rank + i) if (recvbuf .ne. sumval) then errs = errs + 1 print *, "sumop: Did not get expected value for reduce scatter" print *, rank, " Got ", recvbuf, " expected ", sumval endif call mpi_op_free( sumop, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/coll/alltoallwf08.f900000644000175000017500000000423212620254305020540 0ustar mbanckmbanck! This file created from test/mpi/f77/coll/alltoallwf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer ierr, errs integer i, intsize, ans, size, rank, color TYPE(MPI_Comm) comm, newcomm integer maxSize parameter (maxSize=32) integer scounts(maxSize), sdispls(maxSize) integer rcounts(maxSize), rdispls(maxSize) TYPE(MPI_Datatype) stypes(maxSize), rtypes(maxSize) integer sbuf(maxSize), rbuf(maxSize) errs = 0 call mtest_init( ierr ) call mpi_type_size( MPI_INTEGER, intsize, ierr ) ! Get a comm call mpi_comm_dup( MPI_COMM_WORLD, comm, ierr ) call mpi_comm_size( comm, size, ierr ) if (size .gt. maxSize) then call mpi_comm_rank( comm, rank, ierr ) color = 1 if (rank .lt. maxSize) color = 0 call mpi_comm_split( comm, color, rank, newcomm, ierr ) call mpi_comm_free( comm, ierr ) comm = newcomm call mpi_comm_size( comm, size, ierr ) endif call mpi_comm_rank( comm, rank, ierr ) if (size .le. maxSize) then ! Initialize the data. Just use this as an all to all do i=1, size scounts(i) = 1 sdispls(i) = (i-1)*intsize stypes(i) = MPI_INTEGER sbuf(i) = rank * size + i rcounts(i) = 1 rdispls(i) = (i-1)*intsize rtypes(i) = MPI_INTEGER rbuf(i) = -1 enddo call mpi_alltoallw( sbuf, scounts, sdispls, stypes, & & rbuf, rcounts, rdispls, rtypes, comm, ierr ) ! ! check rbuf(i) = data from the ith location of the ith send buf, or ! rbuf(i) = (i-1) * size + i do i=1, size ans = (i-1) * size + rank + 1 if (rbuf(i) .ne. ans) then errs = errs + 1 print *, rank, ' rbuf(', i, ') = ', rbuf(i), & & ' expected ', ans endif enddo endif call mpi_comm_free( comm, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/coll/alltoallvf08.f900000644000175000017500000001113312620254305020535 0ustar mbanckmbanck! This file created from test/mpi/f77/coll/alltoallvf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2011 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer ierr, errs integer i, ans, size, rank, color TYPE(MPI_Comm) comm, newcomm integer maxSize, displ parameter (maxSize=128) integer scounts(maxSize), sdispls(maxSize) integer rcounts(maxSize), rdispls(maxSize) TYPE(MPI_Datatype) stype, rtype integer sbuf(maxSize), rbuf(maxSize) errs = 0 call mtest_init( ierr ) ! Get a comm call mpi_comm_dup( MPI_COMM_WORLD, comm, ierr ) call mpi_comm_size( comm, size, ierr ) if (size .gt. maxSize) then call mpi_comm_rank( comm, rank, ierr ) color = 1 if (rank .lt. maxSize) color = 0 call mpi_comm_split( comm, color, rank, newcomm, ierr ) call mpi_comm_free( comm, ierr ) comm = newcomm call mpi_comm_size( comm, size, ierr ) endif call mpi_comm_rank( comm, rank, ierr ) ! if (size .le. maxSize) then ! Initialize the data. Just use this as an all to all ! Use the same test as alltoallwf.c , except displacements are in units of ! integers instead of bytes do i=1, size scounts(i) = 1 sdispls(i) = (i-1) stype = MPI_INTEGER sbuf(i) = rank * size + i rcounts(i) = 1 rdispls(i) = (i-1) rtype = MPI_INTEGER rbuf(i) = -1 enddo call mpi_alltoallv( sbuf, scounts, sdispls, stype, & & rbuf, rcounts, rdispls, rtype, comm, ierr ) ! ! check rbuf(i) = data from the ith location of the ith send buf, or ! rbuf(i) = (i-1) * size + i do i=1, size ans = (i-1) * size + rank + 1 if (rbuf(i) .ne. ans) then errs = errs + 1 print *, rank, ' rbuf(', i, ') = ', rbuf(i), & & ' expected ', ans endif enddo ! ! A halo-exchange example - mostly zero counts ! do i=1, size scounts(i) = 0 sdispls(i) = 0 stype = MPI_INTEGER sbuf(i) = -1 rcounts(i) = 0 rdispls(i) = 0 rtype = MPI_INTEGER rbuf(i) = -1 enddo ! ! Note that the arrays are 1-origin displ = 0 if (rank .gt. 0) then scounts(1+rank-1) = 1 rcounts(1+rank-1) = 1 sdispls(1+rank-1) = displ rdispls(1+rank-1) = rank - 1 sbuf(1+displ) = rank displ = displ + 1 endif scounts(1+rank) = 1 rcounts(1+rank) = 1 sdispls(1+rank) = displ rdispls(1+rank) = rank sbuf(1+displ) = rank displ = displ + 1 if (rank .lt. size-1) then scounts(1+rank+1) = 1 rcounts(1+rank+1) = 1 sdispls(1+rank+1) = displ rdispls(1+rank+1) = rank+1 sbuf(1+displ) = rank displ = displ + 1 endif call mpi_alltoallv( sbuf, scounts, sdispls, stype, & & rbuf, rcounts, rdispls, rtype, comm, ierr ) ! ! Check the neighbor values are correctly moved ! if (rank .gt. 0) then if (rbuf(1+rank-1) .ne. rank-1) then errs = errs + 1 print *, rank, ' rbuf(',1+rank-1, ') = ', rbuf(1+rank-1), & & 'expected ', rank-1 endif endif if (rbuf(1+rank) .ne. rank) then errs = errs + 1 print *, rank, ' rbuf(', 1+rank, ') = ', rbuf(1+rank), & & 'expected ', rank endif if (rank .lt. size-1) then if (rbuf(1+rank+1) .ne. rank+1) then errs = errs + 1 print *, rank, ' rbuf(', 1+rank+1, ') = ',rbuf(1+rank+1), & & 'expected ', rank+1 endif endif do i=0,rank-2 if (rbuf(1+i) .ne. -1) then errs = errs + 1 print *, rank, ' rbuf(', 1+i, ') = ', rbuf(1+i), & & 'expected -1' endif enddo do i=rank+2,size-1 if (rbuf(1+i) .ne. -1) then errs = errs + 1 print *, rank, ' rbuf(', i, ') = ', rbuf(1+i), & & 'expected -1' endif enddo endif call mpi_comm_free( comm, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/coll/inplacef08.f900000644000175000017500000000523412620254305020163 0ustar mbanckmbanck! This file created from test/mpi/f77/coll/inplacef.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2005 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! This is a simple test that Fortran support the MPI_IN_PLACE value ! program main use mpi_f08 integer ierr, errs integer root TYPE(MPI_Comm) comm integer rank, size integer i integer MAX_SIZE parameter (MAX_SIZE=1024) integer rbuf(MAX_SIZE), rdispls(MAX_SIZE), rcount(MAX_SIZE), & & sbuf(MAX_SIZE) errs = 0 call mtest_init( ierr ) comm = MPI_COMM_WORLD call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) root = 0 ! Gather with inplace do i=1,size rbuf(i) = - i enddo rbuf(1+root) = root if (rank .eq. root) then call mpi_gather( MPI_IN_PLACE, 1, MPI_INTEGER, rbuf, 1, & & MPI_INTEGER, root, comm, ierr ) do i=1,size if (rbuf(i) .ne. i-1) then errs = errs + 1 print *, '[',rank,'] rbuf(', i, ') = ', rbuf(i), & & ' in gather' endif enddo else call mpi_gather( rank, 1, MPI_INTEGER, rbuf, 1, MPI_INTEGER, & & root, comm, ierr ) endif ! Gatherv with inplace do i=1,size rbuf(i) = - i rcount(i) = 1 rdispls(i) = i-1 enddo rbuf(1+root) = root if (rank .eq. root) then call mpi_gatherv( MPI_IN_PLACE, 1, MPI_INTEGER, rbuf, rcount, & & rdispls, MPI_INTEGER, root, comm, ierr ) do i=1,size if (rbuf(i) .ne. i-1) then errs = errs + 1 print *, '[', rank, '] rbuf(', i, ') = ', rbuf(i), & & ' in gatherv' endif enddo else call mpi_gatherv( rank, 1, MPI_INTEGER, rbuf, rcount, rdispls, & & MPI_INTEGER, root, comm, ierr ) endif ! Scatter with inplace do i=1,size sbuf(i) = i enddo rbuf(1) = -1 if (rank .eq. root) then call mpi_scatter( sbuf, 1, MPI_INTEGER, MPI_IN_PLACE, 1, & & MPI_INTEGER, root, comm, ierr ) else call mpi_scatter( sbuf, 1, MPI_INTEGER, rbuf, 1, & & MPI_INTEGER, root, comm, ierr ) if (rbuf(1) .ne. rank+1) then errs = errs + 1 print *, '[', rank, '] rbuf = ', rbuf(1), & & ' in scatter' endif endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/attr/0000755000175000017500000000000012621010233015716 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f08/attr/fandcattrf08.f900000644000175000017500000001053412620254305020536 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2008 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! ! To do: Create a keyval from c, then change the attribute from Fortran, ! then dup. The C attribute copy function should be passed a pointer to ! the Fortran attribute value (e.g., it should dereference it to check ! its value) ! program main use mpi_f08 integer (kind=MPI_ADDRESS_KIND) val integer ierr, errs, fcomm2_keyval, ftype2_keyval integer ccomm2_keyval, ctype2_keyval, cwin2_keyval integer callcount, delcount integer (kind=MPI_ADDRESS_KIND) commextra, typeextra common /myattr/ callcount, delcount external mycopyfn, mydelfn, mytcopyfn, mytdelfn callcount = 0 delcount = 0 errs = 0 call mpi_init(ierr) commextra = 1001 call mpi_comm_create_keyval( mycopyfn, mydelfn, & & fcomm2_keyval, commextra, ierr ) typeextra = 2001 call mpi_type_create_keyval( mytcopyfn, mytdelfn, & ftype2_keyval, typeextra, ierr ) call chkckeyvals( ccomm2_keyval, ctype2_keyval, cwin2_keyval ) ! Address-sized ints may be 32, 64, or something else in size; ! we can't assume any particular size. We can use the Fortran 90 ! intrinsic range to determine the available size and compute ! a suitable value. val = 5555 call mpi_comm_set_attr( MPI_COMM_WORLD, fcomm2_keyval, val, ierr ) call chkcomm2inc( fcomm2_keyval, 5555, errs ) call mpi_comm_free_keyval( fcomm2_keyval, ierr ) call mpi_type_free_keyval( ftype2_keyval, ierr ) call mpi_comm_free_keyval( ccomm2_keyval, ierr ) call mpi_type_free_keyval( ctype2_keyval, ierr ) call mpi_win_free_keyval( cwin2_keyval, ierr ) if (errs .eq. 0) then print *, ' No Errors' else print *, ' Found ', errs, ' errors' endif call mpi_finalize(ierr) end ! subroutine mycopyfn( oldcomm, keyval, extrastate, valin, valout, & & flag, ierr ) use mpi_f08 integer keyval, ierr TYPE(MPI_Comm) oldcomm integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val logical flag integer callcount, delcount common /myattr/ callcount, delcount ! increment the attribute by 2 valout = valin + 2 callcount = callcount + 1 if (extrastate .eq. 1001) then flag = .true. ierr = MPI_SUCCESS else print *, ' Unexpected value of extrastate = ', extrastate flag = .false. ierr = MPI_ERR_OTHER endif end ! subroutine mydelfn( comm, keyval, val, extrastate, ierr ) use mpi_f08 integer keyval, ierr TYPE(MPI_Comm) comm integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val integer callcount, delcount common /myattr/ callcount, delcount delcount = delcount + 1 if (extrastate .eq. 1001) then ierr = MPI_SUCCESS else print *, ' Unexpected value of extrastate = ', extrastate ierr = MPI_ERR_OTHER endif end ! subroutine mytcopyfn( oldtype, keyval, extrastate, valin, valout, & & flag, ierr ) use mpi_f08 integer keyval, ierr TYPE(MPI_Datatype) oldtype integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val logical flag integer callcount, delcount common /myattr/ callcount, delcount ! increment the attribute by 2 valout = valin + 2 callcount = callcount + 1 if (extrastate .eq. 2001) then flag = .true. ierr = MPI_SUCCESS else print *, ' Unexpected value of extrastate = ', extrastate flag = .false. ierr = MPI_ERR_OTHER endif end ! subroutine mytdelfn( dtype, keyval, val, extrastate, ierr ) use mpi_f08 integer keyval, ierr TYPE(MPI_Datatype) dtype integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val integer callcount, delcount common /myattr/ callcount, delcount delcount = delcount + 1 if (extrastate .eq. 2001) then ierr = MPI_SUCCESS else print *, ' Unexpected value of extrastate = ', extrastate ierr = MPI_ERR_OTHER endif end mpi-testsuite-3.2+dfsg/f08/attr/attrlangc.c0000644000175000017500000005147712620254305020070 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; -*- */ /* * * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include "mpi.h" #include #include #include "../../include/mpitestconf.h" /* Used to convert Fortran strings (which may not be null terminated) to C strings */ #define MAX_ATTRTEST_MSG 256 /* * FIXME: This code assumes that character strings are passed from Fortran * by placing the string length, as an int, at the end of the argument list * This is common but not universal. */ /* Name mapping. All routines are created with names that are lower case with a single trailing underscore. This matches many compilers. We use #define to change the name for Fortran compilers that do not use the lowercase/underscore pattern */ #ifdef F77_NAME_UPPER #define cattrinit_ CATTRINIT #define cgetenvbool_ CGETENVBOOL #define cgetsizes_ CGETSIZES #define ccreatekeys_ CCREATEKEYS #define cfreekeys_ CFREEKEYS #define ctoctest_ CTOCTEST #define cmpif1read_ CMPIF1READ #define cmpif2read_ CMPIF2READ #define cmpif2readtype_ CMPIF2READTYPE #define cmpif2readwin_ CMPIF2READWIN #define csetmpi_ CSETMPI #define csetmpi2_ CSETMPI2 #define csetmpitype_ CSETMPITYPE #define csetmpiwin_ CSETMPIWIN #elif defined(F77_NAME_LOWER) || defined(F77_NAME_MIXED) /* Mixed is ok because we use lowercase in all uses */ #define cattrinit_ cattrinit #define cgetenvbool_ cgetenvbool #define cgetsizes_ cgetsizes #define ccreatekeys_ ccreatekeys #define cfreekeys_ cfreekeys #define ctoctest_ ctoctest #define cmpif1read_ cmpif1read #define cmpif2read_ cmpif2read #define cmpif2readtype_ cmpif2readtype #define cmpif2readwin_ cmpif2readwin #define csetmpi_ csetmpi #define csetmpi2_ csetmpi2 #define csetmpitype_ csetmpitype #define csetmpiwin_ csetmpiwin #elif defined(F77_NAME_LOWER_2USCORE) || defined(F77_NAME_LOWER_USCORE) || \ defined(F77_NAME_MIXED_USCORE) /* Else leave name alone (routines have no underscore, so both of these map to a lowercase, single underscore) */ #else #error 'Unrecognized Fortran name mapping' #endif /* */ static int ccomm1Key, ccomm2Key, ctype2Key, cwin2Key; static int ccomm1Extra, ccomm2Extra, ctype2Extra, cwin2Extra; static int verbose = 0; /* Forward references */ int cmpi1read(MPI_Comm comm, int key, void *expected, const char *msg); int cmpi2read(MPI_Comm comm, int key, void *expected, const char *msg); int cmpi2readtype(MPI_Datatype dtype, int key, void *expected, const char *msg); void ccompareint2aint_(MPI_Fint * in1, MPI_Aint * in2, MPI_Fint * result); void ccompareint2void_(MPI_Fint * in1, void *in2, MPI_Fint * result); void ccompareaint2void_(MPI_Aint * in1, void *in2, MPI_Fint * result); /* ----------------------------------------------------------------------- */ /* Initialization functions */ /* ----------------------------------------------------------------------- */ void cgetenvbool_(const char str[], MPI_Fint * val, int d) { const char *envval; char envname[1024]; /* Note that the Fortran string may not be null terminated; thus * we copy d characters and add a null just in case */ if (d > sizeof(envname) - 1) { fprintf(stderr, "Environment variable name too long (%d)\n", d); MPI_Abort(MPI_COMM_WORLD, 1); } strncpy(envname, str, d); envname[d] = 0; envval = getenv(envname); *val = 0; if (envval) { printf(" envval = %s\n", envval); if (strcmp(envval, "yes") == 0 || strcmp(envval, "YES") == 0 || strcmp(envval, "true") == 0 || strcmp(envval, "TRUE") == 0) *val = 1; } } /* Keep our own copy of the "is verbose" state */ void cattrinit_(MPI_Fint * fverbose) { verbose = (int) *fverbose; } /* Provide attribute sizes (C, Fortran 1, Fortran 2) */ void cgetsizes_(MPI_Fint * ptrSize, MPI_Fint * intSize, MPI_Fint * aintSize) { *ptrSize = (MPI_Fint) sizeof(void *); *intSize = (MPI_Fint) sizeof(MPI_Fint); *aintSize = (MPI_Fint) sizeof(MPI_Aint); } /* ----------------------------------------------------------------------- */ /* Copy and delete functions attached to keyvals */ /* ----------------------------------------------------------------------- */ static int CMPI1_COPY_FN(MPI_Comm comm, int keyval, void *extra, void *inval, void *outval, int *flag) { int inValue = *(int *) inval; if (verbose) printf(" In C MPI-1 copy function: inval = %p, extra = %p\n", inval, extra); *flag = 1; /* We don't change the attribute */ *(void **) outval = inval; /* But we do change what it points at */ *(int *) inval = inValue + 1; return MPI_SUCCESS; } static int CMPI1_DELETE_FN(MPI_Comm comm, int keyval, void *outval, void *extra) { if (verbose) printf(" In C MPI-1 delete function, extra = %p\n", extra); *(int *) outval = *(int *) outval - 1; return MPI_SUCCESS; } static int TYPE_COPY_FN(MPI_Datatype dtype, int keyval, void *extra, void *inval, void *outval, int *flag) { int inValue = *(int *) inval; if (verbose) printf(" In C MPI type copy function, inval = %p, extra = %p\n", inval, extra); *flag = 1; /* We don't change the attribute */ *(void **) outval = inval; /* But we do change what it points at */ *(int *) inval = inValue + 1; return MPI_SUCCESS; } static int TYPE_DELETE_FN(MPI_Datatype dtype, int keyval, void *outval, void *extra) { if (verbose) printf(" In C MPI type delete function, extra = %p\n", extra); /* We reverse the incrment used in copy (checked after free of the type) */ *(int *) outval = *(int *) outval - 1; return MPI_SUCCESS; } /* Note that this function cannot be called in MPI since there is no win_dup function */ static int WIN_COPY_FN(MPI_Win win, int keyval, void *extra, void *inval, void *outval, int *flag) { int inValue = *(int *) inval; if (verbose) printf("PANIC: In C MPI win copy function (should never happen)\n"); *flag = 1; return MPI_SUCCESS; } static int WIN_DELETE_FN(MPI_Win win, int keyval, void *outval, void *extra) { if (verbose) printf(" In C MPI win delete function, extra = %p\n", extra); *(int *) outval = *(int *) outval - 1; return MPI_SUCCESS; } /* ----------------------------------------------------------------------- */ /* Routines to create keyvals in C (with C copy and delete functions */ /* ----------------------------------------------------------------------- */ void ccreatekeys_(MPI_Fint * ccomm1_key, MPI_Fint * ccomm2_key, MPI_Fint * ctype2_key, MPI_Fint * cwin2_key) { MPI_Keyval_create(CMPI1_COPY_FN, CMPI1_DELETE_FN, &ccomm1Key, &ccomm1Extra); *ccomm1_key = (MPI_Fint) ccomm1Key; MPI_Comm_create_keyval(CMPI1_COPY_FN, CMPI1_DELETE_FN, &ccomm2Key, &ccomm2Extra); *ccomm2_key = (MPI_Fint) ccomm2Key; MPI_Type_create_keyval(TYPE_COPY_FN, TYPE_DELETE_FN, &ctype2Key, &ctype2Extra); *ctype2_key = (MPI_Fint) ctype2Key; MPI_Win_create_keyval(WIN_COPY_FN, WIN_DELETE_FN, &cwin2Key, &cwin2Extra); *cwin2_key = (MPI_Fint) cwin2Key; } void cfreekeys_(void) { MPI_Keyval_free(&ccomm1Key); MPI_Comm_free_keyval(&ccomm2Key); MPI_Type_free_keyval(&ctype2Key); MPI_Win_free_keyval(&cwin2Key); } /* ----------------------------------------------------------------------- */ /* ----------------------------------------------------------------------- */ /* Test c-to-c attributes */ static int ccomm1Attr, ccomm2Attr, ctype2Attr, cwin2Attr; void ctoctest_(MPI_Fint * errs) { int errcnt = *errs; int baseattrval = (1 << (sizeof(int) * 8 - 2)) - 3; MPI_Datatype cduptype; MPI_Comm cdup; /* MPI-1 function */ ccomm1Attr = baseattrval; MPI_Attr_put(MPI_COMM_SELF, ccomm1Key, &ccomm1Attr); /* Test that we have the same value */ errcnt += cmpi1read(MPI_COMM_SELF, ccomm1Key, &ccomm1Attr, "C to C"); /* Dup, check that the copy routine does what is expected */ MPI_Comm_dup(MPI_COMM_SELF, &cdup); errcnt += cmpi1read(cdup, ccomm1Key, &ccomm1Attr, "C to C dup"); if (ccomm1Attr != baseattrval + 1) { printf(" Did not increment int in C to C dup: %d %d\n", ccomm1Attr, baseattrval + 1); errcnt++; } MPI_Comm_free(&cdup); if (ccomm1Attr != baseattrval) { printf(" Did not increment int in C to C delete: %d %d\n", ccomm1Attr, baseattrval); errcnt++; } /* MPI-2 functions */ ccomm1Attr = 0; ccomm2Attr = baseattrval; MPI_Comm_set_attr(MPI_COMM_SELF, ccomm2Key, &ccomm2Attr); /* Test that we have the same value */ errcnt += cmpi2read(MPI_COMM_SELF, ccomm2Key, &ccomm2Attr, "C to C (2)"); /* Dup, check that the copy routine does what is expected */ MPI_Comm_dup(MPI_COMM_SELF, &cdup); errcnt += cmpi2read(cdup, ccomm2Key, &ccomm2Attr, "C to C dup (2)"); if (ccomm2Attr != baseattrval + 1) { printf(" Did not increment int in C to C dup: %d %d\n", ccomm2Attr, baseattrval + 1); errcnt++; } MPI_Comm_free(&cdup); if (ccomm2Attr != baseattrval) { printf(" Did not increment int in C to C delete (2): %d %d\n", ccomm2Attr, baseattrval); errcnt++; } /* MPI-2 functions */ ctype2Attr = baseattrval; MPI_Type_set_attr(MPI_INTEGER, ctype2Key, &ctype2Attr); /* Test that we have the same value */ errcnt += cmpi2readtype(MPI_INTEGER, ctype2Key, &ctype2Attr, "C to C type (2)"); /* Dup, check that the copy routine does what is expected */ MPI_Type_dup(MPI_INTEGER, &cduptype); errcnt += cmpi2readtype(cduptype, ctype2Key, &ctype2Attr, "C to C typedup (2)"); if (ctype2Attr != baseattrval + 1) { printf(" Did not increment int in C to C typedup: %d %d\n", ctype2Attr, baseattrval + 1); errcnt++; } ccomm1Attr = 0; MPI_Type_free(&cduptype); if (ctype2Attr != baseattrval) { printf(" Did not increment int in C to C typedelete (2): %d %d\n", ctype2Attr, baseattrval); errcnt++; } *errs = errcnt; } /* ----------------------------------------------------------------------- */ /* Routines to get and check an attribute value. Returns the number */ /* of errors found */ /* ----------------------------------------------------------------------- */ int cmpi1read(MPI_Comm comm, int key, void *expected, const char *msg) { void *attrval; int flag; MPI_Attr_get(comm, key, &attrval, &flag); if (!flag) { printf(" Error: flag false for Attr_get: %s\n", msg); return 1; } if (attrval != expected) { printf(" Error: expected %p but saw %p: %s\n", expected, attrval, msg); return 1; } return 0; } int cmpi2read(MPI_Comm comm, int key, void *expected, const char *msg) { void *attrval; int flag; MPI_Comm_get_attr(comm, key, &attrval, &flag); if (!flag) { printf(" Error: flag false for Comm_get_attr: %s\n", msg); return 1; } if (attrval != expected) { printf(" Error: expected %p but saw %p: %s\n", expected, attrval, msg); return 1; } return 0; } int cmpi2readtype(MPI_Datatype dtype, int key, void *expected, const char *msg) { void *attrval; int flag; MPI_Type_get_attr(dtype, key, &attrval, &flag); if (!flag) { printf(" Error: flag false for Type_get_attr: %s\n", msg); return 1; } if (attrval != expected) { printf(" Error: expected %p but saw %p: %s\n", expected, attrval, msg); return 1; } return 0; } int cmpi2readwin(MPI_Win win, int key, void *expected, const char *msg) { void *attrval; int flag; MPI_Win_get_attr(win, key, &attrval, &flag); if (!flag) { printf(" Error: flag false for Win_get_attr: %s\n", msg); return 1; } if (attrval != expected) { printf(" Error: expected %p but saw %p: %s\n", expected, attrval, msg); return 1; } return 0; } /* Set in Fortran (MPI-1), read in C */ void cmpif1read_(MPI_Fint * fcomm, MPI_Fint * fkey, MPI_Fint * expected, MPI_Fint * errs, const char *msg, int msglen) { void *attrval; int flag, result; MPI_Comm comm = MPI_Comm_f2c(*fcomm); char lmsg[MAX_ATTRTEST_MSG]; if (msglen > sizeof(lmsg) - 1) { fprintf(stderr, "Message too long for buffer (%d)\n", msglen); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Attr_get(comm, *fkey, &attrval, &flag); if (!flag) { *errs = *errs + 1; strncpy(lmsg, msg, msglen); lmsg[msglen] = 0; printf(" Error: flag false for Attr_get (set in F1): %s\n", lmsg); return; } /* Must be careful to compare as required in the MPI specification */ ccompareint2void_(expected, attrval, &result); if (!result) { *errs = *errs + 1; strncpy(lmsg, msg, msglen); lmsg[msglen] = 0; printf(" Error: (set in F1) expected %d but saw %d: %s\n", *expected, *(MPI_Fint *) attrval, lmsg); return; } return; } /* Set in Fortran (MPI-2), read in C */ void cmpif2read_(MPI_Fint * fcomm, MPI_Fint * fkey, MPI_Aint * expected, MPI_Fint * errs, const char *msg, int msglen) { void *attrval; int flag, result; MPI_Comm comm = MPI_Comm_f2c(*fcomm); char lmsg[MAX_ATTRTEST_MSG]; if (msglen > sizeof(lmsg) - 1) { fprintf(stderr, "Message too long for buffer (%d)\n", msglen); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_get_attr(comm, *fkey, &attrval, &flag); if (!flag) { *errs = *errs + 1; strncpy(lmsg, msg, msglen); lmsg[msglen] = 0; printf(" Error: flag false for Comm_get_attr (set in F2): %s\n", lmsg); return; } ccompareaint2void_(expected, attrval, &result); if (!result) { *errs = *errs + 1; strncpy(lmsg, msg, msglen); lmsg[msglen] = 0; printf(" Error: (set in F2) expected %ld but saw %ld: %s\n", (long) *expected, (long) *(MPI_Aint *) attrval, lmsg); return; } return; } void cmpif2readtype_(MPI_Fint * ftype, MPI_Fint * fkey, MPI_Aint * expected, MPI_Fint * errs, const char *msg, int msglen) { void *attrval; int flag, result; MPI_Datatype dtype = MPI_Type_f2c(*ftype); char lmsg[MAX_ATTRTEST_MSG]; if (msglen > sizeof(lmsg) - 1) { fprintf(stderr, "Message too long for buffer (%d)\n", msglen); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Type_get_attr(dtype, *fkey, &attrval, &flag); if (!flag) { *errs = *errs + 1; strncpy(lmsg, msg, msglen); lmsg[msglen] = 0; printf(" Error: flag false for Type_get_attr (set in F2): %s\n", lmsg); return; } ccompareaint2void_(expected, attrval, &result); if (!result) { *errs = *errs + 1; strncpy(lmsg, msg, msglen); lmsg[msglen] = 0; printf(" Error: (set in F2/Type) expected %ld but saw %ld: %s\n", (long) *expected, (long) *(MPI_Aint *) attrval, lmsg); return; } return; } void cmpif2readwin_(MPI_Fint * fwin, MPI_Fint * fkey, MPI_Aint * expected, MPI_Fint * errs, const char *msg, int msglen) { void *attrval; int flag, result; MPI_Win win = MPI_Win_f2c(*fwin); char lmsg[MAX_ATTRTEST_MSG]; if (msglen > sizeof(lmsg) - 1) { fprintf(stderr, "Message too long for buffer (%d)\n", msglen); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Win_get_attr(win, *fkey, &attrval, &flag); if (!flag) { *errs = *errs + 1; strncpy(lmsg, msg, msglen); lmsg[msglen] = 0; printf(" Error: flag false for Win_get_attr (set in F2): %s\n", lmsg); return; } ccompareaint2void_(expected, attrval, &result); if (!result) { *errs = *errs + 1; strncpy(lmsg, msg, msglen); lmsg[msglen] = 0; printf(" Error: (set in F2/Win) expected %ld but saw %ld: %s\n", (long) *expected, (long) *(MPI_Aint *) attrval, lmsg); return; } return; } /* ----------------------------------------------------------------------- */ /* Given a Fortran attribute (pointer to the value to store), set it using */ /* the C attribute functions */ /* ----------------------------------------------------------------------- */ void csetmpi_(MPI_Fint * fcomm, MPI_Fint * fkey, MPI_Fint * val, MPI_Fint * errs) { MPI_Comm comm = MPI_Comm_f2c(*fcomm); MPI_Comm_set_attr(comm, *fkey, (void *) (MPI_Aint) * val); } void csetmpi2_(MPI_Fint * fcomm, MPI_Fint * fkey, MPI_Aint * val, MPI_Fint * errs) { MPI_Comm comm = MPI_Comm_f2c(*fcomm); MPI_Comm_set_attr(comm, *fkey, (void *) *val); } void csetmpitype_(MPI_Fint * ftype, MPI_Fint * fkey, MPI_Aint * val, MPI_Fint * errs) { MPI_Datatype dtype = MPI_Type_f2c(*ftype); MPI_Type_set_attr(dtype, *fkey, (void *) *val); } void csetmpiwin_(MPI_Fint * fwin, MPI_Fint * fkey, MPI_Aint * val, MPI_Fint * errs) { MPI_Win win = MPI_Win_f2c(*fwin); MPI_Win_set_attr(win, *fkey, (void *) *val); } /* ----------------------------------------------------------------------- */ /* Comparisons */ /* int with aint */ /* int with void* */ /* aint with void* */ /* All routines use similar interfaces, though the routines that involve */ /* void * must be called from C */ /* Defined to be callable from either C or Fortran */ /* Here is the rule, defined in the MPI standard: */ /* If one item is shorter than the other, take the low bytes. */ /* If one item is longer than the other, sign extend */ /* ----------------------------------------------------------------------- */ void ccompareint2aint_(MPI_Fint * in1, MPI_Aint * in2, MPI_Fint * result) { static int idx = -1; if (sizeof(MPI_Fint) == sizeof(MPI_Aint)) { *result = *in1 == *in2; } else if (sizeof(MPI_Fint) < sizeof(MPI_Aint)) { /* Assume Aint no smaller than Fint, and that size of aint * is a multiple of the size of fint) */ MPI_Fint *v2 = (MPI_Fint *) in2; if (idx < 0) { MPI_Aint av = 1; MPI_Fint *fa = (MPI_Fint *) & av; if ((sizeof(MPI_Aint) % sizeof(MPI_Fint)) != 0) { fprintf(stderr, "PANIC: size of MPI_Aint = %d not a multiple of MPI_Fint = %d\n", (int) sizeof(MPI_Aint), (int) sizeof(MPI_Fint)); MPI_Abort(MPI_COMM_WORLD, 1); } for (idx = sizeof(MPI_Aint) / sizeof(MPI_Fint); idx >= 0; idx--) if (fa[idx]) break; if (idx < 0) { fprintf(stderr, "Unable to determine low word of Fint in Aint\n"); MPI_Abort(MPI_COMM_WORLD, 1); } *result = *in1 == v2[idx]; } } else { fprintf(stderr, "PANIC: sizeof(MPI_Fint) = %d > sizeof(MPI_Aint) %d\n", (int) sizeof(MPI_Fint), (int) sizeof(MPI_Aint)); MPI_Abort(MPI_COMM_WORLD, 1); } } void ccompareint2void_(MPI_Fint * in1, void *in2, MPI_Fint * result) { static int idx = -1; if (sizeof(MPI_Fint) == sizeof(void *)) { *result = *in1 == *(MPI_Fint *) in2; } else if (sizeof(MPI_Fint) < sizeof(void *)) { /* Assume void* no smaller than Fint, and that size of aint * is a multiple of the size of fint) */ MPI_Fint *v2 = (MPI_Fint *) in2; if (idx < 0) { void *av = (void *) 1; MPI_Fint *fa = (MPI_Fint *) & av; if ((sizeof(void *) % sizeof(MPI_Fint)) != 0) { fprintf(stderr, "PANIC: size of void * = %d not a multiple of MPI_Fint = %d\n", (int) sizeof(void *), (int) sizeof(MPI_Fint)); MPI_Abort(MPI_COMM_WORLD, 1); } for (idx = sizeof(void *) / sizeof(MPI_Fint); idx >= 0; idx--) if (fa[idx]) break; if (idx < 0) { fprintf(stderr, "Unable to determine low word of Fint in void*\n"); MPI_Abort(MPI_COMM_WORLD, 1); } *result = *in1 == v2[idx]; } } else { fprintf(stderr, "PANIC: sizeof(MPI_Fint) = %d > sizeof(void*) %d\n", (int) sizeof(MPI_Fint), (int) sizeof(void *)); MPI_Abort(MPI_COMM_WORLD, 1); } } void ccompareaint2void_(MPI_Aint * in1, void *in2, MPI_Fint * result) { /* Note that an aint must be >= void * by definition */ *result = *in1 == *(MPI_Aint *) in2; } mpi-testsuite-3.2+dfsg/f08/attr/typeattrf08.f900000644000175000017500000001153412620254305020445 0ustar mbanckmbanck! This file created from test/mpi/f77/attr/typeattrf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer errs, ierr integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val TYPE(MPI_Comm) comm TYPE(MPI_Datatype) type1, type2 integer curcount, keyval logical flag external mycopyfn, mydelfn integer callcount, delcount common /myattr/ callcount, delcount ! ! The only difference between the MPI-2 and MPI-1 attribute caching ! routines in Fortran is that the take an address-sized integer ! instead of a simple integer. These still are not pointers, ! so the values are still just integers. ! errs = 0 callcount = 0 delcount = 0 call mtest_init( ierr ) ! ! Attach an attribute to a predefined object type1 = MPI_INTEGER extrastate = 1001 call mpi_type_create_keyval( mycopyfn, mydelfn, keyval, & & extrastate, ierr ) flag = .true. call mpi_type_get_attr( type1, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' get attr returned true when no attr set' endif valin = 2003 call mpi_type_set_attr( type1, keyval, valin, ierr ) flag = .false. valout = -1 call mpi_type_get_attr( type1, keyval, valout, flag, ierr ) if (valout .ne. 2003) then errs = errs + 1 print *, 'Unexpected value (should be 2003)', valout, & & ' from attr' endif valin = 2001 call mpi_type_set_attr( type1, keyval, valin, ierr ) flag = .false. valout = -1 call mpi_type_get_attr( type1, keyval, valout, flag, ierr ) if (valout .ne. 2001) then errs = errs + 1 print *, 'Unexpected value (should be 2001)', valout, & & ' from attr' endif ! ! Test the copy function valin = 5001 call mpi_type_set_attr( type1, keyval, valin, ierr ) call mpi_type_dup( type1, type2, ierr ) flag = .false. call mpi_type_get_attr( type1, keyval, valout, flag, ierr ) if (valout .ne. 5001) then errs = errs + 1 print *, 'Unexpected output value in type ', valout endif flag = .false. call mpi_type_get_attr( type2, keyval, valout, flag, ierr ) if (valout .ne. 5003) then errs = errs + 1 print *, 'Unexpected output value in type2 ', valout endif ! Test the delete function curcount = delcount call mpi_type_free( type2, ierr ) if (delcount .ne. curcount + 1) then errs = errs + 1 print *, ' did not get expected value of delcount ', & & delcount, curcount + 1 endif ! ! Test the attr delete function call mpi_type_dup( type1, type2, ierr ) valin = 6001 extrastate = 1001 call mpi_type_set_attr( type2, keyval, valin, ierr ) delcount = 0 call mpi_type_delete_attr( type2, keyval, ierr ) if (delcount .ne. 1) then errs = errs + 1 print *, ' Delete_attr did not call delete function' endif flag = .true. call mpi_type_get_attr( type2, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' Delete_attr did not delete attribute' endif call mpi_type_free( type2, ierr ) ierr = -1 call mpi_type_free_keyval( keyval, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call mtestprinterror( ierr ) endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end ! subroutine mycopyfn( oldtype, keyval, extrastate, valin, valout, & & flag, ierr ) use mpi_f08 integer keyval, ierr TYPE(MPI_Datatype) oldtype integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val logical flag integer callcount, delcount common /myattr/ callcount, delcount ! increment the attribute by 2 valout = valin + 2 callcount = callcount + 1 if (extrastate .eq. 1001) then flag = .true. ierr = MPI_SUCCESS else print *, ' Unexpected value of extrastate = ', extrastate flag = .false. ierr = MPI_ERR_OTHER endif end ! subroutine mydelfn( type, keyval, val, extrastate, ierr ) use mpi_f08 integer keyval, ierr TYPE(MPI_Datatype) type integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val integer callcount, delcount common /myattr/ callcount, delcount delcount = delcount + 1 if (extrastate .eq. 1001) then ierr = MPI_SUCCESS else print *, ' Unexpected value of extrastate = ', extrastate ierr = MPI_ERR_OTHER endif end mpi-testsuite-3.2+dfsg/f08/attr/baseattr3f08.f900000644000175000017500000000726612620254305020470 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! ! (C) 2012 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! This is a MPI-2 version of baseattr2f90.f90 which uses COMM_GET_ATTR ! instead of ATTR_GET, using an address-sized integer instead of ! an INTEGER. program main use mpi_f08 integer ierr, errs logical flag integer commsize, commrank integer (KIND=MPI_ADDRESS_KIND) value errs = 0 call mpi_init( ierr ) call mpi_comm_size( MPI_COMM_WORLD, commsize, ierr ) call mpi_comm_rank( MPI_COMM_WORLD, commrank, ierr ) call mpi_comm_get_attr( MPI_COMM_WORLD, MPI_TAG_UB, value, & & flag, ierr ) if (.not. flag) then errs = errs + 1 print *, "Could not get TAG_UB" else if (value .lt. 32767) then errs = errs + 1 print *, "Got too-small value (", value, ") for TAG_UB" endif endif call mpi_comm_get_attr( MPI_COMM_WORLD, MPI_HOST, value, flag& &, ierr ) if (.not. flag) then errs = errs + 1 print *, "Could not get HOST" else if ((value .lt. 0 .or. value .ge. commsize) .and. value .ne. & & MPI_PROC_NULL) then errs = errs + 1 print *, "Got invalid value ", value, " for HOST" endif endif call mpi_comm_get_attr( MPI_COMM_WORLD, MPI_IO, value, flag,& & ierr ) if (.not. flag) then errs = errs + 1 print *, "Could not get IO" else if ((value .lt. 0 .or. value .ge. commsize) .and. value .ne. & & MPI_ANY_SOURCE .and. value .ne. MPI_PROC_NULL) then errs = errs + 1 print *, "Got invalid value ", value, " for IO" endif endif call mpi_comm_get_attr( MPI_COMM_WORLD, MPI_WTIME_IS_GLOBAL,& & value, flag, ierr ) if (flag) then ! Wtime need not be set if (value .lt. 0 .or. value .gt. 1) then errs = errs + 1 print *, "Invalid value for WTIME_IS_GLOBAL (got ", value, & & ")" endif endif call mpi_comm_get_attr( MPI_COMM_WORLD, MPI_APPNUM, value,& & flag, ierr ) ! appnum need not be set if (flag) then if (value .lt. 0) then errs = errs + 1 print *, "MPI_APPNUM is defined as ", value, & & " but must be nonnegative" endif endif call mpi_comm_get_attr( MPI_COMM_WORLD, MPI_UNIVERSE_SIZE,& & value, flag, ierr ) ! MPI_UNIVERSE_SIZE need not be set if (flag) then if (value .lt. commsize) then errs = errs + 1 print *, "MPI_UNIVERSE_SIZE = ", value, & & ", less than comm world (", commsize, ")" endif endif call mpi_comm_get_attr( MPI_COMM_WORLD, MPI_LASTUSEDCODE,& & value, flag, ierr ) ! Last used code must be defined and >= MPI_ERR_LASTCODE if (flag) then if (value .lt. MPI_ERR_LASTCODE) then errs = errs + 1 print *, "MPI_LASTUSEDCODE points to an integer (", & & MPI_ERR_LASTCODE, ") smaller than MPI_ERR_LASTCODE (", & & value, ")" endif else errs = errs + 1 print *, "MPI_LASTUSECODE is not defined" endif ! Check for errors if (errs .eq. 0) then print *, " No Errors" else print *, " Found ", errs, " errors" endif call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/attr/commattrf08.f900000644000175000017500000001143712620254305020421 0ustar mbanckmbanck! This file created from test/mpi/f77/attr/commattrf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer errs, ierr integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val TYPE(MPI_Comm) comm1, comm2 integer curcount, keyval logical flag external mycopyfn, mydelfn integer callcount, delcount common /myattr/ callcount, delcount ! ! The only difference between the MPI-2 and MPI-1 attribute caching ! routines in Fortran is that the take an address-sized integer ! instead of a simple integer. These still are not pointers, ! so the values are still just integers. ! errs = 0 callcount = 0 delcount = 0 call mtest_init( ierr ) call mpi_comm_dup( MPI_COMM_WORLD, comm1, ierr ) ! extrastate = 1001 call mpi_comm_create_keyval( mycopyfn, mydelfn, keyval, & & extrastate, ierr ) flag = .true. call mpi_comm_get_attr( comm1, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' get attr returned true when no attr set' endif valin = 2003 call mpi_comm_set_attr( comm1, keyval, valin, ierr ) flag = .false. valout = -1 call mpi_comm_get_attr( comm1, keyval, valout, flag, ierr ) if (valout .ne. 2003) then errs = errs + 1 print *, 'Unexpected value (should be 2003)', valout, & & ' from attr' endif valin = 2001 call mpi_comm_set_attr( comm1, keyval, valin, ierr ) flag = .false. valout = -1 call mpi_comm_get_attr( comm1, keyval, valout, flag, ierr ) if (valout .ne. 2001) then errs = errs + 1 print *, 'Unexpected value (should be 2001)', valout, & & ' from attr' endif ! ! Test the copy function valin = 5001 call mpi_comm_set_attr( comm1, keyval, valin, ierr ) call mpi_comm_dup( comm1, comm2, ierr ) flag = .false. call mpi_comm_get_attr( comm1, keyval, valout, flag, ierr ) if (valout .ne. 5001) then errs = errs + 1 print *, 'Unexpected output value in comm ', valout endif flag = .false. call mpi_comm_get_attr( comm2, keyval, valout, flag, ierr ) if (valout .ne. 5003) then errs = errs + 1 print *, 'Unexpected output value in comm2 ', valout endif ! Test the delete function curcount = delcount call mpi_comm_free( comm2, ierr ) if (delcount .ne. curcount + 1) then errs = errs + 1 print *, ' did not get expected value of delcount ', & & delcount, curcount + 1 endif ! ! Test the attr delete function call mpi_comm_dup( comm1, comm2, ierr ) valin = 6001 extrastate = 1001 call mpi_comm_set_attr( comm2, keyval, valin, ierr ) delcount = 0 call mpi_comm_delete_attr( comm2, keyval, ierr ) if (delcount .ne. 1) then errs = errs + 1 print *, ' Delete_attr did not call delete function' endif flag = .true. call mpi_comm_get_attr( comm2, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' Delete_attr did not delete attribute' endif call mpi_comm_free( comm2, ierr ) ! ierr = -1 call mpi_comm_free_keyval( keyval, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call mtestprinterror( ierr ) endif call mpi_comm_free( comm1, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end ! subroutine mycopyfn( oldcomm, keyval, extrastate, valin, valout, & & flag, ierr ) use mpi integer oldcomm, keyval, ierr integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val logical flag integer callcount, delcount common /myattr/ callcount, delcount ! increment the attribute by 2 valout = valin + 2 callcount = callcount + 1 if (extrastate .eq. 1001) then flag = .true. ierr = MPI_SUCCESS else print *, ' Unexpected value of extrastate = ', extrastate flag = .false. ierr = MPI_ERR_OTHER endif end ! subroutine mydelfn( comm, keyval, val, extrastate, ierr ) use mpi integer comm, keyval, ierr integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val integer callcount, delcount common /myattr/ callcount, delcount delcount = delcount + 1 if (extrastate .eq. 1001) then ierr = MPI_SUCCESS else print *, ' Unexpected value of extrastate = ', extrastate ierr = MPI_ERR_OTHER endif end mpi-testsuite-3.2+dfsg/f08/attr/baseattrf08.f900000644000175000017500000000342112620254305020372 0ustar mbanckmbanck! This file created from test/mpi/f77/attr/baseattrf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer value, commsize logical flag integer ierr, errs errs = 0 call mpi_init( ierr ) call mpi_comm_size( MPI_COMM_WORLD, commsize, ierr ) call mpi_attr_get( MPI_COMM_WORLD, MPI_UNIVERSE_SIZE, value, flag & & , ierr) ! MPI_UNIVERSE_SIZE need not be set if (flag) then if (value .lt. commsize) then print *, "MPI_UNIVERSE_SIZE is ", value, " less than world " & & , commsize errs = errs + 1 endif endif call mpi_attr_get( MPI_COMM_WORLD, MPI_LASTUSEDCODE, value, flag, & & ierr ) ! Last used code must be defined and >= MPI_ERR_LASTCODE if (flag) then if (value .lt. MPI_ERR_LASTCODE) then errs = errs + 1 print *, "MPI_LASTUSEDCODE points to an integer & & (", value, ") smaller than MPI_ERR_LASTCODE (", & & MPI_ERR_LASTCODE, ")" endif else errs = errs + 1 print *, "MPI_LASTUSECODE is not defined" endif call mpi_attr_get( MPI_COMM_WORLD, MPI_APPNUM, value, flag, ierr ) ! appnum need not be set if (flag) then if (value .lt. 0) then errs = errs + 1 print *, "MPI_APPNUM is defined as ", value, & & " but must be nonnegative" endif endif ! Check for errors if (errs .eq. 0) then print *, " No Errors" else print *, " Found ", errs, " errors" endif call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/attr/baseattr2f08.f900000644000175000017500000000677212620254305020470 0ustar mbanckmbanck! This file created from test/mpi/f77/attr/baseattr2f.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! ! (C) 2001 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer ierr, errs logical flag integer value, commsize, commrank errs = 0 call mpi_init( ierr ) call mpi_comm_size( MPI_COMM_WORLD, commsize, ierr ) call mpi_comm_rank( MPI_COMM_WORLD, commrank, ierr ) call mpi_attr_get( MPI_COMM_WORLD, MPI_TAG_UB, value, flag, ierr & & ) if (.not. flag) then errs = errs + 1 print *, "Could not get TAG_UB" else if (value .lt. 32767) then errs = errs + 1 print *, "Got too-small value (", value, ") for TAG_UB" endif endif call mpi_attr_get( MPI_COMM_WORLD, MPI_HOST, value, flag, ierr ) if (.not. flag) then errs = errs + 1 print *, "Could not get HOST" else if ((value .lt. 0 .or. value .ge. commsize) .and. value .ne. & & MPI_PROC_NULL) then errs = errs + 1 print *, "Got invalid value ", value, " for HOST" endif endif call mpi_attr_get( MPI_COMM_WORLD, MPI_IO, value, flag, ierr ) if (.not. flag) then errs = errs + 1 print *, "Could not get IO" else if ((value .lt. 0 .or. value .ge. commsize) .and. value .ne. & & MPI_ANY_SOURCE .and. value .ne. MPI_PROC_NULL) then errs = errs + 1 print *, "Got invalid value ", value, " for IO" endif endif call mpi_attr_get( MPI_COMM_WORLD, MPI_WTIME_IS_GLOBAL, value, & & flag, ierr ) if (flag) then ! Wtime need not be set if (value .lt. 0 .or. value .gt. 1) then errs = errs + 1 print *, "Invalid value for WTIME_IS_GLOBAL (got ", value, & & ")" endif endif call mpi_attr_get( MPI_COMM_WORLD, MPI_APPNUM, value, flag, ierr & & ) ! appnum need not be set if (flag) then if (value .lt. 0) then errs = errs + 1 print *, "MPI_APPNUM is defined as ", value, & & " but must be nonnegative" endif endif call mpi_attr_get( MPI_COMM_WORLD, MPI_UNIVERSE_SIZE, value, & & flag, ierr ) ! MPI_UNIVERSE_SIZE need not be set if (flag) then if (value .lt. commsize) then errs = errs + 1 print *, "MPI_UNIVERSE_SIZE = ", value, & & ", less than comm world (", commsize, ")" endif endif call mpi_attr_get( MPI_COMM_WORLD, MPI_LASTUSEDCODE, value, flag & & , ierr ) ! Last used code must be defined and >= MPI_ERR_LASTCODE if (flag) then if (value .lt. MPI_ERR_LASTCODE) then errs = errs + 1 print *, "MPI_LASTUSEDCODE points to an integer (", & & MPI_ERR_LASTCODE, ") smaller than MPI_ERR_LASTCODE (", & & value, ")" endif else errs = errs + 1 print *, "MPI_LASTUSECODE is not defined" endif ! Check for errors if (errs .eq. 0) then print *, " No Errors" else print *, " Found ", errs, " errors" endif call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/attr/testlist0000644000175000017500000000025712620254305017531 0ustar mbanckmbanckattrmpi1f08 1 baseattrf08 1 baseattr2f08 1 commattrf08 1 commattr2f08 1 commattr3f08 1 typeattrf08 1 typeattr2f08 1 typeattr3f08 1 fandcattrf08 1 baseattr3f08 1 attrlangf08 1 mpi-testsuite-3.2+dfsg/f08/attr/Makefile.in0000644000175000017500000006242412621010233017773 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This Makefile.am generated automatically by f77tof90 # from test/mpi/f77/attr/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = attrmpi1f08$(EXEEXT) baseattrf08$(EXEEXT) \ baseattr2f08$(EXEEXT) commattrf08$(EXEEXT) \ commattr2f08$(EXEEXT) commattr3f08$(EXEEXT) \ typeattrf08$(EXEEXT) typeattr2f08$(EXEEXT) \ typeattr3f08$(EXEEXT) fandcattrf08$(EXEEXT) \ baseattr3f08$(EXEEXT) attrlangf08$(EXEEXT) subdir = f08/attr ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am_attrlangf08_OBJECTS = attrlangf08.$(OBJEXT) attrlangc.$(OBJEXT) attrlangf08_OBJECTS = $(am_attrlangf08_OBJECTS) attrlangf08_LDADD = $(LDADD) attrlangf08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o attrmpi1f08_SOURCES = attrmpi1f08.f90 attrmpi1f08_OBJECTS = attrmpi1f08.$(OBJEXT) attrmpi1f08_LDADD = $(LDADD) attrmpi1f08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o baseattr2f08_SOURCES = baseattr2f08.f90 baseattr2f08_OBJECTS = baseattr2f08.$(OBJEXT) baseattr2f08_LDADD = $(LDADD) baseattr2f08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o am_baseattr3f08_OBJECTS = baseattr3f08.$(OBJEXT) baseattr3f08_OBJECTS = $(am_baseattr3f08_OBJECTS) baseattr3f08_LDADD = $(LDADD) baseattr3f08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o baseattrf08_SOURCES = baseattrf08.f90 baseattrf08_OBJECTS = baseattrf08.$(OBJEXT) baseattrf08_LDADD = $(LDADD) baseattrf08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o commattr2f08_SOURCES = commattr2f08.f90 commattr2f08_OBJECTS = commattr2f08.$(OBJEXT) commattr2f08_LDADD = $(LDADD) commattr2f08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o commattr3f08_SOURCES = commattr3f08.f90 commattr3f08_OBJECTS = commattr3f08.$(OBJEXT) commattr3f08_LDADD = $(LDADD) commattr3f08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o commattrf08_SOURCES = commattrf08.f90 commattrf08_OBJECTS = commattrf08.$(OBJEXT) commattrf08_LDADD = $(LDADD) commattrf08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o am_fandcattrf08_OBJECTS = fandcattrf08.$(OBJEXT) fandcattrc.$(OBJEXT) fandcattrf08_OBJECTS = $(am_fandcattrf08_OBJECTS) fandcattrf08_LDADD = $(LDADD) fandcattrf08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o typeattr2f08_SOURCES = typeattr2f08.f90 typeattr2f08_OBJECTS = typeattr2f08.$(OBJEXT) typeattr2f08_LDADD = $(LDADD) typeattr2f08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o typeattr3f08_SOURCES = typeattr3f08.f90 typeattr3f08_OBJECTS = typeattr3f08.$(OBJEXT) typeattr3f08_LDADD = $(LDADD) typeattr3f08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o typeattrf08_SOURCES = typeattrf08.f90 typeattrf08_OBJECTS = typeattrf08.$(OBJEXT) typeattrf08_LDADD = $(LDADD) typeattrf08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = SOURCES = $(attrlangf08_SOURCES) attrmpi1f08.f90 baseattr2f08.f90 \ $(baseattr3f08_SOURCES) baseattrf08.f90 commattr2f08.f90 \ commattr3f08.f90 commattrf08.f90 $(fandcattrf08_SOURCES) \ typeattr2f08.f90 typeattr3f08.f90 typeattrf08.f90 DIST_SOURCES = $(attrlangf08_SOURCES) attrmpi1f08.f90 baseattr2f08.f90 \ $(baseattr3f08_SOURCES) baseattrf08.f90 commattr2f08.f90 \ commattr3f08.f90 commattrf08.f90 $(fandcattrf08_SOURCES) \ typeattr2f08.f90 typeattr3f08.f90 typeattrf08.f90 am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_f08.mtest $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F08 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f08/util/mtestf08.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 fandcattrf08_SOURCES = fandcattrf08.f90 fandcattrc.c baseattr3f08_SOURCES = baseattr3f08.f90 attrlangf08_SOURCES = attrlangf08.f90 attrlangc.c all: all-am .SUFFIXES: .SUFFIXES: .c .f90 .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f08.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f08/attr/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f08/attr/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f08.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) attrlangf08$(EXEEXT): $(attrlangf08_OBJECTS) $(attrlangf08_DEPENDENCIES) $(EXTRA_attrlangf08_DEPENDENCIES) @rm -f attrlangf08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(attrlangf08_OBJECTS) $(attrlangf08_LDADD) $(LIBS) attrmpi1f08$(EXEEXT): $(attrmpi1f08_OBJECTS) $(attrmpi1f08_DEPENDENCIES) $(EXTRA_attrmpi1f08_DEPENDENCIES) @rm -f attrmpi1f08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(attrmpi1f08_OBJECTS) $(attrmpi1f08_LDADD) $(LIBS) baseattr2f08$(EXEEXT): $(baseattr2f08_OBJECTS) $(baseattr2f08_DEPENDENCIES) $(EXTRA_baseattr2f08_DEPENDENCIES) @rm -f baseattr2f08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(baseattr2f08_OBJECTS) $(baseattr2f08_LDADD) $(LIBS) baseattr3f08$(EXEEXT): $(baseattr3f08_OBJECTS) $(baseattr3f08_DEPENDENCIES) $(EXTRA_baseattr3f08_DEPENDENCIES) @rm -f baseattr3f08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(baseattr3f08_OBJECTS) $(baseattr3f08_LDADD) $(LIBS) baseattrf08$(EXEEXT): $(baseattrf08_OBJECTS) $(baseattrf08_DEPENDENCIES) $(EXTRA_baseattrf08_DEPENDENCIES) @rm -f baseattrf08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(baseattrf08_OBJECTS) $(baseattrf08_LDADD) $(LIBS) commattr2f08$(EXEEXT): $(commattr2f08_OBJECTS) $(commattr2f08_DEPENDENCIES) $(EXTRA_commattr2f08_DEPENDENCIES) @rm -f commattr2f08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(commattr2f08_OBJECTS) $(commattr2f08_LDADD) $(LIBS) commattr3f08$(EXEEXT): $(commattr3f08_OBJECTS) $(commattr3f08_DEPENDENCIES) $(EXTRA_commattr3f08_DEPENDENCIES) @rm -f commattr3f08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(commattr3f08_OBJECTS) $(commattr3f08_LDADD) $(LIBS) commattrf08$(EXEEXT): $(commattrf08_OBJECTS) $(commattrf08_DEPENDENCIES) $(EXTRA_commattrf08_DEPENDENCIES) @rm -f commattrf08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(commattrf08_OBJECTS) $(commattrf08_LDADD) $(LIBS) fandcattrf08$(EXEEXT): $(fandcattrf08_OBJECTS) $(fandcattrf08_DEPENDENCIES) $(EXTRA_fandcattrf08_DEPENDENCIES) @rm -f fandcattrf08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(fandcattrf08_OBJECTS) $(fandcattrf08_LDADD) $(LIBS) typeattr2f08$(EXEEXT): $(typeattr2f08_OBJECTS) $(typeattr2f08_DEPENDENCIES) $(EXTRA_typeattr2f08_DEPENDENCIES) @rm -f typeattr2f08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(typeattr2f08_OBJECTS) $(typeattr2f08_LDADD) $(LIBS) typeattr3f08$(EXEEXT): $(typeattr3f08_OBJECTS) $(typeattr3f08_DEPENDENCIES) $(EXTRA_typeattr3f08_DEPENDENCIES) @rm -f typeattr3f08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(typeattr3f08_OBJECTS) $(typeattr3f08_LDADD) $(LIBS) typeattrf08$(EXEEXT): $(typeattrf08_OBJECTS) $(typeattrf08_DEPENDENCIES) $(EXTRA_typeattrf08_DEPENDENCIES) @rm -f typeattrf08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(typeattrf08_OBJECTS) $(typeattrf08_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/attrlangc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fandcattrc.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-local clean-noinstPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-local clean-noinstPROGRAMS cscopelist-am ctags ctags-am \ distclean distclean-compile distclean-generic distclean-tags \ distdir dvi dvi-am html html-am info info-am install \ install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile $(top_builddir)/f08/util/mtestf08.o: $(top_srcdir)/f08/util/mtestf08.f90 (cd $(top_builddir)/f08/util && $(MAKE) mtestf08.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Remove any created module files, if we know the extension of those files clean-local: if [ "@FCMODEXT@" != "" ] ; then rm -f *.@FCMODEXT@ ; fi # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f08/attr/attrmpi1f08.f900000644000175000017500000000372312620254305020333 0ustar mbanckmbanck! This file created from test/mpi/f77/attr/attrmpi1f.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 implicit none integer value, wsize, wrank, extra, mykey integer rvalue, svalue TYPE(MPI_Comm) ncomm logical flag integer ierr, errs ! errs = 0 call mtest_init( ierr ) call mpi_comm_size( MPI_COMM_WORLD, wsize, ierr ) call mpi_comm_rank( MPI_COMM_WORLD, wrank, ierr ) ! ! Simple attribute put and get ! call mpi_keyval_create( MPI_COMM_NULL_COPY_FN, MPI_COMM_NULL_DELETE_FN, & & mykey, extra,ierr ) call mpi_attr_get( MPI_COMM_WORLD, mykey, value, flag, ierr ) if (flag) then errs = errs + 1 print *, & & "Did not get flag==.false. for attribute that was not set" endif ! value = 1234567 svalue = value call mpi_attr_put( MPI_COMM_WORLD, mykey, value, ierr ) value = -9876543 call mpi_attr_get( MPI_COMM_WORLD, mykey, rvalue, flag, ierr ) if (.not. flag) then errs = errs + 1 print *, "Did not find attribute after set" else if (rvalue .ne. svalue) then errs = errs + 1 print *, "Attribute value ", rvalue, " should be ", svalue endif endif value = -123456 svalue = value call mpi_attr_put( MPI_COMM_WORLD, mykey, value, ierr ) value = 987654 call mpi_attr_get( MPI_COMM_WORLD, mykey, rvalue, flag, ierr ) if (.not. flag) then errs = errs + 1 print *, "Did not find attribute after set (neg)" else if (rvalue .ne. svalue) then errs = errs + 1 print *, "Neg Attribute value ", rvalue," should be ",svalue endif endif ! call mpi_keyval_free( mykey, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/attr/Makefile.am0000644000175000017500000000217712620254305017772 0ustar mbanckmbanck# This Makefile.am generated automatically by f77tof90 # from test/mpi/f77/attr/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f08.mtest EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 noinst_PROGRAMS = \ attrmpi1f08 \ baseattrf08 baseattr2f08 \ commattrf08 commattr2f08 commattr3f08 \ typeattrf08 typeattr2f08 typeattr3f08 ## attraints.h will be distributed because it's listed in AC_CONFIG_FILES/AC_OUTPUT # ensure that "{comm,type}attr*f.o" will be rebuilt when attraints.h is updated ## vim: set ft=automake : noinst_PROGRAMS += fandcattrf08 baseattr3f08 attrlangf08 fandcattrf08_SOURCES = fandcattrf08.f90 fandcattrc.c baseattr3f08_SOURCES = baseattr3f08.f90 attrlangf08_SOURCES = attrlangf08.f90 attrlangc.c # Remove any created module files, if we know the extension of those files clean-local: if [ "@FCMODEXT@" != "" ] ; then rm -f *.@FCMODEXT@ ; fi mpi-testsuite-3.2+dfsg/f08/attr/attrlangf08.f900000644000175000017500000007721612620254305020416 0ustar mbanckmbanck! ! -*- Mode: Fortran; -*- ! ! (C) 2012 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! ! In MPI 2.2, the behavior of attributes set in one language and retrieved ! from another was defined. There are three types of attribute values: ! 1. pointer (void *): "The C type" ! 2. INTEGER : "The MPI-1 Fortran type" ! 3. INTEGER (KIND=MPI_ADDRESS_KIND) : "The MPI-2 Fortran type" ! ! All three apply to Communicator attributes, with case 2 using the ! deprecated MPI_ATTR_GET and MPI_ATTR_PUT routines. For Datatype and ! RMA Window attributes, cases 1 and 3 apply. ! ! Note, just to make this more complex, there are some reasons why an MPI ! implementation may choose to make MPI_Aint (and the corresponding ! Fortran MPI_ADDRESS_KIND) larger than a void pointer. Specifically, ! make it as large as MPI_Offset, which simplifies certain operations ! with datatypes. ! ! There are 9 cases: ! 1. C sets, C gets ! 2. C sets, Fortran INTEGER gets ! 3. C sets, Fortran ADDRESS_KIND gets ! 4. Fortran INTEGER sets, C gets ! 5. Fortran INTEGER sets, Fortran INTEGER gets ! 6. Fortran INTEGER sets, Fortran ADDRESS_KIND gets ! 7. Fortran ADDRESS_KIND sets, C gets ! 8. Fortran ADDRESS_KIND sets, Fortran INTEGER gets ! 9. Fortran ADDRESS_KIND sets, Fortran ADDRESS_KIND gets ! ! These are the basic cases. They are complicated by the fact that ! the attribute values have 3 types: void * (C interface), MPI_Fint ! (Fortran INTEGER), and MPI_Aint (Fortran ADDRESS_KIND). These ! have the following size relationships: ! ! sizeof(void *) <= sizeof(MPI_Aint) ! (For some systems, MPI_Aint is set to the same size as ! MPI_Offset, and may be larger than a void *.) ! sizeof(MPI_Fint) <= sizeof(MPI_Aint) ! (Not strictly defined, but all reasonable implementations will ! have this property) ! ! When a value is stored, the full value is stored (this may be fewer ! bytes than the maximum-sized attribute, in which case the high ! bytes are stored as zero). When a value is retrieved, if the ! destination location is smaller, the low bytes (in value) are ! saved; this is the same as trunction. If the destination location ! is longer, then then value is sign-extended (See MPI-3, 17.2.7). ! ! Specifically, if the value was set from Fortran, C will return a ! pointer to the appropriate-sized integer. ! When the value is set from C but accessed from Fortran, the value ! is converted to an integer of the appropriate length, possibly truncated. ! ! FIXME: The above different-length attribute case is not yet handled ! in this code. ! ! In addition to setting and getting attributes, they are accessed ! through duplication (COMM_DUP and TYPE_DUP), and on deletion of the ! object to which they are attached, when the copy functions will be ! well-defined. ! ! This code was inspired by a code written by Jeff Squyres to test these ! nine cases. This code, however, is different. ! ! So, for each of the same->same tests: ! Store largest positive and negative attributes. Dup them, ! retrieve them, delete them. All bytes should remain value, and ! no other. Use keys created in all three languages for set/get; ! use language under test for dup. ! ! For X->Y tests: ! Using X, store into key created in all three. ! Using Y, retrive all attributes. See above for handling of ! truncated or sign-extended ! ! Use Fortran to drive tests (Fortran main program). Call C for ! C routines and to check data with different sizes (to ensure that ! the proper bytes are used in the value). ! ! Use the same keyval for attributes used in both C and Fortran (both ! modes). This found an error in MPICH, where the type of the ! attribute (e.g., pointer, integer, or address-sized integer) needs ! to be saved. ! ! Module containing the keys and other information, including ! interfaces to the C routines module keyvals use mpi_f08 logical fverbose, useintSize integer ptrSize, intSize, aintSize integer fcomm1_key, fcomm1_extra integer fcomm2_key, ftype2_key, fwin2_key integer ccomm1_key integer ccomm2_key, ctype2_key, cwin2_key TYPE(MPI_Win) win integer (kind=MPI_ADDRESS_KIND) fcomm2_extra, ftype2_extra,& & fwin2_extra interface pure function bigint() integer bigint end function bigint pure function bigaint() use mpi_f08, only : MPI_ADDRESS_KIND integer (kind=MPI_ADDRESS_KIND) bigaint end function bigaint ! Could use bind(c) once we require that level of Fortran support. subroutine csetmpi( fcomm, fkey, val, errs ) use mpi_f08 TYPE(MPI_Comm), INTENT(IN) :: fcomm integer, INTENT(IN) :: fkey, val integer errs end subroutine csetmpi subroutine csetmpi2( fcomm, fkey, val, errs ) use mpi_f08 TYPE(MPI_Comm), INTENT(IN) :: fcomm integer, INTENT(IN) :: fkey integer errs integer (KIND=MPI_ADDRESS_KIND) val end subroutine csetmpi2 subroutine cattrinit( fv ) integer fv end subroutine cattrinit subroutine cgetsizes( ps, is, as ) integer, INTENT(OUT) :: ps, is, as end subroutine cgetsizes subroutine ccreatekeys( k1, k2, k3, k4 ) integer, INTENT(OUT) :: k1, k2, k3, k4 end subroutine ccreatekeys subroutine cfreekeys() end subroutine cfreekeys subroutine ctoctest( errs ) integer errs end subroutine ctoctest end interface end module keyvals ! program main use mpi_f08 use keyvals implicit none integer ierr integer errs, tv, rank integer(MPI_ADDRESS_KIND) tmp errs = 0 call MPI_INIT( ierr ) call MPI_COMM_RANK( MPI_COMM_WORLD, rank, ierr ) ! ! Let the C routines know about debugging call cgetenvbool( "MPITEST_VERBOSE", tv ) if (tv .eq. 1) then fverbose = .true. call cattrinit( 1 ) else fverbose = .false. call cattrinit( 0 ) endif ! ! If this value is true, define an "big MPI_Aint" value that fits in ! an MPI_Fint (see function bigaint) call cgetenvbool( "MPITEST_ATTR_INTFORAINT", tv ) if (tv .eq. 1) then useintSize = .true. else useintSize = .false. endif ! ! Get the sizes of the three types of attributes call cgetsizes( ptrSize, intSize, aintSize ) if (fverbose) then print *, 'sizeof(ptr)=',ptrSize, ' sizeof(int)=', intSize, ' & &sizeof(aint)=', aintSize endif ! ! Create the keyvals ! ! Create the attribute values to use. We want these to use the full ! available width, which depends on both the type and the test, ! since when switching between types of different sizes, we need to ! check only the "low" bits (those shared in types of each size). ! ! if (fverbose) then print *, "Creating Fortran attribute keys" endif call fCreateKeys() if (fverbose) then print *, "Creating C attribute keys" endif call ccreatekeys( ccomm1_key, ccomm2_key, ctype2_key, cwin2_key& & ) ! ! Create a window to use with the attribute tests in Fortran tmp = 0 call MPI_WIN_CREATE( MPI_BOTTOM, tmp, 1, MPI_INFO_NULL,& & MPI_COMM_WORLD, win, ierr ) ! if (fverbose) then print *, "Case 1: C sets and C gets" endif call ctoctest( errs ) if (fverbose) then print *, "Case 2: C sets and Fortran (MPI1) gets" endif call ctof1test( errs ) if (fverbose) then print *, "Case 3: C sets and Fortran (MPI2) gets" endif call ctof2test( errs ) if (fverbose) then print *, "Case 4: Fortran (MPI1) sets and C gets" endif call f1toctest( errs ) if (fverbose) then print *, "Case 5: Fortran (MPI1) sets and gets" endif call f1tof1test( errs ) if (fverbose) then print *, "Case 6: Fortran (MPI1) sets and Fortran (MPI2) gets" endif call f1tof2test( errs ) if (fverbose) then print *, "Case 7: Fortran (MPI2) sets and C gets" endif call f2toctest( errs ) if (fverbose) then print *, "Case 8: Fortran (MPI2) sets and Fortran (MPI1) gets" endif call f2tof1test( errs ) if (fverbose) then print *, "Case 9: Fortran (MPI2) sets and gets" endif call f2tof2test( errs ) ! Cleanup call ffreekeys() call cfreekeys() call MPI_WIN_FREE( win, ierr ) call MPI_REDUCE( MPI_IN_PLACE, errs, 1, MPI_INT, MPI_SUM, 0,& & MPI_COMM_WORLD, ierr ) if (rank .eq. 0) then if (errs .eq. 0) then print *, " No Errors" else print *, " Found ", errs, " errors" endif endif call MPI_FINALIZE( ierr ) end ! ! ------------------------------------------------------------------- ! Check attribute set in Fortran (MPI-1) and read from Fortran (MPI-1) ! ------------------------------------------------------------------- integer function FMPI1checkCommAttr( comm, key, expected, msg ) use mpi_f08 integer key, expected TYPE(MPI_Comm) comm character*(*) msg integer value, ierr logical flag ! FMPI1checkCommAttr = 0 call MPI_ATTR_GET( comm, key, value, flag, ierr ) if (.not. flag) then print *, "Error: reading Fortran INTEGER attribute: ", msg FMPI1checkCommAttr = 1 return endif if (value .ne. expected) then print *, "Error: Fortran INTEGER attribute: ", msg print *, "Expected ", expected, " but got ", value FMPI1checkCommAttr = 1 endif return end ! ! ------------------------------------------------------------------- ! Functions associated with attribute copy/delete. ! ------------------------------------------------------------------- subroutine FMPI1_COPY_FN( oldcomm, key, extrastate, inval,& & outval, flag, ierr ) use mpi_f08 use keyvals, only : fverbose integer key, extrastate, inval, outval, ierr TYPE(MPI_Comm) oldcomm logical flag ! if (fverbose) then print *, 'FMPI1_COPY: Attr in = ', inval, ' extra = ',& & extrastate endif flag = .true. outval = inval + 1 ierr = MPI_SUCCESS end ! subroutine FMPI1_DELETE_FN( oldcomm, key, extrastate, inval,& & ierr ) use mpi_f08 use keyvals, only : fverbose integer key, extrastate, inval, ierr TYPE(MPI_Comm) oldcomm logical flag ! if (fverbose) then print *, "FMPI1_DELETE: inval = ", inval, " extra = ",& & extrastate endif ierr = MPI_SUCCESS end ! ! subroutine FMPI2_COPY_FN( oldcomm, key, extrastate, inval, outval,& & flag, ierr ) use mpi_f08 use keyvals, only : fverbose implicit none integer key, ierr TYPE(MPI_Comm) oldcomm integer (KIND=MPI_ADDRESS_KIND) inval, outval, extrastate logical flag ! if (fverbose) then print *, 'FMPI2_COPY: Attr in = ', inval, ' extra = ',& & extrastate endif flag = .true. outval = inval + 1 ierr = MPI_SUCCESS end ! subroutine FMPI2_DELETE_FN( oldcomm, key, extrastate, inval,& & ierr ) use mpi_f08 use keyvals, only : fverbose implicit none integer key, ierr TYPE(MPI_Comm) oldcomm integer (kind=MPI_ADDRESS_KIND) inval, extrastate ! if (fverbose) then print *, "FMPI2_DELETE: inval = ", inval, " extra = ",& & extrastate endif ierr = MPI_SUCCESS end ! ------------------------------------------------------------------- ! ! Typical check pattern ! ! Set value ! Get value (check set in same form) ! Get value in other modes ! Dup object (updates value) ! Get value in other modes ! Delete dup'ed object; check correct value sent to delete routine ! subroutine fcreateKeys( ) use mpi_f08 use keyvals implicit none external FMPI1_COPY_FN, FMPI1_DELETE_FN, FMPI2_COPY_FN,& & FMPI2_DELETE_FN integer ierr fcomm1_extra = 0 fcomm2_extra = 0 ftype2_extra = 0 fwin2_extra = 0 call MPI_KEYVAL_CREATE( FMPI1_COPY_FN, FMPI1_DELETE_FN,& & fcomm1_key, fcomm1_extra, ierr ) call MPI_COMM_CREATE_KEYVAL( FMPI2_COPY_FN, FMPI2_DELETE_FN,& & fcomm2_key, fcomm2_extra, ierr ) call MPI_TYPE_CREATE_KEYVAL( FMPI2_COPY_FN, FMPI2_DELETE_FN,& & ftype2_key, ftype2_extra, ierr ) call MPI_WIN_CREATE_KEYVAL( FMPI2_COPY_FN, FMPI2_DELETE_FN,& & fwin2_key, fwin2_extra, ierr ) end subroutine fcreateKeys ! subroutine ffreekeys() use mpi_f08 use keyvals implicit none integer ierr call MPI_KEYVAL_FREE( fcomm1_key, ierr ) call MPI_COMM_FREE_KEYVAL( fcomm2_key, ierr ) call MPI_TYPE_FREE_KEYVAL( ftype2_key, ierr ) call MPI_WIN_FREE_KEYVAL( fwin2_key, ierr ) return end subroutine ffreekeys ! ------------------------------------------------------------------- ! Set attributes in Fortran (MPI-1) and read them from Fortran (MPI-1) subroutine f1tof1test(errs) use mpi_f08 use keyvals implicit none integer errs integer ierr, attrval, fcomm1attr TYPE(MPI_Comm) fdup ! fcomm1attr = bigint() attrval = fcomm1attr call MPI_ATTR_PUT( MPI_COMM_SELF, fcomm1_key, fcomm1attr,& & ierr ) call fmpi1read( MPI_COMM_SELF, fcomm1_key, attrval, & &"F to F (check value)", errs ) call MPI_COMM_DUP( MPI_COMM_SELF, fdup, ierr ) call fmpi1read( fdup, fcomm1_key, attrval + 1, "F to F dup",& & errs ) call MPI_COMM_FREE( fdup, ierr ) ! ! Use a negative value fcomm1attr = -bigint() attrval = fcomm1attr call MPI_ATTR_PUT( MPI_COMM_SELF, fcomm1_key, fcomm1attr,& & ierr ) call fmpi1read( MPI_COMM_SELF, fcomm1_key, attrval, & &"F to F (check neg value)", errs ) call MPI_COMM_DUP( MPI_COMM_SELF, fdup, ierr ) call fmpi1read( fdup, fcomm1_key, attrval + 1, "F to F dup",& & errs ) call MPI_COMM_FREE( fdup, ierr ) end subroutine f1tof1test ! ! Set attributes in C and read them from Fortran (MPI-1) subroutine ctof1test(errs) use mpi_f08 use keyvals implicit none integer errs integer ierr, attrval, fcomm1attr TYPE(MPI_Comm) fdup ! fcomm1attr = bigint() attrval = fcomm1attr call csetmpi( MPI_COMM_SELF, fcomm1_key, fcomm1attr, errs ) call fmpi1read( MPI_COMM_SELF, fcomm1_key, attrval, "C to F",& & errs ) if (ptrSize .eq. intSize) then call MPI_COMM_DUP( MPI_COMM_SELF, fdup, ierr ) call fmpi1read( fdup, fcomm1_key, attrval + 1, "C to F dup",& & errs ) call MPI_COMM_FREE( fdup, ierr ) endif ! fcomm1attr = -bigint() attrval = fcomm1attr call csetmpi( MPI_COMM_SELF, fcomm1_key, fcomm1attr, errs ) call fmpi1read( MPI_COMM_SELF, fcomm1_key, attrval, "C to F",& & errs ) if (ptrSize .eq. intSize) then call MPI_COMM_DUP( MPI_COMM_SELF, fdup, ierr ) call fmpi1read( fdup, fcomm1_key, attrval + 1, "C to F dup",& & errs ) call MPI_COMM_FREE( fdup, ierr ) endif end subroutine ctof1test ! ! Set attributes in Fortran (MPI-1) and read in Fortran (MPI-2) subroutine f1tof2test(errs) use mpi_f08 use keyvals implicit none integer errs integer ierr, attrval, fcomm1attr TYPE(MPI_Comm) fdup integer (kind=MPI_ADDRESS_KIND) expected ! fcomm1attr = bigint() attrval = fcomm1attr call MPI_ATTR_PUT( MPI_COMM_SELF, fcomm1_key, fcomm1attr,& & ierr ) call fmpi1read( MPI_COMM_SELF, fcomm1_key, attrval, & & "F to F (check value for F2 test)", errs ) if (intSize .eq. aintSize) then call MPI_COMM_DUP( MPI_COMM_SELF, fdup, ierr ) expected = attrval + 1 call fmpi2read( fdup, fcomm1_key, expected, "F to F2 dup",& & errs ) call MPI_COMM_FREE( fdup, ierr ) endif ! fcomm1attr = -bigint() attrval = fcomm1attr call MPI_ATTR_PUT( MPI_COMM_SELF, fcomm1_key, fcomm1attr,& & ierr ) call fmpi1read( MPI_COMM_SELF, fcomm1_key, attrval, & &"F to F (check neg value for F2 test)", errs ) if (intSize .eq. aintSize) then call MPI_COMM_DUP( MPI_COMM_SELF, fdup, ierr ) expected = attrval + 1 call fmpi2read( fdup, fcomm1_key, expected, "F to F2 dup",& & errs ) call MPI_COMM_FREE( fdup, ierr ) endif end subroutine f1tof2test ! subroutine fmpi1read( comm, key, expected, msg, errs ) use mpi_f08 implicit none integer key, expected, errs TYPE(MPI_Comm) comm character *(*) msg logical flag integer ierr, attrval ! call MPI_ATTR_GET( comm, key, attrval, flag, ierr ) if (.not. flag) then print *, 'Error: flag false for Attr_get: ', msg errs = errs + 1 return endif if (attrval .ne. expected) then print *, 'Error: expected ', expected, ' but saw ',& & attrval, ':', msg errs = errs + 1 endif return end subroutine fmpi1read subroutine fmpi2read( comm, key, expected, msg, errs ) use mpi_f08 implicit none integer key, errs TYPE(MPI_Comm) comm integer (kind=MPI_ADDRESS_KIND) expected character *(*) msg logical flag integer ierr integer (kind=MPI_ADDRESS_KIND) attrval ! call MPI_COMM_GET_ATTR( comm, key, attrval, flag, ierr ) if (.not. flag) then print *, 'Error: flag false for Attr_get: ', msg errs = errs + 1 return endif if (attrval .ne. expected) then print *, 'Error: expected ', expected, ' but saw ',& & attrval, ':', msg errs = errs + 1 endif return end subroutine fmpi2read subroutine fmpi2readwin( win, key, expected, msg, errs ) use mpi_f08 implicit none integer key, errs TYPE(MPI_Win) win integer (kind=MPI_ADDRESS_KIND) expected character *(*) msg logical flag integer ierr integer (kind=MPI_ADDRESS_KIND) attrval ! call MPI_WIN_GET_ATTR( win, key, attrval, flag, ierr ) if (.not. flag) then print *, 'Error: flag false for Win_get_attr: ', msg errs = errs + 1 return endif if (attrval .ne. expected) then print *, 'Error: expected ', expected, ' but saw ',& & attrval, ':', msg errs = errs + 1 endif return end subroutine fmpi2readwin subroutine fmpi2readtype( dtype, key, expected, msg, errs ) use mpi_f08 implicit none integer key, errs TYPE(MPI_Datatype) dtype integer (kind=MPI_ADDRESS_KIND) expected character *(*) msg logical flag integer ierr integer (kind=MPI_ADDRESS_KIND) attrval ! call MPI_TYPE_GET_ATTR( dtype, key, attrval, flag, ierr ) if (.not. flag) then print *, 'Error: flag false for Type_get_attr: ', msg errs = errs + 1 return endif if (attrval .ne. expected) then print *, 'Error: expected ', expected, ' but saw ',& & attrval, ':', msg errs = errs + 1 endif return end subroutine fmpi2readtype subroutine f2tof2test(errs) use mpi_f08 use keyvals implicit none integer errs integer ierr TYPE(MPI_Comm) fdup TYPE(MPI_Datatype) tdup integer (kind=MPI_ADDRESS_KIND) fcomm2attr, ftype2attr,& & fwin2attr, attrval ! fcomm2attr = bigaint() attrval = fcomm2attr call MPI_COMM_SET_ATTR( MPI_COMM_SELF, fcomm2_key, fcomm2attr,& & ierr ) call fmpi2read( MPI_COMM_SELF, fcomm2_key, attrval, "F2 to F2",& & errs ) call MPI_COMM_DUP( MPI_COMM_SELF, fdup, ierr ) call fmpi2read( fdup, fcomm2_key, attrval + 1, "F2 to F2 dup",& & errs ) call MPI_COMM_FREE( fdup, ierr ) ! ftype2attr = bigaint()-9 attrval = ftype2attr call MPI_TYPE_SET_ATTR( MPI_INTEGER, ftype2_key, ftype2attr,& & ierr ) call fmpi2readtype( MPI_INTEGER, ftype2_key, attrval, "F2 type& & to F2", errs ) call MPI_TYPE_DUP( MPI_INTEGER, tdup, ierr ) call fmpi2readtype( tdup, ftype2_key, attrval + 1, "F2 type to& & F dup", errs ) call MPI_TYPE_FREE( tdup, ierr ) fwin2attr = bigaint()-9 attrval = fwin2attr call MPI_WIN_SET_ATTR( win, fwin2_key, fwin2attr,& & ierr ) call fmpi2readwin( win, fwin2_key, attrval, "F2 win to F2",& & errs ) ! fcomm2attr = -bigaint() attrval = fcomm2attr call MPI_COMM_SET_ATTR( MPI_COMM_SELF, fcomm2_key, fcomm2attr,& & ierr ) call fmpi2read( MPI_COMM_SELF, fcomm2_key, attrval, "F2 to F2",& & errs ) call MPI_COMM_DUP( MPI_COMM_SELF, fdup, ierr ) call fmpi2read( fdup, fcomm2_key, attrval + 1, "F2 to F2 dup",& & errs ) call MPI_COMM_FREE( fdup, ierr ) ! ftype2attr = -(bigaint()-9) attrval = ftype2attr call MPI_TYPE_SET_ATTR( MPI_INTEGER, ftype2_key, ftype2attr,& & ierr ) call fmpi2readtype( MPI_INTEGER, ftype2_key, attrval, "F2 type& & to F2", errs ) call MPI_TYPE_DUP( MPI_INTEGER, tdup, ierr ) call fmpi2readtype( tdup, ftype2_key, attrval + 1, "F2 type to& & F dup", errs ) call MPI_TYPE_FREE( tdup, ierr ) fwin2attr = -(bigaint()-9) attrval = fwin2attr call MPI_WIN_SET_ATTR( win, fwin2_key, fwin2attr,& & ierr ) call fmpi2readwin( win, fwin2_key, attrval, "F2 win to F2",& & errs ) end subroutine f2tof2test ! subroutine f1toctest( errs ) use mpi_f08 use keyvals implicit none integer errs integer ierr, attrval, fcomm1attr TYPE(MPI_Comm) fdup ! fcomm1attr = bigint() attrval = fcomm1attr call MPI_ATTR_PUT( MPI_COMM_SELF, fcomm1_key, fcomm1attr,& & ierr ) call fmpi1read( MPI_COMM_SELF, fcomm1_key, attrval, & & "F to F (check for F to C)", errs ) if (intSize .eq. ptrSize) then call MPI_COMM_DUP( MPI_COMM_SELF, fdup, ierr ) call cmpif1read( fdup, fcomm1_key, attrval + 1, errs, & & "F to F2 dup" ) call MPI_COMM_FREE( fdup, ierr ) endif ! fcomm1attr = -bigint() attrval = fcomm1attr call MPI_ATTR_PUT( MPI_COMM_SELF, fcomm1_key, fcomm1attr,& & ierr ) call fmpi1read( MPI_COMM_SELF, fcomm1_key, attrval, & &"F to F (check neg value for F to C)", errs ) if (intSize .eq. ptrSize) then call MPI_COMM_DUP( MPI_COMM_SELF, fdup, ierr ) call cmpif1read( fdup, fcomm1_key, attrval + 1, errs, & "F to C dup" ) call MPI_COMM_FREE( fdup, ierr ) endif end subroutine f1toctest subroutine f2tof1test(errs) use mpi_f08 use keyvals implicit none integer errs integer ierr TYPE(MPI_Comm) fdup TYPE(MPI_Datatype) tdup integer (kind=MPI_ADDRESS_KIND) fcomm2attr, ftype2attr,& & fwin2attr, attrval integer expected ! fcomm2attr = bigaint() attrval = fcomm2attr call MPI_COMM_SET_ATTR( MPI_COMM_SELF, fcomm2_key, fcomm2attr,& & ierr ) call fmpi2read( MPI_COMM_SELF, fcomm2_key, attrval, "F2 to F2",& & errs ) if (aintSize .eq. intSize) then call MPI_COMM_DUP( MPI_COMM_SELF, fdup, ierr ) expected = attrval + 1 call fmpi1read( fdup, fcomm2_key, expected, "F2 to F1 dup",& & errs ) call MPI_COMM_FREE( fdup, ierr ) endif ! fcomm2attr = -bigaint() attrval = fcomm2attr call MPI_COMM_SET_ATTR( MPI_COMM_SELF, fcomm2_key, fcomm2attr,& & ierr ) call fmpi2read( MPI_COMM_SELF, fcomm2_key, attrval, "F2 to F2",& & errs ) if (aintSize .eq. intSize) then call MPI_COMM_DUP( MPI_COMM_SELF, fdup, ierr ) expected = attrval + 1 call fmpi1read( fdup, fcomm2_key, expected, "F2 to F1 dup",& & errs ) call MPI_COMM_FREE( fdup, ierr ) endif ! end subroutine f2tof1test ! subroutine f2toctest(errs) use mpi_f08 use keyvals implicit none integer errs integer ierr TYPE(MPI_Comm) fdup TYPE(MPI_Datatype) tdup integer (kind=MPI_ADDRESS_KIND) fcomm2attr, ftype2attr,& & fwin2attr, attrval ! fcomm2attr = bigaint() attrval = fcomm2attr call MPI_COMM_SET_ATTR( MPI_COMM_SELF, fcomm2_key, fcomm2attr,& & ierr ) call fmpi2read( MPI_COMM_SELF, fcomm2_key, attrval, "F2 to F2",& & errs ) if (aintSize .eq. ptrSize) then call MPI_COMM_DUP( MPI_COMM_SELF, fdup, ierr ) call cmpif2read( fdup, fcomm2_key, attrval + 1, errs, "F2 t& &o c dup") call MPI_COMM_FREE( fdup, ierr ) endif ! ftype2attr = bigaint()-9 attrval = ftype2attr call MPI_TYPE_SET_ATTR( MPI_INTEGER, ftype2_key, ftype2attr,& & ierr ) call fmpi2readtype( MPI_INTEGER, ftype2_key, attrval, "F2 type& & to F2", errs ) if (aintSize .eq. ptrSize) then call MPI_TYPE_DUP( MPI_INTEGER, tdup, ierr ) call cmpif2readtype( tdup, ftype2_key, attrval + 1, errs, "F2 & &type toF dup" ) call MPI_TYPE_FREE( tdup, ierr ) endif fwin2attr = bigaint()-9 attrval = fwin2attr call MPI_WIN_SET_ATTR( win, fwin2_key, fwin2attr, ierr ) call cmpif2readwin( win, fwin2_key, attrval, errs, "F2 win to & &c" ) ! fcomm2attr = -bigaint() attrval = fcomm2attr call MPI_COMM_SET_ATTR( MPI_COMM_SELF, fcomm2_key, fcomm2attr,& & ierr ) call fmpi2read( MPI_COMM_SELF, fcomm2_key, attrval, "F2 to F2",& & errs ) if (aintSize .eq. ptrSize) then call MPI_COMM_DUP( MPI_COMM_SELF, fdup, ierr ) call cmpif2read( fdup, fcomm2_key, attrval + 1, errs, "F2 t& &o c dup") call MPI_COMM_FREE( fdup, ierr ) endif ! ftype2attr = -(bigaint()-9) attrval = ftype2attr call MPI_TYPE_SET_ATTR( MPI_INTEGER, ftype2_key, ftype2attr,& & ierr ) call fmpi2readtype( MPI_INTEGER, ftype2_key, attrval, "F2 type& & to F2", errs ) if (aintSize .eq. ptrSize) then call MPI_TYPE_DUP( MPI_INTEGER, tdup, ierr ) call cmpif2readtype( tdup, ftype2_key, attrval + 1, errs, "F2 & &type toF dup" ) call MPI_TYPE_FREE( tdup, ierr ) endif fwin2attr = -(bigaint()-9) attrval = fwin2attr call MPI_WIN_SET_ATTR( win, fwin2_key, fwin2attr, ierr ) call cmpif2readwin( win, fwin2_key, attrval, errs, "F2 win to & &c" ) end subroutine f2toctest ! subroutine ctof2test(errs) use mpi_f08 use keyvals implicit none integer errs integer ierr TYPE(MPI_Comm) fdup TYPE(MPI_Datatype) tdup integer (kind=MPI_ADDRESS_KIND) fcomm2attr, ftype2attr,& & fwin2attr, attrval ! fcomm2attr = bigaint() attrval = fcomm2attr call csetmpi2( MPI_COMM_SELF, fcomm2_key, fcomm2attr, errs ) call fmpi2read( MPI_COMM_SELF, fcomm2_key, attrval, "c to F2",& & errs ) if (aintSize .eq. ptrSize) then call MPI_COMM_DUP( MPI_COMM_SELF, fdup, ierr ) call fmpi2read( fdup, fcomm2_key, attrval + 1, "c to F2 dup",& & errs ) call MPI_COMM_FREE( fdup, ierr ) endif ! ftype2attr = bigaint()-9 attrval = ftype2attr call csetmpitype( MPI_INTEGER, ftype2_key, ftype2attr, errs ) call fmpi2readtype( MPI_INTEGER, ftype2_key, attrval, "c type& & to F2", errs ) if (aintSize .eq. ptrSize) then call MPI_TYPE_DUP( MPI_INTEGER, tdup, ierr ) call fmpi2readtype( tdup, ftype2_key, attrval + 1, "c type to& & F2 dup", errs ) call MPI_TYPE_FREE( tdup, ierr ) endif fwin2attr = bigaint()-9 attrval = fwin2attr call csetmpiwin( win%MPI_VAL, fwin2_key, fwin2attr, errs ) call fmpi2readwin( win, fwin2_key, attrval, "c win to F2",& & errs ) ! fcomm2attr = -bigaint() attrval = fcomm2attr call csetmpi2( MPI_COMM_SELF, fcomm2_key, fcomm2attr, errs ) call fmpi2read( MPI_COMM_SELF, fcomm2_key, attrval, "c to F2",& & errs ) if (aintSize .eq. ptrSize) then call MPI_COMM_DUP( MPI_COMM_SELF, fdup, ierr ) call fmpi2read( fdup, fcomm2_key, attrval + 1, "c to F2 dup",& & errs ) call MPI_COMM_FREE( fdup, ierr ) endif ! ftype2attr = -(bigaint()-9) attrval = ftype2attr call csetmpitype( MPI_INTEGER, ftype2_key, ftype2attr, errs ) call fmpi2readtype( MPI_INTEGER, ftype2_key, attrval, "c type& & to F2", errs ) if (aintSize .eq. ptrSize) then call MPI_TYPE_DUP( MPI_INTEGER, tdup, ierr ) call fmpi2readtype( tdup, ftype2_key, attrval + 1, "c type to& & F2 dup", errs ) call MPI_TYPE_FREE( tdup, ierr ) endif fwin2attr = -(bigaint()-9) attrval = fwin2attr call csetmpiwin( win, fwin2_key, fwin2attr, errs ) call fmpi2readwin( win, fwin2_key, attrval, "c win to F2",& & errs ) end subroutine ctof2test ! ------------------------------------------------------------------- ! Return an integer value that fills all of the bytes pure integer function bigint() integer i, v, digits digits = range(i) v = 0 do i=1,digits v = v * 10 + i enddo bigint = v return end function bigint ! ! Return an integer value that fill all of the bytes in an AINT ! The logical "useintsize" allows us to specify that only an int-sized ! result should be returned pure function bigaint() use mpi_f08, only : MPI_ADDRESS_KIND use keyvals, only : useintsize implicit none integer (kind=MPI_ADDRESS_KIND) bigaint, v integer i, digits if (useintsize) then digits = range(i) else digits = range(v) endif v = 0 do i=1,digits v = v * 10 + i enddo bigaint = v return end function bigaint mpi-testsuite-3.2+dfsg/f08/attr/typeattr2f08.f900000644000175000017500000000636112620254305020531 0ustar mbanckmbanck! This file created from test/mpi/f77/attr/typeattr2f.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! This is a modified version of typeattrf.f that uses two of the ! default functions ! program main use mpi_f08 integer errs, ierr integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val TYPE(MPI_Datatype) type1, type2 integer keyval logical flag ! ! The only difference between the MPI-2 and MPI-1 attribute caching ! routines in Fortran is that the take an address-sized integer ! instead of a simple integer. These still are not pointers, ! so the values are still just integers. ! errs = 0 call mtest_init( ierr ) type1 = MPI_INTEGER ! extrastate = 1001 call mpi_type_create_keyval( MPI_TYPE_DUP_FN, & & MPI_TYPE_NULL_DELETE_FN, keyval, & & extrastate, ierr ) flag = .true. call mpi_type_get_attr( type1, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' get attr returned true when no attr set' endif valin = 2003 call mpi_type_set_attr( type1, keyval, valin, ierr ) flag = .false. valout = -1 call mpi_type_get_attr( type1, keyval, valout, flag, ierr ) if (valout .ne. 2003) then errs = errs + 1 print *, 'Unexpected value (should be 2003)', valout, & & ' from attr' endif valin = 2001 call mpi_type_set_attr( type1, keyval, valin, ierr ) flag = .false. valout = -1 call mpi_type_get_attr( type1, keyval, valout, flag, ierr ) if (valout .ne. 2001) then errs = errs + 1 print *, 'Unexpected value (should be 2001)', valout, & & ' from attr' endif ! ! Test the copy function valin = 5001 call mpi_type_set_attr( type1, keyval, valin, ierr ) call mpi_type_dup( type1, type2, ierr ) flag = .false. call mpi_type_get_attr( type1, keyval, valout, flag, ierr ) if (valout .ne. 5001) then errs = errs + 1 print *, 'Unexpected output value in type ', valout endif flag = .false. call mpi_type_get_attr( type2, keyval, valout, flag, ierr ) if (valout .ne. 5001) then errs = errs + 1 print *, 'Unexpected output value in type2 ', valout endif ! Test the delete function call mpi_type_free( type2, ierr ) ! ! Test the attr delete function call mpi_type_dup( type1, type2, ierr ) valin = 6001 extrastate = 1001 call mpi_type_set_attr( type2, keyval, valin, ierr ) call mpi_type_delete_attr( type2, keyval, ierr ) flag = .true. call mpi_type_get_attr( type2, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' Delete_attr did not delete attribute' endif call mpi_type_free( type2, ierr ) ! ierr = -1 call mpi_type_free_keyval( keyval, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call mtestprinterror( ierr ) endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/attr/fandcattrc.c0000644000175000017500000000772712620254305020221 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* style: allow:fprintf:10 sig:0 */ #include #include "mpi.h" #include "../../include/mpitestconf.h" #include /* Name mapping. All routines are created with names that are lower case with a single trailing underscore. This matches many compilers. We use #define to change the name for Fortran compilers that do not use the lowercase/underscore pattern */ #ifdef F77_NAME_UPPER #define chkcomm2inc_ CHKCOMM2INC #define chkckeyvals_ CHKCKEYVALS #elif defined(F77_NAME_LOWER) || defined(F77_NAME_MIXED) /* Mixed is ok because we use lowercase in all uses */ #define chkcomm2inc_ chkcomm2inc #define chkckeyvals_ chkckeyvals #elif defined(F77_NAME_LOWER_2USCORE) || defined(F77_NAME_LOWER_USCORE) || \ defined(F77_NAME_MIXED_USCORE) /* Else leave name alone (routines have no underscore, so both of these map to a lowercase, single underscore) */ #else #error 'Unrecognized Fortran name mapping' #endif int chkcomm2inc_(int *keyval, const int *expected, int *ierr); int chkcomm2inc_(int *keyval, const int *expected, int *ierr) { int flag; MPI_Aint *val; /* See Example 16.19 in MPI 2.2, part B. The use of MPI_Aint *val * and the address of val in the get_attr call is correct, as is * the use of *val to access the value. */ MPI_Comm_get_attr(MPI_COMM_WORLD, *keyval, &val, &flag); if (!flag) { *ierr = 1; } else { if (*val != *expected) { /* In some cases, using printf from a c routine linked * with a Fortran routine can cause linking difficulties. * To avoid problems in running the tests, this print * is commented out */ /* printf("Val = %x, expected = %d\n", val, *expected); */ *ierr = *ierr + 1; } } return 0; } /* Attribute delete and copy functions for each type */ int myCommCopyfn(MPI_Comm comm, int keyval, void *extra_state, void *attr_val_in, void *attr_val_out, int *flag); int myCommCopyfn(MPI_Comm comm, int keyval, void *extra_state, void *attr_val_in, void *attr_val_out, int *flag) { *(void **) attr_val_out = (char *) attr_val_in + 2; *flag = 1; return MPI_SUCCESS; } int myCommDelfn(MPI_Comm comm, int keyval, void *attr_val, void *extra_state); int myCommDelfn(MPI_Comm comm, int keyval, void *attr_val, void *extra_state) { return MPI_SUCCESS; } int myTypeCopyfn(MPI_Datatype dtype, int keyval, void *extra_state, void *attr_val_in, void *attr_val_out, int *flag); int myTypeCopyfn(MPI_Datatype dtype, int keyval, void *extra_state, void *attr_val_in, void *attr_val_out, int *flag) { *(void **) attr_val_out = (char *) attr_val_in + 2; *flag = 1; return MPI_SUCCESS; } int myTypeDelfn(MPI_Datatype dtype, int keyval, void *attr_val, void *extra_state); int myTypeDelfn(MPI_Datatype dtype, int keyval, void *attr_val, void *extra_state) { return MPI_SUCCESS; } int myWinCopyfn(MPI_Win win, int keyval, void *extra_state, void *attr_val_in, void *attr_val_out, int *flag); int myWinCopyfn(MPI_Win win, int keyval, void *extra_state, void *attr_val_in, void *attr_val_out, int *flag) { *(void **) attr_val_out = (char *) attr_val_in + 2; *flag = 1; return MPI_SUCCESS; } int myWinDelfn(MPI_Win win, int keyval, void *attr_val, void *extra_state); int myWinDelfn(MPI_Win win, int keyval, void *attr_val, void *extra_state) { return MPI_SUCCESS; } int chkckeyvals_(int *comm_keyval, int *type_keyval, int *win_keyval); int chkckeyvals_(int *comm_keyval, int *type_keyval, int *win_keyval) { MPI_Comm_create_keyval(myCommCopyfn, myCommDelfn, comm_keyval, 0); MPI_Type_create_keyval(myTypeCopyfn, myTypeDelfn, type_keyval, 0); MPI_Win_create_keyval(myWinCopyfn, myWinDelfn, win_keyval, 0); return 0; } mpi-testsuite-3.2+dfsg/f08/attr/commattr3f08.f900000644000175000017500000000545412620254305020506 0ustar mbanckmbanck! This file created from test/mpi/f77/attr/commattr3f.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2004 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! This tests the null copy function (returns flag false; thus the ! attribute should not be propagated to a dup'ed communicator ! This is must like the test in commattr2f ! program main use mpi_f08 integer errs, ierr integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val TYPE(MPI_Comm) comm1, comm2 integer keyval logical flag ! ! The only difference between the MPI-2 and MPI-1 attribute caching ! routines in Fortran is that the take an address-sized integer ! instead of a simple integer. These still are not pointers, ! so the values are still just integers. ! errs = 0 call mtest_init( ierr ) call mpi_comm_dup( MPI_COMM_WORLD, comm1, ierr ) ! extrastate = 1001 call mpi_comm_create_keyval( MPI_COMM_NULL_COPY_FN, & & MPI_COMM_NULL_DELETE_FN, keyval, & & extrastate, ierr ) flag = .true. call mpi_comm_get_attr( comm1, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' get attr returned true when no attr set' endif ! Test the null copy function valin = 5001 call mpi_comm_set_attr( comm1, keyval, valin, ierr ) call mpi_comm_dup( comm1, comm2, ierr ) ! Because we set NULL_COPY_FN, the attribute should not ! appear on the dup'ed communicator flag = .false. call mpi_comm_get_attr( comm1, keyval, valout, flag, ierr ) if (valout .ne. 5001) then errs = errs + 1 print *, 'Unexpected output value in comm ', valout endif flag = .true. call mpi_comm_get_attr( comm2, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' Attribute incorrectly present on dup communicator' endif ! Test the delete function call mpi_comm_free( comm2, ierr ) ! ! Test the attr delete function call mpi_comm_dup( comm1, comm2, ierr ) valin = 6001 extrastate = 1001 call mpi_comm_set_attr( comm2, keyval, valin, ierr ) call mpi_comm_delete_attr( comm2, keyval, ierr ) flag = .true. call mpi_comm_get_attr( comm2, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' Delete_attr did not delete attribute' endif call mpi_comm_free( comm2, ierr ) ! ierr = -1 call mpi_comm_free_keyval( keyval, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call mtestprinterror( ierr ) endif call mpi_comm_free( comm1, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/attr/typeattr3f08.f900000644000175000017500000000534712620254305020535 0ustar mbanckmbanck! This file created from test/mpi/f77/attr/typeattr3f.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2004 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! This tests the null copy function (returns flag false; thus the ! attribute should not be propagated to a dup'ed communicator ! This is much like the test in typeattr2f ! program main use mpi_f08 integer errs, ierr integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val TYPE(MPI_Datatype) type1, type2 integer keyval logical flag ! ! The only difference between the MPI-2 and MPI-1 attribute caching ! routines in Fortran is that the take an address-sized integer ! instead of a simple integer. These still are not pointers, ! so the values are still just integers. ! errs = 0 call mtest_init( ierr ) type1 = MPI_INTEGER ! extrastate = 1001 call mpi_type_create_keyval( MPI_TYPE_NULL_COPY_FN, & & MPI_TYPE_NULL_DELETE_FN, keyval, & & extrastate, ierr ) flag = .true. call mpi_type_get_attr( type1, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' get attr returned true when no attr set' endif ! Test the null copy function valin = 5001 call mpi_type_set_attr( type1, keyval, valin, ierr ) call mpi_type_dup( type1, type2, ierr ) ! Because we set NULL_COPY_FN, the attribute should not ! appear on the dup'ed communicator flag = .false. call mpi_type_get_attr( type1, keyval, valout, flag, ierr ) if (valout .ne. 5001) then errs = errs + 1 print *, 'Unexpected output value in type ', valout endif flag = .true. call mpi_type_get_attr( type2, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' Attribute incorrectly present on dup datatype' endif ! Test the delete function call mpi_type_free( type2, ierr ) ! ! Test the attr delete function call mpi_type_dup( type1, type2, ierr ) valin = 6001 extrastate = 1001 call mpi_type_set_attr( type2, keyval, valin, ierr ) call mpi_type_delete_attr( type2, keyval, ierr ) flag = .true. call mpi_type_get_attr( type2, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' Delete_attr did not delete attribute' endif call mpi_type_free( type2, ierr ) ! ierr = -1 call mpi_type_free_keyval( keyval, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call mtestprinterror( ierr ) endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/attr/commattr2f08.f900000644000175000017500000000646212620254305020505 0ustar mbanckmbanck! This file created from test/mpi/f77/attr/commattr2f.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! This is a modified version of commattrf.f that uses two of the ! default functions ! program main use mpi_f08 integer errs, ierr integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val TYPE(MPI_Comm) comm1, comm2 integer keyval logical flag ! ! The only difference between the MPI-2 and MPI-1 attribute caching ! routines in Fortran is that the take an address-sized integer ! instead of a simple integer. These still are not pointers, ! so the values are still just integers. ! errs = 0 call mtest_init( ierr ) call mpi_comm_dup( MPI_COMM_WORLD, comm1, ierr ) ! extrastate = 1001 call mpi_comm_create_keyval( MPI_COMM_DUP_FN, & & MPI_COMM_NULL_DELETE_FN, keyval, & & extrastate, ierr ) flag = .true. call mpi_comm_get_attr( comm1, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' get attr returned true when no attr set' endif valin = 2003 call mpi_comm_set_attr( comm1, keyval, valin, ierr ) flag = .false. valout = -1 call mpi_comm_get_attr( comm1, keyval, valout, flag, ierr ) if (valout .ne. 2003) then errs = errs + 1 print *, 'Unexpected value (should be 2003)', valout, & & ' from attr' endif valin = 2001 call mpi_comm_set_attr( comm1, keyval, valin, ierr ) flag = .false. valout = -1 call mpi_comm_get_attr( comm1, keyval, valout, flag, ierr ) if (valout .ne. 2001) then errs = errs + 1 print *, 'Unexpected value (should be 2001)', valout, & & ' from attr' endif ! ! Test the copy function valin = 5001 call mpi_comm_set_attr( comm1, keyval, valin, ierr ) call mpi_comm_dup( comm1, comm2, ierr ) flag = .false. call mpi_comm_get_attr( comm1, keyval, valout, flag, ierr ) if (valout .ne. 5001) then errs = errs + 1 print *, 'Unexpected output value in comm ', valout endif flag = .false. call mpi_comm_get_attr( comm2, keyval, valout, flag, ierr ) if (valout .ne. 5001) then errs = errs + 1 print *, 'Unexpected output value in comm2 ', valout endif ! Test the delete function call mpi_comm_free( comm2, ierr ) ! ! Test the attr delete function call mpi_comm_dup( comm1, comm2, ierr ) valin = 6001 extrastate = 1001 call mpi_comm_set_attr( comm2, keyval, valin, ierr ) call mpi_comm_delete_attr( comm2, keyval, ierr ) flag = .true. call mpi_comm_get_attr( comm2, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' Delete_attr did not delete attribute' endif call mpi_comm_free( comm2, ierr ) ! ierr = -1 call mpi_comm_free_keyval( keyval, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call mtestprinterror( ierr ) endif call mpi_comm_free( comm1, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/Makefile.am0000644000175000017500000000052312620254305017011 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f08.mtest EXTRA_DIST = testlist SUBDIRS = attr coll comm datatype ext info init io misc profile pt2pt rma spawn subarray timer topo DIST_SUBDIRS = $(SUBDIRS) util mpi-testsuite-3.2+dfsg/f08/util/0000755000175000017500000000000012621010234015722 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f08/util/mtestf08.f900000644000175000017500000001052212620254305017724 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! subroutine MTest_Init( ierr ) use mpi_f08 integer ierr logical flag logical dbgflag integer wrank common /mtest/ dbgflag, wrank call MPI_Initialized( flag, ierr ) if (.not. flag) then call MPI_Init( ierr ) endif dbgflag = .false. call MPI_Comm_rank( MPI_COMM_WORLD, wrank, ierr ) end ! subroutine MTest_Finalize( errs ) use mpi integer errs integer rank, toterrs, ierr call MPI_Comm_rank( MPI_COMM_WORLD, rank, ierr ) call MPI_Allreduce( errs, toterrs, 1, MPI_INTEGER, MPI_SUM, & & MPI_COMM_WORLD, ierr ) if (rank .eq. 0) then if (toterrs .gt. 0) then print *, " Found ", toterrs, " errors" else print *, " No Errors" endif endif end ! ! A simple get intracomm for now logical function MTestGetIntracomm( comm, min_size, qsmaller ) use mpi_f08 integer ierr integer min_size, size, rank TYPE(MPI_Comm) comm logical qsmaller integer myindex save myindex data myindex /0/ comm = MPI_COMM_NULL if (myindex .eq. 0) then comm = MPI_COMM_WORLD else if (myindex .eq. 1) then call mpi_comm_dup( MPI_COMM_WORLD, comm, ierr ) else if (myindex .eq. 2) then call mpi_comm_size( MPI_COMM_WORLD, size, ierr ) call mpi_comm_rank( MPI_COMM_WORLD, rank, ierr ) call mpi_comm_split( MPI_COMM_WORLD, 0, size - rank, comm, & & ierr ) else if (min_size .eq. 1 .and. myindex .eq. 3) then comm = MPI_COMM_SELF endif endif myindex = mod( myindex, 4 ) + 1 MTestGetIntracomm = comm /= MPI_COMM_NULL end ! subroutine MTestFreeComm( comm ) use mpi_f08 integer ierr TYPE(MPI_Comm) comm if (comm .ne. MPI_COMM_WORLD .and. & & comm .ne. MPI_COMM_SELF .and. & & comm .ne. MPI_COMM_NULL) then call mpi_comm_free( comm, ierr ) endif end ! subroutine MTestPrintError( errcode ) use mpi_f08 integer errcode integer errclass, slen, ierr character*(MPI_MAX_ERROR_STRING) string call MPI_Error_class( errcode, errclass, ierr ) call MPI_Error_string( errcode, string, slen, ierr ) print *, "Error class ", errclass, "(", string(1:slen), ")" end ! subroutine MTestPrintErrorMsg( msg, errcode ) use mpi_f08 character*(*) msg integer errcode integer errclass, slen, ierr character*(MPI_MAX_ERROR_STRING) string call MPI_Error_class( errcode, errclass, ierr ) call MPI_Error_string( errcode, string, slen, ierr ) print *, msg, ": Error class ", errclass, " & & (", string(1:slen), ")" end subroutine MTestSpawnPossible( can_spawn, errs ) use mpi integer can_spawn integer errs integer(kind=MPI_ADDRESS_KIND) val integer ierror logical flag integer comm_size call mpi_comm_get_attr( MPI_COMM_WORLD, MPI_UNIVERSE_SIZE, val, & & flag, ierror ) if ( ierror .ne. MPI_SUCCESS ) then ! MPI_UNIVERSE_SIZE keyval missing from MPI_COMM_WORLD attributes can_spawn = -1 errs = errs + 1 else if ( flag ) then comm_size = -1 call mpi_comm_size( MPI_COMM_WORLD, comm_size, ierror ) if ( ierror .ne. MPI_SUCCESS ) then ! MPI_COMM_SIZE failed for MPI_COMM_WORLD can_spawn = -1 errs = errs + 1 return endif if ( val .le. comm_size ) then ! no additional processes can be spawned can_spawn = 0 else can_spawn = 1 endif else ! No attribute associated with key MPI_UNIVERSE_SIZE of MPI_COMM_WORLD can_spawn = -1 endif endif end mpi-testsuite-3.2+dfsg/f08/util/Makefile.in0000644000175000017500000004214712621010234017777 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = f08/util ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = ARFLAGS = cru AM_V_AR = $(am__v_AR_@AM_V@) am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) am__v_AR_0 = @echo " AR " $@; am__v_AR_1 = libmtest_dummy_a_AR = $(AR) $(ARFLAGS) libmtest_dummy_a_LIBADD = am_libmtest_dummy_a_OBJECTS = mtestf08.$(OBJEXT) libmtest_dummy_a_OBJECTS = $(am_libmtest_dummy_a_OBJECTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = SOURCES = $(libmtest_dummy_a_SOURCES) DIST_SOURCES = $(libmtest_dummy_a_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_LIBRARIES = libmtest_dummy.a libmtest_dummy_a_SOURCES = mtestf08.f90 all: all-am .SUFFIXES: .SUFFIXES: .f90 .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f08/util/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f08/util/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): libmtest_dummy.a: $(libmtest_dummy_a_OBJECTS) $(libmtest_dummy_a_DEPENDENCIES) $(EXTRA_libmtest_dummy_a_DEPENDENCIES) $(AM_V_at)-rm -f libmtest_dummy.a $(AM_V_AR)$(libmtest_dummy_a_AR) libmtest_dummy.a $(libmtest_dummy_a_OBJECTS) $(libmtest_dummy_a_LIBADD) $(AM_V_at)$(RANLIB) libmtest_dummy.a mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile all-local installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \ clean-generic cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile all-local: mtestf08.$(OBJEXT) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f08/util/Makefile.am0000644000175000017500000000061312620254305017766 0ustar mbanckmbanck## -*- Mode: Makefile; -*- ## vim: set ft=automake : ## ## (C) 2014 by Argonne National Laboratory. ## See COPYRIGHT in top-level directory. ## ## list a dummy library that we don't actually build in order to cause automake ## to emit a rule for building mtestf08.o from mtestf08.f90 EXTRA_LIBRARIES = libmtest_dummy.a libmtest_dummy_a_SOURCES = mtestf08.f90 all-local: mtestf08.$(OBJEXT) mpi-testsuite-3.2+dfsg/f08/comm/0000755000175000017500000000000012621010233015677 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f08/comm/testlist0000644000175000017500000000003312620254305017502 0ustar mbanckmbanckcommnamef08 2 commerrf08 2 mpi-testsuite-3.2+dfsg/f08/comm/Makefile.in0000644000175000017500000004523412621010233017754 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This Makefile.am generated automatically by f77tof90 # from test/mpi/f77/comm/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = commnamef08$(EXEEXT) commerrf08$(EXEEXT) subdir = f08/comm ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) commerrf08_SOURCES = commerrf08.f90 commerrf08_OBJECTS = commerrf08.$(OBJEXT) commerrf08_LDADD = $(LDADD) commerrf08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o commnamef08_SOURCES = commnamef08.f90 commnamef08_OBJECTS = commnamef08.$(OBJEXT) commnamef08_LDADD = $(LDADD) commnamef08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = SOURCES = commerrf08.f90 commnamef08.f90 DIST_SOURCES = commerrf08.f90 commnamef08.f90 am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_f08.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F08 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f08/util/mtestf08.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 all: all-am .SUFFIXES: .SUFFIXES: .f90 .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f08.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f08/comm/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f08/comm/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f08.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) commerrf08$(EXEEXT): $(commerrf08_OBJECTS) $(commerrf08_DEPENDENCIES) $(EXTRA_commerrf08_DEPENDENCIES) @rm -f commerrf08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(commerrf08_OBJECTS) $(commerrf08_LDADD) $(LIBS) commnamef08$(EXEEXT): $(commnamef08_OBJECTS) $(commnamef08_DEPENDENCIES) $(EXTRA_commnamef08_DEPENDENCIES) @rm -f commnamef08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(commnamef08_OBJECTS) $(commnamef08_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f08/util/mtestf08.o: $(top_srcdir)/f08/util/mtestf08.f90 (cd $(top_builddir)/f08/util && $(MAKE) mtestf08.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f08/comm/commerrf08.f900000644000175000017500000001056312620254305020217 0ustar mbanckmbanck! This file created from test/mpi/f77/comm/commerrf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer errs, ierr, code(2), newerrclass, eclass character*(MPI_MAX_ERROR_STRING) errstring integer rlen TYPE(MPI_Comm) comm external myerrhanfunc TYPE(MPI_Errhandler) myerrhan, qerr integer callcount, codesSeen(3) common /myerrhan/ callcount, codesSeen errs = 0 callcount = 0 call mtest_init( ierr ) ! ! Setup some new codes and classes call mpi_add_error_class( newerrclass, ierr ) call mpi_add_error_code( newerrclass, code(1), ierr ) call mpi_add_error_code( newerrclass, code(2), ierr ) call mpi_add_error_string( newerrclass, "New Class", ierr ) call mpi_add_error_string( code(1), "First new code", ierr ) call mpi_add_error_string( code(2), "Second new code", ierr ) ! ! call mpi_comm_create_errhandler( myerrhanfunc, myerrhan, ierr ) ! ! Create a new communicator so that we can leave the default errors-abort ! on MPI_COMM_WORLD call mpi_comm_dup( MPI_COMM_WORLD, comm, ierr ) ! call mpi_comm_set_errhandler( comm, myerrhan, ierr ) call mpi_comm_get_errhandler( comm, qerr, ierr ) if (qerr .ne. myerrhan) then errs = errs + 1 print *, ' Did not get expected error handler' endif call mpi_errhandler_free( qerr, ierr ) ! We can free our error handler now call mpi_errhandler_free( myerrhan, ierr ) call mpi_comm_call_errhandler( comm, newerrclass, ierr ) call mpi_comm_call_errhandler( comm, code(1), ierr ) call mpi_comm_call_errhandler( comm, code(2), ierr ) if (callcount .ne. 3) then errs = errs + 1 print *, ' Expected 3 calls to error handler, found ', & & callcount else if (codesSeen(1) .ne. newerrclass) then errs = errs + 1 print *, 'Expected class ', newerrclass, ' got ', & & codesSeen(1) endif if (codesSeen(2) .ne. code(1)) then errs = errs + 1 print *, 'Expected code ', code(1), ' got ', & & codesSeen(2) endif if (codesSeen(3) .ne. code(2)) then errs = errs + 1 print *, 'Expected code ', code(2), ' got ', & & codesSeen(3) endif endif call mpi_comm_free( comm, ierr ) ! ! Check error strings while here... call mpi_error_string( newerrclass, errstring, rlen, ierr ) if (errstring(1:rlen) .ne. "New Class") then errs = errs + 1 print *, ' Wrong string for error class: ', errstring(1:rlen) endif call mpi_error_class( code(1), eclass, ierr ) if (eclass .ne. newerrclass) then errs = errs + 1 print *, ' Class for new code is not correct' endif call mpi_error_string( code(1), errstring, rlen, ierr ) if (errstring(1:rlen) .ne. "First new code") then errs = errs + 1 print *, ' Wrong string for error code: ', errstring(1:rlen) endif call mpi_error_class( code(2), eclass, ierr ) if (eclass .ne. newerrclass) then errs = errs + 1 print *, ' Class for new code is not correct' endif call mpi_error_string( code(2), errstring, rlen, ierr ) if (errstring(1:rlen) .ne. "Second new code") then errs = errs + 1 print *, ' Wrong string for error code: ', errstring(1:rlen) endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end ! subroutine myerrhanfunc( comm, errcode ) use mpi_f08 integer errcode TYPE(MPI_Comm) comm integer rlen, ierr integer callcount, codesSeen(3) character*(MPI_MAX_ERROR_STRING) errstring common /myerrhan/ callcount, codesSeen callcount = callcount + 1 ! Remember the code we've seen if (callcount .le. 3) then codesSeen(callcount) = errcode endif call mpi_error_string( errcode, errstring, rlen, ierr ) if (ierr .ne. MPI_SUCCESS) then print *, ' Panic! could not get error string' call mpi_abort( MPI_COMM_WORLD, 1, ierr ) endif end mpi-testsuite-3.2+dfsg/f08/comm/Makefile.am0000644000175000017500000000067512620254305017754 0ustar mbanckmbanck# This Makefile.am generated automatically by f77tof90 # from test/mpi/f77/comm/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f08.mtest EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 noinst_PROGRAMS = commnamef08 commerrf08 mpi-testsuite-3.2+dfsg/f08/comm/commnamef08.f900000644000175000017500000000452312620254305020346 0ustar mbanckmbanck! This file created from test/mpi/f77/comm/commnamef.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer errs, ierr integer i, rlen, ln TYPE(MPI_Comm) comm(4) integer ncomm character*(MPI_MAX_OBJECT_NAME) inname(4), cname logical MTestGetIntracomm errs = 0 call mtest_init( ierr ) ! Test the predefined communicators do ln=1,MPI_MAX_OBJECT_NAME cname(ln:ln) = 'X' enddo call mpi_comm_get_name( MPI_COMM_WORLD, cname, rlen, ierr ) do ln=MPI_MAX_OBJECT_NAME,1,-1 if (cname(ln:ln) .ne. ' ') then if (ln .ne. rlen) then errs = errs + 1 print *, 'result len ', rlen,' not equal to actual len ', & & ln endif goto 110 endif enddo if (cname(1:rlen) .ne. 'MPI_COMM_WORLD') then errs = errs + 1 print *, 'Did not get MPI_COMM_WORLD for world' endif 110 continue ! do ln=1,MPI_MAX_OBJECT_NAME cname(ln:ln) = 'X' enddo call mpi_comm_get_name( MPI_COMM_SELF, cname, rlen, ierr ) do ln=MPI_MAX_OBJECT_NAME,1,-1 if (cname(ln:ln) .ne. ' ') then if (ln .ne. rlen) then errs = errs + 1 print *, 'result len ', rlen,' not equal to actual len ', & & ln endif goto 120 endif enddo if (cname(1:rlen) .ne. 'MPI_COMM_SELF') then errs = errs + 1 print *, 'Did not get MPI_COMM_SELF for world' endif 120 continue ! do i = 1, 4 if (MTestGetIntracomm( comm(i), 1, .true. )) then ncomm = i write( inname(i), '(a,i1)') 'myname',i call mpi_comm_set_name( comm(i), inname(i), ierr ) else goto 130 endif enddo 130 continue ! ! Now test them all do i=1, ncomm call mpi_comm_get_name( comm(i), cname, rlen, ierr ) if (inname(i) .ne. cname) then errs = errs + 1 print *, ' Expected ', inname(i), ' got ', cname endif call MTestFreeComm( comm(i) ) enddo ! call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/ext/0000755000175000017500000000000012621010233015544 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f08/ext/testlist0000644000175000017500000000006312620254305017352 0ustar mbanckmbanckc2f2cf90 1 c2f90mult 1 ctypesinf90 1 allocmemf90 1 mpi-testsuite-3.2+dfsg/f08/ext/Makefile.in0000644000175000017500000005432212621010233017617 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ EXTRA_PROGRAMS = allocmemf90$(EXEEXT) noinst_PROGRAMS = c2f2cf90$(EXEEXT) ctypesinf90$(EXEEXT) \ c2f90mult$(EXEEXT) subdir = f08/ext ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am_allocmemf90_OBJECTS = allocmemf90.$(OBJEXT) allocmemf90_OBJECTS = $(am_allocmemf90_OBJECTS) allocmemf90_LDADD = $(LDADD) allocmemf90_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o am_c2f2cf90_OBJECTS = c2f2cf90.$(OBJEXT) c2f902c.$(OBJEXT) c2f2cf90_OBJECTS = $(am_c2f2cf90_OBJECTS) c2f2cf90_LDADD = $(LDADD) c2f2cf90_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o am_c2f90mult_OBJECTS = c2f90mult.$(OBJEXT) c2f90mult_OBJECTS = $(am_c2f90mult_OBJECTS) c2f90mult_DEPENDENCIES = $(top_builddir)/util/mtest.o am_ctypesinf90_OBJECTS = ctypesinf90.$(OBJEXT) ctypesfromc.$(OBJEXT) ctypesinf90_OBJECTS = $(am_ctypesinf90_OBJECTS) ctypesinf90_LDADD = $(LDADD) ctypesinf90_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = SOURCES = $(allocmemf90_SOURCES) $(c2f2cf90_SOURCES) \ $(c2f90mult_SOURCES) $(ctypesinf90_SOURCES) DIST_SOURCES = $(allocmemf90_SOURCES) $(c2f2cf90_SOURCES) \ $(c2f90mult_SOURCES) $(ctypesinf90_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_f08.mtest $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F08 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f08/util/mtestf08.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist allocmemf90_SOURCES = allocmemf90.f90 c2f2cf90_SOURCES = c2f2cf90.f90 c2f902c.c ctypesinf90_SOURCES = ctypesinf90.f90 ctypesfromc.c # C programs get a different mtest utility object c2f90mult_LDADD = $(top_builddir)/util/mtest.o c2f90mult_SOURCES = c2f90mult.c BUILT_SOURCES = c2f902c.c ctypesfromc.c all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: .SUFFIXES: .c .f90 .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f08.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f08/ext/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f08/ext/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f08.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) allocmemf90$(EXEEXT): $(allocmemf90_OBJECTS) $(allocmemf90_DEPENDENCIES) $(EXTRA_allocmemf90_DEPENDENCIES) @rm -f allocmemf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(allocmemf90_OBJECTS) $(allocmemf90_LDADD) $(LIBS) c2f2cf90$(EXEEXT): $(c2f2cf90_OBJECTS) $(c2f2cf90_DEPENDENCIES) $(EXTRA_c2f2cf90_DEPENDENCIES) @rm -f c2f2cf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(c2f2cf90_OBJECTS) $(c2f2cf90_LDADD) $(LIBS) c2f90mult$(EXEEXT): $(c2f90mult_OBJECTS) $(c2f90mult_DEPENDENCIES) $(EXTRA_c2f90mult_DEPENDENCIES) @rm -f c2f90mult$(EXEEXT) $(AM_V_CCLD)$(LINK) $(c2f90mult_OBJECTS) $(c2f90mult_LDADD) $(LIBS) ctypesinf90$(EXEEXT): $(ctypesinf90_OBJECTS) $(ctypesinf90_DEPENDENCIES) $(EXTRA_ctypesinf90_DEPENDENCIES) @rm -f ctypesinf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(ctypesinf90_OBJECTS) $(ctypesinf90_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c2f902c.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c2f90mult.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctypesfromc.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-am all-am: Makefile $(PROGRAMS) installdirs: install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: all check install install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f08/util/mtestf08.o: $(top_srcdir)/f08/util/mtestf08.f90 (cd $(top_builddir)/f08/util && $(MAKE) mtestf08.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # ensure that dependent tests will be rebuilt when add1size.h is updated # we don't get this from Makefile_f90.mtest and we don't include Makefile.mtest $(top_builddir)/util/mtest.o: (cd $(top_builddir)/util && $(MAKE) mtest.o) # FIXME what's up with these rules? They appear to copy a file to itself in # non-VPATH builds... c2f902c.c: $(srcdir)/../../f90/ext/c2f902c.c cp $(srcdir)/../../f90/ext/c2f902c.c c2f902c.c ctypesfromc.c: $(srcdir)/../../f77/ext/ctypesfromc.c cp $(srcdir)/../../f77/ext/ctypesfromc.c ctypesfromc.c # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f08/ext/ctypesinf90.f900000644000175000017500000000316412620254305020256 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer ierr integer errs, wrank integer f2ctype ! call mtest_init( ierr ) call mpi_comm_rank( MPI_COMM_WORLD, wrank, ierr ) ! errs = 0 ! errs = errs + f2ctype( MPI_CHAR, 0 ) errs = errs + f2ctype( MPI_SIGNED_CHAR, 1 ) errs = errs + f2ctype( MPI_UNSIGNED_CHAR, 2 ) errs = errs + f2ctype( MPI_WCHAR, 3 ) errs = errs + f2ctype( MPI_SHORT, 4 ) errs = errs + f2ctype( MPI_UNSIGNED_SHORT, 5 ) errs = errs + f2ctype( MPI_INT, 6 ) errs = errs + f2ctype( MPI_UNSIGNED, 7 ) errs = errs + f2ctype( MPI_LONG, 8 ) errs = errs + f2ctype( MPI_UNSIGNED_LONG, 9 ) errs = errs + f2ctype( MPI_FLOAT, 10 ) errs = errs + f2ctype( MPI_DOUBLE, 11 ) errs = errs + f2ctype( MPI_FLOAT_INT, 12 ) errs = errs + f2ctype( MPI_DOUBLE_INT, 13 ) errs = errs + f2ctype( MPI_LONG_INT, 14 ) errs = errs + f2ctype( MPI_SHORT_INT, 15 ) errs = errs + f2ctype( MPI_2INT, 16 ) if (MPI_LONG_DOUBLE .ne. MPI_DATATYPE_NULL) then errs = errs + f2ctype( MPI_LONG_DOUBLE, 17 ) errs = errs + f2ctype( MPI_LONG_DOUBLE_INT, 21 ) endif if (MPI_LONG_LONG .ne. MPI_DATATYPE_NULL) then errs = errs + f2ctype( MPI_LONG_LONG_INT, 18 ) errs = errs + f2ctype( MPI_LONG_LONG, 19 ) errs = errs + f2ctype( MPI_UNSIGNED_LONG_LONG, 20 ) endif ! ! Summarize the errors ! call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/ext/Makefile.am0000644000175000017500000000240412620254305017611 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f08.mtest EXTRA_DIST = testlist # allocmemf is an "extra" program because it requires a Fortran extension EXTRA_PROGRAMS = allocmemf90 noinst_PROGRAMS = c2f2cf90 ctypesinf90 c2f90mult allocmemf90_SOURCES = allocmemf90.f90 c2f2cf90_SOURCES = c2f2cf90.f90 c2f902c.c ctypesinf90_SOURCES = ctypesinf90.f90 ctypesfromc.c # C programs get a different mtest utility object c2f90mult_LDADD = $(top_builddir)/util/mtest.o c2f90mult_SOURCES = c2f90mult.c ## add1size.h will be distributed because it's listed in AC_CONFIG_FILES/AC_OUTPUT # ensure that dependent tests will be rebuilt when add1size.h is updated # we don't get this from Makefile_f90.mtest and we don't include Makefile.mtest $(top_builddir)/util/mtest.o: (cd $(top_builddir)/util && $(MAKE) mtest.o) BUILT_SOURCES = c2f902c.c ctypesfromc.c # FIXME what's up with these rules? They appear to copy a file to itself in # non-VPATH builds... c2f902c.c: $(srcdir)/../../f90/ext/c2f902c.c cp $(srcdir)/../../f90/ext/c2f902c.c c2f902c.c ctypesfromc.c: $(srcdir)/../../f77/ext/ctypesfromc.c cp $(srcdir)/../../f77/ext/ctypesfromc.c ctypesfromc.c mpi-testsuite-3.2+dfsg/f08/ext/c2f90mult.c0000644000175000017500000000331512620254305017450 0ustar mbanckmbanck/* This file created from test/mpi/f77/ext/c2fmult.c with f77tof90 */ /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Check that MPI_xxxx_c2f, applied to the same object several times, yields the same handle. We do this because when MPI handles in C are a different length than those in Fortran, care needs to be exercised to ensure that the mapping from one to another is unique. (Test added to test a potential problem in ROMIO for handling MPI_File on 64-bit systems) */ #include "mpi.h" #include #include "mpitest.h" int main(int argc, char *argv[]) { MPI_Fint handleA, handleB; int rc; int errs = 0; int buf[1]; MPI_Request cRequest; MPI_Status st; int tFlag; MTest_Init(&argc, &argv); /* Request */ rc = MPI_Irecv(buf, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, &cRequest); if (rc) { errs++; printf("Unable to create request\n"); } else { handleA = MPI_Request_c2f(cRequest); handleB = MPI_Request_c2f(cRequest); if (handleA != handleB) { errs++; printf("MPI_Request_c2f does not give the same handle twice on the same MPI_Request\n"); } } MPI_Cancel(&cRequest); MPI_Test(&cRequest, &tFlag, &st); MPI_Test_cancelled(&st, &tFlag); if (!tFlag) { errs++; printf("Unable to cancel MPI_Irecv request\n"); } /* Using MPI_Request_free should be ok, but some MPI implementations * object to it imediately after the cancel and that isn't essential to * this test */ MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/f08/ext/c2f2cf90.f900000644000175000017500000000756612620254305017331 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer errs, toterrs, ierr integer wrank, wsize type(MPI_Group) wgroup type(MPI_Info) info type(MPI_Request) req integer fsize, frank !integer comm, group, type, op, errh, result type(MPI_Comm) comm type(MPI_Group) group type(MPI_Datatype) type type(MPI_Op) op type(MPI_Errhandler) errh integer result integer c2fcomm, c2fgroup, c2ftype, c2finfo, c2frequest, & & c2ferrhandler, c2fop character value*100 logical flag errs = 0 call mpi_init( ierr ) ! ! Test passing a Fortran MPI object to C call mpi_comm_rank( MPI_COMM_WORLD, wrank, ierr ) errs = errs + c2fcomm( MPI_COMM_WORLD%MPI_VAL) call mpi_comm_group( MPI_COMM_WORLD, wgroup, ierr ) errs = errs + c2fgroup( wgroup%MPI_VAL ) call mpi_group_free( wgroup, ierr ) call mpi_info_create( info, ierr ) call mpi_info_set( info, "host", "myname", ierr ) call mpi_info_set( info, "wdir", "/rdir/foo", ierr ) errs = errs + c2finfo( info%MPI_VAL ) call mpi_info_free( info, ierr ) errs = errs + c2ftype( MPI_INTEGER%MPI_VAL ) call mpi_irecv( 0, 0, MPI_INTEGER, MPI_ANY_SOURCE, MPI_ANY_TAG, & & MPI_COMM_WORLD, req, ierr ) call mpi_cancel( req, ierr ) errs = errs + c2frequest( req%MPI_VAL ) call mpi_wait( req, MPI_STATUS_IGNORE, ierr ) errs = errs + c2ferrhandler( MPI_ERRORS_RETURN%MPI_VAL ) errs = errs + c2fop( MPI_SUM%MPI_VAL ) ! ! Test using a C routine to provide the Fortran handle call mpi_comm_size( MPI_COMM_WORLD, wsize, ierr ) call mpi_comm_rank( MPI_COMM_WORLD, wrank, ierr ) call f2ccomm( comm ) call mpi_comm_size( comm, fsize, ierr ) call mpi_comm_rank( comm, frank, ierr ) if (fsize.ne.wsize .or. frank.ne.wrank) then errs = errs + 1 print *, "Comm(fortran) has wrong size or rank" endif call f2cgroup( group ) call mpi_group_size( group, fsize, ierr ) call mpi_group_rank( group, frank, ierr ) if (fsize.ne.wsize .or. frank.ne.wrank) then errs = errs + 1 print *, "Group(fortran) has wrong size or rank" endif call mpi_group_free( group, ierr ) call f2ctype( type ) if (type .ne. MPI_INTEGER) then errs = errs + 1 print *, "Datatype(fortran) is not MPI_INT" endif call f2cinfo( info ) call mpi_info_get( info, "host", 100, value, flag, ierr ) if (.not. flag) then errs = errs + 1 print *, "Info test for host returned false" else if (value .ne. "myname") then errs = errs + 1 print *, "Info test for host returned ", value endif call mpi_info_get( info, "wdir", 100, value, flag, ierr ) if (.not. flag) then errs = errs + 1 print *, "Info test for wdir returned false" else if (value .ne. "/rdir/foo") then errs = errs + 1 print *, "Info test for wdir returned ", value endif call mpi_info_free( info, ierr ) call f2cop( op ) if (op .ne. MPI_SUM) then errs = errs + 1 print *, "Fortran MPI_SUM not MPI_SUM in C" endif call f2cerrhandler( errh ) if (errh .ne. MPI_ERRORS_RETURN) then errs = errs + 1 print *,"Fortran MPI_ERRORS_RETURN not MPI_ERRORS_RETURN in C" endif ! ! Summarize the errors ! call mpi_allreduce( errs, toterrs, 1, MPI_INTEGER, MPI_SUM, & & MPI_COMM_WORLD, ierr ) if (wrank .eq. 0) then if (toterrs .eq. 0) then print *, ' No Errors' else print *, ' Found ', toterrs, ' errors' endif endif call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/ext/allocmemf90.f900000644000175000017500000000161612620254305020211 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 use, intrinsic :: iso_c_binding real, pointer :: a(:,:) integer (kind=MPI_ADDRESS_KIND) asize type(c_ptr) cptr integer ierr, sizeofreal, errs integer i,j ! errs = 0 call mtest_init(ierr) call mpi_type_size( MPI_REAL, sizeofreal, ierr ) ! Make sure we pass in an integer of the correct type asize = sizeofreal * 100 * 100 call mpi_alloc_mem( asize,MPI_INFO_NULL,cptr,ierr ) call c_f_pointer(cptr, a, [100, 100]) do i=1,100 do j=1,100 a(i,j) = -1 enddo enddo a(3,5) = 10.0 call mpi_free_mem( a, ierr ) call mtest_finalize(errs) call mpi_finalize(ierr) end mpi-testsuite-3.2+dfsg/f08/misc/0000755000175000017500000000000012737460367015730 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f08/misc/testlist0000644000175000017500000000003112620254305017500 0ustar mbanckmbancksizeof2 1 hello 1 ring 4 mpi-testsuite-3.2+dfsg/f08/misc/Makefile.in0000644000175000017500000004535212621010233017755 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = sizeof2$(EXEEXT) hello$(EXEEXT) ring$(EXEEXT) subdir = f08/misc ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) hello_SOURCES = hello.f90 hello_OBJECTS = hello.$(OBJEXT) hello_LDADD = $(LDADD) hello_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o ring_SOURCES = ring.f90 ring_OBJECTS = ring.$(OBJEXT) ring_LDADD = $(LDADD) ring_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o sizeof2_SOURCES = sizeof2.f90 sizeof2_OBJECTS = sizeof2.$(OBJEXT) sizeof2_LDADD = $(LDADD) sizeof2_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = SOURCES = hello.f90 ring.f90 sizeof2.f90 DIST_SOURCES = hello.f90 ring.f90 sizeof2.f90 am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_f08.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F08 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f08/util/mtestf08.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 all: all-am .SUFFIXES: .SUFFIXES: .f90 .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f08.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f08/misc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f08/misc/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f08.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) hello$(EXEEXT): $(hello_OBJECTS) $(hello_DEPENDENCIES) $(EXTRA_hello_DEPENDENCIES) @rm -f hello$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(hello_OBJECTS) $(hello_LDADD) $(LIBS) ring$(EXEEXT): $(ring_OBJECTS) $(ring_DEPENDENCIES) $(EXTRA_ring_DEPENDENCIES) @rm -f ring$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(ring_OBJECTS) $(ring_LDADD) $(LIBS) sizeof2$(EXEEXT): $(sizeof2_OBJECTS) $(sizeof2_DEPENDENCIES) $(EXTRA_sizeof2_DEPENDENCIES) @rm -f sizeof2$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(sizeof2_OBJECTS) $(sizeof2_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f08/util/mtestf08.o: $(top_srcdir)/f08/util/mtestf08.f90 (cd $(top_builddir)/f08/util && $(MAKE) mtestf08.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f08/misc/Makefile.am0000644000175000017500000000053412620254305017746 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f08.mtest EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 noinst_PROGRAMS = sizeof2 \ hello \ ring mpi-testsuite-3.2+dfsg/f08/misc/sizeof2.f900000644000175000017500000000402012620254305017605 0ustar mbanckmbanck! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer ierr, errs integer size1, size2 real a real d(20) double precision b complex c errs = 0 call mpi_init(ierr) call mpi_sizeof( errs, size1, ierr ) call mpi_type_size( MPI_INTEGER, size2, ierr ) if (size1 .ne. size2) then errs = errs + 1 print *, "integer size is ", size2, " sizeof claims ", size1 endif call mpi_sizeof( a, size1, ierr ) call mpi_type_size( MPI_REAL, size2, ierr ) if (size1 .ne. size2) then errs = errs + 1 print *, "real size is ", size2, " sizeof claims ", size1 endif call mpi_sizeof( b, size1, ierr ) call mpi_type_size( MPI_DOUBLE_PRECISION, size2, ierr ) if (size1 .ne. size2) then errs = errs + 1 print *, "double precision size is ", size2, " sizeof claims ", size1 endif call mpi_sizeof( c, size1, ierr ) call mpi_type_size( MPI_COMPLEX, size2, ierr ) if (size1 .ne. size2) then errs = errs + 1 print *, "complex size is ", size2, " sizeof claims ", size1 endif ! ! A previous version of this test called mpi_sizeof with a character variable. ! However, the MPI 2.2 standard, p 494, line 41, defines MPI_SIZEOF only ! for "numeric intrinsic type", so that test was removed. ! call mpi_sizeof( d, size1, ierr ) call mpi_type_size( MPI_REAL, size2, ierr ) if (size1 .ne. size2) then errs = errs + 1 print *, "real array size is ", size2, " sizeof claims ", size1 endif if (errs .gt. 0) then print *, ' Found ', errs, ' errors' else print *, ' No Errors' endif call mpi_finalize(ierr) end program main mpi-testsuite-3.2+dfsg/f08/pt2pt/0000755000175000017500000000000012621010233016015 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f08/pt2pt/statusesf08.f900000644000175000017500000000325112620254305020540 0ustar mbanckmbanck! This file created from test/mpi/f77/pt2pt/statusesf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main ! Test support for MPI_STATUS_IGNORE and MPI_STATUSES_IGNORE use mpi_f08 integer nreqs parameter (nreqs = 100) TYPE(MPI_Request) reqs(nreqs) integer ierr, rank, i integer errs ierr = -1 errs = 0 call mpi_init( ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 print *, 'Unexpected return from MPI_INIT', ierr endif ierr = -1 call mpi_comm_rank( MPI_COMM_WORLD, rank, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 print *, 'Unexpected return from MPI_COMM_WORLD', ierr endif do i=1, nreqs, 2 ierr = -1 call mpi_isend( MPI_BOTTOM, 0, MPI_BYTE, rank, i, & & MPI_COMM_WORLD, reqs(i), ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 print *, 'Unexpected return from MPI_ISEND', ierr endif ierr = -1 call mpi_irecv( MPI_BOTTOM, 0, MPI_BYTE, rank, i, & & MPI_COMM_WORLD, reqs(i+1), ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 print *, 'Unexpected return from MPI_IRECV', ierr endif enddo ierr = -1 call mpi_waitall( nreqs, reqs, MPI_STATUSES_IGNORE, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 print *, 'Unexpected return from MPI_WAITALL', ierr endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/pt2pt/dummyf08.f900000644000175000017500000000145212620254305020021 0ustar mbanckmbanck! This file created from test/mpi/f77/pt2pt/dummyf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2011 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! ! This file is used to disable certain compiler optimizations that ! can cause incorrect results with the test in greqf.f. It provides a ! point where extrastate may be modified, limiting the compilers ability ! to move code around. ! The include of mpif.h is not needed in the F77 case but in the ! F90 case it is, because in that case, extrastate is defined as an ! integer (kind=MPI_ADDRESS_KIND), and the script that creates the ! F90 tests from the F77 tests looks for mpif.h subroutine dummyupdate( extrastate ) use mpi_f08 integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val end mpi-testsuite-3.2+dfsg/f08/pt2pt/testlist0000644000175000017500000000006112620254305017621 0ustar mbanckmbanckallpairf08 2 greqf08 1 statusesf08 1 mprobef08 2 mpi-testsuite-3.2+dfsg/f08/pt2pt/Makefile.in0000644000175000017500000004664712621010233020103 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = allpairf08$(EXEEXT) greqf08$(EXEEXT) \ statusesf08$(EXEEXT) mprobef08$(EXEEXT) subdir = f08/pt2pt ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) allpairf08_SOURCES = allpairf08.f90 allpairf08_OBJECTS = allpairf08.$(OBJEXT) allpairf08_LDADD = $(LDADD) allpairf08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o am_greqf08_OBJECTS = greqf08.$(OBJEXT) dummyf08.$(OBJEXT) greqf08_OBJECTS = $(am_greqf08_OBJECTS) greqf08_LDADD = $(LDADD) greqf08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o mprobef08_SOURCES = mprobef08.f90 mprobef08_OBJECTS = mprobef08.$(OBJEXT) mprobef08_LDADD = $(LDADD) mprobef08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o statusesf08_SOURCES = statusesf08.f90 statusesf08_OBJECTS = statusesf08.$(OBJEXT) statusesf08_LDADD = $(LDADD) statusesf08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = SOURCES = allpairf08.f90 $(greqf08_SOURCES) mprobef08.f90 \ statusesf08.f90 DIST_SOURCES = allpairf08.f90 $(greqf08_SOURCES) mprobef08.f90 \ statusesf08.f90 am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_f08.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F08 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f08/util/mtestf08.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 greqf08_SOURCES = greqf08.f90 dummyf08.f90 all: all-am .SUFFIXES: .SUFFIXES: .f90 .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f08.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f08/pt2pt/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f08/pt2pt/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f08.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) allpairf08$(EXEEXT): $(allpairf08_OBJECTS) $(allpairf08_DEPENDENCIES) $(EXTRA_allpairf08_DEPENDENCIES) @rm -f allpairf08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(allpairf08_OBJECTS) $(allpairf08_LDADD) $(LIBS) greqf08$(EXEEXT): $(greqf08_OBJECTS) $(greqf08_DEPENDENCIES) $(EXTRA_greqf08_DEPENDENCIES) @rm -f greqf08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(greqf08_OBJECTS) $(greqf08_LDADD) $(LIBS) mprobef08$(EXEEXT): $(mprobef08_OBJECTS) $(mprobef08_DEPENDENCIES) $(EXTRA_mprobef08_DEPENDENCIES) @rm -f mprobef08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(mprobef08_OBJECTS) $(mprobef08_LDADD) $(LIBS) statusesf08$(EXEEXT): $(statusesf08_OBJECTS) $(statusesf08_DEPENDENCIES) $(EXTRA_statusesf08_DEPENDENCIES) @rm -f statusesf08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(statusesf08_OBJECTS) $(statusesf08_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f08/util/mtestf08.o: $(top_srcdir)/f08/util/mtestf08.f90 (cd $(top_builddir)/f08/util && $(MAKE) mtestf08.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f08/pt2pt/mprobef08.f900000644000175000017500000005540712620254305020163 0ustar mbanckmbanck! This file created from test/mpi/f77/pt2pt/mprobef.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2012 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer ierr, rank, size, count integer sendbuf(8), recvbuf(8) TYPE(MPI_Status) s1, s2 integer errs TYPE(MPI_Message) msg TYPE(MPI_Request) rreq logical found, flag ierr = -1 errs = 0 call mpi_init( ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 print *, ' Unexpected return from MPI_INIT', ierr endif call mpi_comm_rank( MPI_COMM_WORLD, rank, ierr ) call mpi_comm_size( MPI_COMM_WORLD, size, ierr ) if (size .lt. 2) then errs = errs + 1 print *, ' This test requires at least 2 processes' ! Abort now - do not continue in this case. call mpi_abort( MPI_COMM_WORLD, 1, ierr ) endif if (size .gt. 2) then print *, ' This test is running with ', size, ' processes,' print *, ' only 2 processes are used.' endif ! Test 0: simple Send and Mprobe+Mrecv. if (rank .eq. 0) then sendbuf(1) = 1735928559 sendbuf(2) = 1277009102 call MPI_Send(sendbuf, 2, MPI_INTEGER, & & 1, 5, MPI_COMM_WORLD, ierr) else ! the error fields are initialized for modification check. s1%MPI_ERROR = MPI_ERR_DIMS s2%MPI_ERROR = MPI_ERR_OTHER msg = MPI_MESSAGE_NULL call MPI_Mprobe(0, 5, MPI_COMM_WORLD, msg, s1, ierr) if (s1%MPI_SOURCE .ne. 0) then errs = errs + 1 print *, 's1%MPI_SOURCE != 0 at T0 Mprobe().' endif if (s1%MPI_TAG .ne. 5) then errs = errs + 1 print *, 's1%MPI_TAG != 5 at T0 Mprobe().' endif if (s1%MPI_ERROR .ne. MPI_ERR_DIMS) then errs = errs + 1 print *, 's1%MPI_ERROR != MPI_ERR_DIMS at T0 Mprobe().' endif if (msg .eq. MPI_MESSAGE_NULL) then errs = errs + 1 print *, 'msg == MPI_MESSAGE_NULL at T0 Mprobe().' endif count = -1 call MPI_Get_count(s1, MPI_INTEGER, count, ierr) if (count .ne. 2) then errs = errs + 1 print *, 'probed buffer does not have 2 MPI_INTEGERs.' endif recvbuf(1) = 19088743 recvbuf(2) = 1309737967 call MPI_Mrecv(recvbuf, count, MPI_INTEGER, msg, s2, ierr) if (recvbuf(1) .ne. 1735928559) then errs = errs + 1 print *, 'recvbuf(1) is corrupted at T0 Mrecv().' endif if (recvbuf(2) .ne. 1277009102) then errs = errs + 1 print *, 'recvbuf(2) is corrupted at T0 Mrecv().' endif if (s2%MPI_SOURCE .ne. 0) then errs = errs + 1 print *, 's2%MPI_SOURCE != 0 at T0 Mrecv().' endif if (s2%MPI_TAG .ne. 5) then errs = errs + 1 print *, 's2%MPI_TAG != 5 at T0 Mrecv().' endif if (s2%MPI_ERROR .ne. MPI_ERR_OTHER) then errs = errs + 1 print *, 's2%MPI_ERROR != MPI_ERR_OTHER at T0 Mrecv().' endif if (msg .ne. MPI_MESSAGE_NULL) then errs = errs + 1 print *, 'msg != MPI_MESSAGE_NULL at T0 Mrecv().' endif endif ! Test 1: simple Send and Mprobe+Imrecv. if (rank .eq. 0) then sendbuf(1) = 1735928559 sendbuf(2) = 1277009102 call MPI_Send(sendbuf, 2, MPI_INTEGER, & & 1, 5, MPI_COMM_WORLD, ierr) else ! the error fields are initialized for modification check. s1%MPI_ERROR = MPI_ERR_DIMS s2%MPI_ERROR = MPI_ERR_OTHER msg = MPI_MESSAGE_NULL call MPI_Mprobe(0, 5, MPI_COMM_WORLD, msg, s1, ierr) if (s2%MPI_SOURCE .ne. 0) then errs = errs + 1 print *, 's2%MPI_SOURCE != 0 at T1 Mprobe().' endif if (s1%MPI_TAG .ne. 5) then errs = errs + 1 print *, 's1%MPI_TAG != 5 at T1 Mprobe().' endif if (s1%MPI_ERROR .ne. MPI_ERR_DIMS) then errs = errs + 1 print *, 's1%MPI_ERROR != MPI_ERR_DIMS at T1 Mprobe().' endif if (msg .eq. MPI_MESSAGE_NULL) then errs = errs + 1 print *, 'msg == MPI_MESSAGE_NULL at T1 Mprobe().' endif count = -1 call MPI_Get_count(s1, MPI_INTEGER, count, ierr) if (count .ne. 2) then errs = errs + 1 print *, 'probed buffer does not have 2 MPI_INTEGERs.' endif rreq = MPI_REQUEST_NULL recvbuf(1) = 19088743 recvbuf(2) = 1309737967 call MPI_Imrecv(recvbuf, count, MPI_INTEGER, msg, rreq, ierr) if (rreq .eq. MPI_REQUEST_NULL) then errs = errs + 1 print *, 'rreq is unmodified at T1 Imrecv().' endif call MPI_Wait(rreq, s2, ierr) if (recvbuf(1) .ne. 1735928559) then errs = errs + 1 print *, 'recvbuf(1) is corrupted at T1 Imrecv().' endif if (recvbuf(2) .ne. 1277009102) then errs = errs + 1 print *, 'recvbuf(2) is corrupted at T1 Imrecv().' endif if (s2%MPI_SOURCE .ne. 0) then errs = errs + 1 print *, 's2%MPI_SOURCE != 0 at T1 Imrecv().' endif if (s2%MPI_TAG .ne. 5) then errs = errs + 1 print *, 's2%MPI_TAG != 5 at T1 Imrecv().' endif if (s2%MPI_ERROR .ne. MPI_ERR_OTHER) then errs = errs + 1 print *, 's2%MPI_ERROR != MPI_ERR_OTHER at T1 Imrecv().' endif if (msg .ne. MPI_MESSAGE_NULL) then errs = errs + 1 print *, 'msg != MPI_MESSAGE_NULL at T1 Imrecv().' endif endif ! Test 2: simple Send and Improbe+Mrecv. if (rank .eq. 0) then sendbuf(1) = 1735928559 sendbuf(2) = 1277009102 call MPI_Send(sendbuf, 2, MPI_INTEGER, & & 1, 5, MPI_COMM_WORLD, ierr) else ! the error fields are initialized for modification check. s1%MPI_ERROR = MPI_ERR_DIMS s2%MPI_ERROR = MPI_ERR_OTHER msg = MPI_MESSAGE_NULL call MPI_Improbe(0, 5, MPI_COMM_WORLD, found, msg, s1, ierr) do while (.not. found) call MPI_Improbe(0, 5, MPI_COMM_WORLD, & & found, msg, s1, ierr) enddo if (msg .eq. MPI_MESSAGE_NULL) then errs = errs + 1 print *, 'msg == MPI_MESSAGE_NULL at T2 Improbe().' endif if (s2%MPI_SOURCE .ne. 0) then errs = errs + 1 print *, 's2%MPI_SOURCE != 0 at T2 Improbe().' endif if (s1%MPI_TAG .ne. 5) then errs = errs + 1 print *, 's1%MPI_TAG != 5 at T2 Improbe().' endif if (s1%MPI_ERROR .ne. MPI_ERR_DIMS) then errs = errs + 1 print *, 's1%MPI_ERROR != MPI_ERR_DIMS at T2 Improbe().' endif count = -1 call MPI_Get_count(s1, MPI_INTEGER, count, ierr) if (count .ne. 2) then errs = errs + 1 print *, 'probed buffer does not have 2 MPI_INTEGERs.' endif recvbuf(1) = 19088743 recvbuf(2) = 1309737967 call MPI_Mrecv(recvbuf, count, MPI_INTEGER, msg, s2, ierr) if (recvbuf(1) .ne. 1735928559) then errs = errs + 1 print *, 'recvbuf(1) is corrupted at T2 Mrecv().' endif if (recvbuf(2) .ne. 1277009102) then errs = errs + 1 print *, 'recvbuf(2) is corrupted at T2 Mrecv().' endif if (s2%MPI_SOURCE .ne. 0) then errs = errs + 1 print *, 's2%MPI_SOURCE != 0 at T2 Mrecv().' endif if (s2%MPI_TAG .ne. 5) then errs = errs + 1 print *, 's2%MPI_TAG != 5 at T2 Mrecv().' endif if (s2%MPI_ERROR .ne. MPI_ERR_OTHER) then errs = errs + 1 print *, 's2%MPI_ERROR != MPI_ERR_OTHER at T2 Mrecv().' endif if (msg .ne. MPI_MESSAGE_NULL) then errs = errs + 1 print *, 'msg != MPI_MESSAGE_NULL at T2 Mrecv().' endif endif ! Test 3: simple Send and Improbe+Imrecv. if (rank .eq. 0) then sendbuf(1) = 1735928559 sendbuf(2) = 1277009102 call MPI_Send(sendbuf, 2, MPI_INTEGER, & & 1, 5, MPI_COMM_WORLD, ierr) else ! the error fields are initialized for modification check. s1%MPI_ERROR = MPI_ERR_DIMS s2%MPI_ERROR = MPI_ERR_OTHER msg = MPI_MESSAGE_NULL call MPI_Improbe(0, 5, MPI_COMM_WORLD, found, msg, s1, ierr) do while (.not. found) call MPI_Improbe(0, 5, MPI_COMM_WORLD, & & found, msg, s1, ierr) enddo if (msg .eq. MPI_MESSAGE_NULL) then errs = errs + 1 print *, 'msg == MPI_MESSAGE_NULL at T3 Improbe().' endif if (s2%MPI_SOURCE .ne. 0) then errs = errs + 1 print *, 's2%MPI_SOURCE != 0 at T3 Improbe().' endif if (s1%MPI_TAG .ne. 5) then errs = errs + 1 print *, 's1%MPI_TAG != 5 at T3 Improbe().' endif if (s1%MPI_ERROR .ne. MPI_ERR_DIMS) then errs = errs + 1 print *, 's1%MPI_ERROR != MPI_ERR_DIMS at T3 Improbe().' endif count = -1 call MPI_Get_count(s1, MPI_INTEGER, count, ierr) if (count .ne. 2) then errs = errs + 1 print *, 'probed buffer does not have 2 MPI_INTEGERs.' endif rreq = MPI_REQUEST_NULL recvbuf(1) = 19088743 recvbuf(2) = 1309737967 call MPI_Imrecv(recvbuf, count, MPI_INTEGER, msg, rreq, ierr) if (rreq .eq. MPI_REQUEST_NULL) then errs = errs + 1 print *, 'rreq is unmodified at T3 Imrecv().' endif call MPI_Wait(rreq, s2, ierr) if (recvbuf(1) .ne. 1735928559) then errs = errs + 1 print *, 'recvbuf(1) is corrupted at T3 Imrecv().' endif if (recvbuf(2) .ne. 1277009102) then errs = errs + 1 print *, 'recvbuf(2) is corrupted at T3 Imrecv().' endif if (s2%MPI_SOURCE .ne. 0) then errs = errs + 1 print *, 's2%MPI_SOURCE != 0 at T3 Imrecv().' endif if (s2%MPI_TAG .ne. 5) then errs = errs + 1 print *, 's2%MPI_TAG != 5 at T3 Imrecv().' endif if (s2%MPI_ERROR .ne. MPI_ERR_OTHER) then errs = errs + 1 print *, 's2%MPI_ERROR != MPI_ERR_OTHER at T3 Imrecv().' endif if (msg .ne. MPI_MESSAGE_NULL) then errs = errs + 1 print *, 'msg != MPI_MESSAGE_NULL at T3 Imrecv().' endif endif ! Test 4: Mprobe+Mrecv with MPI_PROC_NULL if (.true.) then ! the error fields are initialized for modification check. s1%MPI_ERROR = MPI_ERR_DIMS s2%MPI_ERROR = MPI_ERR_OTHER msg = MPI_MESSAGE_NULL call MPI_Mprobe(MPI_PROC_NULL, 5, MPI_COMM_WORLD, & & msg, s1, ierr) if (s1%MPI_SOURCE .ne. MPI_PROC_NULL) then errs = errs + 1 print *, 's1%MPI_SOURCE != MPI_PROC_NULL at T4 Mprobe().' endif if (s1%MPI_TAG .ne. MPI_ANY_TAG) then errs = errs + 1 print *, 's1%MPI_TAG != MPI_ANY_TAG at T4 Mprobe().' endif if (s1%MPI_ERROR .ne. MPI_ERR_DIMS) then errs = errs + 1 print *, 's1%MPI_ERROR != MPI_ERR_DIMS at T4 Mprobe().' endif if (msg .ne. MPI_MESSAGE_NO_PROC) then errs = errs + 1 print *, 'msg != MPI_MESSAGE_NO_PROC at T4 Mprobe().' endif count = -1 call MPI_Get_count(s1, MPI_INTEGER, count, ierr) if (count .ne. 0) then errs = errs + 1 print *, 'probed buffer does not have 0 MPI_INTEGER.' endif recvbuf(1) = 19088743 recvbuf(2) = 1309737967 call MPI_Mrecv(recvbuf, count, MPI_INTEGER, msg, s2, ierr) ! recvbuf() should remain unmodified if (recvbuf(1) .ne. 19088743) then errs = errs + 1 print *, 'recvbuf(1) is corrupted at T4 Mrecv().' endif if (recvbuf(2) .ne. 1309737967) then errs = errs + 1 print *, 'recvbuf(2) is corrupted at T4 Mrecv().' endif if (s2%MPI_SOURCE .ne. MPI_PROC_NULL) then errs = errs + 1 print *, 's2%MPI_SOURCE != MPI_PROC_NULL at T4 Mrecv().' endif if (s2%MPI_TAG .ne. MPI_ANY_TAG) then errs = errs + 1 print *, 's2%MPI_TAG != MPI_ANY_TAG at T4 Mrecv().' endif if (s2%MPI_ERROR .ne. MPI_ERR_OTHER) then errs = errs + 1 print *, 's2%MPI_ERROR != MPI_ERR_OTHER at T4 Mrecv().' endif if (msg .ne. MPI_MESSAGE_NULL) then errs = errs + 1 print *, 'msg != MPI_MESSAGE_NULL at T4 Mrecv().' endif count = -1 call MPI_Get_count(s2, MPI_INTEGER, count, ierr) if (count .ne. 0) then errs = errs + 1 print *, 'recv buffer does not have 0 MPI_INTEGER.' endif endif ! Test 5: Mprobe+Imrecv with MPI_PROC_NULL if (.true.) then ! the error fields are initialized for modification check. s1%MPI_ERROR = MPI_ERR_DIMS s2%MPI_ERROR = MPI_ERR_OTHER msg = MPI_MESSAGE_NULL call MPI_Mprobe(MPI_PROC_NULL, 5, MPI_COMM_WORLD, & & msg, s1, ierr) if (s2%MPI_SOURCE .ne. MPI_PROC_NULL) then errs = errs + 1 print *, 's2%MPI_SOURCE != MPI_PROC_NULL at T5 Mprobe().' endif if (s1%MPI_TAG .ne. MPI_ANY_TAG) then errs = errs + 1 print *, 's1%MPI_TAG != MPI_ANY_TAG at T5 Mprobe().' endif if (s1%MPI_ERROR .ne. MPI_ERR_DIMS) then errs = errs + 1 print *, 's1%MPI_ERROR != MPI_ERR_DIMS at T5 Mprobe().' endif if (msg .ne. MPI_MESSAGE_NO_PROC) then errs = errs + 1 print *, 'msg != MPI_MESSAGE_NO_PROC at T5 Mprobe().' endif count = -1 call MPI_Get_count(s1, MPI_INTEGER, count, ierr) if (count .ne. 0) then errs = errs + 1 print *, 'probed buffer does not have 0 MPI_INTEGER.' endif rreq = MPI_REQUEST_NULL recvbuf(1) = 19088743 recvbuf(2) = 1309737967 call MPI_Imrecv(recvbuf, count, MPI_INTEGER, msg, rreq, ierr) if (rreq .eq. MPI_REQUEST_NULL) then errs = errs + 1 print *, 'rreq == MPI_REQUEST_NULL at T5 Imrecv().' endif flag = .false. call MPI_Test(rreq, flag, s2, ierr) if (.not. flag) then errs = errs + 1 print *, 'flag is false at T5 Imrecv().' endif ! recvbuf() should remain unmodified if (recvbuf(1) .ne. 19088743) then errs = errs + 1 print *, 'recvbuf(1) is corrupted at T5 Imrecv().' endif if (recvbuf(2) .ne. 1309737967) then errs = errs + 1 print *, 'recvbuf(2) is corrupted at T5 Imrecv().' endif if (s2%MPI_SOURCE .ne. MPI_PROC_NULL) then errs = errs + 1 print *, 's2%MPI_SOURCE != MPI_PROC_NULL at T5 Imrecv().' endif if (s2%MPI_TAG .ne. MPI_ANY_TAG) then errs = errs + 1 print *, 's2%MPI_TAG != MPI_ANY_TAG at T5 Imrecv().' endif if (s2%MPI_ERROR .ne. MPI_ERR_OTHER) then errs = errs + 1 print *, 's2%MPI_ERROR != MPI_ERR_OTHER at T5 Imrecv().' endif if (msg .ne. MPI_MESSAGE_NULL) then errs = errs + 1 print *, 'msg != MPI_MESSAGE_NULL at T5 Imrecv().' endif count = -1 call MPI_Get_count(s2, MPI_INTEGER, count, ierr) if (count .ne. 0) then errs = errs + 1 print *, 'recv buffer does not have 0 MPI_INTEGER.' endif endif ! Test 6: Improbe+Mrecv with MPI_PROC_NULL if (.true.) then ! the error fields are initialized for modification check. s1%MPI_ERROR = MPI_ERR_DIMS s2%MPI_ERROR = MPI_ERR_OTHER found = .false. msg = MPI_MESSAGE_NULL call MPI_Improbe(MPI_PROC_NULL, 5, MPI_COMM_WORLD, & & found, msg, s1, ierr) if (.not. found) then errs = errs + 1 print *, 'found is false at T6 Improbe().' endif if (s2%MPI_SOURCE .ne. MPI_PROC_NULL) then errs = errs + 1 print *, 's2%MPI_SOURCE != MPI_PROC_NULL at T6 Improbe()' endif if (s1%MPI_TAG .ne. MPI_ANY_TAG) then errs = errs + 1 print *, 's1%MPI_TAG != MPI_ANY_TAG at T6 Improbe().' endif if (s1%MPI_ERROR .ne. MPI_ERR_DIMS) then errs = errs + 1 print *, 's1%MPI_ERROR != MPI_ERR_DIMS at T6 Improbe().' endif if (msg .ne. MPI_MESSAGE_NO_PROC) then errs = errs + 1 print *, 'msg != MPI_MESSAGE_NO_PROC at T6 Improbe().' endif count = -1 call MPI_Get_count(s1, MPI_INTEGER, count, ierr) if (count .ne. 0) then errs = errs + 1 print *, 'probed buffer does not have 0 MPI_INTEGER.' endif recvbuf(1) = 19088743 recvbuf(2) = 1309737967 call MPI_Mrecv(recvbuf, count, MPI_INTEGER, msg, s2, ierr) ! recvbuf() should remain unmodified if (recvbuf(1) .ne. 19088743) then errs = errs + 1 print *, 'recvbuf(1) is corrupted at T6 Mrecv().' endif if (recvbuf(2) .ne. 1309737967) then errs = errs + 1 print *, 'recvbuf(2) is corrupted at T6 Mrecv().' endif if (s2%MPI_SOURCE .ne. MPI_PROC_NULL) then errs = errs + 1 print *, 's2%MPI_SOURCE != MPI_PROC_NULL at T6 Mrecv().' endif if (s2%MPI_TAG .ne. MPI_ANY_TAG) then errs = errs + 1 print *, 's2%MPI_TAG != MPI_ANY_TAG at T6 Mrecv().' endif if (s2%MPI_ERROR .ne. MPI_ERR_OTHER) then errs = errs + 1 print *, 's2%MPI_ERROR != MPI_ERR_OTHER at T6 Mrecv().' endif if (msg .ne. MPI_MESSAGE_NULL) then errs = errs + 1 print *, 'msg != MPI_MESSAGE_NULL at T6 Mrecv().' endif count = -1 call MPI_Get_count(s2, MPI_INTEGER, count, ierr) if (count .ne. 0) then errs = errs + 1 print *, 'recv buffer does not have 0 MPI_INTEGER.' endif endif ! Test 7: Improbe+Imrecv with MPI_PROC_NULL if (.true.) then ! the error fields are initialized for modification check. s1%MPI_ERROR = MPI_ERR_DIMS s2%MPI_ERROR = MPI_ERR_OTHER found = .false. msg = MPI_MESSAGE_NULL call MPI_Improbe(MPI_PROC_NULL, 5, MPI_COMM_WORLD, & & found, msg, s1, ierr) if (.not. found) then errs = errs + 1 print *, 'found is false at T7 Improbe().' endif if (s2%MPI_SOURCE .ne. MPI_PROC_NULL) then errs = errs + 1 print *, 's2%MPI_SOURCE != MPI_PROC_NULL at T7 Improbe()' endif if (s1%MPI_TAG .ne. MPI_ANY_TAG) then errs = errs + 1 print *, 's1%MPI_TAG != MPI_ANY_TAG at T7 Improbe().' endif if (s1%MPI_ERROR .ne. MPI_ERR_DIMS) then errs = errs + 1 print *, 's1%MPI_ERROR != MPI_ERR_DIMS at T7 Improbe().' endif if (msg .ne. MPI_MESSAGE_NO_PROC) then errs = errs + 1 print *, 'msg != MPI_MESSAGE_NO_PROC at T7 Improbe().' endif count = -1 call MPI_Get_count(s1, MPI_INTEGER, count, ierr) if (count .ne. 0) then errs = errs + 1 print *, 'probed buffer does not have 0 MPI_INTEGER.' endif rreq = MPI_REQUEST_NULL recvbuf(1) = 19088743 recvbuf(2) = 1309737967 call MPI_Imrecv(recvbuf, count, MPI_INTEGER, msg, rreq, ierr) if (rreq .eq. MPI_REQUEST_NULL) then errs = errs + 1 print *, 'rreq == MPI_REQUEST_NULL at T7 Imrecv().' endif flag = .false. call MPI_Test(rreq, flag, s2, ierr) if (.not. flag) then errs = errs + 1 print *, 'flag is false at T7 Imrecv().' endif ! recvbuf() should remain unmodified if (recvbuf(1) .ne. 19088743) then errs = errs + 1 print *, 'recvbuf(1) is corrupted at T7 Imrecv().' endif if (recvbuf(2) .ne. 1309737967) then errs = errs + 1 print *, 'recvbuf(2) is corrupted at T7 Imrecv().' endif if (s2%MPI_SOURCE .ne. MPI_PROC_NULL) then errs = errs + 1 print *, 's2%MPI_SOURCE != MPI_PROC_NULL at T7 Imrecv().' endif if (s2%MPI_TAG .ne. MPI_ANY_TAG) then errs = errs + 1 print *, 's2%MPI_TAG != MPI_ANY_TAG at T7 Imrecv().' endif if (s2%MPI_ERROR .ne. MPI_ERR_OTHER) then errs = errs + 1 print *, 's2%MPI_ERROR != MPI_ERR_OTHER at T7 Imrecv().' endif if (msg .ne. MPI_MESSAGE_NULL) then errs = errs + 1 print *, 'msg != MPI_MESSAGE_NULL at T7 Imrecv().' endif count = -1 call MPI_Get_count(s2, MPI_INTEGER, count, ierr) if (count .ne. 0) then errs = errs + 1 print *, 'recv buffer does not have 0 MPI_INTEGER.' endif endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/pt2pt/Makefile.am0000644000175000017500000000106512620254305020064 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f08.mtest EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 ## for all programs that are just built from the single corresponding source ## file, we don't need per-target _SOURCES rules, automake will infer them ## correctly noinst_PROGRAMS = allpairf08 greqf08 statusesf08 mprobef08 greqf08_SOURCES = greqf08.f90 dummyf08.f90 mpi-testsuite-3.2+dfsg/f08/pt2pt/greqf08.f900000644000175000017500000000703112620254305017623 0ustar mbanckmbanck! This file created from test/mpi/f77/pt2pt/greqf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! subroutine query_fn( extrastate, status, ierr ) use mpi_f08 TYPE(MPI_Status) status integer ierr integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val logical flag ! ! set a default status status%MPI_SOURCE = MPI_UNDEFINED status%MPI_TAG = MPI_UNDEFINED flag = .false. call mpi_status_set_cancelled( status, flag, ierr) call mpi_status_set_elements( status, MPI_BYTE, 0, ierr ) ierr = MPI_SUCCESS end ! subroutine free_fn( extrastate, ierr ) use mpi_f08 integer value, ierr integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val integer freefncall common /fnccalls/ freefncall ! ! For testing purposes, the following print can be used to check whether ! the free_fn is called ! print *, 'Free_fn called' ! extrastate = extrastate - 1 ! The value returned by the free function is the error code ! returned by the wait/test function ierr = MPI_SUCCESS end ! subroutine cancel_fn( extrastate, complete, ierr ) use mpi_f08 integer ierr logical complete integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val ierr = MPI_SUCCESS end ! ! ! This is a very simple test of generalized requests. Normally, the ! MPI_Grequest_complete function would be called from another routine, ! often running in a separate thread. This simple code allows us to ! check that requests can be created, tested, and waited on in the ! case where the request is complete before the wait is called. ! ! Note that MPI did *not* define a routine that can be called within ! test or wait to advance the state of a generalized request. ! Most uses of generalized requests will need to use a separate thread. ! program main use mpi_f08 integer errs, ierr logical flag TYPE(MPI_Status) status TYPE(MPI_Request) request external query_fn, free_fn, cancel_fn integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val integer freefncall common /fnccalls/ freefncall errs = 0 freefncall = 0 call MTest_Init( ierr ) extrastate = 0 call mpi_grequest_start( query_fn, free_fn, cancel_fn, & & extrastate, request, ierr ) call mpi_test( request, flag, status, ierr ) if (flag) then errs = errs + 1 print *, 'Generalized request marked as complete' endif call mpi_grequest_complete( request, ierr ) call MPI_Wait( request, status, ierr ) extrastate = 1 call mpi_grequest_start( query_fn, free_fn, cancel_fn, & & extrastate, request, ierr ) call mpi_grequest_complete( request, ierr ) call mpi_wait( request, MPI_STATUS_IGNORE, ierr ) ! ! The following routine may prevent an optimizing compiler from ! just remembering that extrastate was set in grequest_start call dummyupdate(extrastate) if (extrastate .ne. 0) then errs = errs + 1 if (freefncall .eq. 0) then print *, 'Free routine not called' else print *, 'Free routine did not update extra_data' print *, 'extrastate = ', extrastate endif endif ! call MTest_Finalize( errs ) call mpi_finalize( ierr ) end ! mpi-testsuite-3.2+dfsg/f08/pt2pt/allpairf08.f900000644000175000017500000007330512620254305020320 0ustar mbanckmbanck! This file created from test/mpi/f77/pt2pt/allpairf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2012 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! This program is based on the allpair.f test from the MPICH-1 test ! (test/pt2pt/allpair.f), which in turn was inspired by a bug report from ! fsset@corelli.lerc.nasa.gov (Scott Townsend) program allpair use mpi_f08 integer ierr, errs TYPE(MPI_Comm) comm logical mtestGetIntraComm logical verbose common /flags/ verbose errs = 0 verbose = .false. ! verbose = .true. call MTest_Init( ierr ) do while ( mtestGetIntraComm( comm, 2, .false. ) ) call test_pair_send( comm, errs ) call test_pair_ssend( comm, errs ) call test_pair_rsend( comm, errs ) call test_pair_isend( comm, errs ) call test_pair_irsend( comm, errs ) call test_pair_issend( comm, errs ) call test_pair_psend( comm, errs ) call test_pair_prsend( comm, errs ) call test_pair_pssend( comm, errs ) call test_pair_sendrecv( comm, errs ) call test_pair_sendrecvrepl( comm, errs ) call mtestFreeComm( comm ) enddo ! call MTest_Finalize( errs ) call MPI_Finalize(ierr) ! end ! subroutine test_pair_send( comm, errs ) use mpi_f08 integer errs TYPE(MPI_Comm) comm integer rank, size, ierr, next, prev, tag, count integer TEST_SIZE parameter (TEST_SIZE=2000) TYPE(MPI_Status) status real send_buf(TEST_SIZE), recv_buf(TEST_SIZE) logical verbose common /flags/ verbose ! if (verbose) then print *, ' Send and recv' endif ! call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) next = rank + 1 if (next .ge. size) next = 0 ! prev = rank - 1 if (prev .lt. 0) prev = size - 1 ! tag = 1123 count = TEST_SIZE / 5 ! call clear_test_data(recv_buf,TEST_SIZE) ! if (rank .eq. 0) then ! call init_test_data(send_buf,TEST_SIZE) ! call MPI_Send(send_buf, count, MPI_REAL, next, tag, & & comm, ierr) ! call MPI_Recv(recv_buf, TEST_SIZE, MPI_REAL, & & MPI_ANY_SOURCE, MPI_ANY_TAG, comm, status, ierr) ! call msg_check( recv_buf, next, tag, count, status, TEST_SIZE, & & 'send and recv', errs ) else if (prev .eq. 0) then call MPI_Recv(recv_buf, TEST_SIZE, MPI_REAL, & & MPI_ANY_SOURCE, MPI_ANY_TAG, comm, status, ierr) call msg_check( recv_buf, prev, tag, count, status, TEST_SIZE, & & 'send and recv', errs ) ! call MPI_Send(recv_buf, count, MPI_REAL, prev, tag, comm, ierr) end if ! end ! subroutine test_pair_rsend( comm, errs ) use mpi_f08 integer errs TYPE(MPI_Comm) comm integer rank, size, ierr, next, prev, tag, count, i integer TEST_SIZE parameter (TEST_SIZE=2000) TYPE(MPI_Status) status TYPE(MPI_Request) requests(1) real send_buf(TEST_SIZE), recv_buf(TEST_SIZE) logical verbose common /flags/ verbose ! if (verbose) then print *, ' Rsend and recv' endif ! ! call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) next = rank + 1 if (next .ge. size) next = 0 ! prev = rank - 1 if (prev .lt. 0) prev = size - 1 ! tag = 1456 count = TEST_SIZE / 3 ! call clear_test_data(recv_buf,TEST_SIZE) ! if (rank .eq. 0) then ! call init_test_data(send_buf,TEST_SIZE) ! call MPI_Recv( MPI_BOTTOM, 0, MPI_INTEGER, next, tag, & & comm, status, ierr ) ! call MPI_Rsend(send_buf, count, MPI_REAL, next, tag, & & comm, ierr) ! call MPI_Probe(MPI_ANY_SOURCE, tag, comm, status, ierr) ! if (status%MPI_SOURCE .ne. next) then print *, 'Rsend: Incorrect source, expected', next, & & ', got', status%MPI_SOURCE errs = errs + 1 end if ! if (status%MPI_TAG .ne. tag) then print *, 'Rsend: Incorrect tag, expected', tag, & & ', got', status%MPI_TAG errs = errs + 1 end if ! call MPI_Get_count(status, MPI_REAL, i, ierr) ! if (i .ne. count) then print *, 'Rsend: Incorrect count, expected', count, & & ', got', i errs = errs + 1 end if ! call MPI_Recv(recv_buf, TEST_SIZE, MPI_REAL, & & MPI_ANY_SOURCE, MPI_ANY_TAG, comm, & & status, ierr) ! call msg_check( recv_buf, next, tag, count, status, TEST_SIZE, & & 'rsend and recv', errs ) ! else if (prev .eq. 0) then ! call MPI_Irecv(recv_buf, TEST_SIZE, MPI_REAL, & & MPI_ANY_SOURCE, MPI_ANY_TAG, comm, & & requests(1), ierr) call MPI_Send( MPI_BOTTOM, 0, MPI_INTEGER, prev, tag, & & comm, ierr ) call MPI_Wait( requests(1), status, ierr ) call msg_check( recv_buf, prev, tag, count, status, TEST_SIZE, & & 'rsend and recv', errs ) ! call MPI_Send(recv_buf, count, MPI_REAL, prev, tag, & & comm, ierr) end if ! end ! subroutine test_pair_ssend( comm, errs ) use mpi_f08 integer errs TYPE(MPI_Comm) comm integer rank, size, ierr, next, prev, tag, count, i integer TEST_SIZE parameter (TEST_SIZE=2000) TYPE(MPI_Status) status logical flag real send_buf(TEST_SIZE), recv_buf(TEST_SIZE) logical verbose common /flags/ verbose ! if (verbose) then print *, ' Ssend and recv' endif ! ! call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) next = rank + 1 if (next .ge. size) next = 0 ! prev = rank - 1 if (prev .lt. 0) prev = size - 1 ! tag = 1789 count = TEST_SIZE / 3 ! call clear_test_data(recv_buf,TEST_SIZE) ! if (rank .eq. 0) then ! call init_test_data(send_buf,TEST_SIZE) ! call MPI_Iprobe(MPI_ANY_SOURCE, tag, & & comm, flag, status, ierr) ! if (flag) then print *, 'Ssend: Iprobe succeeded! source', & & status%MPI_SOURCE, & & ', tag', status%MPI_TAG errs = errs + 1 end if ! call MPI_Ssend(send_buf, count, MPI_REAL, next, tag, & & comm, ierr) ! do while (.not. flag) call MPI_Iprobe(MPI_ANY_SOURCE, tag, & & comm, flag, status, ierr) end do ! if (status%MPI_SOURCE .ne. next) then print *, 'Ssend: Incorrect source, expected', next, & & ', got', status%MPI_SOURCE errs = errs + 1 end if ! if (status%MPI_TAG .ne. tag) then print *, 'Ssend: Incorrect tag, expected', tag, & & ', got', status%MPI_TAG errs = errs + 1 end if ! call MPI_Get_count(status, MPI_REAL, i, ierr) ! if (i .ne. count) then print *, 'Ssend: Incorrect count, expected', count, & & ', got', i errs = errs + 1 end if ! call MPI_Recv(recv_buf, TEST_SIZE, MPI_REAL, & & MPI_ANY_SOURCE, MPI_ANY_TAG, comm, & & status, ierr) ! call msg_check( recv_buf, next, tag, count, status, & & TEST_SIZE, 'ssend and recv', errs ) ! else if (prev .eq. 0) then ! call MPI_Recv(recv_buf, TEST_SIZE, MPI_REAL, & & MPI_ANY_SOURCE, MPI_ANY_TAG, comm, & & status, ierr) ! call msg_check( recv_buf, prev, tag, count, status, TEST_SIZE, & & 'ssend and recv', errs ) ! call MPI_Ssend(recv_buf, count, MPI_REAL, prev, tag, & & comm, ierr) end if ! end ! subroutine test_pair_isend( comm, errs ) use mpi_f08 integer errs TYPE(MPI_Comm) comm integer rank, size, ierr, next, prev, tag, count integer TEST_SIZE parameter (TEST_SIZE=2000) TYPE(MPI_Status) status TYPE(MPI_Request) requests(2) TYPE(MPI_STATUS) statuses(2) real send_buf(TEST_SIZE), recv_buf(TEST_SIZE) logical verbose common /flags/ verbose ! if (verbose) then print *, ' isend and irecv' endif ! ! call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) next = rank + 1 if (next .ge. size) next = 0 ! prev = rank - 1 if (prev .lt. 0) prev = size - 1 ! tag = 2123 count = TEST_SIZE / 5 ! call clear_test_data(recv_buf,TEST_SIZE) ! if (rank .eq. 0) then ! call MPI_Irecv(recv_buf, TEST_SIZE, MPI_REAL, & & MPI_ANY_SOURCE, MPI_ANY_TAG, comm, & & requests(1), ierr) ! call init_test_data(send_buf,TEST_SIZE) ! call MPI_Isend(send_buf, count, MPI_REAL, next, tag, & & comm, requests(2), ierr) ! call MPI_Waitall(2, requests, statuses, ierr) ! call rq_check( requests, 2, 'isend and irecv' ) ! call msg_check( recv_buf, next, tag, count, statuses(1), & & TEST_SIZE, 'isend and irecv', errs ) ! else if (prev .eq. 0) then ! call MPI_Recv(recv_buf, TEST_SIZE, MPI_REAL, & & MPI_ANY_SOURCE, MPI_ANY_TAG, comm, & & status, ierr) ! call msg_check( recv_buf, prev, tag, count, status, TEST_SIZE, & & 'isend and irecv', errs ) ! call MPI_Isend(recv_buf, count, MPI_REAL, prev, tag, & & comm, requests(1), ierr) ! call MPI_Wait(requests(1), status, ierr) ! call rq_check( requests, 1, 'isend and irecv' ) ! end if ! end ! subroutine test_pair_irsend( comm, errs ) use mpi_f08 integer errs TYPE(MPI_Comm) comm integer rank, size, ierr, next, prev, tag, count, index, i integer TEST_SIZE TYPE(MPI_Comm) dupcom parameter (TEST_SIZE=2000) TYPE(MPI_Status) status TYPE(MPI_Request) requests(2) TYPE(MPI_Status) statuses(2) logical flag real send_buf(TEST_SIZE), recv_buf(TEST_SIZE) logical verbose common /flags/ verbose ! if (verbose) then print *, ' Irsend and irecv' endif ! call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) next = rank + 1 if (next .ge. size) next = 0 ! prev = rank - 1 if (prev .lt. 0) prev = size - 1 ! call mpi_comm_dup( comm, dupcom, ierr ) ! tag = 2456 count = TEST_SIZE / 3 ! call clear_test_data(recv_buf,TEST_SIZE) ! if (rank .eq. 0) then ! call MPI_Irecv(recv_buf, TEST_SIZE, MPI_REAL, & & MPI_ANY_SOURCE, MPI_ANY_TAG, comm, & & requests(1), ierr) ! call init_test_data(send_buf,TEST_SIZE) ! call MPI_Sendrecv( MPI_BOTTOM, 0, MPI_INTEGER, next, 0, & & MPI_BOTTOM, 0, MPI_INTEGER, next, 0, & & dupcom, status, ierr ) ! call MPI_Irsend(send_buf, count, MPI_REAL, next, tag, & & comm, requests(2), ierr) ! index = -1 do while (index .ne. 1) call MPI_Waitany(2, requests, index, status, ierr) end do ! call rq_check( requests, 1, 'irsend and irecv' ) ! call msg_check( recv_buf, next, tag, count, status, & & TEST_SIZE, 'irsend and irecv', errs ) ! else if (prev .eq. 0) then ! call MPI_Irecv(recv_buf, TEST_SIZE, MPI_REAL, & & MPI_ANY_SOURCE, MPI_ANY_TAG, comm, & & requests(1), ierr) ! call MPI_Sendrecv( MPI_BOTTOM, 0, MPI_INTEGER, prev, 0, & & MPI_BOTTOM, 0, MPI_INTEGER, prev, 0, & & dupcom, status, ierr ) ! flag = .FALSE. do while (.not. flag) call MPI_Test(requests(1), flag, status, ierr) end do ! call rq_check( requests, 1, 'irsend and irecv (test)' ) ! call msg_check( recv_buf, prev, tag, count, status, TEST_SIZE, & & 'irsend and irecv', errs ) ! call MPI_Irsend(recv_buf, count, MPI_REAL, prev, tag, & & comm, requests(1), ierr) ! call MPI_Waitall(1, requests, statuses, ierr) ! call rq_check( requests, 1, 'irsend and irecv' ) ! end if ! call mpi_comm_free( dupcom, ierr ) ! end ! subroutine test_pair_issend( comm, errs ) use mpi_f08 integer errs TYPE(MPI_Comm) comm integer rank, size, ierr, next, prev, tag, count, index integer TEST_SIZE parameter (TEST_SIZE=2000) TYPE(MPI_Status) status TYPE(MPI_Request) requests(2) TYPE(MPI_Status) statuses(2) logical flag real send_buf(TEST_SIZE), recv_buf(TEST_SIZE) logical verbose common /flags/ verbose ! if (verbose) then print *, ' issend and irecv (testall)' endif ! ! call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) next = rank + 1 if (next .ge. size) next = 0 ! prev = rank - 1 if (prev .lt. 0) prev = size - 1 ! tag = 2789 count = TEST_SIZE / 3 ! call clear_test_data(recv_buf,TEST_SIZE) ! if (rank .eq. 0) then ! call MPI_Irecv(recv_buf, TEST_SIZE, MPI_REAL, & & MPI_ANY_SOURCE, MPI_ANY_TAG, comm, & & requests(1), ierr) ! call init_test_data(send_buf,TEST_SIZE) ! call MPI_Issend(send_buf, count, MPI_REAL, next, tag, & & comm, requests(2), ierr) ! flag = .FALSE. do while (.not. flag) call MPI_Testall(2, requests, flag, statuses, ierr) end do ! call rq_check( requests, 2, 'issend and irecv (testall)' ) ! call msg_check( recv_buf, next, tag, count, statuses(1), & & TEST_SIZE, 'issend and recv (testall)', errs ) ! else if (prev .eq. 0) then ! call MPI_Recv(recv_buf, TEST_SIZE, MPI_REAL, & & MPI_ANY_SOURCE, MPI_ANY_TAG, comm, & & status, ierr) call msg_check( recv_buf, prev, tag, count, status, TEST_SIZE, & & 'issend and recv', errs ) call MPI_Issend(recv_buf, count, MPI_REAL, prev, tag, & & comm, requests(1), ierr) ! flag = .FALSE. do while (.not. flag) call MPI_Testany(1, requests, index, flag, & & statuses(1), ierr) end do ! call rq_check( requests, 1, 'issend and recv (testany)' ) ! end if ! end ! subroutine test_pair_psend( comm, errs ) use mpi_f08 integer errs TYPE(MPI_Comm) comm integer rank, size, ierr, next, prev, tag, count, i integer TEST_SIZE parameter (TEST_SIZE=2000) TYPE(MPI_Status) status TYPE(MPI_Status) statuses(2) TYPE(MPI_Request) requests(2) real send_buf(TEST_SIZE), recv_buf(TEST_SIZE) logical verbose common /flags/ verbose ! if (verbose) then print *, ' Persistent send and recv' endif ! call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) next = rank + 1 if (next .ge. size) next = 0 ! prev = rank - 1 if (prev .lt. 0) prev = size - 1 ! tag = 3123 count = TEST_SIZE / 5 ! call clear_test_data(recv_buf,TEST_SIZE) call MPI_Recv_init(recv_buf, TEST_SIZE, MPI_REAL, & & MPI_ANY_SOURCE, MPI_ANY_TAG, comm, & & requests(2), ierr) ! if (rank .eq. 0) then ! call init_test_data(send_buf,TEST_SIZE) ! call MPI_Send_init(send_buf, count, MPI_REAL, next, tag, & & comm, requests(1), ierr) ! call MPI_Startall(2, requests, ierr) call MPI_Waitall(2, requests, statuses, ierr) ! call msg_check( recv_buf, next, tag, count, statuses(2), & & TEST_SIZE, 'persistent send/recv', errs ) ! call MPI_Request_free(requests(1), ierr) ! else if (prev .eq. 0) then ! call MPI_Send_init(send_buf, count, MPI_REAL, prev, tag, & & comm, requests(1), ierr) call MPI_Start(requests(2), ierr) call MPI_Wait(requests(2), status, ierr) ! call msg_check( recv_buf, prev, tag, count, status, TEST_SIZE, & & 'persistent send/recv', errs ) ! do i = 1,count send_buf(i) = recv_buf(i) end do ! call MPI_Start(requests(1), ierr) call MPI_Wait(requests(1), status, ierr) ! call MPI_Request_free(requests(1), ierr) end if ! call dummyRef( send_buf, count, ierr ) call MPI_Request_free(requests(2), ierr) ! end ! subroutine test_pair_prsend( comm, errs ) use mpi_f08 integer errs TYPE(MPI_Comm) comm integer rank, size, ierr, next, prev, tag, count, index, i integer outcount, indices(2) integer TEST_SIZE parameter (TEST_SIZE=2000) TYPE(MPI_Status) statuses(2) TYPE(MPI_Request) requests(2) TYPE(MPI_Status) status logical flag real send_buf(TEST_SIZE), recv_buf(TEST_SIZE) logical verbose common /flags/ verbose ! if (verbose) then print *, ' Persistent Rsend and recv' endif ! call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) next = rank + 1 if (next .ge. size) next = 0 ! prev = rank - 1 if (prev .lt. 0) prev = size - 1 ! tag = 3456 count = TEST_SIZE / 3 ! call clear_test_data(recv_buf,TEST_SIZE) ! call MPI_Recv_init(recv_buf, TEST_SIZE, MPI_REAL, & & MPI_ANY_SOURCE, MPI_ANY_TAG, comm, & & requests(2), ierr) ! if (rank .eq. 0) then ! call MPI_Rsend_init(send_buf, count, MPI_REAL, next, tag, & & comm, requests(1), ierr) ! call init_test_data(send_buf,TEST_SIZE) ! call MPI_Recv( MPI_BOTTOM, 0, MPI_INTEGER, next, tag, & & comm, status, ierr ) ! call MPI_Startall(2, requests, ierr) ! index = -1 ! do while (index .ne. 2) call MPI_Waitsome(2, requests, outcount, & & indices, statuses, ierr) do i = 1,outcount if (indices(i) .eq. 2) then call msg_check( recv_buf, next, tag, count, & & statuses(i), TEST_SIZE, 'waitsome', errs ) index = 2 end if end do end do ! call MPI_Request_free(requests(1), ierr) else if (prev .eq. 0) then ! call MPI_Rsend_init(send_buf, count, MPI_REAL, prev, tag, & & comm, requests(1), ierr) ! call MPI_Start(requests(2), ierr) ! call MPI_Send( MPI_BOTTOM, 0, MPI_INTEGER, prev, tag, & & comm, ierr ) ! flag = .FALSE. do while (.not. flag) call MPI_Test(requests(2), flag, status, ierr) end do call msg_check( recv_buf, prev, tag, count, status, TEST_SIZE, & & 'test', errs ) ! do i = 1,count send_buf(i) = recv_buf(i) end do ! call MPI_Start(requests(1), ierr) call MPI_Wait(requests(1), status, ierr) ! call MPI_Request_free(requests(1), ierr) end if ! call dummyRef( send_buf, count, ierr ) call MPI_Request_free(requests(2), ierr) ! end ! subroutine test_pair_pssend( comm, errs ) use mpi_f08 integer errs TYPE(MPI_Comm) comm integer rank, size, ierr, next, prev, tag, count, index, i integer outcount, indices(2) integer TEST_SIZE parameter (TEST_SIZE=2000) TYPE(MPI_Status) statuses(2) TYPE(MPI_Request) requests(2) TYPE(MPI_Status) status logical flag real send_buf(TEST_SIZE), recv_buf(TEST_SIZE) logical verbose common /flags/ verbose ! if (verbose) then print *, ' Persistent Ssend and recv' endif ! call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) next = rank + 1 if (next .ge. size) next = 0 ! prev = rank - 1 if (prev .lt. 0) prev = size - 1 ! tag = 3789 count = TEST_SIZE / 3 ! call clear_test_data(recv_buf,TEST_SIZE) ! call MPI_Recv_init(recv_buf, TEST_SIZE, MPI_REAL, & & MPI_ANY_SOURCE, MPI_ANY_TAG, comm, & & requests(1), ierr) ! if (rank .eq. 0) then ! call MPI_Ssend_init(send_buf, count, MPI_REAL, next, tag, & & comm, requests(2), ierr) ! call init_test_data(send_buf,TEST_SIZE) ! call MPI_Startall(2, requests, ierr) ! index = -1 do while (index .ne. 1) call MPI_Testsome(2, requests, outcount, & & indices, statuses, ierr) do i = 1,outcount if (indices(i) .eq. 1) then call msg_check( recv_buf, next, tag, count, & & statuses(i), TEST_SIZE, 'testsome', errs ) index = 1 end if end do end do ! call MPI_Request_free(requests(2), ierr) ! else if (prev .eq. 0) then ! call MPI_Ssend_init(send_buf, count, MPI_REAL, prev, tag, & & comm, requests(2), ierr) ! call MPI_Start(requests(1), ierr) ! flag = .FALSE. do while (.not. flag) call MPI_Testany(1, requests, index, flag, & & statuses(1), ierr) end do call msg_check( recv_buf, prev, tag, count, statuses(1), & & TEST_SIZE, 'testany', errs ) do i = 1,count send_buf(i) = recv_buf(i) end do ! call MPI_Start(requests(2), ierr) call MPI_Wait(requests(2), status, ierr) ! call MPI_Request_free(requests(2), ierr) ! end if ! call dummyRef( send_buf, count, ierr ) call MPI_Request_free(requests(1), ierr) ! end ! subroutine test_pair_sendrecv( comm, errs ) use mpi_f08 integer errs TYPE(MPI_Comm) comm integer rank, size, ierr, next, prev, tag, count integer TEST_SIZE parameter (TEST_SIZE=2000) TYPE(MPI_Status) status real send_buf(TEST_SIZE), recv_buf(TEST_SIZE) logical verbose common /flags/ verbose ! if (verbose) then print *, ' Sendrecv' endif ! ! call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) next = rank + 1 if (next .ge. size) next = 0 ! prev = rank - 1 if (prev .lt. 0) prev = size - 1 ! tag = 4123 count = TEST_SIZE / 5 call clear_test_data(recv_buf,TEST_SIZE) if (rank .eq. 0) then call init_test_data(send_buf,TEST_SIZE) call MPI_Sendrecv(send_buf, count, MPI_REAL, next, tag, & & recv_buf, count, MPI_REAL, next, tag, & & comm, status, ierr) call msg_check( recv_buf, next, tag, count, status, TEST_SIZE, & & 'sendrecv', errs ) else if (prev .eq. 0) then call MPI_Recv(recv_buf, TEST_SIZE, MPI_REAL, & & MPI_ANY_SOURCE, MPI_ANY_TAG, comm, & & status, ierr) call msg_check( recv_buf, prev, tag, count, status, TEST_SIZE, & & 'recv/send', errs ) call MPI_Send(recv_buf, count, MPI_REAL, prev, tag, & & comm, ierr) end if ! end ! subroutine test_pair_sendrecvrepl( comm, errs ) use mpi_f08 integer errs TYPE(MPI_Comm) comm integer rank, size, ierr, next, prev, tag, count, i integer TEST_SIZE parameter (TEST_SIZE=2000) TYPE(MPI_Status) status real send_buf(TEST_SIZE), recv_buf(TEST_SIZE) logical verbose common /flags/ verbose ! if (verbose) then print *, ' Sendrecv replace' endif ! call mpi_comm_rank( comm, rank, ierr ) call mpi_comm_size( comm, size, ierr ) next = rank + 1 if (next .ge. size) next = 0 ! prev = rank - 1 if (prev .lt. 0) prev = size - 1 ! tag = 4456 count = TEST_SIZE / 3 if (rank .eq. 0) then ! call init_test_data(recv_buf, TEST_SIZE) ! do 11 i = count+1,TEST_SIZE recv_buf(i) = 0.0 11 continue ! call MPI_Sendrecv_replace(recv_buf, count, MPI_REAL, & & next, tag, next, tag, & & comm, status, ierr) call msg_check( recv_buf, next, tag, count, status, TEST_SIZE, & & 'sendrecvreplace', errs ) else if (prev .eq. 0) then call clear_test_data(recv_buf,TEST_SIZE) call MPI_Recv(recv_buf, TEST_SIZE, MPI_REAL, & & MPI_ANY_SOURCE, MPI_ANY_TAG, comm, & & status, ierr) call msg_check( recv_buf, prev, tag, count, status, TEST_SIZE, & & 'recv/send for replace', errs ) call MPI_Send(recv_buf, count, MPI_REAL, prev, tag, & & comm, ierr) end if ! end ! !------------------------------------------------------------------------------ ! ! Check for correct source, tag, count, and data in test message. ! !------------------------------------------------------------------------------ subroutine msg_check( recv_buf, source, tag, count, status, n, & & name, errs ) use mpi_f08 integer n, errs real recv_buf(n) integer source, tag, count, rank TYPE(MPI_Status) status character*(*) name logical foundError integer ierr, recv_src, recv_tag, recv_count foundError = .false. recv_src = status%MPI_SOURCE recv_tag = status%MPI_TAG call MPI_Comm_rank( MPI_COMM_WORLD, rank, ierr ) call MPI_Get_count(status, MPI_REAL, recv_count, ierr) if (recv_src .ne. source) then print *, '[', rank, '] Unexpected source:', recv_src, & & ' in ', name errs = errs + 1 foundError = .true. end if if (recv_tag .ne. tag) then print *, '[', rank, '] Unexpected tag:', recv_tag, ' in ', name errs = errs + 1 foundError = .true. end if if (recv_count .ne. count) then print *, '[', rank, '] Unexpected count:', recv_count, & & ' in ', name errs = errs + 1 foundError = .true. end if call verify_test_data(recv_buf, count, n, name, errs ) end !------------------------------------------------------------------------------ ! ! Check that requests have been set to null ! !------------------------------------------------------------------------------ subroutine rq_check( requests, n, msg ) use mpi_f08 integer n TYPE(MPI_Request) requests(n) character*(*) msg integer i ! ! do 10 i=1, n ! if (requests(i) .ne. MPI_REQUEST_NULL) then ! print *, 'Nonnull request in ', msg ! endif ! 10 continue ! end !------------------------------------------------------------------------------ ! ! Initialize test data buffer with integral sequence. ! !------------------------------------------------------------------------------ subroutine init_test_data(buf,n) integer n real buf(n) integer i do 10 i = 1, n buf(i) = REAL(i) 10 continue end !------------------------------------------------------------------------------ ! ! Clear test data buffer ! !------------------------------------------------------------------------------ subroutine clear_test_data(buf, n) integer n real buf(n) integer i do 10 i = 1, n buf(i) = 0. 10 continue end !------------------------------------------------------------------------------ ! ! Verify test data buffer ! !------------------------------------------------------------------------------ subroutine verify_test_data( buf, count, n, name, errs ) use mpi_f08 integer n, errs real buf(n) character *(*) name integer count, ierr, i ! do 10 i = 1, count if (buf(i) .ne. REAL(i)) then print 100, buf(i), i, count, name errs = errs + 1 endif 10 continue ! do 20 i = count + 1, n if (buf(i) .ne. 0.) then print 100, buf(i), i, n, name errs = errs + 1 endif 20 continue ! 100 format('Invalid data', f6.1, ' at ', i4, ' of ', i4, ' in ', a) ! end ! ! This routine is used to prevent the compiler from deallocating the ! array "a", which may happen in some of the tests (see the text in ! the MPI standard about why this may be a problem in valid Fortran ! codes). Without this, for example, tests fail with the Cray ftn ! compiler. ! subroutine dummyRef( a, n, ie ) integer n, ie real a(n) ! This condition will never be true, but the compile won't know that if (ie .eq. -1) then print *, a(n) endif return end mpi-testsuite-3.2+dfsg/f08/timer/0000755000175000017500000000000012621010234016065 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f08/timer/wtimef90.f900000644000175000017500000000200212620254305020053 0ustar mbanckmbanck! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main ! This is a simple test to check that both the MPI and PMPI versions of the ! timers are available, and that they return double precision values. ! If this code links, there are no problems. ! use mpi_f08 implicit none integer err double precision time1 call mpi_init(err) time1 = mpi_wtime() time1 = time1 + mpi_wtick() time1 = time1 + pmpi_wtime() time1 = time1 + pmpi_wtick() ! Add a test on time1 to ensure that the compiler does not remove the calls ! (The compiler should call them anyway because they aren't pure, but ! including these operations ensures that a buggy compiler doesn't ! pass this test by mistake). if (time1 .lt. 0.0d0) then print *, ' Negative time result' else print *, ' No Errors' endif call mpi_finalize(err) end mpi-testsuite-3.2+dfsg/f08/timer/testlist0000644000175000017500000000001312620254305017665 0ustar mbanckmbanckwtimef90 1 mpi-testsuite-3.2+dfsg/f08/timer/Makefile.in0000644000175000017500000004404112621010234020135 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = wtimef90$(EXEEXT) subdir = f08/timer ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) wtimef90_SOURCES = wtimef90.f90 wtimef90_OBJECTS = wtimef90.$(OBJEXT) wtimef90_LDADD = $(LDADD) wtimef90_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = SOURCES = wtimef90.f90 DIST_SOURCES = wtimef90.f90 am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_f08.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F08 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f08/util/mtestf08.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist AM_DEFAULT_SOURCE_EXT = .f90 all: all-am .SUFFIXES: .SUFFIXES: .f90 .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f08.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f08/timer/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f08/timer/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f08.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) wtimef90$(EXEEXT): $(wtimef90_OBJECTS) $(wtimef90_DEPENDENCIES) $(EXTRA_wtimef90_DEPENDENCIES) @rm -f wtimef90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(wtimef90_OBJECTS) $(wtimef90_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f08/util/mtestf08.o: $(top_srcdir)/f08/util/mtestf08.f90 (cd $(top_builddir)/f08/util && $(MAKE) mtestf08.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f08/timer/Makefile.am0000644000175000017500000000041112620254305020125 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f08.mtest EXTRA_DIST = testlist AM_DEFAULT_SOURCE_EXT = .f90 noinst_PROGRAMS = wtimef90 mpi-testsuite-3.2+dfsg/f08/profile/0000755000175000017500000000000012621010233016404 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f08/profile/testlist0000644000175000017500000000001612620254305020210 0ustar mbanckmbanckprofile1f90 2 mpi-testsuite-3.2+dfsg/f08/profile/Makefile.in0000644000175000017500000004422312621010233020456 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = profile1f90$(EXEEXT) subdir = f08/profile ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) profile1f90_SOURCES = profile1f90.f90 profile1f90_OBJECTS = profile1f90.$(OBJEXT) profile1f90_LDADD = $(LDADD) profile1f90_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = SOURCES = profile1f90.f90 DIST_SOURCES = profile1f90.f90 am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_f08.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F08 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f08/util/mtestf08.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 all: all-am .SUFFIXES: .SUFFIXES: .f90 .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f08.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f08/profile/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f08/profile/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f08.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) profile1f90$(EXEEXT): $(profile1f90_OBJECTS) $(profile1f90_DEPENDENCIES) $(EXTRA_profile1f90_DEPENDENCIES) @rm -f profile1f90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(profile1f90_OBJECTS) $(profile1f90_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f08/util/mtestf08.o: $(top_srcdir)/f08/util/mtestf08.f90 (cd $(top_builddir)/f08/util && $(MAKE) mtestf08.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f08/profile/Makefile.am0000644000175000017500000000050712620254305020453 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f08.mtest EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 noinst_PROGRAMS = profile1f90 mpi-testsuite-3.2+dfsg/f08/profile/profile1f90.f900000644000175000017500000000731612620254305021004 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer ierr integer smsg(3), rmsg(3), toterrs, wsize, wrank common /myinfo/ calls, amount, rcalls, ramount integer calls, amount, rcalls, ramount toterrs = 0 call mpi_init( ierr ) call init_counts() call mpi_comm_rank( MPI_COMM_WORLD, wrank, ierr ) call mpi_comm_size( MPI_COMM_WORLD, wsize, ierr ) if (wrank .eq. 0) then smsg(1) = 3 call mpi_send( smsg, 1, MPI_INT, 1, 0, MPI_COMM_WORLD, ierr ) else if (wrank .eq. 1) then call mpi_recv( rmsg, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, & & MPI_STATUS_IGNORE, ierr ) if (rmsg(1) .ne. 3) then toterrs = toterrs + 1 print *, "Unexpected received value ", rmsg(1) endif endif ! ! check that we used the profiling versions of the routines toterrs = 0 if (wrank .eq. 0) then if (calls.ne.1) then toterrs = toterrs + 1 print *, "Sender calls is ", calls endif if (amount.ne.1) then toterrs = toterrs + 1 print *, "Sender amount is ", amount endif else if (wrank .eq. 1) then if (rcalls.ne.1) then toterrs = toterrs + 1 print *, "Receiver calls is ", rcalls endif if (ramount.ne.1) then toterrs = toterrs + 1 print *, "Receiver amount is ", ramount endif endif call mpi_allreduce( MPI_IN_PLACE, toterrs, 1, MPI_INT, MPI_SUM, & & MPI_COMM_WORLD, ierr ) if (wrank .eq. 0) then if (toterrs .eq. 0) then print *, " No Errors" else print *, " Found ", toterrs, " errors" endif endif ! call mpi_finalize( ierr ) end ! subroutine mpi_send_f08ts( smsg, count, dtype, dest, tag, comm, ierr ) use :: mpi_f08, my_noname => mpi_send_f08ts type(*), dimension(..), intent(in) :: smsg integer, intent(in) :: count, dest, tag type(MPI_Datatype), intent(in) :: dtype type(MPI_Comm), intent(in) :: comm integer, optional, intent(out) :: ierr common /myinfo/ calls, amount, rcalls, ramount integer calls, amount, rcalls, ramount ! calls = calls + 1 amount = amount + count if (present(ierr)) then call pmpi_send(smsg, count, dtype, dest, tag, comm, ierr) else call pmpi_send(smsg, count, dtype, dest, tag, comm) end if end ! subroutine mpi_recv_f08ts( rmsg, count, dtype, src, tag, comm, status, ierr ) use :: mpi_f08, my_noname => mpi_recv_f08ts type(*), dimension(..), intent(in) :: rmsg integer, intent(in) :: count, src, tag type(MPI_Datatype), intent(in) :: dtype type(MPI_Comm), intent(in) :: comm type(MPI_Status) :: status integer, optional, intent(out) :: ierr common /myinfo/ calls, amount, rcalls, ramount integer calls, amount, rcalls, ramount rcalls = rcalls + 1 ramount = ramount + 1 if (present(ierr)) then call pmpi_recv(rmsg, count, dtype, src, tag, comm, status, ierr) else call pmpi_recv(rmsg, count, dtype, src, tag, comm, status) end if end ! subroutine init_counts() common /myinfo/ calls, amount, rcalls, ramount integer calls, amount, rcalls, ramount calls = 0 amount = 0 rcalls = 0 ramount = 0 end ! subroutine mpi_pcontrol( ierr ) integer ierr return end mpi-testsuite-3.2+dfsg/f08/io/0000755000175000017500000000000012621010233015353 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f08/io/fileerrf90.f900000644000175000017500000001262012620254305017654 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer errs, ierr, code(2), newerrclass, eclass character*(MPI_MAX_ERROR_STRING) errstring integer rlen type(MPI_Comm) comm integer buf(10) type(MPI_File) file type(MPI_Errhandler) myerrhan, qerr procedure(MPI_File_errhandler_function) myerrhanfunc integer callcount, codesSeen(3) common /myerrhan/ callcount, codesSeen errs = 0 callcount = 0 call mtest_init( ierr ) ! ! Setup some new codes and classes call mpi_add_error_class( newerrclass, ierr ) call mpi_add_error_code( newerrclass, code(1), ierr ) call mpi_add_error_code( newerrclass, code(2), ierr ) call mpi_add_error_string( newerrclass, "New Class", ierr ) call mpi_add_error_string( code(1), "First new code", ierr ) call mpi_add_error_string( code(2), "Second new code", ierr ) ! call mpi_file_create_errhandler( myerrhanfunc, myerrhan, ierr ) ! ! Create a new communicator so that we can leave the default errors-abort ! on MPI_COMM_WORLD. Use this comm for file_open, just to leave a little ! more separation from comm_world ! call mpi_comm_dup( MPI_COMM_WORLD, comm, ierr ) call mpi_file_open( comm, "testfile.txt", MPI_MODE_RDWR + & & MPI_MODE_CREATE, MPI_INFO_NULL, file, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintError( ierr ) endif ! call mpi_file_set_errhandler( file, myerrhan, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintError( ierr ) endif call mpi_file_get_errhandler( file, qerr, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintError( ierr ) endif if (qerr .ne. myerrhan) then errs = errs + 1 print *, ' Did not get expected error handler' endif call mpi_errhandler_free( qerr, ierr ) ! We can free our error handler now call mpi_errhandler_free( myerrhan, ierr ) call mpi_file_call_errhandler( file, newerrclass, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintError( ierr ) endif call mpi_file_call_errhandler( file, code(1), ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintError( ierr ) endif call mpi_file_call_errhandler( file, code(2), ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintError( ierr ) endif if (callcount .ne. 3) then errs = errs + 1 print *, ' Expected 3 calls to error handler, found ', & & callcount else if (codesSeen(1) .ne. newerrclass) then errs = errs + 1 print *, 'Expected class ', newerrclass, ' got ', & & codesSeen(1) endif if (codesSeen(2) .ne. code(1)) then errs = errs + 1 print *, 'Expected code ', code(1), ' got ', & & codesSeen(2) endif if (codesSeen(3) .ne. code(2)) then errs = errs + 1 print *, 'Expected code ', code(2), ' got ', & & codesSeen(3) endif endif call mpi_file_close( file, ierr ) call mpi_comm_free( comm, ierr ) call mpi_file_delete( "testfile.txt", MPI_INFO_NULL, ierr ) ! ! Check error strings while here here... call mpi_error_string( newerrclass, errstring, rlen, ierr ) if (errstring(1:rlen) .ne. "New Class") then errs = errs + 1 print *, ' Wrong string for error class: ', errstring(1:rlen) endif call mpi_error_class( code(1), eclass, ierr ) if (eclass .ne. newerrclass) then errs = errs + 1 print *, ' Class for new code is not correct' endif call mpi_error_string( code(1), errstring, rlen, ierr ) if (errstring(1:rlen) .ne. "First new code") then errs = errs + 1 print *, ' Wrong string for error code: ', errstring(1:rlen) endif call mpi_error_class( code(2), eclass, ierr ) if (eclass .ne. newerrclass) then errs = errs + 1 print *, ' Class for new code is not correct' endif call mpi_error_string( code(2), errstring, rlen, ierr ) if (errstring(1:rlen) .ne. "Second new code") then errs = errs + 1 print *, ' Wrong string for error code: ', errstring(1:rlen) endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end ! subroutine myerrhanfunc( file, errcode ) use mpi_f08 type(MPI_File) file integer errcode integer rlen, ierr integer callcount, codesSeen(3) character*(MPI_MAX_ERROR_STRING) errstring common /myerrhan/ callcount, codesSeen callcount = callcount + 1 ! Remember the code we've seen if (callcount .le. 3) then codesSeen(callcount) = errcode endif call mpi_error_string( errcode, errstring, rlen, ierr ) if (ierr .ne. MPI_SUCCESS) then print *, ' Panic! could not get error string' call mpi_abort( MPI_COMM_WORLD, 1, ierr ) endif end mpi-testsuite-3.2+dfsg/f08/io/Makefile.in0000644000175000017500000010156112621010233017424 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = iwriteatf90$(EXEEXT) iwritef90$(EXEEXT) \ iwriteshf90$(EXEEXT) writef90$(EXEEXT) writeatf90$(EXEEXT) \ writeallf90$(EXEEXT) writeallbef90$(EXEEXT) \ writeordf90$(EXEEXT) writeordbef90$(EXEEXT) \ writeshf90$(EXEEXT) writeatallf90$(EXEEXT) \ writeatallbef90$(EXEEXT) fileerrf90$(EXEEXT) \ fileinfof90$(EXEEXT) shpositionf90$(EXEEXT) \ atomicityf90$(EXEEXT) miscfilef90$(EXEEXT) \ setviewcurf90$(EXEEXT) c2f90multio$(EXEEXT) \ c2f2ciof90$(EXEEXT) $(am__EXEEXT_1) @BUILD_MPIX_TESTS_TRUE@am__append_1 = \ @BUILD_MPIX_TESTS_TRUE@ i_fcoll_test \ @BUILD_MPIX_TESTS_TRUE@ iwriteatallf90 subdir = f08/io ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = testlist CONFIG_CLEAN_VPATH_FILES = @BUILD_MPIX_TESTS_TRUE@am__EXEEXT_1 = i_fcoll_test$(EXEEXT) \ @BUILD_MPIX_TESTS_TRUE@ iwriteatallf90$(EXEEXT) PROGRAMS = $(noinst_PROGRAMS) atomicityf90_SOURCES = atomicityf90.f90 atomicityf90_OBJECTS = atomicityf90.$(OBJEXT) atomicityf90_LDADD = $(LDADD) atomicityf90_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o am_c2f2ciof90_OBJECTS = c2f2ciof90.$(OBJEXT) c2f902cio.$(OBJEXT) c2f2ciof90_OBJECTS = $(am_c2f2ciof90_OBJECTS) c2f2ciof90_LDADD = $(LDADD) c2f2ciof90_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o am_c2f90multio_OBJECTS = c2f90multio.$(OBJEXT) c2f90multio_OBJECTS = $(am_c2f90multio_OBJECTS) c2f90multio_DEPENDENCIES = fileerrf90_SOURCES = fileerrf90.f90 fileerrf90_OBJECTS = fileerrf90.$(OBJEXT) fileerrf90_LDADD = $(LDADD) fileerrf90_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o fileinfof90_SOURCES = fileinfof90.f90 fileinfof90_OBJECTS = fileinfof90.$(OBJEXT) fileinfof90_LDADD = $(LDADD) fileinfof90_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o i_fcoll_test_SOURCES = i_fcoll_test.f90 i_fcoll_test_OBJECTS = i_fcoll_test.$(OBJEXT) i_fcoll_test_LDADD = $(LDADD) i_fcoll_test_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o nodist_iwriteatallf90_OBJECTS = iwriteatallf90.$(OBJEXT) iwriteatallf90_OBJECTS = $(nodist_iwriteatallf90_OBJECTS) iwriteatallf90_LDADD = $(LDADD) iwriteatallf90_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o nodist_iwriteatf90_OBJECTS = iwriteatf90.$(OBJEXT) iwriteatf90_OBJECTS = $(nodist_iwriteatf90_OBJECTS) iwriteatf90_LDADD = $(LDADD) iwriteatf90_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o nodist_iwritef90_OBJECTS = iwritef90.$(OBJEXT) iwritef90_OBJECTS = $(nodist_iwritef90_OBJECTS) iwritef90_LDADD = $(LDADD) iwritef90_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o nodist_iwriteshf90_OBJECTS = iwriteshf90.$(OBJEXT) iwriteshf90_OBJECTS = $(nodist_iwriteshf90_OBJECTS) iwriteshf90_LDADD = $(LDADD) iwriteshf90_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o miscfilef90_SOURCES = miscfilef90.f90 miscfilef90_OBJECTS = miscfilef90.$(OBJEXT) miscfilef90_LDADD = $(LDADD) miscfilef90_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o setviewcurf90_SOURCES = setviewcurf90.f90 setviewcurf90_OBJECTS = setviewcurf90.$(OBJEXT) setviewcurf90_LDADD = $(LDADD) setviewcurf90_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o shpositionf90_SOURCES = shpositionf90.f90 shpositionf90_OBJECTS = shpositionf90.$(OBJEXT) shpositionf90_LDADD = $(LDADD) shpositionf90_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o nodist_writeallbef90_OBJECTS = writeallbef90.$(OBJEXT) writeallbef90_OBJECTS = $(nodist_writeallbef90_OBJECTS) writeallbef90_LDADD = $(LDADD) writeallbef90_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o nodist_writeallf90_OBJECTS = writeallf90.$(OBJEXT) writeallf90_OBJECTS = $(nodist_writeallf90_OBJECTS) writeallf90_LDADD = $(LDADD) writeallf90_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o nodist_writeatallbef90_OBJECTS = writeatallbef90.$(OBJEXT) writeatallbef90_OBJECTS = $(nodist_writeatallbef90_OBJECTS) writeatallbef90_LDADD = $(LDADD) writeatallbef90_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o nodist_writeatallf90_OBJECTS = writeatallf90.$(OBJEXT) writeatallf90_OBJECTS = $(nodist_writeatallf90_OBJECTS) writeatallf90_LDADD = $(LDADD) writeatallf90_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o nodist_writeatf90_OBJECTS = writeatf90.$(OBJEXT) writeatf90_OBJECTS = $(nodist_writeatf90_OBJECTS) writeatf90_LDADD = $(LDADD) writeatf90_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o nodist_writef90_OBJECTS = writef90.$(OBJEXT) writef90_OBJECTS = $(nodist_writef90_OBJECTS) writef90_LDADD = $(LDADD) writef90_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o nodist_writeordbef90_OBJECTS = writeordbef90.$(OBJEXT) writeordbef90_OBJECTS = $(nodist_writeordbef90_OBJECTS) writeordbef90_LDADD = $(LDADD) writeordbef90_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o nodist_writeordf90_OBJECTS = writeordf90.$(OBJEXT) writeordf90_OBJECTS = $(nodist_writeordf90_OBJECTS) writeordf90_LDADD = $(LDADD) writeordf90_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o nodist_writeshf90_OBJECTS = writeshf90.$(OBJEXT) writeshf90_OBJECTS = $(nodist_writeshf90_OBJECTS) writeshf90_LDADD = $(LDADD) writeshf90_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = SOURCES = atomicityf90.f90 $(c2f2ciof90_SOURCES) \ $(c2f90multio_SOURCES) fileerrf90.f90 fileinfof90.f90 \ i_fcoll_test.f90 $(nodist_iwriteatallf90_SOURCES) \ $(nodist_iwriteatf90_SOURCES) $(nodist_iwritef90_SOURCES) \ $(nodist_iwriteshf90_SOURCES) miscfilef90.f90 \ setviewcurf90.f90 shpositionf90.f90 \ $(nodist_writeallbef90_SOURCES) $(nodist_writeallf90_SOURCES) \ $(nodist_writeatallbef90_SOURCES) \ $(nodist_writeatallf90_SOURCES) $(nodist_writeatf90_SOURCES) \ $(nodist_writef90_SOURCES) $(nodist_writeordbef90_SOURCES) \ $(nodist_writeordf90_SOURCES) $(nodist_writeshf90_SOURCES) DIST_SOURCES = atomicityf90.f90 $(c2f2ciof90_SOURCES) \ $(c2f90multio_SOURCES) fileerrf90.f90 fileinfof90.f90 \ i_fcoll_test.f90 miscfilef90.f90 setviewcurf90.f90 \ shpositionf90.f90 am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/testlist.in \ $(top_srcdir)/Makefile_f08.mtest $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F08 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f08/util/mtestf08.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. # just in case CLEANFILES = summary.xml summary.tap gen-src-tmp gen-src-stamp EXTRA_DIST = testlist.in ioharness.defn ioharness.tlt # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 # We don't want to distribute these source files because they are created by # "testmerge", hence "nodist_foo_SOURCES" nodist_iwriteatf90_SOURCES = iwriteatf90.f90 nodist_iwritef90_SOURCES = iwritef90.f90 nodist_iwriteshf90_SOURCES = iwriteshf90.f90 nodist_writeallbef90_SOURCES = writeallbef90.f90 nodist_writeallf90_SOURCES = writeallf90.f90 nodist_writeatallbef90_SOURCES = writeatallbef90.f90 nodist_writeatallf90_SOURCES = writeatallf90.f90 nodist_writeatf90_SOURCES = writeatf90.f90 nodist_writef90_SOURCES = writef90.f90 nodist_writeordbef90_SOURCES = writeordbef90.f90 nodist_writeordf90_SOURCES = writeordf90.f90 nodist_writeshf90_SOURCES = writeshf90.f90 nodist_iwriteatallf90_SOURCES = iwriteatallf90.f90 c2f90multio_SOURCES = c2f90multio.c # this is a C only program, so we must either: # A) prevent the makefile-wide "LDADD=mtestf90.o" from affecting this program, or # B) link with the fortran compiler, otherwise we'll get link failures from # compilers with runtime support libs, such as PGI c2f90multio_LDADD = c2f2ciof90_SOURCES = c2f2ciof90.f90 c2f902cio.c # ensure that dependent tests will be rebuilt when headers are updated # these files are genereated using testmerge (see below) generated_io_sources = \ iwriteatf90.f90 \ iwriteatallf90.f90 \ iwritef90.f90 \ iwriteshf90.f90 \ writeallbef90.f90 \ writeallf90.f90 \ writeatallbef90.f90 \ writeatallf90.f90 \ writeatf90.f90 \ writef90.f90 \ writeordbef90.f90 \ writeordf90.f90 \ writeshf90.f90 DISTCLEANFILES = $(generated_io_sources) all: all-am .SUFFIXES: .SUFFIXES: .c .f90 .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f08.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f08/io/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f08/io/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f08.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): testlist: $(top_builddir)/config.status $(srcdir)/testlist.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) atomicityf90$(EXEEXT): $(atomicityf90_OBJECTS) $(atomicityf90_DEPENDENCIES) $(EXTRA_atomicityf90_DEPENDENCIES) @rm -f atomicityf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(atomicityf90_OBJECTS) $(atomicityf90_LDADD) $(LIBS) c2f2ciof90$(EXEEXT): $(c2f2ciof90_OBJECTS) $(c2f2ciof90_DEPENDENCIES) $(EXTRA_c2f2ciof90_DEPENDENCIES) @rm -f c2f2ciof90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(c2f2ciof90_OBJECTS) $(c2f2ciof90_LDADD) $(LIBS) c2f90multio$(EXEEXT): $(c2f90multio_OBJECTS) $(c2f90multio_DEPENDENCIES) $(EXTRA_c2f90multio_DEPENDENCIES) @rm -f c2f90multio$(EXEEXT) $(AM_V_CCLD)$(LINK) $(c2f90multio_OBJECTS) $(c2f90multio_LDADD) $(LIBS) fileerrf90$(EXEEXT): $(fileerrf90_OBJECTS) $(fileerrf90_DEPENDENCIES) $(EXTRA_fileerrf90_DEPENDENCIES) @rm -f fileerrf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(fileerrf90_OBJECTS) $(fileerrf90_LDADD) $(LIBS) fileinfof90$(EXEEXT): $(fileinfof90_OBJECTS) $(fileinfof90_DEPENDENCIES) $(EXTRA_fileinfof90_DEPENDENCIES) @rm -f fileinfof90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(fileinfof90_OBJECTS) $(fileinfof90_LDADD) $(LIBS) i_fcoll_test$(EXEEXT): $(i_fcoll_test_OBJECTS) $(i_fcoll_test_DEPENDENCIES) $(EXTRA_i_fcoll_test_DEPENDENCIES) @rm -f i_fcoll_test$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(i_fcoll_test_OBJECTS) $(i_fcoll_test_LDADD) $(LIBS) iwriteatallf90$(EXEEXT): $(iwriteatallf90_OBJECTS) $(iwriteatallf90_DEPENDENCIES) $(EXTRA_iwriteatallf90_DEPENDENCIES) @rm -f iwriteatallf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(iwriteatallf90_OBJECTS) $(iwriteatallf90_LDADD) $(LIBS) iwriteatf90$(EXEEXT): $(iwriteatf90_OBJECTS) $(iwriteatf90_DEPENDENCIES) $(EXTRA_iwriteatf90_DEPENDENCIES) @rm -f iwriteatf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(iwriteatf90_OBJECTS) $(iwriteatf90_LDADD) $(LIBS) iwritef90$(EXEEXT): $(iwritef90_OBJECTS) $(iwritef90_DEPENDENCIES) $(EXTRA_iwritef90_DEPENDENCIES) @rm -f iwritef90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(iwritef90_OBJECTS) $(iwritef90_LDADD) $(LIBS) iwriteshf90$(EXEEXT): $(iwriteshf90_OBJECTS) $(iwriteshf90_DEPENDENCIES) $(EXTRA_iwriteshf90_DEPENDENCIES) @rm -f iwriteshf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(iwriteshf90_OBJECTS) $(iwriteshf90_LDADD) $(LIBS) miscfilef90$(EXEEXT): $(miscfilef90_OBJECTS) $(miscfilef90_DEPENDENCIES) $(EXTRA_miscfilef90_DEPENDENCIES) @rm -f miscfilef90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(miscfilef90_OBJECTS) $(miscfilef90_LDADD) $(LIBS) setviewcurf90$(EXEEXT): $(setviewcurf90_OBJECTS) $(setviewcurf90_DEPENDENCIES) $(EXTRA_setviewcurf90_DEPENDENCIES) @rm -f setviewcurf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(setviewcurf90_OBJECTS) $(setviewcurf90_LDADD) $(LIBS) shpositionf90$(EXEEXT): $(shpositionf90_OBJECTS) $(shpositionf90_DEPENDENCIES) $(EXTRA_shpositionf90_DEPENDENCIES) @rm -f shpositionf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(shpositionf90_OBJECTS) $(shpositionf90_LDADD) $(LIBS) writeallbef90$(EXEEXT): $(writeallbef90_OBJECTS) $(writeallbef90_DEPENDENCIES) $(EXTRA_writeallbef90_DEPENDENCIES) @rm -f writeallbef90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(writeallbef90_OBJECTS) $(writeallbef90_LDADD) $(LIBS) writeallf90$(EXEEXT): $(writeallf90_OBJECTS) $(writeallf90_DEPENDENCIES) $(EXTRA_writeallf90_DEPENDENCIES) @rm -f writeallf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(writeallf90_OBJECTS) $(writeallf90_LDADD) $(LIBS) writeatallbef90$(EXEEXT): $(writeatallbef90_OBJECTS) $(writeatallbef90_DEPENDENCIES) $(EXTRA_writeatallbef90_DEPENDENCIES) @rm -f writeatallbef90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(writeatallbef90_OBJECTS) $(writeatallbef90_LDADD) $(LIBS) writeatallf90$(EXEEXT): $(writeatallf90_OBJECTS) $(writeatallf90_DEPENDENCIES) $(EXTRA_writeatallf90_DEPENDENCIES) @rm -f writeatallf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(writeatallf90_OBJECTS) $(writeatallf90_LDADD) $(LIBS) writeatf90$(EXEEXT): $(writeatf90_OBJECTS) $(writeatf90_DEPENDENCIES) $(EXTRA_writeatf90_DEPENDENCIES) @rm -f writeatf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(writeatf90_OBJECTS) $(writeatf90_LDADD) $(LIBS) writef90$(EXEEXT): $(writef90_OBJECTS) $(writef90_DEPENDENCIES) $(EXTRA_writef90_DEPENDENCIES) @rm -f writef90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(writef90_OBJECTS) $(writef90_LDADD) $(LIBS) writeordbef90$(EXEEXT): $(writeordbef90_OBJECTS) $(writeordbef90_DEPENDENCIES) $(EXTRA_writeordbef90_DEPENDENCIES) @rm -f writeordbef90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(writeordbef90_OBJECTS) $(writeordbef90_LDADD) $(LIBS) writeordf90$(EXEEXT): $(writeordf90_OBJECTS) $(writeordf90_DEPENDENCIES) $(EXTRA_writeordf90_DEPENDENCIES) @rm -f writeordf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(writeordf90_OBJECTS) $(writeordf90_LDADD) $(LIBS) writeshf90$(EXEEXT): $(writeshf90_OBJECTS) $(writeshf90_DEPENDENCIES) $(EXTRA_writeshf90_DEPENDENCIES) @rm -f writeshf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(writeshf90_OBJECTS) $(writeshf90_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c2f902cio.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c2f90multio.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-local clean-noinstPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-local clean-noinstPROGRAMS cscopelist-am ctags ctags-am \ distclean distclean-compile distclean-generic distclean-tags \ distdir dvi dvi-am html html-am info info-am install \ install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile $(top_builddir)/f08/util/mtestf08.o: $(top_srcdir)/f08/util/mtestf08.f90 (cd $(top_builddir)/f08/util && $(MAKE) mtestf08.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # a parallel-safe scheme to generate the tests, see the automake-1.11.1 manual, # section 27.9 "Handling Tools That Produce Multiple Outputs" for an explanation # # Note that using testmerge at make-time adds a dependency on perl for users. # It's been like this for a long time, so I don't think it's a problem in # practice. The best way to fix this is to drop the nodist_foo_SOURCES lines, # modify testmerge to output the stamp file, and then enclose modified versions # of these rules in an "if MAINAINER_MODE". The files also should then move to # MAINTAINERCLEANFILES from DISTCLEANFILES. [goodell@ 2011-07-11] gen-src-stamp: $(srcdir)/ioharness.defn $(srcdir)/ioharness.tlt @rm -f gen-src-tmp @touch gen-src-tmp $(top_builddir)/maint/testmerge -defn=$(top_srcdir)/maint/common.defn \ $(srcdir)/ioharness.defn $(srcdir)/ioharness.tlt @mv -f gen-src-tmp $@ $(generated_io_sources): gen-src-stamp @if test -f $@; then :; else \ trap 'rm -rf gen-src-lock gen-src-stamp' 1 2 13 15; \ if mkdir gen-src-lock 2>/dev/null; then \ rm -f gen-src-stamp; \ $(MAKE) $(AM_MAKEFLAGS) gen-src-stamp; \ rmdir gen-src-lock; \ else \ while test -d gen-src-lock; do sleep 1; done; \ test -f gen-src-stamp; exit $$?; \ fi; \ fi # clean up after the test programs clean-local: -rm -f .iotest.txt.* c2f902cio.c: $(srcdir)/../../f90/io/c2f902cio.c cp $(srcdir)/../../f90/io/c2f902cio.c c2f902cio.c # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f08/io/ioharness.defn0000644000175000017500000003665012620254305020227 0ustar mbanckmbanck# # (C) 2004 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # Definitions for various MPI I/O Read/write tests # If we want a separate step to check the file as written different # from the read step, insert it here. # # If the open fails, jump to 111 call mpi_file_open( comm, filename, MPI_MODE_RDWR + MPI_MODE_CREATE, MPI_INFO_NULL, fh, ierr ) if (ierr .ne. MPI_SUCCESS) then goto 111 endif call mpi_file_close( fh, ierr ) call mpi_barrier( comm, ierr ) call mpi_comm_rank( comm, r, ierr ) if (r .eq. 0) then call mpi_file_delete( filename, MPI_INFO_NULL, ierr ) endif call mpi_barrier( comm, ierr ) # Common code to initialize the buffer for contiguous writes do i=1, n buf(i) = r*n + (k-1)*n*s + i-1 enddo # This is for double buffered tests do i=1, n buf2(i) = r*n + (k)*n*s + i-1 enddo do i=1, n ans = r*n + (k-1)*n*s + i-1 if (buf(i) .ne. ans) then errs = errs + 1 if (errs .le. 10) then print *, r, k, ' buf(',i,') = ', buf(i), ' expected ', ans endif endif enddo do i=1, n buf(i) = - (r*n + (k-1)*n*s + i) enddo do i=1, n if (buf2(i) .ne. r*n + (k)*n*s + i-1) then errs = errs + 1 if (errs .le. 10) then print *, r,k,' buf2(',i,') = ', buf2(i) endif endif enddo do i=1, n buf2(i) = - (r*n + (k)*n*s + i) enddo # Common error check if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 if (errs .le. 10) then call MTestPrintError( ierr ) endif endif # Common error check when MPI_ERR_IN_STATUS is a possibility # (status array is then statuses, of length nreq (one status per request) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 if (errs .le. 10) then call MTestPrintError( ierr ) if (ierr .eq. MPI_ERR_IN_STATUS) then do i=1, nreq if (statuses(i)%MPI_ERROR .ne. MPI_SUCCESS) then print *, 'For statuses[', i, '], error is:' call MTestPrintError(statuses(i)%MPI_ERROR) endif enddo endif endif endif # Common offset computation, based on the block, rank, size offset = (r * n + (k - 1) * n * s) * intsize # Set the view of the file for this process; suitable for # collective I/O and independent file I/O without seek call mpi_type_vector( b, n, n*s, MPI_INTEGER, filetype, ierr ) call mpi_type_commit( filetype, ierr ) offset = r * n * intsize call mpi_file_set_view( fh, offset, MPI_INTEGER, filetype, "native", MPI_INFO_NULL, ierr ) call mpi_type_free( filetype, ierr ) # Some tests require that the individual processes proceed in order. # The following definitions initialize the src and dest, and arrange # to pass a token using MPI_Ssend # Prereqs: r and s contain rank and size, and src,dest are declared. # The ring is executed b times, with index variable k src = mod( r + s - 1, s ) dest = mod( r + 1, s ) if (s .eq. 1) then src = MPI_PROC_NULL dest = MPI_PROC_NULL endif if (r .eq. s-1) then call mpi_ssend( MPI_BOTTOM, 0, MPI_INTEGER, dest, 1, comm, ierr ) endif call mpi_recv( MPI_BOTTOM, 0, MPI_INTEGER, src, k, comm, MPI_STATUS_IGNORE, ierr ) if (r .eq. s-1) then call mpi_ssend( MPI_BOTTOM, 0, MPI_INTEGER, dest, k+1, comm, ierr ) else call mpi_ssend( MPI_BOTTOM, 0, MPI_INTEGER, dest, k, comm, ierr ) endif if (r .eq. 0) then call mpi_recv( MPI_BOTTOM, 0, MPI_INTEGER, src, b+1, comm, MPI_STATUS_IGNORE, ierr ) endif # # ---------------------------------------------------------------------------- # This test uses the individual file pointers. # To reach the correct locations, we seek to the position type(MPI_Status) status integer buf(MAX_BUFFER), ans integer (kind=MPI_OFFSET_KIND)offset do k=1, b call mpi_file_seek( fh, offset, MPI_SEEK_SET, ierr ) call mpi_file_write( fh, buf, n, MPI_INTEGER, status, ierr ) enddo # No extra declarations are needed for the read step do k=1, b call mpi_file_seek( fh, offset, MPI_SEEK_SET, ierr ) call mpi_file_read( fh, buf, n, MPI_INTEGER, status, ierr ) enddo # This test uses independent I/O with thread-safe, individual file pointers type(MPI_Status) status integer buf(MAX_BUFFER), ans integer (kind=MPI_OFFSET_KIND)offset do k=1, b call mpi_file_write_at( fh, offset, buf, n, MPI_INTEGER, status, ierr ) enddo # No extra declarations are needed for the read step do k=1, b call mpi_file_read_at( fh, offset, buf, n, MPI_INTEGER, status, ierr ) enddo # This test uses collective I/O with thread-safe, individual file pointers type(MPI_Status) status integer buf(MAX_BUFFER), ans integer (kind=MPI_OFFSET_KIND)offset do k=1, b call mpi_file_write_at_all( fh, offset, buf, n, MPI_INTEGER, status, ierr ) enddo # No extra declarations are needed for the read step do k=1, b call mpi_file_read_at_all( fh, offset, buf, n, MPI_INTEGER, status, ierr ) enddo # This test uses nonblocking collective I/O with thread-safe, individual file pointers type(MPI_Status) status type(MPI_Request) request integer buf(MAX_BUFFER), ans integer (kind=MPI_OFFSET_KIND)offset do k=1, b call MPI_File_iwrite_at_all( fh, offset, buf, n, MPI_INTEGER, request, ierr ) call MPI_Wait(request, status, ierr) enddo # No extra declarations are needed for the read step do k=1, b call MPI_File_iread_at_all( fh, offset, buf, n, MPI_INTEGER, request, ierr ) call MPI_Wait(request, status, ierr) enddo # This test uses collective I/O with thread-safe, individual file pointers type(MPI_Status) status integer buf(MAX_BUFFER), ans integer (kind=MPI_OFFSET_KIND)offset do k=1, b call mpi_file_write_at_all_begin( fh, offset, buf, n, MPI_INTEGER, ierr ) call mpi_file_write_at_all_end( fh, buf, status, ierr ) enddo # No extra declarations are needed for the read step do k=1, b call mpi_file_read_at_all_begin( fh, offset, buf, n, MPI_INTEGER, ierr ) call mpi_file_read_at_all_end( fh, buf, status, ierr ) enddo # This test uses nonblocking I/O with independent file pointers type(MPI_Status) statuses(2) integer buf(MAX_BUFFER), buf2(MAX_BUFFER), ans type(MPI_Request) req(2) integer nreq integer (kind=MPI_OFFSET_KIND)offset do k=1, b ,2 nreq = 1 call mpi_file_iwrite_at( fh, offset, buf, n, MPI_INTEGER, req(1), ierr ) if (k+1 .le. b) then offset = offset + (s * n) * intsize nreq = nreq + 1 call mpi_file_iwrite_at( fh, offset, buf2, n, MPI_INTEGER, req(2), ierr ) endif call mpi_waitall( nreq, req, statuses, ierr ) enddo # No extra declarations are needed for the read step do k=1, b ,2 nreq = 1 call mpi_file_iread_at( fh, offset, buf, n, MPI_INTEGER, req(1), ierr ) if (k+1 .le. b) then offset = offset + (s * n) * intsize nreq = nreq + 1 call mpi_file_iread_at( fh, offset, buf2, n, MPI_INTEGER, req(2), ierr ) endif call mpi_waitall( nreq, req, statuses, ierr ) if (nreq .eq. 2) then endif enddo # This test uses nonblocking I/O with independent file pointers and explicit # seeks type(MPI_Status) statuses(2) integer buf(MAX_BUFFER), buf2(MAX_BUFFER), ans type(MPI_Request) req(2) integer nreq integer (kind=MPI_OFFSET_KIND)offset do k=1, b ,2 nreq = 1 call mpi_file_seek( fh, offset, MPI_SEEK_SET, ierr ) call mpi_file_iwrite( fh, buf, n, MPI_INTEGER, req(1), ierr ) if (k+1 .le. b) then offset = offset + (s * n) * intsize call mpi_file_seek( fh, offset, MPI_SEEK_SET, ierr ) nreq = nreq + 1 call mpi_file_iwrite( fh, buf2, n, MPI_INTEGER, req(2), ierr ) endif call mpi_waitall( nreq, req, statuses, ierr ) enddo # No extra declarations are needed for the read step do k=1, b ,2 nreq = 1 call mpi_file_seek( fh, offset, MPI_SEEK_SET, ierr ) call mpi_file_iread( fh, buf, n, MPI_INTEGER, req(1), ierr ) if (k+1 .le. b) then offset = offset + (s * n) * intsize call mpi_file_seek( fh, offset, MPI_SEEK_SET, ierr ) nreq = nreq + 1 call mpi_file_iread( fh, buf2, n, MPI_INTEGER, req(2), ierr ) endif call mpi_waitall( nreq, req, statuses, ierr ) if (nreq .eq. 2) then endif enddo # This test uses nonblocking I/O with shared file pointers type(MPI_Status) status integer buf(MAX_BUFFER), ans integer src, dest type(MPI_Request) req do k=1, b call mpi_file_iwrite_shared( fh, buf, n, MPI_INTEGER, req, ierr ) call mpi_wait( req, status, ierr ) enddo # No extra declarations are needed for the read step do k=1, b call mpi_file_iread_shared( fh, buf, n, MPI_INTEGER, req, ierr ) call mpi_wait( req, status, ierr ) enddo # This test uses collective I/O type(MPI_Status) status integer buf(MAX_BUFFER), ans type(MPI_Datatype) filetype integer (kind=MPI_OFFSET_KIND)offset do k=1, b call mpi_file_write_all( fh, buf, n, MPI_INTEGER, status, ierr ) enddo # No extra declarations are needed for the read step do k=1, b call mpi_file_read_all( fh, buf, n, MPI_INTEGER, status, ierr ) enddo # This test uses split collective I/O type(MPI_Status) status integer buf(MAX_BUFFER), ans type(MPI_Datatype) filetype integer (kind=MPI_OFFSET_KIND)offset do k=1, b call mpi_file_write_all_begin( fh, buf, n, MPI_INTEGER, ierr ) call mpi_file_write_all_end( fh, buf, status, ierr ) enddo # No extra declarations are needed for the read step do k=1, b call mpi_file_read_all_begin( fh, buf, n, MPI_INTEGER, ierr ) call mpi_file_read_all_end( fh, buf, status, ierr ) enddo # This test uses the shared file pointers collectively. type(MPI_Status) status integer buf(MAX_BUFFER), ans integer (kind=MPI_OFFSET_KIND)offset do k=1, b call mpi_file_write_ordered( fh, buf, n, MPI_INTEGER, status, ierr ) enddo # No extra declarations are needed for the read step do k=1, b call mpi_file_read_ordered( fh, buf, n, MPI_INTEGER, status, ierr ) enddo # This test uses the shared file pointers with split collectives. type(MPI_Status) status integer buf(MAX_BUFFER), ans integer (kind=MPI_OFFSET_KIND)offset do k=1, b call mpi_file_write_ordered_begin( fh, buf, n, MPI_INTEGER, ierr ) call mpi_file_write_ordered_end( fh, buf, status, ierr ) enddo # No extra declarations are needed for the read step do k=1, b call mpi_file_read_ordered_begin( fh, buf, n, MPI_INTEGER, ierr ) call mpi_file_read_ordered_end( fh, buf, status, ierr ) enddo # This test uses the shared file pointers independently. # We pass a token to control the oredering type(MPI_Status) status integer buf(MAX_BUFFER), ans integer src, dest do k=1, b call mpi_file_write_shared( fh, buf, n, MPI_INTEGER, status, ierr ) enddo # No extra declarations are needed for the read step do k=1, b call mpi_file_read_shared( fh, buf, n, MPI_INTEGER, status, ierr ) enddo mpi-testsuite-3.2+dfsg/f08/io/miscfilef90.f900000644000175000017500000001656112620254305020027 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 ! iooffset.h provides a variable "offset" that is of type MPI_Offset ! (in Fortran 90, kind=MPI_OFFSET_KIND) integer (kind=MPI_OFFSET_KIND) offset ! iodisp.h declares disp as an MPI_Offset integer integer (kind=MPI_OFFSET_KIND) disp integer rank, size type(MPI_File) fh type(MPI_Group) group, worldgroup integer i, result integer ierr, errs integer BUFSIZE parameter (BUFSIZE=1024) integer buf(BUFSIZE) character*(50) filename character*(MPI_MAX_DATAREP_STRING) datarep integer amode logical atomicity type(MPI_Datatype) newtype, etype, filetype integer integer_size, type_size ! errs = 0 call mtest_init( ierr ) call mpi_comm_rank( MPI_COMM_WORLD, rank, ierr ) call mpi_comm_size( MPI_COMM_WORLD, size, ierr ) ! ! Create a file that we'll then query properties filename = "testfile.txt" call mpi_file_open( MPI_COMM_WORLD, filename, MPI_MODE_CREATE + & & MPI_MODE_RDWR, MPI_INFO_NULL, fh, ierr ) if (ierr .ne. MPI_SUCCESS) then print *, "Unable to create file ", filename call mpi_abort( MPI_COMM_WORLD, 1, ierr ) endif ! ! Fill in some data do i=1, BUFSIZE buf(i) = i enddo call mpi_file_write( fh, buf, BUFSIZE, MPI_INTEGER, & & MPI_STATUS_IGNORE, ierr ) call MPI_File_sync( fh, ierr ) ! ! Now, query properties of the file and the file handle call MPI_File_get_amode(fh, amode, ierr ) if (amode .ne. MPI_MODE_CREATE + MPI_MODE_RDWR) then errs = errs + 1 print *, " Amode was different than expected" endif ! call MPI_File_get_atomicity( fh, atomicity, ierr ) if (atomicity) then errs = errs + 1 print *, " Atomicity was true but should be false" endif ! call MPI_File_set_atomicity( fh, .true., ierr ) call MPI_File_get_atomicity( fh, atomicity, ierr ) if (.not. atomicity) then errs = errs + 1 print *, " Atomicity was set to true but ", & & "get_atomicity returned false" endif call MPI_File_set_atomicity( fh, .false., ierr ) ! ! FIXME: original code use 10,10,20, and the following code ! assumed the original ! ! Create a vector type of 10 elements, each of 20 elements, with a stride of ! 30 elements call mpi_type_vector( 10, 20, 30, MPI_INTEGER, newtype, ierr ) call mpi_type_commit( newtype, ierr ) ! ! All processes are getting the same view, with a 1000 byte offset offset = 1000 call mpi_file_set_view( fh, offset, MPI_INTEGER, newtype, "native" & & , MPI_INFO_NULL, ierr ) call mpi_file_get_view( fh, offset, etype, filetype, datarep, ierr & & ) if (offset .ne. 1000) then print *, " displacement was ", offset, ", expected 1000" errs = errs + 1 endif if (datarep .ne. "native") then print *, " data representation form was ", datarep, & & ", expected native" errs = errs + 1 endif ! Find the byte offset, given an offset of 20 etypes relative to the ! current view (the same as the blockcount of the filetype, which ! places it at the beginning of the next block, hence a stride ! distance away). offset = 20 call mpi_file_get_byte_offset( fh, offset, disp, ierr ) call mpi_type_size( MPI_INTEGER, integer_size, ierr ) if (disp .ne. 1000 + 30 * integer_size) then errs = errs + 1 print *, " (offset20)Byte offset = ", disp, ", should be ", & & 1000+20*integer_size endif ! ! We should also compare file and etypes. We just look at the ! sizes and extents for now call mpi_type_size( etype, type_size, ierr ) if (type_size .ne. integer_size) then print *, " Etype has size ", type_size, ", but should be ", & & integer_size errs = errs + 1 endif call mpi_type_size( filetype, type_size, ierr ) if (type_size .ne. 10*20*integer_size) then print *, " filetype has size ", type_size, ", but should be ", & & 10*20*integer_size errs = errs + 1 endif ! ! Only free derived type call mpi_type_free( filetype, ierr ) call mpi_file_get_group( fh, group, ierr ) call mpi_comm_group( MPI_COMM_WORLD, worldgroup, ierr ) call mpi_group_compare( group, worldgroup, result, ierr ) if (result .ne. MPI_IDENT) then print *, " Group of file does not match group of comm_world" errs = errs + 1 endif call mpi_group_free( group, ierr ) call mpi_group_free( worldgroup, ierr ) offset = 1000+25*integer_size call mpi_file_set_size(fh, offset, ierr ) call mpi_barrier(MPI_COMM_WORLD, ierr ) call mpi_file_sync(fh, ierr ) call mpi_file_get_size( fh, offset, ierr ) if (offset .ne. 1000+25*integer_size) then errs = errs + 1 print *, " File size is ", offset, ", should be ", 1000 + 25 & & * integer_size endif ! ! File size is 1000+25ints. Seek to end. Note that the file size ! places the end of the file into the gap in the view, so seeking ! to the end, which is relative to the view, needs to give the end ! of the first block of 20 ints) offset = 0 call mpi_file_seek( fh, offset, MPI_SEEK_END, ierr ) call mpi_file_get_position( fh, disp, ierr ) if (disp .ne. 20) then errs = errs + 1 print *, "File pointer position = ", disp, ", should be 20" if (disp .eq. 25) then ! See MPI 2.1, section 13.4, page 399, lines 7-8. The disp must be ! relative to the current view, in the etype units of the current view print *, " MPI implementation failed to position the "// & & "displacement within the current file view" endif ! Make sure we use the expected position in the next step. disp = 20 endif call mpi_file_get_byte_offset(fh, disp, offset, ierr ) if (offset .ne. 1000+30*integer_size) then errs = errs + 1 print *, " (seek)Byte offset = ", offset, ", should be ", 1000 & & +30*integer_size endif call mpi_barrier(MPI_COMM_WORLD, ierr ) offset = -20 call mpi_file_seek(fh, offset, MPI_SEEK_CUR, ierr ) call mpi_file_get_position(fh, disp, ierr ) call mpi_file_get_byte_offset(fh, disp, offset, ierr ) if (offset .ne. 1000) then errs = errs + 1 print *, " File pointer position in bytes = ", offset, & & ", should be 1000" endif offset = 8192 call mpi_file_preallocate(fh, offset, ierr ) offset = 0 call mpi_file_get_size( fh, offset, ierr ) if (offset .lt. 8192) then errs = errs + 1 print *, " Size after preallocate is ", offset, & & ", should be at least 8192" endif call mpi_file_close( fh, ierr ) call mpi_barrier(MPI_COMM_WORLD, ierr ) if (rank .eq. 0) then call MPI_File_delete(filename, MPI_INFO_NULL, ierr ) endif call mpi_type_free( newtype, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/io/ioharness.tlt0000644000175000017500000000426012620254305020106 0ustar mbanckmbanck program main use mpi_f08 integer maxfparm parameter (maxfparm=5) integer max_buffer parameter (max_buffer=65536) integer maxftype parameter (maxftype=3) ! type(MPI_Comm) comm type(MPI_File) fh integer ftype, itmp, fparm, n, b, i, k, r, s integer intsize integer errs, toterrs, err, ierr integer wrank, wsize integer fparms(2,maxfparm) character *(100) filename data fparms/1,4000, 4000,8, 4096,8, 64000,8, 65536,8 / errs = 0 call MTest_Init( ierr ) call mpi_comm_rank( MPI_COMM_WORLD, wrank, ierr ) call mpi_comm_size( MPI_COMM_WORLD, wsize, ierr ) call mpi_type_size( MPI_INTEGER, intsize, ierr ) do ftype = 1, maxftype filename = "iotest.txt" if (ftype .eq. 1) then comm = MPI_COMM_WORLD elseif (ftype .eq. 2) then call mpi_comm_split( MPI_COMM_WORLD, 0, wsize - wrank, comm, ierr ) else itmp = 1 if (wrank .eq. 0) itmp = 0 call mpi_comm_split( MPI_COMM_WORLD, itmp, wrank, comm, ierr ) if (wrank .eq. 0) then goto 10 endif endif call mpi_comm_size( comm, s, ierr ) call mpi_comm_rank( comm, r, ierr ) do fparm=1, maxfparm n = fparms(1,fparm) b = fparms(2,fparm) ! Try writing the file, then check it ! Now, open the same file for reading enddo 10 continue ! ! Jump to 111 on a failure to open 111 continue if (comm .ne. MPI_COMM_WORLD) then call mpi_comm_free( comm, ierr ) endif enddo call MTest_Finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/io/Makefile.am0000644000175000017500000001042612620254305017423 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f08.mtest EXTRA_DIST = testlist.in # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 noinst_PROGRAMS = \ iwriteatf90 \ iwritef90 \ iwriteshf90 \ writef90 \ writeatf90 \ writeallf90 \ writeallbef90 \ writeordf90 \ writeordbef90 \ writeshf90 \ writeatallf90 \ writeatallbef90 \ fileerrf90 \ fileinfof90 \ shpositionf90 \ atomicityf90 \ miscfilef90 \ setviewcurf90 \ c2f90multio \ c2f2ciof90 if BUILD_MPIX_TESTS noinst_PROGRAMS += \ i_fcoll_test \ iwriteatallf90 endif # We don't want to distribute these source files because they are created by # "testmerge", hence "nodist_foo_SOURCES" nodist_iwriteatf90_SOURCES = iwriteatf90.f90 nodist_iwritef90_SOURCES = iwritef90.f90 nodist_iwriteshf90_SOURCES = iwriteshf90.f90 nodist_writeallbef90_SOURCES = writeallbef90.f90 nodist_writeallf90_SOURCES = writeallf90.f90 nodist_writeatallbef90_SOURCES = writeatallbef90.f90 nodist_writeatallf90_SOURCES = writeatallf90.f90 nodist_writeatf90_SOURCES = writeatf90.f90 nodist_writef90_SOURCES = writef90.f90 nodist_writeordbef90_SOURCES = writeordbef90.f90 nodist_writeordf90_SOURCES = writeordf90.f90 nodist_writeshf90_SOURCES = writeshf90.f90 nodist_iwriteatallf90_SOURCES = iwriteatallf90.f90 c2f90multio_SOURCES = c2f90multio.c # this is a C only program, so we must either: # A) prevent the makefile-wide "LDADD=mtestf90.o" from affecting this program, or # B) link with the fortran compiler, otherwise we'll get link failures from # compilers with runtime support libs, such as PGI c2f90multio_LDADD = c2f2ciof90_SOURCES = c2f2ciof90.f90 c2f902cio.c ## these header files will be distributed because they're listed in ## AC_CONFIG_FILES/AC_OUTPUT # ensure that dependent tests will be rebuilt when headers are updated # these files are genereated using testmerge (see below) generated_io_sources = \ iwriteatf90.f90 \ iwriteatallf90.f90 \ iwritef90.f90 \ iwriteshf90.f90 \ writeallbef90.f90 \ writeallf90.f90 \ writeatallbef90.f90 \ writeatallf90.f90 \ writeatf90.f90 \ writef90.f90 \ writeordbef90.f90 \ writeordf90.f90 \ writeshf90.f90 EXTRA_DIST += ioharness.defn ioharness.tlt # a parallel-safe scheme to generate the tests, see the automake-1.11.1 manual, # section 27.9 "Handling Tools That Produce Multiple Outputs" for an explanation # # Note that using testmerge at make-time adds a dependency on perl for users. # It's been like this for a long time, so I don't think it's a problem in # practice. The best way to fix this is to drop the nodist_foo_SOURCES lines, # modify testmerge to output the stamp file, and then enclose modified versions # of these rules in an "if MAINAINER_MODE". The files also should then move to # MAINTAINERCLEANFILES from DISTCLEANFILES. [goodell@ 2011-07-11] gen-src-stamp: $(srcdir)/ioharness.defn $(srcdir)/ioharness.tlt @rm -f gen-src-tmp @touch gen-src-tmp $(top_builddir)/maint/testmerge -defn=$(top_srcdir)/maint/common.defn \ $(srcdir)/ioharness.defn $(srcdir)/ioharness.tlt @mv -f gen-src-tmp $@ $(generated_io_sources): gen-src-stamp ## Recover from the removal of $@ @if test -f $@; then :; else \ trap 'rm -rf gen-src-lock gen-src-stamp' 1 2 13 15; \ ## mkdir is a portable test-and-set if mkdir gen-src-lock 2>/dev/null; then \ ## This code is being executed by the first process. rm -f gen-src-stamp; \ $(MAKE) $(AM_MAKEFLAGS) gen-src-stamp; \ rmdir gen-src-lock; \ else \ ## This code is being executed by the follower processes. ## Wait until the first process is done. while test -d gen-src-lock; do sleep 1; done; \ ## Succeed if and only if the first process succeeded. test -f gen-src-stamp; exit $$?; \ fi; \ fi # just in case CLEANFILES += gen-src-tmp gen-src-stamp # clean up after the test programs clean-local: -rm -f .iotest.txt.* DISTCLEANFILES = $(generated_io_sources) c2f902cio.c: $(srcdir)/../../f90/io/c2f902cio.c cp $(srcdir)/../../f90/io/c2f902cio.c c2f902cio.c mpi-testsuite-3.2+dfsg/f08/io/testlist.in0000644000175000017500000000053412620254305017571 0ustar mbanckmbanckiwriteatf90 4 iwritef90 4 iwriteshf90 4 writef90 4 writeatf90 4 writeallf90 4 writeshf90 4 writeordf90 4 writeatallf90 4 writeatallbef90 4 writeallbef90 4 writeordbef90 4 fileerrf90 1 fileinfof90 3 shpositionf90 4 atomicityf90 8 miscfilef90 4 setviewcurf90 4 c2f2ciof90 1 c2f90multio 1 i_fcoll_test 4 mpiversion=3.1 iwriteatallf90 4 mpiversion=3.1 mpi-testsuite-3.2+dfsg/f08/io/c2f902cio.c0000644000175000017500000000536412620254305017140 0ustar mbanckmbanck/* This file created from test/mpi/f77/io/c2f2cio.c with f77tof90 */ /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * This file contains the C routines used in testing the c2f and f2c * handle conversion functions for MPI_File * The tests follow this pattern: * * Fortran main program * calls c routine with each handle type, with a prepared * and valid handle (often requires constructing an object) * * C routine uses xxx_f2c routine to get C handle, checks some * properties (i.e., size and rank of communicator, contents of datatype) * * Then the Fortran main program calls a C routine that provides * a handle, and the Fortran program performs similar checks. * * We also assume that a C int is a Fortran integer. If this is not the * case, these tests must be modified. */ /* style: allow:fprintf:1 sig:0 */ #include #include "mpi.h" #include "../../include/mpitestconf.h" #include /* Name mapping. All routines are created with names that are lower case with a single trailing underscore. This matches many compilers. We use #define to change the name for Fortran compilers that do not use the lowercase/underscore pattern */ #ifdef F77_NAME_UPPER #define c2ffile_ C2FFILE #define f2cfile_ F2CFILE #elif defined(F77_NAME_LOWER) || defined(F77_NAME_MIXED) /* Mixed is ok because we use lowercase in all uses */ #define c2ffile_ c2ffile #define f2cfile_ f2cfile #elif defined(F77_NAME_LOWER_2USCORE) || defined(F77_NAME_LOWER_USCORE) || \ defined(F77_NAME_MIXED_USCORE) /* Else leave name alone (routines have no underscore, so both of these map to a lowercase, single underscore) */ #else #error 'Unrecognized Fortran name mapping' #endif /* Prototypes to keep compilers happy */ int c2ffile_(int *); void f2cfile_(int *); int c2ffile_(int *file) { MPI_File cFile = MPI_File_f2c(*file); MPI_Group group, wgroup; int result; MPI_File_get_group(cFile, &group); MPI_Comm_group(MPI_COMM_WORLD, &wgroup); MPI_Group_compare(group, wgroup, &result); if (result != MPI_IDENT) { fprintf(stderr, "File: did not get expected group\n"); return 1; } MPI_Group_free(&group); MPI_Group_free(&wgroup); return 0; } /* * The following routines provide handles to the calling Fortran program */ void f2cfile_(int *file) { MPI_File cFile; int rc; rc = MPI_File_open(MPI_COMM_WORLD, (char *) "temp", MPI_MODE_RDWR | MPI_MODE_DELETE_ON_CLOSE | MPI_MODE_CREATE, MPI_INFO_NULL, &cFile); if (rc) { *file = 0; } else { *file = MPI_File_c2f(cFile); } } mpi-testsuite-3.2+dfsg/f08/io/i_fcoll_test.f900000644000175000017500000000763412620254305020364 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 implicit none !include 'mpif.h' ! Fortran 2008 equivalent of src/mpi/romio/test/coll_test.c integer FILESIZE parameter (FILESIZE=32*32*32*4) ! A 32^3 array. For other array sizes, change FILESIZE above and ! array_of_gsizes below. ! Uses collective I/O. Writes a 3D block-distributed array to a file ! corresponding to the global array in row-major (C) order, reads it ! back, and checks that the data read is correct. ! Note that the file access pattern is noncontiguous. integer i, ndims, array_of_gsizes(3) integer order, intsize, nprocs, j, array_of_distribs(3) integer array_of_dargs(3), array_of_psizes(3) integer readbuf(FILESIZE), writebuf(FILESIZE), bufcount integer mynod, tmpbuf(FILESIZE), array_size, argc integer ierr character*256 str ! used to store the filename integer errs, toterrs integer(MPI_OFFSET_KIND) :: disp type(MPI_Datatype) :: newtype type(MPI_Status) :: status type(MPI_Request) :: request type(MPI_File) :: fh errs = 0 str = "iotest.txt" call MPI_INIT(ierr) call MPI_COMM_SIZE(MPI_COMM_WORLD, nprocs, ierr) call MPI_COMM_RANK(MPI_COMM_WORLD, mynod, ierr) ! create the distributed array filetype ndims = 3 order = MPI_ORDER_FORTRAN array_of_gsizes(1) = 32 array_of_gsizes(2) = 32 array_of_gsizes(3) = 32 array_of_distribs(1) = MPI_DISTRIBUTE_BLOCK array_of_distribs(2) = MPI_DISTRIBUTE_BLOCK array_of_distribs(3) = MPI_DISTRIBUTE_BLOCK array_of_dargs(1) = MPI_DISTRIBUTE_DFLT_DARG array_of_dargs(2) = MPI_DISTRIBUTE_DFLT_DARG array_of_dargs(3) = MPI_DISTRIBUTE_DFLT_DARG do i=1, ndims array_of_psizes(i) = 0 end do call MPI_DIMS_CREATE(nprocs, ndims, array_of_psizes, ierr) call MPI_TYPE_CREATE_DARRAY(nprocs, mynod, ndims, & array_of_gsizes, array_of_distribs, array_of_dargs, & array_of_psizes, order, MPI_INTEGER, newtype, ierr) call MPI_TYPE_COMMIT(newtype, ierr) ! initialize writebuf call MPI_TYPE_SIZE(newtype, bufcount, ierr) call MPI_TYPE_SIZE(MPI_INTEGER, intsize, ierr) bufcount = bufcount/intsize do i=1, bufcount writebuf(i) = 1 end do do i=1, FILESIZE tmpbuf(i) = 0 end do call MPI_IRECV(tmpbuf, 1, newtype, mynod, 10, MPI_COMM_WORLD, request, ierr) call MPI_SEND(writebuf, bufcount, MPI_INTEGER, mynod, 10, MPI_COMM_WORLD, ierr) call MPI_WAIT(request, status, ierr) j = 1 array_size = array_of_gsizes(1) * array_of_gsizes(2) * array_of_gsizes(3) do i=1, array_size if (tmpbuf(i) .ne. 0) then writebuf(j) = i j = j + 1 end if end do ! end of initialization ! write the array to the file call MPI_FILE_OPEN(MPI_COMM_WORLD, str, MPI_MODE_CREATE+MPI_MODE_RDWR, MPI_INFO_NULL, fh, ierr) disp = 0 call MPI_FILE_SET_VIEW(fh, disp, MPI_INTEGER, newtype, "native", MPI_INFO_NULL, ierr) call MPI_FILE_IWRITE_ALL(fh, writebuf, bufcount, MPI_INTEGER, request, ierr) call MPI_WAIT(request, status, ierr) call MPI_FILE_CLOSE(fh, ierr) !now read it back call MPI_FILE_OPEN(MPI_COMM_WORLD, str, MPI_MODE_CREATE+MPI_MODE_RDWR, MPI_INFO_NULL, fh, ierr) call MPI_FILE_SET_VIEW(fh, disp, MPI_INTEGER, newtype, "native", MPI_INFO_NULL, ierr) call MPI_FILE_IREAD_ALL(fh, readbuf, bufcount, MPI_INTEGER, request, ierr) call MPI_WAIT(request, status, ierr) call MPI_FILE_CLOSE(fh, ierr) ! check the data read do i=1, bufcount if (readbuf(i) .ne. writebuf(i)) then errs = errs + 1 print *, 'Node ', mynod, ' readbuf ', readbuf(i), & ' writebuf ', writebuf(i), ' i', i end if end do call MPI_TYPE_FREE(newtype, ierr) if (mynod .eq. 0) then call MPI_FILE_DELETE(str, MPI_INFO_NULL, ierr) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 endif endif call MPI_Allreduce( errs, toterrs, 1, MPI_INTEGER, MPI_SUM, MPI_COMM_WORLD, ierr ) if (mynod .eq. 0) then if( toterrs .gt. 0 ) then print *, 'Found ', toterrs, ' errors' else print *, ' No Errors' endif endif call MPI_FINALIZE(ierr) stop end mpi-testsuite-3.2+dfsg/f08/io/shpositionf90.f900000644000175000017500000000445112620254305020426 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 type(MPI_Comm) comm type(MPI_File) fh integer r, s, i integer fileintsize integer errs, err, ierr character *(100) filename integer (kind=MPI_OFFSET_KIND) offset integer (kind=MPI_ADDRESS_KIND) aint errs = 0 call MTest_Init( ierr ) filename = "iotest.txt" comm = MPI_COMM_WORLD call mpi_comm_size( comm, s, ierr ) call mpi_comm_rank( comm, r, ierr ) ! Try writing the file, then check it call mpi_file_open( comm, filename, MPI_MODE_RDWR + & & MPI_MODE_CREATE, MPI_INFO_NULL, fh, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 if (errs .le. 10) then call MTestPrintError( ierr ) endif endif ! ! Get the size of an INTEGER in the file call mpi_file_get_type_extent( fh, MPI_INTEGER, aint, ierr ) fileintsize = aint ! ! We let each process write in turn, getting the position after each ! write do i=1, s if (i .eq. r + 1) then call mpi_file_write_shared( fh, i, 1, MPI_INTEGER, & & MPI_STATUS_IGNORE, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 if (errs .le. 10) then call MTestPrintError( ierr ) endif endif endif call mpi_barrier( comm, ierr ) call mpi_file_get_position_shared( fh, offset, ierr ) if (offset .ne. fileintsize * i) then errs = errs + 1 print *, r, ' Shared position is ', offset,' should be ', & & fileintsize * i endif call mpi_barrier( comm, ierr ) enddo call mpi_file_close( fh, ierr ) if (r .eq. 0) then call mpi_file_delete( filename, MPI_INFO_NULL, ierr ) endif if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 if (errs .le. 10) then call MTestPrintError( ierr ) endif endif ! call MTest_Finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/io/atomicityf90.f900000644000175000017500000001560012620254305020227 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer (kind=MPI_OFFSET_KIND) disp ! tests whether atomicity semantics are satisfied for overlapping accesses ! in atomic mode. The probability of detecting errors is higher if you run ! it on 8 or more processes. ! This is a version of the test in romio/test/atomicity.c . integer BUFSIZE parameter (BUFSIZE=10000) integer writebuf(BUFSIZE), readbuf(BUFSIZE) integer i, mynod, nprocs, len, ierr, errs, toterrs character*50 filename type(MPI_Datatype) newtype type(MPI_File) fh type(MPI_Info) info type(MPI_Status) status errs = 0 call MPI_Init(ierr) call MPI_Comm_rank(MPI_COMM_WORLD, mynod, ierr ) call MPI_Comm_size(MPI_COMM_WORLD, nprocs, ierr ) ! Unlike the C version, we fix the filename because of the difficulties ! in accessing the command line from different Fortran environments filename = "testfile.txt" ! test atomicity of contiguous accesses ! initialize file to all zeros if (mynod .eq. 0) then call MPI_File_delete(filename, MPI_INFO_NULL, ierr ) call MPI_File_open(MPI_COMM_SELF, filename, MPI_MODE_CREATE + & & MPI_MODE_RDWR, MPI_INFO_NULL, fh, ierr ) do i=1, BUFSIZE writebuf(i) = 0 enddo call MPI_File_write(fh, writebuf, BUFSIZE, MPI_INTEGER, status, & & ierr) call MPI_File_close(fh, ierr ) endif call MPI_Barrier(MPI_COMM_WORLD, ierr ) do i=1, BUFSIZE writebuf(i) = 10 readbuf(i) = 20 enddo call MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_CREATE + & & MPI_MODE_RDWR, MPI_INFO_NULL, fh, ierr ) ! set atomicity to true call MPI_File_set_atomicity(fh, .true., ierr) if (ierr .ne. MPI_SUCCESS) then print *, "Atomic mode not supported on this file system." call MPI_Abort(MPI_COMM_WORLD, 1, ierr ) endif call MPI_Barrier(MPI_COMM_WORLD, ierr ) ! process 0 writes and others concurrently read. In atomic mode, ! the data read must be either all old values or all new values; nothing ! in between. if (mynod .eq. 0) then call MPI_File_write(fh, writebuf, BUFSIZE, MPI_INTEGER, status, & & ierr) else call MPI_File_read(fh, readbuf, BUFSIZE, MPI_INTEGER, status, & & ierr ) if (ierr .eq. MPI_SUCCESS) then if (readbuf(1) .eq. 0) then ! the rest must also be 0 do i=2, BUFSIZE if (readbuf(i) .ne. 0) then errs = errs + 1 print *, "(contig)Process ", mynod, ": readbuf(", i & & ,") is ", readbuf(i), ", should be 0" call MPI_Abort(MPI_COMM_WORLD, 1, ierr ) endif enddo else if (readbuf(1) .eq. 10) then ! the rest must also be 10 do i=2, BUFSIZE if (readbuf(i) .ne. 10) then errs = errs + 1 print *, "(contig)Process ", mynod, ": readbuf(", i & & ,") is ", readbuf(i), ", should be 10" call MPI_Abort(MPI_COMM_WORLD, 1, ierr ) endif enddo else errs = errs + 1 print *, "(contig)Process ", mynod, ": readbuf(1) is ", & & readbuf(1), ", should be either 0 or 10" endif endif endif call MPI_File_close( fh, ierr ) call MPI_Barrier( MPI_COMM_WORLD, ierr ) ! repeat the same test with a noncontiguous filetype call MPI_Type_vector(BUFSIZE, 1, 2, MPI_INTEGER, newtype, ierr) call MPI_Type_commit(newtype, ierr ) call MPI_Info_create(info, ierr ) ! I am setting these info values for testing purposes only. It is ! better to use the default values in practice. */ call MPI_Info_set(info, "ind_rd_buffer_size", "1209", ierr ) call MPI_Info_set(info, "ind_wr_buffer_size", "1107", ierr ) if (mynod .eq. 0) then call MPI_File_delete(filename, MPI_INFO_NULL, ierr ) call MPI_File_open(MPI_COMM_SELF, filename, MPI_MODE_CREATE + & & MPI_MODE_RDWR, info, fh, ierr ) do i=1, BUFSIZE writebuf(i) = 0 enddo disp = 0 call MPI_File_set_view(fh, disp, MPI_INTEGER, newtype, "native" & & ,info, ierr) call MPI_File_write(fh, writebuf, BUFSIZE, MPI_INTEGER, status, & & ierr ) call MPI_File_close( fh, ierr ) endif call MPI_Barrier( MPI_COMM_WORLD, ierr ) do i=1, BUFSIZE writebuf(i) = 10 readbuf(i) = 20 enddo call MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_CREATE + & & MPI_MODE_RDWR, info, fh, ierr ) call MPI_File_set_atomicity(fh, .true., ierr) disp = 0 call MPI_File_set_view(fh, disp, MPI_INTEGER, newtype, "native", & & info, ierr ) call MPI_Barrier(MPI_COMM_WORLD, ierr ) if (mynod .eq. 0) then call MPI_File_write(fh, writebuf, BUFSIZE, MPI_INTEGER, status, & & ierr ) else call MPI_File_read(fh, readbuf, BUFSIZE, MPI_INTEGER, status, & & ierr ) if (ierr .eq. MPI_SUCCESS) then if (readbuf(1) .eq. 0) then do i=2, BUFSIZE if (readbuf(i) .ne. 0) then errs = errs + 1 print *, "(noncontig)Process ", mynod, ": readbuf(" & & , i,") is ", readbuf(i), ", should be 0" call MPI_Abort(MPI_COMM_WORLD, 1, ierr ) endif enddo else if (readbuf(1) .eq. 10) then do i=2, BUFSIZE if (readbuf(i) .ne. 10) then errs = errs + 1 print *, "(noncontig)Process ", mynod, ": readbuf(" & & , i,") is ", readbuf(i), ", should be 10" call MPI_Abort(MPI_COMM_WORLD, 1, ierr ) endif enddo else errs = errs + 1 print *, "(noncontig)Process ", mynod, ": readbuf(1) is " & & ,readbuf(1), ", should be either 0 or 10" endif endif endif call MPI_File_close( fh, ierr ) call MPI_Barrier(MPI_COMM_WORLD, ierr ) call MPI_Allreduce( errs, toterrs, 1, MPI_INTEGER, MPI_SUM, & & MPI_COMM_WORLD, ierr ) if (mynod .eq. 0) then if( toterrs .gt. 0) then print *, "Found ", toterrs, " errors" else print *, " No Errors" endif endif call MPI_Type_free(newtype, ierr ) call MPI_Info_free(info, ierr ) call MPI_Finalize(ierr) end mpi-testsuite-3.2+dfsg/f08/io/fileinfof90.f900000644000175000017500000000423512620254305020022 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer ierr, errs type(MPI_File) fh type(MPI_Info) info1, info2 integer rank logical flag character*(50) filename character*(MPI_MAX_INFO_KEY) mykey character*(MPI_MAX_INFO_VAL) myvalue errs = 0 call mtest_init( ierr ) call mpi_comm_rank( MPI_COMM_WORLD, rank, ierr ) ! ! Open a simple file ierr = -1 filename = "iotest.txt" call mpi_file_open( MPI_COMM_WORLD, filename, MPI_MODE_RDWR + & & MPI_MODE_CREATE, MPI_INFO_NULL, fh, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintError( ierr ) endif ! ! Try to set one of the available info hints call mpi_info_create( info1, ierr ) call mpi_info_set( info1, "access_style", & & "read_once,write_once", ierr ) ierr = -1 call mpi_file_set_info( fh, info1, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintError( ierr ) endif call mpi_info_free( info1, ierr ) ierr = -1 call mpi_file_get_info( fh, info2, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintError( ierr ) endif call mpi_info_get( info2, "filename", MPI_MAX_INFO_VAL, & & myvalue, flag, ierr ) ! ! An implementation isn't required to provide the filename (though ! a high-quality implementation should) if (flag) then ! If we find it, we must have the correct name if (myvalue(1:10) .ne. filename(1:10) .or. & & myvalue(11:11) .ne. ' ') then errs = errs + 1 print *, ' Returned wrong value for the filename' endif endif call mpi_info_free( info2, ierr ) ! call mpi_file_close( fh, ierr ) call mpi_barrier( MPI_COMM_WORLD, ierr ) if (rank .eq. 0) then call mpi_file_delete( filename, MPI_INFO_NULL, ierr ) endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/io/c2f2ciof90.f900000644000175000017500000000327512620254305017461 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! Test just the MPI-IO FILE object program main use mpi_f08 integer errs, toterrs, ierr integer wrank type(MPI_Group) wgroup integer fsize, frank type(MPI_Comm) comm type(MPI_File) file type(MPI_Group) group integer result integer c2ffile errs = 0 call mpi_init( ierr ) call mpi_comm_rank( MPI_COMM_WORLD, wrank, ierr ) call mpi_comm_group( MPI_COMM_WORLD, wgroup, ierr ) call mpi_file_open( MPI_COMM_WORLD, "temp", MPI_MODE_RDWR + & & MPI_MODE_DELETE_ON_CLOSE + MPI_MODE_CREATE, MPI_INFO_NULL, & & file, ierr ) if (ierr .ne. 0) then errs = errs + 1 else errs = errs + c2ffile( file ) call mpi_file_close( file, ierr ) endif call f2cfile( file ) ! name is temp, in comm world, no info provided call mpi_file_get_group( file, group, ierr ) call mpi_group_compare( group, wgroup, result, ierr ) if (result .ne. MPI_IDENT) then errs = errs + 1 print *, "Group of file not the group of comm_world" endif call mpi_group_free( group, ierr ) call mpi_group_free( wgroup, ierr ) call mpi_file_close( file, ierr ) ! ! Summarize the errors ! call mpi_allreduce( errs, toterrs, 1, MPI_INTEGER, MPI_SUM, & & MPI_COMM_WORLD, ierr ) if (wrank .eq. 0) then if (toterrs .eq. 0) then print *, ' No Errors' else print *, ' Found ', toterrs, ' errors' endif endif call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/io/setviewcurf90.f900000644000175000017500000000753412620254305020434 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer (kind=MPI_OFFSET_KIND) offset integer errs, ierr, size, rank type(MPI_File) fh type(MPI_Comm) comm type(MPI_Status) status integer buf(1024) errs = 0 call MTest_Init( ierr ) ! This test reads a header then sets the view to every "size" int, ! using set view and current displacement. The file is first written ! using a combination of collective and ordered writes comm = MPI_COMM_WORLD call MPI_File_open( comm, "test.ord", MPI_MODE_WRONLY + & & MPI_MODE_CREATE, MPI_INFO_NULL, fh, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Open(1)", ierr ) endif call MPI_Comm_size( comm, size, ierr ) call MPI_Comm_rank( comm, rank, ierr ) if (size .gt. 1024) then if (rank .eq. 0) then print *, & &"This program must be run with no more than 1024 processes" call MPI_Abort( MPI_COMM_WORLD, 1, ierr ) endif endif buf(1) = size call MPI_File_write_all( fh, buf, 1, MPI_INTEGER, status, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Write_all", ierr ) endif call MPI_File_get_position( fh, offset, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Get_position", ierr ) endif call MPI_File_seek_shared( fh, offset, MPI_SEEK_SET, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Seek_shared", ierr ) endif buf(1) = rank call MPI_File_write_ordered( fh, buf, 1, MPI_INTEGER, status,ierr) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Write_ordered", ierr ) endif call MPI_File_close( fh, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Close(1)", ierr ) endif ! Reopen the file as sequential call MPI_File_open( comm, "test.ord", MPI_MODE_RDONLY + & & MPI_MODE_SEQUENTIAL + MPI_MODE_DELETE_ON_CLOSE, & & MPI_INFO_NULL, fh, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Open(Read)", ierr ) endif if (rank .eq. 0) then call MPI_File_read_shared( fh, buf, 1, MPI_INTEGER, status, & & ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Read_all", ierr ) endif if (buf(1) .ne. size) then errs = errs + 1 print *, "Unexpected value for the header = ", buf(1), & & ", should be ", size endif endif call MPI_Barrier( comm, ierr ) ! All processes must provide the same file view for MODE_SEQUENTIAL call MPI_File_set_view( fh, MPI_DISPLACEMENT_CURRENT, MPI_INTEGER & & ,MPI_INTEGER, "native", MPI_INFO_NULL, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Set_view", ierr ) endif buf(1) = -1 call MPI_File_read_ordered( fh, buf, 1, MPI_INTEGER, status, ierr & & ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Read_all", ierr ) endif if (buf(1) .ne. rank) then errs = errs + 1 print *, rank, ": buf(1) = ", buf(1) endif call MPI_File_close( fh, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call MTestPrintErrorMsg( "Close(2)", ierr ) endif call MTest_Finalize( errs ) call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/io/c2f90multio.c0000644000175000017500000000302512620254305017605 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Check that MPI_File_c2f, applied to the same object several times, yields the same handle. We do this because when MPI handles in C are a different length than those in Fortran, care needs to be exercised to ensure that the mapping from one to another is unique. (Test added to test a potential problem in ROMIO for handling MPI_File on 64-bit systems) */ #include "mpi.h" #include int main(int argc, char *argv[]) { MPI_Fint handleA, handleB; int rc; int errs = 0; int rank; MPI_File cFile; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); /* File */ rc = MPI_File_open(MPI_COMM_WORLD, (char *) "temp", MPI_MODE_RDWR | MPI_MODE_DELETE_ON_CLOSE | MPI_MODE_CREATE, MPI_INFO_NULL, &cFile); if (rc) { errs++; printf("Unable to open file \"temp\"\n"); } else { handleA = MPI_File_c2f(cFile); handleB = MPI_File_c2f(cFile); if (handleA != handleB) { errs++; printf("MPI_File_c2f does not give the same handle twice on the same MPI_File\n"); } } MPI_File_close(&cFile); if (rank == 0) { if (errs) { fprintf(stderr, "Found %d errors\n", errs); } else { printf(" No Errors\n"); } } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/f08/rma/0000755000175000017500000000000012621010234015524 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f08/rma/c2f2cwinf08.f900000644000175000017500000000257712620254305020022 0ustar mbanckmbanck! This file created from test/mpi/f77/rma/c2f2cwinf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! Test just MPI-RMA ! program main use mpi_f08 integer errs, toterrs, ierr integer wrank, wsize integer wgroup, info, req TYPE(MPI_Win) win integer result integer c2fwin ! The integer asize must be of ADDRESS_KIND size integer (kind=MPI_ADDRESS_KIND) asize errs = 0 call mpi_init( ierr ) ! ! Test passing a Fortran MPI object to C call mpi_comm_rank( MPI_COMM_WORLD, wrank, ierr ) asize = 0 call mpi_win_create( 0, asize, 1, MPI_INFO_NULL, & & MPI_COMM_WORLD, win, ierr ) errs = errs + c2fwin( win ) call mpi_win_free( win, ierr ) ! ! Test using a C routine to provide the Fortran handle call f2cwin( win ) ! no info, in comm world, created with no memory (base address 0, ! displacement unit 1 call mpi_win_free( win, ierr ) ! ! Summarize the errors ! call mpi_allreduce( errs, toterrs, 1, MPI_INTEGER, MPI_SUM, & & MPI_COMM_WORLD, ierr ) if (wrank .eq. 0) then if (toterrs .eq. 0) then print *, ' No Errors' else print *, ' Found ', toterrs, ' errors' endif endif call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/rma/winattrf08.f900000644000175000017500000001352412620254305020067 0ustar mbanckmbanck! This file created from test/mpi/f77/rma/winattrf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi integer errs, ierr integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val integer comm, win, buf(10) integer curcount, keyval logical flag external mycopyfn, mydelfn integer callcount, delcount common /myattr/ callcount, delcount ! ! The only difference between the MPI-2 and MPI-1 attribute caching ! routines in Fortran is that the take an address-sized integer ! instead of a simple integer. These still are not pointers, ! so the values are still just integers. ! errs = 0 callcount = 0 delcount = 0 call mtest_init( ierr ) call mpi_comm_dup( MPI_COMM_WORLD, comm, ierr ) ! Create a new window; use val for an address-sized int val = 10 call mpi_win_create( buf, val, 1, & & MPI_INFO_NULL, comm, win, ierr ) ! extrastate = 1001 call mpi_win_create_keyval( mycopyfn, mydelfn, keyval, & & extrastate, ierr ) flag = .true. call mpi_win_get_attr( win, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' get attr returned true when no attr set' endif valin = 2003 call mpi_win_set_attr( win, keyval, valin, ierr ) flag = .false. valout = -1 call mpi_win_get_attr( win, keyval, valout, flag, ierr ) if (valout .ne. 2003) then errs = errs + 1 print *, 'Unexpected value (should be 2003)', valout, & & ' from attr' endif valin = 2001 call mpi_win_set_attr( win, keyval, valin, ierr ) flag = .false. valout = -1 call mpi_win_get_attr( win, keyval, valout, flag, ierr ) if (valout .ne. 2001) then errs = errs + 1 print *, 'Unexpected value (should be 2001)', valout, & & ' from attr' endif ! ! Test the attr delete function delcount = 0 call mpi_win_delete_attr( win, keyval, ierr ) if (delcount .ne. 1) then errs = errs + 1 print *, ' Delete_attr did not call delete function' endif flag = .true. call mpi_win_get_attr( win, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' Delete_attr did not delete attribute' endif ! Test the delete function on window free valin = 2001 call mpi_win_set_attr( win, keyval, valin, ierr ) curcount = delcount call mpi_win_free( win, ierr ) if (delcount .ne. curcount + 1) then errs = errs + 1 print *, ' did not get expected value of delcount ', & & delcount, curcount + 1 endif ierr = -1 call mpi_win_free_keyval( keyval, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call mtestprinterror( ierr ) endif ! ! The MPI standard defines null copy and duplicate functions. ! However, are only used when an object is duplicated. Since ! MPI_Win objects cannot be duplicated, so under normal circumstances, ! these will not be called. Since they are defined, they should behave ! as defined. To test them, we simply call them here flag = .false. valin = 7001 valout = -1 ierr = -1 call MPI_WIN_DUP_FN( win, keyval, extrastate, valin, valout, & & flag, ierr ) if (.not. flag) then errs = errs + 1 print *, " Flag was false after MPI_WIN_DUP_FN" else if (valout .ne. 7001) then errs = errs + 1 if (valout .eq. -1 ) then print *, " output attr value was not copied in MPI_WIN_DUP_FN" endif print *, " value was ", valout, " but expected 7001" else if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 print *, " MPI_WIN_DUP_FN did not return MPI_SUCCESS" endif flag = .true. valin = 7001 valout = -1 ierr = -1 call MPI_WIN_NULL_COPY_FN( win, keyval, extrastate, valin, valout & & ,flag, ierr ) if (flag) then errs = errs + 1 print *, " Flag was true after MPI_WIN_NULL_COPY_FN" else if (valout .ne. -1) then errs = errs + 1 print *, & & " output attr value was copied in MPI_WIN_NULL_COPY_FN" else if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 print *, " MPI_WIN_NULL_COPY_FN did not return MPI_SUCCESS" endif ! call mpi_comm_free( comm, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end ! ! Note that the copyfn is unused for MPI windows, since there is ! (and because of alias rules, can be) no MPI_Win_dup function subroutine mycopyfn( oldwin, keyval, extrastate, valin, valout, & & flag, ierr ) use mpi integer oldwin, keyval, ierr integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val logical flag integer callcount, delcount common /myattr/ callcount, delcount ! increment the attribute by 2 valout = valin + 2 callcount = callcount + 1 ! ! Since we should *never* call this, indicate an error print *, ' Unexpected use of mycopyfn' flag = .false. ierr = MPI_ERR_OTHER end ! subroutine mydelfn( win, keyval, val, extrastate, ierr ) use mpi integer win, keyval, ierr integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val integer callcount, delcount common /myattr/ callcount, delcount delcount = delcount + 1 if (extrastate .eq. 1001) then ierr = MPI_SUCCESS else print *, ' Unexpected value of extrastate = ', extrastate ierr = MPI_ERR_OTHER endif end mpi-testsuite-3.2+dfsg/f08/rma/winscale2f08.f900000644000175000017500000000716312620254305020270 0ustar mbanckmbanck! This file created from test/mpi/f77/rma/winscale2f.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer ierr, errs integer intsize TYPE(MPI_Win) win integer left, right, rank, size integer nrows, ncols parameter (nrows=25,ncols=10) integer buf(1:nrows,0:ncols+1) integer ans TYPE(MPI_Comm) comm TYPE(MPI_Group) group, group2 integer nneighbors, nbrs(2), i, j logical mtestGetIntraComm logical flag ! Include addsize defines asize as an address-sized integer integer (kind=MPI_ADDRESS_KIND) asize errs = 0 call mtest_init( ierr ) call mpi_type_size( MPI_INTEGER, intsize, ierr ) do while( mtestGetIntraComm( comm, 2, .false. ) ) asize = nrows * (ncols + 2) * intsize call mpi_win_create( buf, asize, intsize * nrows, & & MPI_INFO_NULL, comm, win, ierr ) ! Create the group for the neighbors call mpi_comm_size( comm, size, ierr ) call mpi_comm_rank( comm, rank, ierr ) nneighbors = 0 left = rank - 1 if (left .lt. 0) then left = MPI_PROC_NULL else nneighbors = nneighbors + 1 nbrs(nneighbors) = left endif right = rank + 1 if (right .ge. size) then right = MPI_PROC_NULL else nneighbors = nneighbors + 1 nbrs(nneighbors) = right endif call mpi_comm_group( comm, group, ierr ) call mpi_group_incl( group, nneighbors, nbrs, group2, ierr ) call mpi_group_free( group, ierr ) ! ! Initialize the buffer do i=1,nrows buf(i,0) = -1 buf(i,ncols+1) = -1 enddo do j=1,ncols do i=1,nrows buf(i,j) = rank * (ncols * nrows) + i + (j-1) * nrows enddo enddo call mpi_win_post( group2, 0, win, ierr ) call mpi_win_start( group2, 0, win, ierr ) ! asize = ncols+1 call mpi_put( buf(1,1), nrows, MPI_INTEGER, left, asize, & & nrows, MPI_INTEGER, win, ierr ) asize = 0 call mpi_put( buf(1,ncols), nrows, MPI_INTEGER, right, asize, & & nrows, MPI_INTEGER, win, ierr ) ! call mpi_win_complete( win, ierr ) flag = .false. do while (.not. flag) call mpi_win_test( win, flag, ierr ) enddo ! ! Check the results if (left .ne. MPI_PROC_NULL) then do i=1, nrows ans = rank * (ncols * nrows) - nrows + i if (buf(i,0) .ne. ans) then errs = errs + 1 if (errs .le. 10) then print *, ' buf(',i,',0) = ', buf(i,0), & & 'expected ', ans endif endif enddo endif if (right .ne. MPI_PROC_NULL) then do i=1, nrows ans = (rank+1) * (ncols * nrows) + i if (buf(i,ncols+1) .ne. ans) then errs = errs + 1 if (errs .le. 10) then print *, ' buf(',i,',',ncols+1,') = ', & & buf(i,ncols+1), ' expected ', ans endif endif enddo endif call mpi_group_free( group2, ierr ) call mpi_win_free( win, ierr ) call mtestFreeComm( comm ) enddo call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/rma/aintf08.f900000644000175000017500000000435312620254305017332 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! This program tests MPI_Aint_add/diff in MPI-3.1. ! The two functions are often used in RMA code. ! See https://svn.mpi-forum.org/trac/mpi-forum-web/ticket/349 program main use mpi_f08 integer :: rank, nproc integer :: ierr, errs integer :: array(0:1023) integer :: val, target_rank; integer(kind=MPI_ADDRESS_KIND) :: bases(0:1), disp, offset integer(kind=MPI_ADDRESS_KIND) :: winsize type(MPI_WIN) :: win integer :: intsize errs = 0 call mtest_init(ierr); call MPI_Comm_rank(MPI_COMM_WORLD, rank, ierr) call MPI_Comm_size(MPI_COMM_WORLD, nproc, ierr) if (rank == 0 .and. nproc /= 2) then print *, 'Must run with 2 ranks' call MPI_Abort(MPI_COMM_WORLD, 1, ierr) endif ! Get the base address in the middle of the array if (rank == 0) then target_rank = 1 array(0) = 1234 call MPI_Get_address(array(512), bases(0), ierr) else if (rank == 1) then target_rank = 0 array(1023) = 1234 call MPI_Get_address(array(512), bases(1), ierr) endif ! Exchange bases call MPI_Type_size(MPI_INTEGER, intsize, ierr); call MPI_Allgather(MPI_IN_PLACE, 0, MPI_DATATYPE_NULL, bases, 1, MPI_AINT, MPI_COMM_WORLD, ierr) call MPI_Win_create_dynamic(MPI_INFO_NULL, MPI_COMM_WORLD, win, ierr) winsize = intsize*1024 call MPI_Win_attach(win, array, winsize, ierr) ! Do MPI_Aint addressing arithmetic if (rank == 0) then disp = intsize*511 offset = MPI_Aint_add(bases(1), disp) ! offset points to array(1023) else if (rank == 1) then disp = intsize*512 offset = MPI_Aint_diff(bases(0), disp) ! offset points to array(0) endif ! Get value and verify it call MPI_Win_fence(MPI_MODE_NOPRECEDE, win, ierr) call MPI_Get(val, 1, MPI_INTEGER, target_rank, offset, 1, MPI_INTEGER, win, ierr) call MPI_Win_fence(MPI_MODE_NOSUCCEED, win, ierr) if (val /= 1234) then errs = errs + 1 print *, rank, ' -- Got', val, 'expected 1234' endif call MPI_Win_detach(win, array, ierr) call MPI_Win_free(win, ierr) call MTest_Finalize(errs) call MPI_Finalize(ierr); end mpi-testsuite-3.2+dfsg/f08/rma/c2f902cwin.c0000644000175000017500000000504012620254305017465 0ustar mbanckmbanck/* This file created from test/mpi/f77/rma/c2f2cwin.c with f77tof90 */ /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * This file contains the C routines used in testing the c2f and f2c * handle conversion functions for MPI_Win * * The tests follow this pattern: * * Fortran main program * calls c routine with each handle type, with a prepared * and valid handle (often requires constructing an object) * * C routine uses xxx_f2c routine to get C handle, checks some * properties (i.e., size and rank of communicator, contents of datatype) * * Then the Fortran main program calls a C routine that provides * a handle, and the Fortran program performs similar checks. * * We also assume that a C int is a Fortran integer. If this is not the * case, these tests must be modified. */ /* style: allow:fprintf:1 sig:0 */ #include #include "mpi.h" #include "../../include/mpitestconf.h" #include /* Name mapping. All routines are created with names that are lower case with a single trailing underscore. This matches many compilers. We use #define to change the name for Fortran compilers that do not use the lowercase/underscore pattern */ #ifdef F77_NAME_UPPER #define c2fwin_ C2FWIN #define f2cwin_ F2CWIN #elif defined(F77_NAME_LOWER) || defined(F77_NAME_MIXED) /* Mixed is ok because we use lowercase in all uses */ #define c2fwin_ c2fwin #define f2cwin_ f2cwin #elif defined(F77_NAME_LOWER_2USCORE) || defined(F77_NAME_LOWER_USCORE) || \ defined(F77_NAME_MIXED_USCORE) /* Else leave name alone (routines have no underscore, so both of these map to a lowercase, single underscore) */ #else #error 'Unrecognized Fortran name mapping' #endif /* Prototypes to keep compilers happy */ int c2fwin_(int *); void f2cwin_(int *); int c2fwin_(int *win) { MPI_Win cWin = MPI_Win_f2c(*win); MPI_Group group, wgroup; int result; MPI_Win_get_group(cWin, &group); MPI_Comm_group(MPI_COMM_WORLD, &wgroup); MPI_Group_compare(group, wgroup, &result); if (result != MPI_IDENT) { fprintf(stderr, "Win: did not get expected group\n"); return 1; } MPI_Group_free(&group); MPI_Group_free(&wgroup); return 0; } /* * The following routines provide handles to the calling Fortran program */ void f2cwin_(int *win) { MPI_Win cWin; MPI_Win_create(0, 0, 1, MPI_INFO_NULL, MPI_COMM_WORLD, &cWin); *win = MPI_Win_c2f(cWin); } mpi-testsuite-3.2+dfsg/f08/rma/winnamef08.f900000644000175000017500000000446012620254305020034 0ustar mbanckmbanck! This file created from test/mpi/f77/rma/winnamef.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer errs, ierr integer rlen, ln TYPE(MPI_Win) win character*(MPI_MAX_OBJECT_NAME) cname integer buf(10) integer intsize ! Include addsize defines asize as an address-sized integer integer (kind=MPI_ADDRESS_KIND) asize logical found ! errs = 0 call mtest_init( ierr ) ! ! Create a window and get, set the names on it ! call mpi_type_size( MPI_INTEGER, intsize, ierr ) asize = 10 call mpi_win_create( buf, asize, intsize, & & MPI_INFO_NULL, MPI_COMM_WORLD, win, ierr ) ! ! Check that there is no name yet cname = 'XXXXXX' rlen = -1 call mpi_win_get_name( win, cname, rlen, ierr ) if (rlen .ne. 0) then errs = errs + 1 print *, ' Did not get empty name from new window' else if (cname(1:6) .ne. 'XXXXXX') then found = .false. do ln=MPI_MAX_OBJECT_NAME,1,-1 if (cname(ln:ln) .ne. ' ') then found = .true. endif enddo if (found) then errs = errs + 1 print *, ' Found a non-empty name' endif endif ! ! Now, set a name and check it call mpi_win_set_name( win, 'MyName', ierr ) cname = 'XXXXXX' rlen = -1 call mpi_win_get_name( win, cname, rlen, ierr ) if (rlen .ne. 6) then errs = errs + 1 print *, ' Expected 6, got ', rlen, ' for rlen' if (rlen .gt. 0 .and. rlen .lt. MPI_MAX_OBJECT_NAME) then print *, ' Cname = ', cname(1:rlen) endif else if (cname(1:6) .ne. 'MyName') then errs = errs + 1 print *, ' Expected MyName, got ', cname(1:6) else found = .false. do ln=MPI_MAX_OBJECT_NAME,7,-1 if (cname(ln:ln) .ne. ' ') then found = .true. endif enddo if (found) then errs = errs + 1 print *, ' window name is not blank padded' endif endif ! call mpi_win_free( win, ierr ) call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/rma/Makefile.in0000644000175000017500000006253712621010234017606 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This Makefile.am generated automatically by f77tof90 # from test/mpi/f77/rma/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = winscale1f08$(EXEEXT) winscale2f08$(EXEEXT) \ winfencef08$(EXEEXT) wingetf08$(EXEEXT) winerrf08$(EXEEXT) \ winnamef08$(EXEEXT) wingroupf08$(EXEEXT) winaccf08$(EXEEXT) \ winaccf08$(EXEEXT) c2f2cwinf08$(EXEEXT) \ baseattrwinf08$(EXEEXT) winattrf08$(EXEEXT) \ winattr2f08$(EXEEXT) $(am__EXEEXT_1) @BUILD_MPIX_TESTS_TRUE@am__append_1 = aintf08 subdir = f08/rma ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = testlist CONFIG_CLEAN_VPATH_FILES = @BUILD_MPIX_TESTS_TRUE@am__EXEEXT_1 = aintf08$(EXEEXT) PROGRAMS = $(noinst_PROGRAMS) aintf08_SOURCES = aintf08.f90 aintf08_OBJECTS = aintf08.$(OBJEXT) aintf08_LDADD = $(LDADD) aintf08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o baseattrwinf08_SOURCES = baseattrwinf08.f90 baseattrwinf08_OBJECTS = baseattrwinf08.$(OBJEXT) baseattrwinf08_LDADD = $(LDADD) baseattrwinf08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o am_c2f2cwinf08_OBJECTS = c2f2cwinf08.$(OBJEXT) c2f902cwin.$(OBJEXT) c2f2cwinf08_OBJECTS = $(am_c2f2cwinf08_OBJECTS) c2f2cwinf08_LDADD = $(LDADD) c2f2cwinf08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o winaccf08_SOURCES = winaccf08.f90 winaccf08_OBJECTS = winaccf08.$(OBJEXT) winaccf08_LDADD = $(LDADD) winaccf08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o winattr2f08_SOURCES = winattr2f08.f90 winattr2f08_OBJECTS = winattr2f08.$(OBJEXT) winattr2f08_LDADD = $(LDADD) winattr2f08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o winattrf08_SOURCES = winattrf08.f90 winattrf08_OBJECTS = winattrf08.$(OBJEXT) winattrf08_LDADD = $(LDADD) winattrf08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o winerrf08_SOURCES = winerrf08.f90 winerrf08_OBJECTS = winerrf08.$(OBJEXT) winerrf08_LDADD = $(LDADD) winerrf08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o winfencef08_SOURCES = winfencef08.f90 winfencef08_OBJECTS = winfencef08.$(OBJEXT) winfencef08_LDADD = $(LDADD) winfencef08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o wingetf08_SOURCES = wingetf08.f90 wingetf08_OBJECTS = wingetf08.$(OBJEXT) wingetf08_LDADD = $(LDADD) wingetf08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o wingroupf08_SOURCES = wingroupf08.f90 wingroupf08_OBJECTS = wingroupf08.$(OBJEXT) wingroupf08_LDADD = $(LDADD) wingroupf08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o winnamef08_SOURCES = winnamef08.f90 winnamef08_OBJECTS = winnamef08.$(OBJEXT) winnamef08_LDADD = $(LDADD) winnamef08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o winscale1f08_SOURCES = winscale1f08.f90 winscale1f08_OBJECTS = winscale1f08.$(OBJEXT) winscale1f08_LDADD = $(LDADD) winscale1f08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o winscale2f08_SOURCES = winscale2f08.f90 winscale2f08_OBJECTS = winscale2f08.$(OBJEXT) winscale2f08_LDADD = $(LDADD) winscale2f08_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = SOURCES = aintf08.f90 baseattrwinf08.f90 $(c2f2cwinf08_SOURCES) \ winaccf08.f90 winattr2f08.f90 winattrf08.f90 winerrf08.f90 \ winfencef08.f90 wingetf08.f90 wingroupf08.f90 winnamef08.f90 \ winscale1f08.f90 winscale2f08.f90 DIST_SOURCES = aintf08.f90 baseattrwinf08.f90 $(c2f2cwinf08_SOURCES) \ winaccf08.f90 winattr2f08.f90 winattrf08.f90 winerrf08.f90 \ winfencef08.f90 wingetf08.f90 wingroupf08.f90 winnamef08.f90 \ winscale1f08.f90 winscale2f08.f90 am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/testlist.in \ $(top_srcdir)/Makefile_f08.mtest $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F08 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f08/util/mtestf08.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist.in # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 c2f2cwinf08_SOURCES = c2f2cwinf08.f90 c2f902cwin.c all: all-am .SUFFIXES: .SUFFIXES: .c .f90 .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f08.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f08/rma/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f08/rma/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f08.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): testlist: $(top_builddir)/config.status $(srcdir)/testlist.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) aintf08$(EXEEXT): $(aintf08_OBJECTS) $(aintf08_DEPENDENCIES) $(EXTRA_aintf08_DEPENDENCIES) @rm -f aintf08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(aintf08_OBJECTS) $(aintf08_LDADD) $(LIBS) baseattrwinf08$(EXEEXT): $(baseattrwinf08_OBJECTS) $(baseattrwinf08_DEPENDENCIES) $(EXTRA_baseattrwinf08_DEPENDENCIES) @rm -f baseattrwinf08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(baseattrwinf08_OBJECTS) $(baseattrwinf08_LDADD) $(LIBS) c2f2cwinf08$(EXEEXT): $(c2f2cwinf08_OBJECTS) $(c2f2cwinf08_DEPENDENCIES) $(EXTRA_c2f2cwinf08_DEPENDENCIES) @rm -f c2f2cwinf08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(c2f2cwinf08_OBJECTS) $(c2f2cwinf08_LDADD) $(LIBS) winaccf08$(EXEEXT): $(winaccf08_OBJECTS) $(winaccf08_DEPENDENCIES) $(EXTRA_winaccf08_DEPENDENCIES) @rm -f winaccf08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(winaccf08_OBJECTS) $(winaccf08_LDADD) $(LIBS) winattr2f08$(EXEEXT): $(winattr2f08_OBJECTS) $(winattr2f08_DEPENDENCIES) $(EXTRA_winattr2f08_DEPENDENCIES) @rm -f winattr2f08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(winattr2f08_OBJECTS) $(winattr2f08_LDADD) $(LIBS) winattrf08$(EXEEXT): $(winattrf08_OBJECTS) $(winattrf08_DEPENDENCIES) $(EXTRA_winattrf08_DEPENDENCIES) @rm -f winattrf08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(winattrf08_OBJECTS) $(winattrf08_LDADD) $(LIBS) winerrf08$(EXEEXT): $(winerrf08_OBJECTS) $(winerrf08_DEPENDENCIES) $(EXTRA_winerrf08_DEPENDENCIES) @rm -f winerrf08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(winerrf08_OBJECTS) $(winerrf08_LDADD) $(LIBS) winfencef08$(EXEEXT): $(winfencef08_OBJECTS) $(winfencef08_DEPENDENCIES) $(EXTRA_winfencef08_DEPENDENCIES) @rm -f winfencef08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(winfencef08_OBJECTS) $(winfencef08_LDADD) $(LIBS) wingetf08$(EXEEXT): $(wingetf08_OBJECTS) $(wingetf08_DEPENDENCIES) $(EXTRA_wingetf08_DEPENDENCIES) @rm -f wingetf08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(wingetf08_OBJECTS) $(wingetf08_LDADD) $(LIBS) wingroupf08$(EXEEXT): $(wingroupf08_OBJECTS) $(wingroupf08_DEPENDENCIES) $(EXTRA_wingroupf08_DEPENDENCIES) @rm -f wingroupf08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(wingroupf08_OBJECTS) $(wingroupf08_LDADD) $(LIBS) winnamef08$(EXEEXT): $(winnamef08_OBJECTS) $(winnamef08_DEPENDENCIES) $(EXTRA_winnamef08_DEPENDENCIES) @rm -f winnamef08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(winnamef08_OBJECTS) $(winnamef08_LDADD) $(LIBS) winscale1f08$(EXEEXT): $(winscale1f08_OBJECTS) $(winscale1f08_DEPENDENCIES) $(EXTRA_winscale1f08_DEPENDENCIES) @rm -f winscale1f08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(winscale1f08_OBJECTS) $(winscale1f08_LDADD) $(LIBS) winscale2f08$(EXEEXT): $(winscale2f08_OBJECTS) $(winscale2f08_DEPENDENCIES) $(EXTRA_winscale2f08_DEPENDENCIES) @rm -f winscale2f08$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(winscale2f08_OBJECTS) $(winscale2f08_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c2f902cwin.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f08/util/mtestf08.o: $(top_srcdir)/f08/util/mtestf08.f90 (cd $(top_builddir)/f08/util && $(MAKE) mtestf08.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f08/rma/winattr2f08.f900000644000175000017500000000546212620254305020153 0ustar mbanckmbanck! This file created from test/mpi/f77/rma/winattr2f.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! This is a modified version of winattrf.f that uses two of the ! default functions ! program main use mpi_f08 integer errs, ierr integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val integer buf(10) TYPE(MPI_Comm) comm TYPE(MPI_Win) win integer keyval logical flag ! ! The only difference between the MPI-2 and MPI-1 attribute caching ! routines in Fortran is that the take an address-sized integer ! instead of a simple integer. These still are not pointers, ! so the values are still just integers. ! errs = 0 call mtest_init( ierr ) call mpi_comm_dup( MPI_COMM_WORLD, comm, ierr ) ! Create a new window; use val for an address-sized int val = 10 call mpi_win_create( buf, val, 1, & & MPI_INFO_NULL, comm, win, ierr ) ! extrastate = 1001 call mpi_win_create_keyval( MPI_WIN_DUP_FN, & & MPI_WIN_NULL_DELETE_FN, keyval, & & extrastate, ierr ) flag = .true. call mpi_win_get_attr( win, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' get attr returned true when no attr set' endif valin = 2003 call mpi_win_set_attr( win, keyval, valin, ierr ) flag = .false. valout = -1 call mpi_win_get_attr( win, keyval, valout, flag, ierr ) if (valout .ne. 2003) then errs = errs + 1 print *, 'Unexpected value (should be 2003)', valout, & & ' from attr' endif valin = 2001 call mpi_win_set_attr( win, keyval, valin, ierr ) flag = .false. valout = -1 call mpi_win_get_attr( win, keyval, valout, flag, ierr ) if (valout .ne. 2001) then errs = errs + 1 print *, 'Unexpected value (should be 2001)', valout, & & ' from attr' endif ! ! Test the attr delete function call mpi_win_delete_attr( win, keyval, ierr ) flag = .true. call mpi_win_get_attr( win, keyval, valout, flag, ierr ) if (flag) then errs = errs + 1 print *, ' Delete_attr did not delete attribute' endif ! Test the delete function on window free valin = 2001 call mpi_win_set_attr( win, keyval, valin, ierr ) call mpi_win_free( win, ierr ) call mpi_comm_free( comm, ierr ) ierr = -1 call mpi_win_free_keyval( keyval, ierr ) if (ierr .ne. MPI_SUCCESS) then errs = errs + 1 call mtestprinterror( ierr ) endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/rma/wingroupf08.f900000644000175000017500000000245412620254305020251 0ustar mbanckmbanck! This file created from test/mpi/f77/rma/wingroupf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer ierr, errs integer buf(10) integer result, intsize TYPE(MPI_Win) win TYPE(MPI_Group) group1, group2 TYPE(MPI_Comm) comm logical mtestGetIntraComm integer (kind=MPI_ADDRESS_KIND) asize errs = 0 call mtest_init( ierr ) call mpi_type_size( MPI_INTEGER, intsize, ierr ) do while( mtestGetIntraComm( comm, 2, .false. ) ) asize = 10 call mpi_win_create( buf, asize, intsize, & & MPI_INFO_NULL, comm, win, ierr ) call mpi_comm_group( comm, group1, ierr ) call mpi_win_get_group( win, group2, ierr ) call mpi_group_compare( group1, group2, result, ierr ) if (result .ne. MPI_IDENT) then errs = errs + 1 print *, ' Did not get the ident groups' endif call mpi_group_free( group1, ierr ) call mpi_group_free( group2, ierr ) call mpi_win_free( win, ierr ) call mtestFreeComm( comm ) enddo ! call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/rma/baseattrwinf08.f900000644000175000017500000000503712620254305020722 0ustar mbanckmbanck! This file created from test/mpi/f77/rma/baseattrwinf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val logical flag integer ierr, errs integer base(1024) integer disp TYPE(MPI_Win) win integer commsize ! Include addsize defines asize as an address-sized integer integer (kind=MPI_ADDRESS_KIND) asize errs = 0 call mtest_init( ierr ) call mpi_comm_size( MPI_COMM_WORLD, commsize, ierr ) ! Create a window; then extract the values asize = 1024 disp = 4 call MPI_Win_create( base, asize, disp, MPI_INFO_NULL, & & MPI_COMM_WORLD, win, ierr ) ! ! In order to check the base, we need an address-of function. ! We use MPI_Get_address, even though that isn't strictly correct call MPI_Win_get_attr( win, MPI_WIN_BASE, valout, flag, ierr ) if (.not. flag) then errs = errs + 1 print *, "Could not get WIN_BASE" ! ! There is no easy way to get the actual value of base to compare ! against. MPI_Address gives a value relative to MPI_BOTTOM, which ! is different from 0 in Fortran (unless you can define MPI_BOTTOM ! as something like %pointer(0)). ! else ! !C For this Fortran 77 version, we use the older MPI_Address function ! call MPI_Address( base, baseadd, ierr ) ! if (valout .ne. baseadd) then ! errs = errs + 1 ! print *, "Got incorrect value for WIN_BASE (", valout, ! & ", should be ", baseadd, ")" ! endif endif call MPI_Win_get_attr( win, MPI_WIN_SIZE, valout, flag, ierr ) if (.not. flag) then errs = errs + 1 print *, "Could not get WIN_SIZE" else if (valout .ne. asize) then errs = errs + 1 print *, "Got incorrect value for WIN_SIZE (", valout, & & ", should be ", asize, ")" endif endif call MPI_Win_get_attr( win, MPI_WIN_DISP_UNIT, valout, flag, ierr) if (.not. flag) then errs = errs + 1 print *, "Could not get WIN_DISP_UNIT" else if (valout .ne. disp) then errs = errs + 1 print *, "Got wrong value for WIN_DISP_UNIT (", valout, & & ", should be ", disp, ")" endif endif call MPI_Win_free( win, ierr ) call mtest_finalize( errs ) call MPI_Finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/rma/Makefile.am0000644000175000017500000000156712620254305017601 0ustar mbanckmbanck# This Makefile.am generated automatically by f77tof90 # from test/mpi/f77/rma/Makefile.am. DO NOT EDIT # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f08.mtest EXTRA_DIST = testlist.in # avoid having to write many "foo_SOURCES = foo.f90" lines AM_DEFAULT_SOURCE_EXT = .f90 noinst_PROGRAMS = \ winscale1f08 \ winscale2f08 \ winfencef08 \ wingetf08 \ winerrf08 \ winnamef08 \ wingroupf08 \ winaccf08 \ winaccf08 \ c2f2cwinf08 \ baseattrwinf08 \ winattrf08 \ winattr2f08 if BUILD_MPIX_TESTS noinst_PROGRAMS += aintf08 endif ## this test was commented out in the simplemake version... ## allocmem c2f2cwinf08_SOURCES = c2f2cwinf08.f90 c2f902cwin.c mpi-testsuite-3.2+dfsg/f08/rma/testlist.in0000644000175000017500000000027612620254305017744 0ustar mbanckmbanckwinscale1f08 4 winfencef08 4 wingetf08 5 winscale2f08 4 winerrf08 1 winnamef08 1 wingroupf08 4 winaccf08 4 c2f2cwinf08 1 baseattrwinf08 1 winattrf08 1 winattr2f08 1 aintf08 2 mpiversion=3.1 mpi-testsuite-3.2+dfsg/f08/rma/wingetf08.f900000644000175000017500000000606112620254305017672 0ustar mbanckmbanck! This file created from test/mpi/f77/rma/wingetf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer ierr, errs integer intsize TYPE(MPI_Win) win integer left, right, rank, size integer nrows, ncols parameter (nrows=25,ncols=10) integer buf(1:nrows,0:ncols+1) integer ans TYPE(MPI_Comm) comm integer i, j logical mtestGetIntraComm ! Include addsize defines asize as an address-sized integer integer (kind=MPI_ADDRESS_KIND) asize errs = 0 call mtest_init( ierr ) call mpi_type_size( MPI_INTEGER, intsize, ierr ) do while( mtestGetIntraComm( comm, 2, .false. ) ) asize = nrows * (ncols + 2) * intsize call mpi_win_create( buf, asize, intsize * nrows, & & MPI_INFO_NULL, comm, win, ierr ) call mpi_comm_size( comm, size, ierr ) call mpi_comm_rank( comm, rank, ierr ) left = rank - 1 if (left .lt. 0) then left = MPI_PROC_NULL endif right = rank + 1 if (right .ge. size) then right = MPI_PROC_NULL endif ! ! Initialize the buffer do i=1,nrows buf(i,0) = -1 buf(i,ncols+1) = -1 enddo do j=1,ncols do i=1,nrows buf(i,j) = rank * (ncols * nrows) + i + (j-1) * nrows enddo enddo call mpi_win_fence( MPI_MODE_NOPRECEDE, win, ierr ) ! asize = 1 call mpi_get( buf(1,ncols+1), nrows, MPI_INTEGER, right, & & asize, nrows, MPI_INTEGER, win, ierr ) asize = ncols call mpi_get( buf(1,0), nrows, MPI_INTEGER, left, & & asize, nrows, MPI_INTEGER, win, ierr ) ! call mpi_win_fence( MPI_MODE_NOSTORE + MPI_MODE_NOPUT + & & MPI_MODE_NOSUCCEED, win, ierr ) ! ! Check the results if (left .ne. MPI_PROC_NULL) then do i=1, nrows ans = rank * (ncols * nrows) - nrows + i if (buf(i,0) .ne. ans) then errs = errs + 1 if (errs .le. 10) then print *, rank, ' buf(',i,',0) = ', buf(i,0), & & ' expected', ans endif endif enddo endif if (right .ne. MPI_PROC_NULL) then do i=1, nrows ans = (rank + 1)* (ncols * nrows) + i if (buf(i,ncols+1) .ne. ans) then errs = errs + 1 if (errs .le. 10) then print *, rank, ' buf(',i,',',ncols+1,') = ', & & buf(i,ncols+1), ' expected ', ans endif endif enddo endif call mpi_win_free( win, ierr ) call mtestFreeComm( comm ) enddo call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/rma/winaccf08.f900000644000175000017500000000605212620254305017641 0ustar mbanckmbanck! This file created from test/mpi/f77/rma/winaccf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer ierr, errs integer intsize TYPE(MPI_Win) win integer left, right, rank, size integer nrows, ncols parameter (nrows=25,ncols=10) integer buf(1:nrows,0:ncols+1) integer ans TYPE(MPI_Comm) comm integer i, j logical mtestGetIntraComm ! Include addsize defines asize as an address-sized integer integer (kind=MPI_ADDRESS_KIND) asize errs = 0 call mtest_init( ierr ) call mpi_type_size( MPI_INTEGER, intsize, ierr ) do while( mtestGetIntraComm( comm, 2, .false. ) ) asize = nrows * (ncols + 2) * intsize call mpi_win_create( buf, asize, intsize * nrows, & & MPI_INFO_NULL, comm, win, ierr ) call mpi_comm_size( comm, size, ierr ) call mpi_comm_rank( comm, rank, ierr ) left = rank - 1 if (left .lt. 0) then left = MPI_PROC_NULL endif right = rank + 1 if (right .ge. size) then right = MPI_PROC_NULL endif ! ! Initialize the buffer do i=1,nrows buf(i,0) = -1 buf(i,ncols+1) = -1 enddo do j=1,ncols do i=1,nrows buf(i,j) = rank * (ncols * nrows) + i + (j-1) * nrows enddo enddo call mpi_win_fence( MPI_MODE_NOPRECEDE, win, ierr ) ! asize = ncols + 1 call mpi_accumulate( buf(1,1), nrows, MPI_INTEGER, & & left, asize, & & nrows, MPI_INTEGER, MPI_SUM, win, ierr ) asize = 0 call mpi_accumulate( buf(1,ncols), nrows, MPI_INTEGER, right, & & asize, nrows, MPI_INTEGER, MPI_SUM, win, ierr ) ! call mpi_win_fence( MPI_MODE_NOSTORE + MPI_MODE_NOPUT + & & MPI_MODE_NOSUCCEED, win, ierr ) ! ! Check the results if (left .ne. MPI_PROC_NULL) then do i=1, nrows ans = rank * (ncols * nrows) - nrows + i - 1 if (buf(i,0) .ne. ans) then errs = errs + 1 if (errs .le. 10) then print *, ' buf(',i,',0) = ', buf(i,0) endif endif enddo endif if (right .ne. MPI_PROC_NULL) then do i=1, nrows ans = (rank + 1) * (ncols * nrows) + i - 1 if (buf(i,ncols+1) .ne. ans) then errs = errs + 1 if (errs .le. 10) then print *, ' buf(',i,',',ncols+1,') = ', & & buf(i,ncols+1) endif endif enddo endif call mpi_win_free( win, ierr ) call mtestFreeComm( comm ) enddo call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/rma/winerrf08.f900000644000175000017500000001137412620254305017706 0ustar mbanckmbanck! This file created from test/mpi/f77/rma/winerrf.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer errs, ierr, code(2), newerrclass, eclass character*(MPI_MAX_ERROR_STRING) errstring integer rlen, intsize TYPE(MPI_Comm) comm integer buf(10) TYPE(MPI_Win) win external myerrhanfunc TYPE(MPI_Errhandler) myerrhan, qerr integer (kind=MPI_ADDRESS_KIND) asize integer callcount, codesSeen(3) common /myerrhan/ callcount, codesSeen errs = 0 callcount = 0 call mtest_init( ierr ) ! ! Setup some new codes and classes call mpi_add_error_class( newerrclass, ierr ) call mpi_add_error_code( newerrclass, code(1), ierr ) call mpi_add_error_code( newerrclass, code(2), ierr ) call mpi_add_error_string( newerrclass, "New Class", ierr ) call mpi_add_error_string( code(1), "First new code", ierr ) call mpi_add_error_string( code(2), "Second new code", ierr ) ! call mpi_win_create_errhandler( myerrhanfunc, myerrhan, ierr ) ! ! Create a new communicator so that we can leave the default errors-abort ! on MPI_COMM_WORLD. Use this comm for win_create, just to leave a little ! more separation from comm_world ! call mpi_comm_dup( MPI_COMM_WORLD, comm, ierr ) call mpi_type_size( MPI_INTEGER, intsize, ierr ) asize = 10 * intsize call mpi_win_create( buf, asize, intsize, MPI_INFO_NULL, & & comm, win, ierr ) ! call mpi_win_set_errhandler( win, myerrhan, ierr ) call mpi_win_get_errhandler( win, qerr, ierr ) if (qerr .ne. myerrhan) then errs = errs + 1 print *, ' Did not get expected error handler' endif call mpi_errhandler_free( qerr, ierr ) ! We can free our error handler now call mpi_errhandler_free( myerrhan, ierr ) call mpi_win_call_errhandler( win, newerrclass, ierr ) call mpi_win_call_errhandler( win, code(1), ierr ) call mpi_win_call_errhandler( win, code(2), ierr ) if (callcount .ne. 3) then errs = errs + 1 print *, ' Expected 3 calls to error handler, found ', & & callcount else if (codesSeen(1) .ne. newerrclass) then errs = errs + 1 print *, 'Expected class ', newerrclass, ' got ', & & codesSeen(1) endif if (codesSeen(2) .ne. code(1)) then errs = errs + 1 print *, 'Expected code ', code(1), ' got ', & & codesSeen(2) endif if (codesSeen(3) .ne. code(2)) then errs = errs + 1 print *, 'Expected code ', code(2), ' got ', & & codesSeen(3) endif endif call mpi_win_free( win, ierr ) call mpi_comm_free( comm, ierr ) ! ! Check error strings while here here... call mpi_error_string( newerrclass, errstring, rlen, ierr ) if (errstring(1:rlen) .ne. "New Class") then errs = errs + 1 print *, ' Wrong string for error class: ', errstring(1:rlen) endif call mpi_error_class( code(1), eclass, ierr ) if (eclass .ne. newerrclass) then errs = errs + 1 print *, ' Class for new code is not correct' endif call mpi_error_string( code(1), errstring, rlen, ierr ) if (errstring(1:rlen) .ne. "First new code") then errs = errs + 1 print *, ' Wrong string for error code: ', errstring(1:rlen) endif call mpi_error_class( code(2), eclass, ierr ) if (eclass .ne. newerrclass) then errs = errs + 1 print *, ' Class for new code is not correct' endif call mpi_error_string( code(2), errstring, rlen, ierr ) if (errstring(1:rlen) .ne. "Second new code") then errs = errs + 1 print *, ' Wrong string for error code: ', errstring(1:rlen) endif call mtest_finalize( errs ) call mpi_finalize( ierr ) end ! subroutine myerrhanfunc( win, errcode ) use mpi integer win, errcode integer rlen, ierr integer callcount, codesSeen(3) character*(MPI_MAX_ERROR_STRING) errstring common /myerrhan/ callcount, codesSeen callcount = callcount + 1 ! Remember the code we've seen if (callcount .le. 3) then codesSeen(callcount) = errcode endif call mpi_error_string( errcode, errstring, rlen, ierr ) if (ierr .ne. MPI_SUCCESS) then print *, ' Panic! could not get error string' call mpi_abort( MPI_COMM_WORLD, 1, ierr ) endif end mpi-testsuite-3.2+dfsg/f08/rma/winfencef08.f900000644000175000017500000000606412620254305020176 0ustar mbanckmbanck! This file created from test/mpi/f77/rma/winfencef.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer ierr, errs integer intsize TYPE(MPI_Win) win integer left, right, rank, size integer nrows, ncols parameter (nrows=25,ncols=10) integer buf(1:nrows,0:ncols+1) integer ans TYPE(MPI_Comm) comm integer i, j logical mtestGetIntraComm ! Include addsize defines asize as an address-sized integer integer (kind=MPI_ADDRESS_KIND) asize errs = 0 call mtest_init( ierr ) call mpi_type_size( MPI_INTEGER, intsize, ierr ) do while( mtestGetIntraComm( comm, 2, .false. ) ) asize = nrows * (ncols + 2) * intsize call mpi_win_create( buf, asize, intsize * nrows, & & MPI_INFO_NULL, comm, win, ierr ) call mpi_comm_size( comm, size, ierr ) call mpi_comm_rank( comm, rank, ierr ) left = rank - 1 if (left .lt. 0) then left = MPI_PROC_NULL endif right = rank + 1 if (right .ge. size) then right = MPI_PROC_NULL endif ! ! Initialize the buffer do i=1,nrows buf(i,0) = -1 buf(i,ncols+1) = -1 enddo do j=1,ncols do i=1,nrows buf(i,j) = rank * (ncols * nrows) + i + (j-1) * nrows enddo enddo call mpi_win_fence( MPI_MODE_NOPRECEDE, win, ierr ) ! asize = ncols+1 call mpi_put( buf(1,1), nrows, MPI_INTEGER, left, asize, & & nrows, MPI_INTEGER, win, ierr ) asize = 0 call mpi_put( buf(1,ncols), nrows, MPI_INTEGER, right, asize, & & nrows, MPI_INTEGER, win, ierr ) ! call mpi_win_fence( MPI_MODE_NOSTORE + MPI_MODE_NOPUT + & & MPI_MODE_NOSUCCEED, win, ierr ) ! ! Check the results if (left .ne. MPI_PROC_NULL) then do i=1, nrows ans = rank * (ncols * nrows) - nrows + i if (buf(i,0) .ne. ans) then errs = errs + 1 if (errs .le. 10) then print *, rank, ' buf(',i,',0) = ', buf(i,0), & & ' expected', ans endif endif enddo endif if (right .ne. MPI_PROC_NULL) then do i=1, nrows ans = (rank + 1)* (ncols * nrows) + i if (buf(i,ncols+1) .ne. ans) then errs = errs + 1 if (errs .le. 10) then print *, rank, ' buf(',i,',',ncols+1,') = ', & & buf(i,ncols+1), ' expected ', ans endif endif enddo endif call mpi_win_free( win, ierr ) call mtestFreeComm( comm ) enddo call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/rma/winscale1f08.f900000644000175000017500000000673712620254305020275 0ustar mbanckmbanck! This file created from test/mpi/f77/rma/winscale1f.f with f77tof90 ! -*- Mode: Fortran; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 integer ierr, errs integer intsize TYPE(MPI_Win) win integer left, right, rank, size integer nrows, ncols parameter (nrows=25,ncols=10) integer buf(1:nrows,0:ncols+1) integer ans TYPE(MPI_Comm) comm TYPE(MPI_Group) group, group2 integer nneighbors, nbrs(2), i, j logical mtestGetIntraComm ! Include addsize defines asize as an address-sized integer integer (kind=MPI_ADDRESS_KIND) asize errs = 0 call mtest_init( ierr ) call mpi_type_size( MPI_INTEGER, intsize, ierr ) do while( mtestGetIntraComm( comm, 2, .false. ) ) asize = nrows * (ncols + 2) * intsize call mpi_win_create( buf, asize, intsize * nrows, & & MPI_INFO_NULL, comm, win, ierr ) ! Create the group for the neighbors call mpi_comm_size( comm, size, ierr ) call mpi_comm_rank( comm, rank, ierr ) nneighbors = 0 left = rank - 1 if (left .lt. 0) then left = MPI_PROC_NULL else nneighbors = nneighbors + 1 nbrs(nneighbors) = left endif right = rank + 1 if (right .ge. size) then right = MPI_PROC_NULL else nneighbors = nneighbors + 1 nbrs(nneighbors) = right endif call mpi_comm_group( comm, group, ierr ) call mpi_group_incl( group, nneighbors, nbrs, group2, ierr ) call mpi_group_free( group, ierr ) ! ! Initialize the buffer do i=1,nrows buf(i,0) = -1 buf(i,ncols+1) = -1 enddo do j=1,ncols do i=1,nrows buf(i,j) = rank * (ncols * nrows) + i + (j-1) * nrows enddo enddo call mpi_win_post( group2, 0, win, ierr ) call mpi_win_start( group2, 0, win, ierr ) ! asize = ncols+1 call mpi_put( buf(1,1), nrows, MPI_INTEGER, left, asize, & & nrows, MPI_INTEGER, win, ierr ) asize = 0 call mpi_put( buf(1,ncols), nrows, MPI_INTEGER, right, asize, & & nrows, MPI_INTEGER, win, ierr ) ! call mpi_win_complete( win, ierr ) call mpi_win_wait( win, ierr ) ! ! Check the results if (left .ne. MPI_PROC_NULL) then do i=1, nrows ans = rank * (ncols * nrows) - nrows + i if (buf(i,0) .ne. ans) then errs = errs + 1 if (errs .le. 10) then print *, ' buf(',i,'0) = ', buf(i,0) endif endif enddo endif if (right .ne. MPI_PROC_NULL) then do i=1, nrows ans = (rank+1) * (ncols * nrows) + i if (buf(i,ncols+1) .ne. ans) then errs = errs + 1 if (errs .le. 10) then print *, ' buf(',i,',',ncols+1,') = ', & & buf(i,ncols+1) endif endif enddo endif call mpi_group_free( group2, ierr ) call mpi_win_free( win, ierr ) call mtestFreeComm( comm ) enddo call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/topo/0000755000175000017500000000000012621010234015726 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f08/topo/testlist0000644000175000017500000000005612620254305017535 0ustar mbanckmbanckcartcrf90 4 dgraph_wgtf90 4 dgraph_unwgtf90 4 mpi-testsuite-3.2+dfsg/f08/topo/Makefile.in0000644000175000017500000004600112621010234017774 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = cartcrf90$(EXEEXT) dgraph_wgtf90$(EXEEXT) \ dgraph_unwgtf90$(EXEEXT) subdir = f08/topo ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) cartcrf90_SOURCES = cartcrf90.f90 cartcrf90_OBJECTS = cartcrf90.$(OBJEXT) cartcrf90_LDADD = $(LDADD) cartcrf90_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o dgraph_unwgtf90_SOURCES = dgraph_unwgtf90.f90 dgraph_unwgtf90_OBJECTS = dgraph_unwgtf90.$(OBJEXT) dgraph_unwgtf90_LDADD = $(LDADD) dgraph_unwgtf90_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o dgraph_wgtf90_SOURCES = dgraph_wgtf90.f90 dgraph_wgtf90_OBJECTS = dgraph_wgtf90.$(OBJEXT) dgraph_wgtf90_LDADD = $(LDADD) dgraph_wgtf90_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = SOURCES = cartcrf90.f90 dgraph_unwgtf90.f90 dgraph_wgtf90.f90 DIST_SOURCES = cartcrf90.f90 dgraph_unwgtf90.f90 dgraph_wgtf90.f90 am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_f08.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F08 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f08/util/mtestf08.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist AM_DEFAULT_SOURCE_EXT = .f90 all: all-am .SUFFIXES: .SUFFIXES: .f90 .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f08.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f08/topo/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f08/topo/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f08.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) cartcrf90$(EXEEXT): $(cartcrf90_OBJECTS) $(cartcrf90_DEPENDENCIES) $(EXTRA_cartcrf90_DEPENDENCIES) @rm -f cartcrf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(cartcrf90_OBJECTS) $(cartcrf90_LDADD) $(LIBS) dgraph_unwgtf90$(EXEEXT): $(dgraph_unwgtf90_OBJECTS) $(dgraph_unwgtf90_DEPENDENCIES) $(EXTRA_dgraph_unwgtf90_DEPENDENCIES) @rm -f dgraph_unwgtf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(dgraph_unwgtf90_OBJECTS) $(dgraph_unwgtf90_LDADD) $(LIBS) dgraph_wgtf90$(EXEEXT): $(dgraph_wgtf90_OBJECTS) $(dgraph_wgtf90_DEPENDENCIES) $(EXTRA_dgraph_wgtf90_DEPENDENCIES) @rm -f dgraph_wgtf90$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(dgraph_wgtf90_OBJECTS) $(dgraph_wgtf90_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f08/util/mtestf08.o: $(top_srcdir)/f08/util/mtestf08.f90 (cd $(top_builddir)/f08/util && $(MAKE) mtestf08.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f08/topo/Makefile.am0000644000175000017500000000045012620254305017771 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f08.mtest EXTRA_DIST = testlist AM_DEFAULT_SOURCE_EXT = .f90 noinst_PROGRAMS = cartcrf90 dgraph_wgtf90 dgraph_unwgtf90 mpi-testsuite-3.2+dfsg/f08/topo/dgraph_unwgtf90.f900000644000175000017500000001666412620254305021303 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! This program is Fortran version of dgraph_unwgt.c ! Specify a distributed graph of a bidirectional ring of the MPI_COMM_WORLD, ! i.e. everyone only talks to left and right neighbors. logical function validate_dgraph(dgraph_comm) use mpi_f08 type(MPI_Comm) dgraph_comm integer comm_topo integer src_sz, dest_sz integer ierr; logical wgt_flag; integer srcs(2), dests(2) integer world_rank, world_size; integer idx, nbr_sep comm_topo = MPI_UNDEFINED call MPI_Topo_test(dgraph_comm, comm_topo, ierr); if (comm_topo .ne. MPI_DIST_GRAPH) then validate_dgraph = .false. write(6,*) "dgraph_comm is NOT of type MPI_DIST_GRAPH." return endif call MPI_Dist_graph_neighbors_count(dgraph_comm, & & src_sz, dest_sz, wgt_flag, & & ierr) if (ierr .ne. MPI_SUCCESS) then validate_dgraph = .false. write(6,*) "MPI_Dist_graph_neighbors_count() fails!" return endif if (wgt_flag) then validate_dgraph = .false. write(6,*) "dgraph_comm is NOT created with MPI_UNWEIGHTED." return endif if (src_sz .ne. 2 .or. dest_sz .ne. 2) then validate_dgraph = .false. write(6,*) "source or destination edge array is not size 2." write(6,"('src_sz = ',I3,', dest_sz = ',I3)") src_sz, dest_sz return endif call MPI_Dist_graph_neighbors(dgraph_comm, & & src_sz, srcs, MPI_UNWEIGHTED, & & dest_sz, dests, MPI_UNWEIGHTED, & & ierr) if (ierr .ne. MPI_SUCCESS) then validate_dgraph = .false. write(6,*) "MPI_Dist_graph_neighbors() fails!" return endif ! Check if the neighbors returned from MPI are really ! the nearest neighbors that within a ring. call MPI_Comm_rank(MPI_COMM_WORLD, world_rank, ierr) call MPI_Comm_size(MPI_COMM_WORLD, world_size, ierr) do idx = 1, src_sz nbr_sep = iabs(srcs(idx) - world_rank) if (nbr_sep .ne. 1 .and. nbr_sep .ne. (world_size-1)) then validate_dgraph = .false. write(6,"('srcs[',I3,']=',I3, & & ' is NOT a neighbor of my rank',I3)") & & idx, srcs(idx), world_rank return endif enddo do idx = 1, dest_sz nbr_sep = iabs(dests(idx) - world_rank) if (nbr_sep .ne. 1 .and. nbr_sep .ne. (world_size-1)) then validate_dgraph = .false. write(6,"('dests[',I3,']=',I3, & & ' is NOT a neighbor of my rank',I3)") & & idx, dests(idx), world_rank return endif enddo validate_dgraph = .true. return end integer function ring_rank(world_size, in_rank) integer world_size, in_rank if (in_rank .ge. 0 .and. in_rank .lt. world_size) then ring_rank = in_rank return endif if (in_rank .lt. 0 ) then ring_rank = in_rank + world_size return endif if (in_rank .ge. world_size) then ring_rank = in_rank - world_size return endif ring_rank = -99999 return end program dgraph_unwgt use mpi_f08 integer ring_rank external ring_rank logical validate_dgraph external validate_dgraph integer errs, ierr type(MPI_Comm) dgraph_comm integer world_size, world_rank integer src_sz, dest_sz integer degs(1) integer srcs(2), dests(2) errs = 0 call MTEST_Init(ierr) call MPI_Comm_rank(MPI_COMM_WORLD, world_rank, ierr) call MPI_Comm_size(MPI_COMM_WORLD, world_size, ierr) srcs(1) = world_rank degs(1) = 2; dests(1) = ring_rank(world_size, world_rank-1) dests(2) = ring_rank(world_size, world_rank+1) call MPI_Dist_graph_create(MPI_COMM_WORLD, 1, srcs, degs, dests, & & MPI_UNWEIGHTED, MPI_INFO_NULL, & & .true., dgraph_comm, ierr) if (ierr .ne. MPI_SUCCESS) then write(6,*) "MPI_Dist_graph_create() fails!" call MPI_Abort(MPI_COMM_WORLD, 1, ierr) stop endif if (.not. validate_dgraph(dgraph_comm)) then write(6,*) "MPI_Dist_graph_create() does not create" & & //"a bidirectional ring graph!" call MPI_Abort(MPI_COMM_WORLD, 1, ierr) stop endif call MPI_Comm_free(dgraph_comm, ierr) ! now create one with MPI_WEIGHTS_EMPTY ! NOTE that MPI_WEIGHTS_EMPTY was added in MPI-3 and does not ! appear before then. Incluing this test means that this test cannot ! be compiled if the MPI version is less than 3 (see the testlist file) degs(1) = 0; call MPI_Dist_graph_create(MPI_COMM_WORLD, 1, srcs, degs, dests, & & MPI_WEIGHTS_EMPTY, MPI_INFO_NULL, & & .true., dgraph_comm, ierr) if (ierr .ne. MPI_SUCCESS) then write(6,*) "MPI_Dist_graph_create() fails!" call MPI_Abort(MPI_COMM_WORLD, 1, ierr) stop endif call MPI_Comm_free(dgraph_comm, ierr) src_sz = 2 srcs(1) = ring_rank(world_size, world_rank-1) srcs(2) = ring_rank(world_size, world_rank+1) dest_sz = 2 dests(1) = ring_rank(world_size, world_rank-1) dests(2) = ring_rank(world_size, world_rank+1) call MPI_Dist_graph_create_adjacent(MPI_COMM_WORLD, & & src_sz, srcs, & & MPI_UNWEIGHTED, & & dest_sz, dests, & & MPI_UNWEIGHTED, & & MPI_INFO_NULL, .true., & & dgraph_comm, ierr) if (ierr .ne. MPI_SUCCESS) then write(6,*) "MPI_Dist_graph_create_adjacent() fails!" call MPI_Abort(MPI_COMM_WORLD, 1, ierr) stop endif if (.not. validate_dgraph(dgraph_comm)) then write(6,*) "MPI_Dist_graph_create_adjacent() does not create" & & //"a bidirectional ring graph!" call MPI_Abort(MPI_COMM_WORLD, 1, ierr) stop endif call MPI_Comm_free(dgraph_comm, ierr) ! now create one with MPI_WEIGHTS_EMPTY src_sz = 0 dest_sz = 0 call MPI_Dist_graph_create_adjacent(MPI_COMM_WORLD, & & src_sz, srcs, & & MPI_WEIGHTS_EMPTY, & & dest_sz, dests, & & MPI_WEIGHTS_EMPTY, & & MPI_INFO_NULL, .true., & & dgraph_comm, ierr) if (ierr .ne. MPI_SUCCESS) then write(6,*) "MPI_Dist_graph_create_adjacent() fails!" call MPI_Abort(MPI_COMM_WORLD, 1, ierr) stop endif call MPI_Comm_free(dgraph_comm, ierr) call MTEST_Finalize(errs) call MPI_Finalize(ierr) end mpi-testsuite-3.2+dfsg/f08/topo/dgraph_wgtf90.f900000644000175000017500000001514312620254305020727 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! This program is Fortran version of dgraph_unwgt.c ! Specify a distributed graph of a bidirectional ring of the MPI_COMM_WORLD, ! i.e. everyone only talks to left and right neighbors. logical function validate_dgraph(dgraph_comm) use mpi_f08 type(MPI_Comm) dgraph_comm integer comm_topo integer src_sz, dest_sz integer ierr; logical wgt_flag; integer srcs(2), dests(2) integer src_wgts(2), dest_wgts(2) integer world_rank, world_size; integer idx, nbr_sep comm_topo = MPI_UNDEFINED call MPI_Topo_test(dgraph_comm, comm_topo, ierr); if (comm_topo .ne. MPI_DIST_GRAPH) then validate_dgraph = .false. write(6,*) "dgraph_comm is NOT of type MPI_DIST_GRAPH." return endif call MPI_Dist_graph_neighbors_count(dgraph_comm, & & src_sz, dest_sz, wgt_flag, & & ierr) if (ierr .ne. MPI_SUCCESS) then validate_dgraph = .false. write(6,*) "MPI_Dist_graph_neighbors_count() fails!" return endif if (.not. wgt_flag) then validate_dgraph = .false. write(6,*) "dgraph_comm is created with MPI_UNWEIGHTED!" return endif if (src_sz .ne. 2 .or. dest_sz .ne. 2) then validate_dgraph = .false. write(6,*) "source or destination edge array is not size 2." write(6,"('src_sz = ',I3,', dest_sz = ',I3)") src_sz, dest_sz return endif call MPI_Dist_graph_neighbors(dgraph_comm, & & src_sz, srcs, src_wgts, & & dest_sz, dests, dest_wgts, & & ierr) if (ierr .ne. MPI_SUCCESS) then validate_dgraph = .false. write(6,*) "MPI_Dist_graph_neighbors() fails!" return endif ! Check if the neighbors returned from MPI are really ! the nearest neighbors that within a ring. call MPI_Comm_rank(MPI_COMM_WORLD, world_rank, ierr) call MPI_Comm_size(MPI_COMM_WORLD, world_size, ierr) do idx = 1, src_sz nbr_sep = iabs(srcs(idx) - world_rank) if (nbr_sep .ne. 1 .and. nbr_sep .ne. (world_size-1)) then validate_dgraph = .false. write(6,"('srcs[',I3,']=',I3, & & ' is NOT a neighbor of my rank',I3)") & & idx, srcs(idx), world_rank return endif enddo if (src_wgts(1) .ne. src_wgts(2)) then validate_dgraph = .false. write(6,"('src_wgts = [',I3,',',I3,']')") & & src_wgts(1), src_wgts(2) return endif do idx = 1, dest_sz nbr_sep = iabs(dests(idx) - world_rank) if (nbr_sep .ne. 1 .and. nbr_sep .ne. (world_size-1)) then validate_dgraph = .false. write(6,"('dests[',I3,']=',I3, & & ' is NOT a neighbor of my rank',I3)") & & idx, dests(idx), world_rank return endif enddo if (dest_wgts(1) .ne. dest_wgts(2)) then validate_dgraph = .false. write(6,"('dest_wgts = [',I3,',',I3,']')") & & dest_wgts(1), dest_wgts(2) return endif validate_dgraph = .true. return end integer function ring_rank(world_size, in_rank) integer world_size, in_rank if (in_rank .ge. 0 .and. in_rank .lt. world_size) then ring_rank = in_rank return endif if (in_rank .lt. 0 ) then ring_rank = in_rank + world_size return endif if (in_rank .ge. world_size) then ring_rank = in_rank - world_size return endif ring_rank = -99999 return end program dgraph_unwgt use mpi_f08 integer ring_rank external ring_rank logical validate_dgraph external validate_dgraph integer errs, ierr type(MPI_Comm) dgraph_comm integer world_size, world_rank integer src_sz, dest_sz integer degs(1) integer srcs(2), dests(2) integer src_wgts(2), dest_wgts(2) errs = 0 call MTEST_Init(ierr) call MPI_Comm_rank(MPI_COMM_WORLD, world_rank, ierr) call MPI_Comm_size(MPI_COMM_WORLD, world_size, ierr) srcs(1) = world_rank degs(1) = 2; dests(1) = ring_rank(world_size, world_rank-1) dests(2) = ring_rank(world_size, world_rank+1) dest_wgts(1) = 1 dest_wgts(2) = 1 call MPI_Dist_graph_create(MPI_COMM_WORLD, 1, srcs, degs, dests, & & dest_wgts, MPI_INFO_NULL, & & .true., dgraph_comm, ierr) if (ierr .ne. MPI_SUCCESS) then write(6,*) "MPI_Dist_graph_create() fails!" call MPI_Abort(MPI_COMM_WORLD, 1, ierr) stop endif if (.not. validate_dgraph(dgraph_comm)) then write(6,*) "MPI_Dist_graph_create() does not create " & & //"a bidirectional ring graph!" call MPI_Abort(MPI_COMM_WORLD, 1, ierr) stop endif call MPI_Comm_free(dgraph_comm, ierr) src_sz = 2 srcs(1) = ring_rank(world_size, world_rank-1) srcs(2) = ring_rank(world_size, world_rank+1) src_wgts(1) = 1 src_wgts(2) = 1 dest_sz = 2 dests(1) = ring_rank(world_size, world_rank-1) dests(2) = ring_rank(world_size, world_rank+1) dest_wgts(1) = 1 dest_wgts(2) = 1 call MPI_Dist_graph_create_adjacent(MPI_COMM_WORLD, & & src_sz, srcs, src_wgts, & & dest_sz, dests, dest_wgts, & & MPI_INFO_NULL, .true., & & dgraph_comm, ierr) if (ierr .ne. MPI_SUCCESS) then write(6,*) "MPI_Dist_graph_create_adjacent() fails!" call MPI_Abort(MPI_COMM_WORLD, 1, ierr) stop endif if (.not. validate_dgraph(dgraph_comm)) then write(6,*) "MPI_Dist_graph_create_adjacent() does not create " & & //"a bidirectional ring graph!" call MPI_Abort(MPI_COMM_WORLD, 1, ierr) stop endif call MPI_Comm_free(dgraph_comm, ierr) call MTEST_Finalize(errs) call MPI_Finalize(ierr) end mpi-testsuite-3.2+dfsg/f08/topo/cartcrf90.f900000644000175000017500000000666412620254305020067 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! Test various combinations of periodic and non-periodic Cartesian ! communicators ! program main use mpi_f08 integer errs, ierr integer ndims, nperiods, i, size integer source, dest type(mpi_comm) comm, newcomm integer maxdims parameter (maxdims=7) logical periods(maxdims), outperiods(maxdims) integer dims(maxdims), outdims(maxdims) integer outcoords(maxdims) errs = 0 call mtest_init( ierr ) ! ! For upto 6 dimensions, test with periodicity in 0 through all ! dimensions. The test is computed by both: ! get info about the created communicator ! apply cart shift ! Note that a dimension can have size one, so that these tests ! can work with small numbers (even 1) of processes ! comm = MPI_COMM_WORLD call mpi_comm_size( comm, size, ierr ) do ndims = 1, 6 do nperiods = 0, ndims do i=1,ndims periods(i) = .false. dims(i) = 0 enddo do i=1,nperiods periods(i) = .true. enddo call mpi_dims_create( size, ndims, dims, ierr ) call mpi_cart_create( comm, ndims, dims, periods, .false., & & newcomm, ierr ) if (newcomm .ne. MPI_COMM_NULL) then call mpi_cart_get( newcomm, maxdims, outdims, outperiods, & & outcoords, ierr ) ! print *, 'Coords = ' do i=1, ndims ! print *, i, '(', outcoords(i), ')' if (periods(i) .neqv. outperiods(i)) then errs = errs + 1 print *, ' Wrong value for periods ', i print *, ' ndims = ', ndims endif enddo do i=1, ndims call mpi_cart_shift( newcomm, i-1, 1, source, dest, & & ierr ) if (outcoords(i) .eq. outdims(i)-1) then if (periods(i)) then if (dest .eq. MPI_PROC_NULL) then errs = errs + 1 print *, 'Expected rank, got proc_null' endif else if (dest .ne. MPI_PROC_NULL) then errs = errs + 1 print *, 'Expected procnull, got ', dest endif endif endif call mpi_cart_shift( newcomm, i-1, -1, source, dest, & & ierr ) if (outcoords(i) .eq. 0) then if (periods(i)) then if (dest .eq. MPI_PROC_NULL) then errs = errs + 1 print *, 'Expected rank, got proc_null' endif else if (dest .ne. MPI_PROC_NULL) then errs = errs + 1 print *, 'Expected procnull, got ', dest endif endif endif enddo call mpi_comm_free( newcomm, ierr ) endif enddo enddo call mtest_finalize( errs ) call mpi_finalize( ierr ) end mpi-testsuite-3.2+dfsg/f08/subarray/0000755000175000017500000000000012621010234016575 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/f08/subarray/test4.f900000644000175000017500000000376312620254305020201 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 implicit none integer :: size, rank, ierr, errs logical :: verbose common /flags/ verbose character (len=10) :: name='test4' character (len=80) :: title='test 4: Send/Recv array slice with stride - iar(2:8:2)' integer :: i integer, dimension(10) :: iar, iar_check type(MPI_Status) status errs = 0 verbose = .false. call MTest_Init(ierr) call mpi_comm_size(MPI_COMM_WORLD, size, ierr) call mpi_comm_rank(MPI_COMM_WORLD, rank, ierr) if (rank .eq. 0) then if (verbose) print *, ' ===== ', trim(title), ' =====' do i=1,10 iar(i)=i end do call mpi_send(iar(2:8:2), 4, MPI_INTEGER, 1, 789, MPI_COMM_WORLD, ierr); if (ierr .ne. MPI_SUCCESS) then print *,"PE ",rank,": ",name,": mpi_send exited in error (",ierr,")" errs = errs + 1 endif else if (rank .eq. 1) then do i=1,10 iar(i)=0 iar_check(i)=0 end do do i=2,8,2 iar_check(i)=i end do call mpi_recv(iar(2:8:2), 4, MPI_INTEGER, 0, 789, MPI_COMM_WORLD, status, ierr); if (ierr .ne. MPI_SUCCESS) then print *,"PE ",rank,": ",name,"mpi_recv exited in error (",ierr,")" errs = errs + 1 endif do i=1,10 if (iar(i) .ne. iar_check(i)) then print *, "rank 1: iar(", i, ")=", iar(i), ", expected ",iar_check(i) errs = errs + 1 endif end do if (errs .eq. 0) then if (verbose) print *, "PE ", rank,": PASS - ", trim(title) else print *, "PE ", rank,": FAIL - ", trim(title) endif if (verbose) print *, iar(1), iar(2), iar(3), iar(4), iar(5), iar(6), iar(7), iar(8), iar(9) endif call MTest_Finalize(errs) call MPI_Finalize(ierr) end program mpi-testsuite-3.2+dfsg/f08/subarray/test15.f900000644000175000017500000000621012620254305020251 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 implicit none integer :: size, rank, ierr, errs logical :: verbose common /flags/ verbose character (len=10) :: name='test15' character (len=80) :: title='test 15: Isend/Irecv 2d array column slice - iar_2d(1:7:3,2:6:2)' integer :: i, j integer, dimension(9,9) :: iar_2d, iar_2dch type(MPI_Status) status type(MPI_Request) request errs = 0 verbose = .false. call MTest_Init(ierr) call mpi_comm_size(MPI_COMM_WORLD, size, ierr) call mpi_comm_rank(MPI_COMM_WORLD, rank, ierr) if (rank .eq. 0) then if (verbose) print *, ' ===== ', trim(title), ' =====' do i=1,9 do j=1,9 iar_2d(j,i) = (j * 10) + i end do end do do j=1,9 if (verbose) print *, (iar_2d(i,j),i=1,9) end do else do i=1,9 do j=1,9 iar_2d(j,i) = 0 iar_2dch(j,i) = 0 end do end do do i=2,6,2 do j=1,7,3 iar_2dch(j,i) = (j * 10) + i end do end do endif if (rank .eq. 0) then block ASYNCHRONOUS :: iar_2d call mpi_isend(iar_2d(1:7:3,2:6:2), 9, MPI_INTEGER, 1, 123, MPI_COMM_WORLD, request, ierr); if (ierr .ne. MPI_SUCCESS) then if (verbose) print *,"PE ",rank,": ",name,": mpi_isend exited in error (",ierr,")" errs = errs + 1 endif call mpi_wait(request, status, ierr) if (ierr .ne. MPI_SUCCESS) then if (verbose) print *,"PE ",rank,": ",name,": mpi_wait exited in error (",ierr,")" errs = errs + 1 endif end block else if (rank .eq. 1) then block ASYNCHRONOUS :: iar_2d call mpi_irecv(iar_2d(1:7:3,2:6:2), 9, MPI_INTEGER, 0, 123, MPI_COMM_WORLD, request, ierr); if (ierr .ne. MPI_SUCCESS) then if (verbose) print *,"PE ",rank,": ",name,"mpi_irecv exited in error (",ierr,")" errs = errs + 1 endif call mpi_wait(request, status, ierr) if (ierr .ne. MPI_SUCCESS) then if (verbose) print *,"PE ",rank,": ",name,": mpi_wait exited in error (",ierr,")" errs = errs + 1 endif end block do i=2,6,2 do j=1,7,3 if (iar_2d(j,i) .ne. iar_2dch(j,i)) then if (verbose) print *, "rank 1: iar_2d(", j, ",", i, ")=", iar_2d(j,i), ", expected ", iar_2dch(j,i) errs = errs + 1 endif end do end do if (errs .eq. 0) then if (verbose) print *, "PE ", rank,": PASS - ", trim(title) else if (verbose) print *, "PE ", rank,": FAIL - ", trim(title) endif do j=1,9 if (verbose) print *, (iar_2d(i,j),i=1,9) end do endif call MTest_Finalize(errs) call MPI_Finalize(ierr) end program mpi-testsuite-3.2+dfsg/f08/subarray/test5.f900000644000175000017500000000457212620254305020201 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 implicit none integer :: size, rank, ierr, errs logical :: verbose common /flags/ verbose character (len=10) :: name='test5' character (len=80) :: title='test 5: Send/Recv 2d array - iar(9,9)' integer :: i, j integer, dimension(9,9) :: iar_2d type(MPI_Status) status errs = 0 verbose = .false. call MTest_Init(ierr) call mpi_comm_size(MPI_COMM_WORLD, size, ierr) call mpi_comm_rank(MPI_COMM_WORLD, rank, ierr) if (rank .eq. 0) then if (verbose) print *, ' ===== ', trim(title), ' =====' do i=1,9 do j=1,9 iar_2d(j,i) = (j * 10) + i end do end do do j=1,9 if (verbose) print *, (iar_2d(i,j),i=1,9) end do else do i=1,9 do j=1,9 iar_2d(j,i) = 0 end do end do endif call MPI_Barrier(MPI_COMM_WORLD, ierr); if (ierr .ne. MPI_SUCCESS) then print *,"PE ",rank,": ",name,": A: mpi_barrier exited in error (",ierr,")" errs = errs + 1 endif if (rank .eq. 0) then call mpi_send(iar_2d, 81, MPI_INTEGER, 1, 890, MPI_COMM_WORLD, ierr); if (ierr .ne. MPI_SUCCESS) then print *,"PE ",rank,": ",name,": mpi_send exited in error (",ierr,")" errs = errs + 1 endif else if (rank .eq. 1) then call mpi_recv(iar_2d, 81, MPI_INTEGER, 0, 890, MPI_COMM_WORLD, status, ierr); if (ierr .ne. MPI_SUCCESS) then print *,"PE ",rank,": ",name,"mpi_recv exited in error (",ierr,")" errs = errs + 1 endif do i=1,9 do j=1,9 if (iar_2d(j,i) .ne. (j * 10) + i) then print *, "rank 1: iar_2d(", j, ",", i, ")=", iar_2d(j,i), ", expected ", (j * 10) + i errs = errs + 1 endif end do end do if (errs .eq. 0) then if (verbose) print *, "PE ", rank,": PASS - ", trim(title) else print *, "PE ", rank,": FAIL - ", trim(title) endif do j=1,9 if (verbose) print *, (iar_2d(i,j),i=1,9) end do endif call MTest_Finalize(errs) call MPI_Finalize(ierr) end program mpi-testsuite-3.2+dfsg/f08/subarray/test3.f900000644000175000017500000000376012620254305020175 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 implicit none integer :: size, rank, ierr, errs logical :: verbose common /flags/ verbose character (len=10) :: name='test3' character (len=80) :: title='test3 : Send/Recv array slice - iar(2:7)' integer :: i integer, dimension(10) :: iar, iar_check type(MPI_Status) status errs = 0 verbose = .false. call MTest_Init(ierr) call mpi_comm_size(MPI_COMM_WORLD, size, ierr) call mpi_comm_rank(MPI_COMM_WORLD, rank, ierr) if (rank .eq. 0) then if (verbose) print *, ' ===== ', trim(title), ' =====' do i=1,10 iar(i)=i end do call mpi_send(iar(2:7), 6, MPI_INTEGER, 1, 678, MPI_COMM_WORLD, ierr); if (ierr .ne. MPI_SUCCESS) then print *,"PE ",rank,": ",name,": mpi_send exited in error (",ierr,")" errs = errs + 1 endif else if (rank .eq. 1) then do i=1,10 iar(i)=0 iar_check(i)=0 end do do i=2,7 iar_check(i)=i end do call mpi_recv(iar(2:7), 6, MPI_INTEGER, 0, 678, MPI_COMM_WORLD, status, ierr); if (ierr .ne. MPI_SUCCESS) then print *,"PE ",rank,": ",name,"mpi_recv exited in error (",ierr,")" errs = errs + 1 endif do i=1,10 if (iar(i) .ne. iar_check(i)) then print *, "rank 1: iar(", i, ")=", iar(i), ", expected ",iar_check(i) errs = errs + 1 endif end do if (errs .eq. 0) then if (verbose) print *, "PE ", rank,": PASS - test 3 - ", trim(title) else print *, "PE ", rank,": FAIL - test 3 - ", trim(title) endif if (verbose) print *, iar(1), iar(2), iar(3), iar(4), iar(5), iar(6), iar(7), iar(8), iar(9) endif call MTest_Finalize(errs) call MPI_Finalize(ierr) end program mpi-testsuite-3.2+dfsg/f08/subarray/test11.f900000644000175000017500000000504412620254305020251 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 implicit none integer :: size, rank, ierr, errs logical :: verbose common /flags/ verbose character (len=10) :: name='test11' character (len=80) :: title='test 11: Isend/Irecv - 1d array - iar(10)' integer :: sint, i integer, dimension(10) :: iar type(MPI_Request) request type(MPI_Status) status errs = 0 verbose = .false. call MTest_Init(ierr) call mpi_comm_size(MPI_COMM_WORLD, size, ierr) call mpi_comm_rank(MPI_COMM_WORLD, rank, ierr) if (rank .eq. 0) then if (verbose) print *, ' ===== ', trim(title), ' =====' do i=1,10 iar(i)=i end do block ASYNCHRONOUS :: iar call mpi_isend(iar, 10, MPI_INTEGER, 1, 567, MPI_COMM_WORLD, request, ierr); if (ierr .ne. MPI_SUCCESS) then if (verbose) print *,"PE ",rank,": ",name,": mpi_isend exited in error (",ierr,")" errs = errs + 1 endif call mpi_wait(request, status, ierr) if (ierr .ne. MPI_SUCCESS) then if (verbose) print *,"PE ",rank,": ",name,": mpi_wait exited in error (",ierr,")" errs = errs + 1 endif end block else if (rank .eq. 1) then block ASYNCHRONOUS :: iar call mpi_irecv(iar, 10, MPI_INTEGER, 0, 567, MPI_COMM_WORLD, request, ierr); if (ierr .ne. MPI_SUCCESS) then if (verbose) print *,"PE ",rank,": ",name,"mpi_irecv exited in error (",ierr,")" errs = errs + 1 endif call mpi_wait(request, status, ierr) if (ierr .ne. MPI_SUCCESS) then if (verbose) print *,"PE ",rank,": ",name,": mpi_wait exited in error (",ierr,")" errs = errs + 1 endif end block do i=1,10 if (iar(i) .ne. i) then if (verbose) print *, "rank 1: iar(", i, ")=", iar(i), ", expected ",i errs = errs + 1 endif end do if (errs .eq. 0) then if (verbose) print *, "PE ", rank,": PASS - ", trim(title) else if (verbose) print *, "PE ", rank,": FAIL - ", trim(title) endif if (verbose) print *, iar(1), iar(2), iar(3), iar(4), iar(5), iar(6), iar(7), iar(8), iar(9) endif call MTest_Finalize(errs) call MPI_Finalize(ierr) end program mpi-testsuite-3.2+dfsg/f08/subarray/test10.f900000644000175000017500000000440012620254305020243 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 implicit none integer :: size, rank, ierr, errs logical :: verbose common /flags/ verbose character*8 :: name='test10' character*80 :: title='test 10: Isend/Irecv - send integer' integer :: sint, i integer, dimension(10) :: iar type(MPI_Request) request type(MPI_Status) status errs = 0 verbose = .false. call MTest_Init(ierr) call mpi_comm_size(MPI_COMM_WORLD, size, ierr) call mpi_comm_rank(MPI_COMM_WORLD, rank, ierr) if (rank .eq. 0) then sint = 789 if (verbose) then print *, ' ===== ', trim(title), ' =====' print *, "rank 0 sends ", sint endif block ASYNCHRONOUS :: sint call mpi_isend(sint, 1, MPI_INTEGER, 1, 567, MPI_COMM_WORLD, request, ierr); if (ierr .ne. MPI_SUCCESS) then print *,"PE ",rank,": ",name,": mpi_isend exited in error (",ierr,")" errs = errs + 1 endif call mpi_wait(request, status, ierr) if (ierr .ne. MPI_SUCCESS) then print *,"PE ",rank,": ",name,": mpi_wait exited in error (",ierr,")" errs = errs + 1 endif end block else block ASYNCHRONOUS :: sint call mpi_irecv(sint, 1, MPI_INTEGER, 0, 567, MPI_COMM_WORLD, request, ierr); if (ierr .ne. MPI_SUCCESS) then print *,"PE ",rank,": ",name,"mpi_irecv exited in error (",ierr,")" errs = errs + 1 endif call mpi_wait(request, status, ierr) if (ierr .ne. MPI_SUCCESS) then print *,"PE ",rank,": ",name,": mpi_wait exited in error (",ierr,")" errs = errs + 1 endif end block if (verbose) print *, "rank 1 receives ",sint if (sint .eq. 789) then if (verbose) print *, "PE ", rank,": PASS - ", trim(title) else print *, "PE ", rank,": FAIL - ", trim(title) errs = errs + 1 endif endif call MTest_Finalize(errs) call MPI_Finalize(ierr) end program mpi-testsuite-3.2+dfsg/f08/subarray/test2.f900000644000175000017500000000345112620254305020171 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 implicit none integer :: size, rank, ierr, errs logical :: verbose common /flags/ verbose character (len=10) :: name='test2' character (len=80) :: title='test2 : Send/Recv - 1d array - iar(10)' integer :: i integer, dimension(10) :: iar type(MPI_Status) status errs = 0 verbose = .false. call MTest_Init(ierr) call mpi_comm_size(MPI_COMM_WORLD, size, ierr) call mpi_comm_rank(MPI_COMM_WORLD, rank, ierr) if (rank .eq. 0) then if (verbose) print *, ' ===== ', trim(title), ' =====' do i=1,10 iar(i)=i end do call mpi_send(iar, 10, MPI_INTEGER, 1, 567, MPI_COMM_WORLD, ierr); if (ierr .ne. MPI_SUCCESS) then print *,"PE ",rank,": ",name,": mpi_send exited in error (",ierr,")" errs = errs + 1 endif else if (rank .eq. 1) then call mpi_recv(iar, 10, MPI_INTEGER, 0, 567, MPI_COMM_WORLD, status, ierr); if (ierr .ne. MPI_SUCCESS) then print *,"PE ",rank,": ",name,"mpi_recv exited in error (",ierr,")" errs = errs + 1 endif do i=1,10 if (iar(i) .ne. i) then print *, "rank 1: iar(", i, ")=", iar(i), ", expected ",i errs = errs + 1 endif end do if (errs .eq. 0) then if (verbose) print *, "PE ", rank,": PASS - ", trim(title) else print *, "PE ", rank,": FAIL - ", trim(title) endif if (verbose) print *, iar(1), iar(2), iar(3), iar(4), iar(5), iar(6), iar(7), iar(8), iar(9) endif call MTest_Finalize(errs) call MPI_Finalize(ierr) end program mpi-testsuite-3.2+dfsg/f08/subarray/testlist0000644000175000017500000000022612620254305020403 0ustar mbanckmbancktest1 2 test2 2 test3 2 test4 2 test5 2 test6 2 test7 2 test8 2 test9 2 test10 2 test11 2 test12 2 test13 2 test14 2 test15 2 mpi-testsuite-3.2+dfsg/f08/subarray/Makefile.in0000644000175000017500000005550212621010234020651 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = test1$(EXEEXT) test2$(EXEEXT) test3$(EXEEXT) \ test4$(EXEEXT) test5$(EXEEXT) test6$(EXEEXT) test7$(EXEEXT) \ test8$(EXEEXT) test9$(EXEEXT) test10$(EXEEXT) test11$(EXEEXT) \ test12$(EXEEXT) test13$(EXEEXT) test14$(EXEEXT) \ test15$(EXEEXT) subdir = f08/subarray ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) test1_SOURCES = test1.f90 test1_OBJECTS = test1.$(OBJEXT) test1_LDADD = $(LDADD) test1_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o test10_SOURCES = test10.f90 test10_OBJECTS = test10.$(OBJEXT) test10_LDADD = $(LDADD) test10_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o test11_SOURCES = test11.f90 test11_OBJECTS = test11.$(OBJEXT) test11_LDADD = $(LDADD) test11_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o test12_SOURCES = test12.f90 test12_OBJECTS = test12.$(OBJEXT) test12_LDADD = $(LDADD) test12_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o test13_SOURCES = test13.f90 test13_OBJECTS = test13.$(OBJEXT) test13_LDADD = $(LDADD) test13_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o test14_SOURCES = test14.f90 test14_OBJECTS = test14.$(OBJEXT) test14_LDADD = $(LDADD) test14_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o test15_SOURCES = test15.f90 test15_OBJECTS = test15.$(OBJEXT) test15_LDADD = $(LDADD) test15_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o test2_SOURCES = test2.f90 test2_OBJECTS = test2.$(OBJEXT) test2_LDADD = $(LDADD) test2_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o test3_SOURCES = test3.f90 test3_OBJECTS = test3.$(OBJEXT) test3_LDADD = $(LDADD) test3_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o test4_SOURCES = test4.f90 test4_OBJECTS = test4.$(OBJEXT) test4_LDADD = $(LDADD) test4_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o test5_SOURCES = test5.f90 test5_OBJECTS = test5.$(OBJEXT) test5_LDADD = $(LDADD) test5_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o test6_SOURCES = test6.f90 test6_OBJECTS = test6.$(OBJEXT) test6_LDADD = $(LDADD) test6_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o test7_SOURCES = test7.f90 test7_OBJECTS = test7.$(OBJEXT) test7_LDADD = $(LDADD) test7_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o test8_SOURCES = test8.f90 test8_OBJECTS = test8.$(OBJEXT) test8_LDADD = $(LDADD) test8_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o test9_SOURCES = test9.f90 test9_OBJECTS = test9.$(OBJEXT) test9_LDADD = $(LDADD) test9_DEPENDENCIES = $(top_builddir)/f08/util/mtestf08.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS) AM_V_FC = $(am__v_FC_@AM_V@) am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@) am__v_FC_0 = @echo " FC " $@; am__v_FC_1 = FCLD = $(FC) FCLINK = $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_FCLD = $(am__v_FCLD_@AM_V@) am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@) am__v_FCLD_0 = @echo " FCLD " $@; am__v_FCLD_1 = SOURCES = test1.f90 test10.f90 test11.f90 test12.f90 test13.f90 \ test14.f90 test15.f90 test2.f90 test3.f90 test4.f90 test5.f90 \ test6.f90 test7.f90 test8.f90 test9.f90 DIST_SOURCES = test1.f90 test10.f90 test11.f90 test12.f90 test13.f90 \ test14.f90 test15.f90 test2.f90 test3.f90 test4.f90 test5.f90 \ test6.f90 test7.f90 test8.f90 test9.f90 am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_f08.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F08 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/f08/util/mtestf08.o # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist AM_DEFAULT_SOURCE_EXT = .f90 all: all-am .SUFFIXES: .SUFFIXES: .f90 .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_f08.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign f08/subarray/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign f08/subarray/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_f08.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) test1$(EXEEXT): $(test1_OBJECTS) $(test1_DEPENDENCIES) $(EXTRA_test1_DEPENDENCIES) @rm -f test1$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(test1_OBJECTS) $(test1_LDADD) $(LIBS) test10$(EXEEXT): $(test10_OBJECTS) $(test10_DEPENDENCIES) $(EXTRA_test10_DEPENDENCIES) @rm -f test10$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(test10_OBJECTS) $(test10_LDADD) $(LIBS) test11$(EXEEXT): $(test11_OBJECTS) $(test11_DEPENDENCIES) $(EXTRA_test11_DEPENDENCIES) @rm -f test11$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(test11_OBJECTS) $(test11_LDADD) $(LIBS) test12$(EXEEXT): $(test12_OBJECTS) $(test12_DEPENDENCIES) $(EXTRA_test12_DEPENDENCIES) @rm -f test12$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(test12_OBJECTS) $(test12_LDADD) $(LIBS) test13$(EXEEXT): $(test13_OBJECTS) $(test13_DEPENDENCIES) $(EXTRA_test13_DEPENDENCIES) @rm -f test13$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(test13_OBJECTS) $(test13_LDADD) $(LIBS) test14$(EXEEXT): $(test14_OBJECTS) $(test14_DEPENDENCIES) $(EXTRA_test14_DEPENDENCIES) @rm -f test14$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(test14_OBJECTS) $(test14_LDADD) $(LIBS) test15$(EXEEXT): $(test15_OBJECTS) $(test15_DEPENDENCIES) $(EXTRA_test15_DEPENDENCIES) @rm -f test15$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(test15_OBJECTS) $(test15_LDADD) $(LIBS) test2$(EXEEXT): $(test2_OBJECTS) $(test2_DEPENDENCIES) $(EXTRA_test2_DEPENDENCIES) @rm -f test2$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(test2_OBJECTS) $(test2_LDADD) $(LIBS) test3$(EXEEXT): $(test3_OBJECTS) $(test3_DEPENDENCIES) $(EXTRA_test3_DEPENDENCIES) @rm -f test3$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(test3_OBJECTS) $(test3_LDADD) $(LIBS) test4$(EXEEXT): $(test4_OBJECTS) $(test4_DEPENDENCIES) $(EXTRA_test4_DEPENDENCIES) @rm -f test4$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(test4_OBJECTS) $(test4_LDADD) $(LIBS) test5$(EXEEXT): $(test5_OBJECTS) $(test5_DEPENDENCIES) $(EXTRA_test5_DEPENDENCIES) @rm -f test5$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(test5_OBJECTS) $(test5_LDADD) $(LIBS) test6$(EXEEXT): $(test6_OBJECTS) $(test6_DEPENDENCIES) $(EXTRA_test6_DEPENDENCIES) @rm -f test6$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(test6_OBJECTS) $(test6_LDADD) $(LIBS) test7$(EXEEXT): $(test7_OBJECTS) $(test7_DEPENDENCIES) $(EXTRA_test7_DEPENDENCIES) @rm -f test7$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(test7_OBJECTS) $(test7_LDADD) $(LIBS) test8$(EXEEXT): $(test8_OBJECTS) $(test8_DEPENDENCIES) $(EXTRA_test8_DEPENDENCIES) @rm -f test8$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(test8_OBJECTS) $(test8_LDADD) $(LIBS) test9$(EXEEXT): $(test9_OBJECTS) $(test9_DEPENDENCIES) $(EXTRA_test9_DEPENDENCIES) @rm -f test9$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(test9_OBJECTS) $(test9_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .f90.o: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) $< .f90.obj: $(AM_V_FC)$(FCCOMPILE) -c -o $@ $(FCFLAGS_f90) `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/f08/util/mtestf08.o: $(top_srcdir)/f08/util/mtestf08.f90 (cd $(top_builddir)/f08/util && $(MAKE) mtestf08.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/f08/subarray/test7.f900000644000175000017500000000507312620254305020200 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 implicit none integer :: size, rank, ierr, errs logical :: verbose common /flags/ verbose character (len=10) :: name='test7' character (len=80) :: title='test 7: Send/Recv 2d array row - iar_2d(6,:)' integer :: i, j integer, dimension(9,9) :: iar_2d, iar_2dch type(MPI_Status) status errs = 0 verbose = .false. call MTest_Init(ierr) call mpi_comm_size(MPI_COMM_WORLD, size, ierr) call mpi_comm_rank(MPI_COMM_WORLD, rank, ierr) if (rank .eq. 0) then if (verbose) print *, ' ===== ', trim(title), ' =====' do i=1,9 do j=1,9 iar_2d(j,i) = (j * 10) + i end do end do do j=1,9 if (verbose) print *, (iar_2d(i,j),i=1,9) end do else do i=1,9 do j=1,9 iar_2d(j,i) = 0 iar_2dch(j,i) = 0 end do end do do i=1,9 do j=6,6 iar_2dch(j,i) = (j * 10) + i end do end do endif call MPI_Barrier(MPI_COMM_WORLD, ierr); if (ierr .ne. MPI_SUCCESS) then print *,"PE ",rank,": ",name,": A: mpi_barrier exited in error (",ierr,")" errs = errs + 1 endif if (rank .eq. 0) then call mpi_send(iar_2d(6,:), 9, MPI_INTEGER, 1, 890, MPI_COMM_WORLD, ierr); if (ierr .ne. MPI_SUCCESS) then print *,"PE ",rank,": ",name,": mpi_send exited in error (",ierr,")" errs = errs + 1 endif else if (rank .eq. 1) then call mpi_recv(iar_2d(6,:), 9, MPI_INTEGER, 0, 890, MPI_COMM_WORLD, status, ierr); if (ierr .ne. MPI_SUCCESS) then print *,"PE ",rank,": ",name,"mpi_recv exited in error (",ierr,")" errs = errs + 1 endif do i=1,9 do j=1,9 if (iar_2d(j,i) .ne. iar_2dch(j,i)) then if (verbose) print *, "rank 1: iar_2d(", j, ",", i, ")=", iar_2d(j,i), ", expected ", iar_2dch(j,i) errs = errs + 1 endif end do end do if (errs .eq. 0) then if (verbose) print *, "PE ", rank,": PASS - ", trim(title) else print *, "PE ", rank,": FAIL - ", trim(title) endif do j=1,9 if (verbose) print *, (iar_2d(i,j),i=1,9) end do endif call MTest_Finalize(errs) call MPI_Finalize(ierr) end program mpi-testsuite-3.2+dfsg/f08/subarray/test9.f900000644000175000017500000000462012620254305020177 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 implicit none integer :: size, rank, ierr, errs logical :: verbose common /flags/ verbose character (len=10) :: name='test9' character (len=80) :: title='test 9: Send/Recv 2d array column slice - iar_2d(1:7:3,2:6:2)' integer :: i, j integer, dimension(9,9) :: iar_2d, iar_2dch type(MPI_Status) status errs = 0 verbose = .false. call MTest_Init(ierr) call mpi_comm_size(MPI_COMM_WORLD, size, ierr) call mpi_comm_rank(MPI_COMM_WORLD, rank, ierr) if (rank .eq. 0) then if (verbose) print *, ' ===== ', trim(title), ' =====' do i=1,9 do j=1,9 iar_2d(j,i) = (j * 10) + i end do end do do i=1,9 if (verbose) print *, (iar_2d(i,j),j=1,9) end do else do i=1,9 do j=1,9 iar_2d(j,i) = 0 iar_2dch(j,i) = 0 end do end do do i=2,6,2 do j=1,7,3 iar_2dch(j,i) = (j * 10) + i end do end do endif if (rank .eq. 0) then call mpi_send(iar_2d(1:7:3,2:6:2), 9, MPI_INTEGER, 1, 123, MPI_COMM_WORLD, ierr); if (ierr .ne. MPI_SUCCESS) then print *,"PE ",rank,": ",name,": mpi_send exited in error (",ierr,")" errs = errs + 1 endif else if (rank .eq. 1) then call mpi_recv(iar_2d(1:7:3,2:6:2), 9, MPI_INTEGER, 0, 123, MPI_COMM_WORLD, status, ierr); if (ierr .ne. MPI_SUCCESS) then print *,"PE ",rank,": ",name,"mpi_recv exited in error (",ierr,")" errs = errs + 1 endif do i=2,6,2 do j=1,7,3 if (iar_2d(j,i) .ne. iar_2dch(j,i)) then print *, "rank 1: iar_2d(", j, ",", i, ")=", iar_2d(j,i), ", expected ", iar_2dch(j,i) errs = errs + 1 endif end do end do if (errs .eq. 0) then if (verbose) print *, "PE ", rank,": PASS - ", trim(title) else print *, "PE ", rank,": FAIL - ", trim(title) endif do i=1,9 if (verbose) print *, (iar_2d(i,j),j=1,9) end do endif call MTest_Finalize(errs) call MPI_Finalize(ierr) end program mpi-testsuite-3.2+dfsg/f08/subarray/test1.f900000644000175000017500000000310412620254305020163 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 implicit none integer :: size, rank, ierr, errs logical :: verbose common /flags/ verbose character*8 :: name='test1' character*80 :: title='test1: Send/Recv - send integer' integer :: sint, i integer, dimension(10) :: iar type(MPI_Status) status errs = 0 verbose = .false. call MTest_Init(ierr) call mpi_comm_size(MPI_COMM_WORLD, size, ierr) call mpi_comm_rank(MPI_COMM_WORLD, rank, ierr) if (rank .eq. 0) then sint = 789 if (verbose) print *, ' ===== ', trim(title), ' =====' if (verbose) print *, "rank 0 sends ", sint call mpi_send(sint, 1, MPI_INTEGER, 1, 567, MPI_COMM_WORLD, ierr); if (ierr .ne. MPI_SUCCESS) then print *,"PE ",rank,": ",name,": mpi_send exited in error (",ierr,")" errs = errs + 1 endif else call mpi_recv(sint, 1, MPI_INTEGER, 0, 567, MPI_COMM_WORLD, status, ierr); if (ierr .ne. MPI_SUCCESS) then print *,"PE ",rank,": ",name,"mpi_recv exited in error (",ierr,")" errs = errs + 1 endif if (verbose) print *, "rank 1 receives ",sint if (sint .eq. 789) then if (verbose) print *, "PE ", rank,": PASS - ", trim(title) else errs = errs + 1 print *, "PE ", rank,": FAIL - ", trim(title) endif endif call MTest_Finalize(errs) call MPI_Finalize(ierr) end program mpi-testsuite-3.2+dfsg/f08/subarray/test8.f900000644000175000017500000000510612620254305020176 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 implicit none integer :: size, rank, ierr, errs logical :: verbose common /flags/ verbose character (len=10) :: name='test8' character (len=80) :: title='test 8: Send/Recv 2d array column slice - iar_2d(:,2:6:2)' integer :: i, j integer, dimension(9,9) :: iar_2d, iar_2dch type(MPI_Status) status errs = 0 verbose = .false. call MTest_Init(ierr) call mpi_comm_size(MPI_COMM_WORLD, size, ierr) call mpi_comm_rank(MPI_COMM_WORLD, rank, ierr) if (rank .eq. 0) then if (verbose) print *, ' ===== ', trim(title), ' =====' do i=1,9 do j=1,9 iar_2d(j,i) = (j * 10) + i end do end do do i=1,9 if (verbose) print *, (iar_2d(i,j),j=1,9) end do else do i=1,9 do j=1,9 iar_2d(j,i) = 0 iar_2dch(j,i) = 0 end do end do do i=2,6,2 do j=1,9 iar_2dch(j,i) = (j * 10) + i end do end do endif call MPI_Barrier(MPI_COMM_WORLD, ierr); if (ierr .ne. MPI_SUCCESS) then print *,"PE ",rank,": ",name,": A: mpi_barrier exited in error (",ierr,")" errs = errs + 1 endif if (rank .eq. 0) then call mpi_send(iar_2d(:,2:6:2), 27, MPI_INTEGER, 1, 123, MPI_COMM_WORLD, ierr); if (ierr .ne. MPI_SUCCESS) then print *,"PE ",rank,": ",name,": mpi_send exited in error (",ierr,")" errs = errs + 1 endif else if (rank .eq. 1) then call mpi_recv(iar_2d(:,2:6:2), 27, MPI_INTEGER, 0, 123, MPI_COMM_WORLD, status, ierr); if (ierr .ne. MPI_SUCCESS) then print *,"PE ",rank,": ",name,"mpi_recv exited in error (",ierr,")" errs = errs + 1 endif do i=1,9 do j=1,9 if (iar_2d(j,i) .ne. iar_2dch(j,i)) then print *, "rank 1: iar_2d(", j, ",", i, ")=", iar_2d(j,i), ", expected ", iar_2dch(j,i) errs = errs + 1 endif end do end do if (errs .eq. 0) then if (verbose) print *, "PE ", rank,": PASS - ", trim(title) else print *, "PE ", rank,": FAIL - ", trim(title) endif do j=1,9 if (verbose) print *, (iar_2d(i,j),i=1,9) end do endif call MTest_Finalize(errs) call MPI_Finalize(ierr) end program mpi-testsuite-3.2+dfsg/f08/subarray/test6.f900000644000175000017500000000500312620254305020170 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 implicit none integer :: size, rank, ierr, errs logical :: verbose common /flags/ verbose character (len=10) :: name='test6' character (len=80) :: title='test 6: Send/Recv 2d array column - iar_2d(:,3)' integer :: i, j integer, dimension(9,9) :: iar_2d, iar_2dch type(MPI_Status) status errs = 0 verbose = .false. call MTest_Init(ierr) call mpi_comm_size(MPI_COMM_WORLD, size, ierr) call mpi_comm_rank(MPI_COMM_WORLD, rank, ierr) if (rank .eq. 0) then if (verbose) print *, ' ===== ', trim(title), ' =====' do i=1,9 do j=1,9 iar_2d(j,i) = (j * 10) + i end do end do do j=1,9 if (verbose) print *, (iar_2d(i,j),i=1,9) end do else do i=1,9 do j=1,9 iar_2d(j,i) = 0 iar_2dch(j,i) = 0 end do end do do j=1,9 iar_2dch(j,3) = (j * 10) + 3 end do endif call MPI_Barrier(MPI_COMM_WORLD, ierr); if (ierr .ne. MPI_SUCCESS) then print *,"PE ",rank,": ",name,": A: mpi_barrier exited in error (",ierr,")" errs = errs + 1 endif if (rank .eq. 0) then call mpi_send(iar_2d(:,3), 9, MPI_INTEGER, 1, 890, MPI_COMM_WORLD, ierr); if (ierr .ne. MPI_SUCCESS) then print *,"PE ",rank,": ",name,": mpi_send exited in error (",ierr,")" errs = errs + 1 endif else if (rank .eq. 1) then call mpi_recv(iar_2d(:,3), 9, MPI_INTEGER, 0, 890, MPI_COMM_WORLD, status, ierr); if (ierr .ne. MPI_SUCCESS) then print *,"PE ",rank,": ",name,"mpi_recv exited in error (",ierr,")" errs = errs + 1 endif do i=1,9 do j=1,9 if (iar_2d(j,i) .ne. iar_2dch(j,i)) then print *, "rank 1: iar_2d(", j, ",", i, ")=", iar_2d(j,i), ", expected ", iar_2dch(j,i) errs = errs + 1 endif end do end do if (errs .eq. 0) then if (verbose) print *, "PE ", rank,": PASS - ", trim(title) else print *, "PE ", rank,": FAIL - ", trim(title) endif do j=1,9 if (verbose) print *, (iar_2d(i,j),i=1,9) end do endif call MTest_Finalize(errs) call MPI_Finalize(ierr) end program mpi-testsuite-3.2+dfsg/f08/subarray/Makefile.am0000644000175000017500000000070312620254305020641 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2014 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_f08.mtest EXTRA_DIST = testlist AM_DEFAULT_SOURCE_EXT = .f90 noinst_PROGRAMS = \ test1 \ test2 \ test3 \ test4 \ test5 \ test6 \ test7 \ test8 \ test9 \ test10 \ test11 \ test12 \ test13 \ test14 \ test15 mpi-testsuite-3.2+dfsg/f08/subarray/test13.f900000644000175000017500000001467212620254305020262 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 implicit none integer :: size, rank, ierr, errs logical :: verbose common /flags/ verbose integer sint, iar(10), iar_2d(9,9), iar_3d(9,9,9) type(MPI_Status) status integer i, j, k integer junk(1000) integer save_my_rank errs = 0 verbose = .false. call MTest_Init(ierr) call mpi_comm_size(MPI_COMM_WORLD, size, ierr) call mpi_comm_rank(MPI_COMM_WORLD, rank, ierr) save_my_rank = rank ! ---------------------------------------------------------- if (rank .eq. 0) then sint = 789 if (verbose) then write (0,*) ' ===== Trivial send/recv =====' print *, ' ===== Trivial send/recv =====' print *, "rank 0 sends ", sint endif call mpi_send(sint, 1, MPI_INTEGER, 1, 567, MPI_COMM_WORLD, ierr); if (ierr .ne. MPI_SUCCESS) then if (verbose) print *, "PE ", rank, ": mpi_send exited in error (",ierr,")" errs = errs + 1 endif else call mpi_recv(sint, 1, MPI_INTEGER, 0, 567, MPI_COMM_WORLD, status, ierr); if (ierr .ne. MPI_SUCCESS) then if (verbose) print *, "PE ", rank,": mpi_recv exited in error (",ierr,")" errs = errs + 1 endif if (verbose) print *, "rank 1 receives ",sint if (sint .eq. 789) then if (verbose) print *, "PE ", rank,": PASS - Trivial send/recv" else if (verbose) print *, "PE ", rank,": FAIL - Trivial send/recv" errs = errs + 1 endif endif ! ---------------------------------------------------------- call mpi_barrier(MPI_COMM_WORLD, ierr) if (rank .eq. 0) then if (verbose) then write (0,*) ' ===== Send/Recv iar(2:8:2) =====' print *, ' ===== Send/Recv iar(2:8:2) =====' endif do i=1,10 iar(i)=i end do if (verbose) then print *, 'PE ', rank, '(0),[', save_my_rank, ']: loc(iar)=',loc(iar) print *, 'PE 0: loc(iar)=',loc(iar) endif call mpi_send(iar(2:8:2), 4, MPI_INTEGER, 1, 678, MPI_COMM_WORLD, ierr); if (ierr .ne. MPI_SUCCESS) then if (verbose) print *, "PE ", rank, "(0): mpi_send exited in error (",ierr,")" errs = errs + 1 endif else if (rank .eq. 1) then if (verbose) print *, 'PE 1: loc(iar)=',loc(iar) call mpi_recv(iar(2:8:2), 4, MPI_INTEGER, 0, 678, MPI_COMM_WORLD, status, ierr); if (ierr .ne. MPI_SUCCESS) then if (verbose) print *, "PE ", rank, "(1): mpi_recv exited in error (",ierr,")" errs = errs + 1 endif do i=2,8,2 if (iar(i) .ne. i) then if (verbose) print *, "rank 1: iar(", i, ")=", iar(i), ", expected ",i errs = errs + 1 endif end do if (errs .eq. 0) then if (verbose) print *, "PE ", rank,": PASS - Send/Recv iar(2:8:2)" else if (verbose) print *, "PE ", rank,": FAIL - Send/Recv iar(2:8:2)" endif endif ! ---------------------------------------------------------- call mpi_barrier(MPI_COMM_WORLD, ierr) if (rank .eq. 0) then if (verbose) then write (0, *) " ======== Simple 2d array test (iar_2d) ======== " print *, " ======== Simple 2d array test (iar_2d) ======== " endif do i=1,9 do j=1,9 iar_2d(j,i) = (j * 10) + i end do end do do j=1,9 if (verbose) print *, iar_2d(1,j), iar_2d(2,j), iar_2d(3,j), iar_2d(4,j), & iar_2d(5,j), iar_2d(6,j), iar_2d(7,j), iar_2d(8,j), iar_2d(9,j) end do else do i=1,9 do j=1,9 iar_2d(j,i) = 0 end do end do endif if (rank .eq. 0) then if (verbose) print *, 'PE 0: Sending: loc(iar_2d)=',loc(iar_2d) call mpi_send(iar_2d, 81, MPI_INTEGER, 1, 789, MPI_COMM_WORLD, ierr); if (ierr .ne. MPI_SUCCESS) then if (verbose) print *, "PE ", rank, ": mpi_send exited in error (",ierr,")" errs = errs + 1 endif else if (verbose) print *, 'PE 1: Receiving: loc(iar_2d)=',loc(iar_2d) call mpi_recv(iar_2d, 81, MPI_INTEGER, 0, 789, MPI_COMM_WORLD, status, ierr); if (ierr .ne. MPI_SUCCESS) then if (verbose) print *, "PE ", rank, "(1): mpi_recv exited in error (",ierr,")" errs = errs + 1 endif do i=1,9 do j=1,9 if (iar_2d(j,i) .ne. (j * 10) + i) then if (verbose) print *, "rank 1: iar_2d(", j, ",", i, ")=", iar_2d(j,i), ", expected ", (j * 10) + i errs = errs + 1 endif end do end do if (errs .eq. 0) then if (verbose) print *, "PE ", rank,": PASS - Send/Recv iar_2d()" else if (verbose) print *, "PE ", rank,": FAIL - Send/Recv iar_2d()" endif endif ! ---------------------------------------------------------- call mpi_barrier(MPI_COMM_WORLD, ierr) if (rank .eq. 0) then if (verbose) then write (0, *) " ======== Simple 3d array test (iar_3d) ======== " print *, " ======== Simple 3d array test (iar_3d) ======== " endif do i=1,9 do j=1,9 do k=1,9 iar_3d(k,j,i) = (k * 100) + (j * 10) + i end do end do end do else do i=1,9 do j=1,9 do k=1,9 iar_3d(k, j,i) = 0 end do end do end do endif if (rank .eq. 0) then if (verbose) print *, 'PE 0: Sending: loc(iar_3d)=',loc(iar_3d) call mpi_send(iar_3d, 729, MPI_INTEGER, 1, 891, MPI_COMM_WORLD, ierr); if (ierr .ne. MPI_SUCCESS) then if (verbose) print *, "PE ", rank, ": mpi_send exited in error (",ierr,")" errs = errs + 1 endif else if (verbose) print *, 'PE 1: Receiving: loc(iar_3d)=',loc(iar_3d) call mpi_recv(iar_3d, 729, MPI_INTEGER, 0, 891, MPI_COMM_WORLD, status, ierr); if (ierr .ne. MPI_SUCCESS) then if (verbose) print *, "PE ", rank, "(1): mpi_recv exited in error (",ierr,")" errs = errs + 1 endif do i=1,9 do j=1,9 do k=1,9 if (iar_3d(k, j,i) .ne. (k * 100) + (j * 10) + i) then if (verbose) print *, "rank 1: iar_3d(", k, ",", j, ",", i, ")=", & iar_3d(k, j,i), ", expected ", (k * 100) + (j * 10) + i errs = errs + 1 endif end do end do end do if (errs .eq. 0) then if (verbose) print *, "PE ", rank,": PASS - Send/Recv iar_3d()" else if (verbose) print *, "PE ", rank,": FAIL - Send/Recv iar_3d()" endif endif call MTest_Finalize(errs) call MPI_Finalize(ierr) end program mpi-testsuite-3.2+dfsg/f08/subarray/test12.f900000644000175000017500000000536012620254305020253 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 implicit none integer :: size, rank, ierr, errs logical :: verbose common /flags/ verbose character (len=10) :: name='test12' character (len=80) :: title='test 12: Isend/Irecv array slice - iar(2:7)' integer :: sint, i integer, dimension(10) :: iar, iar_check type(MPI_Request) request type(MPI_Status) status errs = 0 verbose = .false. call MTest_Init(ierr) call mpi_comm_size(MPI_COMM_WORLD, size, ierr) call mpi_comm_rank(MPI_COMM_WORLD, rank, ierr) if (rank .eq. 0) then if (verbose) print *, ' ===== ', trim(title), ' =====' do i=1,10 iar(i)=i end do block ASYNCHRONOUS :: iar call mpi_isend(iar(2:7), 6, MPI_INTEGER, 1, 678, MPI_COMM_WORLD, request, ierr); if (ierr .ne. MPI_SUCCESS) then if (verbose) print *,"PE ",rank,": ",name,": mpi_isend exited in error (",ierr,")" errs = errs + 1 endif call mpi_wait(request, status, ierr) if (ierr .ne. MPI_SUCCESS) then if (verbose) print *,"PE ",rank,": ",name,": mpi_wait exited in error (",ierr,")" errs = errs + 1 endif end block else if (rank .eq. 1) then do i=1,10 iar(i)=0 iar_check(i)=0 end do do i=2,7 iar_check(i)=i end do block ASYNCHRONOUS :: iar call mpi_irecv(iar(2:7), 6, MPI_INTEGER, 0, 678, MPI_COMM_WORLD, request, ierr); if (ierr .ne. MPI_SUCCESS) then if (verbose) print *,"PE ",rank,": ",name,"mpi_irecv exited in error (",ierr,")" errs = errs + 1 endif call mpi_wait(request, status, ierr) if (ierr .ne. MPI_SUCCESS) then if (verbose) print *,"PE ",rank,": ",name,": mpi_wait exited in error (",ierr,")" errs = errs + 1 endif end block do i=1,10 if (iar(i) .ne. iar_check(i)) then if (verbose) print *, "rank 1: iar(", i, ")=", iar(i), ", expected ",iar_check(i) errs = errs + 1 endif end do if (errs .eq. 0) then if (verbose) print *, "PE ", rank,": PASS - test 12 - ", trim(title) else if (verbose) print *, "PE ", rank,": FAIL - test 12 - ", trim(title) endif if (verbose) print *, iar(1), iar(2), iar(3), iar(4), iar(5), iar(6), iar(7), iar(8), iar(9) endif call MTest_Finalize(errs) call MPI_Finalize(ierr) end program mpi-testsuite-3.2+dfsg/f08/subarray/test14.f900000644000175000017500000000617312620254305020260 0ustar mbanckmbanck! -*- Mode: Fortran; -*- ! ! (C) 2014 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! program main use mpi_f08 implicit none integer :: size, rank, ierr, errs logical :: verbose common /flags/ verbose character (len=10) :: name='test14' character (len=80) :: title='test 14: Isend/Irecv 2d array column slice - iar_2d(:,2:6:2)' integer :: i, j integer, dimension(9,9) :: iar_2d, iar_2dch type(MPI_Status) status type(MPI_Request) request errs = 0 verbose = .false. call MTest_Init(ierr) call mpi_comm_size(MPI_COMM_WORLD, size, ierr) call mpi_comm_rank(MPI_COMM_WORLD, rank, ierr) if (rank .eq. 0) then if (verbose) print *, ' ===== ', trim(title), ' =====' do i=1,9 do j=1,9 iar_2d(j,i) = (j * 10) + i end do end do do j=1,9 if (verbose) print *, (iar_2d(i,j),i=1,9) end do else do i=1,9 do j=1,9 iar_2d(j,i) = 0 iar_2dch(j,i) = 0 end do end do do i=2,6,2 do j=1,9 iar_2dch(j,i) = (j * 10) + i end do end do endif if (rank .eq. 0) then block ASYNCHRONOUS :: iar_2d call mpi_isend(iar_2d(:,2:6:2), 27, MPI_INTEGER, 1, 123, MPI_COMM_WORLD, request, ierr); if (ierr .ne. MPI_SUCCESS) then if (verbose) print *,"PE ",rank,": ",name,": mpi_isend exited in error (",ierr,")" errs = errs + 1 endif call mpi_wait(request, status, ierr) if (ierr .ne. MPI_SUCCESS) then if (verbose) print *,"PE ",rank,": ",name,": mpi_wait exited in error (",ierr,")" errs = errs + 1 endif end block else if (rank .eq. 1) then block ASYNCHRONOUS :: iar_2d call mpi_irecv(iar_2d(:,2:6:2), 27, MPI_INTEGER, 0, 123, MPI_COMM_WORLD, request, ierr); if (ierr .ne. MPI_SUCCESS) then if (verbose) print *,"PE ",rank,": ",name,"mpi_irecv exited in error (",ierr,")" errs = errs + 1 endif call mpi_wait(request, status, ierr) if (ierr .ne. MPI_SUCCESS) then if (verbose) print *,"PE ",rank,": ",name,": mpi_wait exited in error (",ierr,")" errs = errs + 1 endif end block do i=1,9 do j=1,9 if (iar_2d(j,i) .ne. iar_2dch(j,i)) then if (verbose) print *, "rank 1: iar_2d(", j, ",", i, ")=", iar_2d(j,i), ", expected ", iar_2dch(j,i) errs = errs + 1 endif end do end do if (errs .eq. 0) then if (verbose) print *, "PE ", rank,": PASS - ", trim(title) else if (verbose) print *, "PE ", rank,": FAIL - ", trim(title) endif do j=1,9 if (verbose) print *, (iar_2d(i,j),i=1,9) end do endif call MTest_Finalize(errs) call MPI_Finalize(ierr) end program mpi-testsuite-3.2+dfsg/ft/0000755000175000017500000000000012621010235014762 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/ft/agree.c0000644000175000017500000000361612620254305016226 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" int main(int argc, char **argv) { int rank, size, rc, errclass, errs = 0; int flag = 1; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); if (size < 4) { fprintf(stderr, "Must run with at least 4 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } if (2 == rank) exit(EXIT_FAILURE); if (0 == rank) flag = 0; rc = MPIX_Comm_agree(MPI_COMM_WORLD, &flag); MPI_Error_class(rc, &errclass); if (errclass != MPIX_ERR_PROC_FAILED) { fprintf(stderr, "[%d] Expected MPIX_ERR_PROC_FAILED after agree. Received: %d\n", rank, errclass); MPI_Abort(MPI_COMM_WORLD, 1); errs++; } else if (0 != flag) { fprintf(stderr, "[%d] Expected flag to be 0. Received: %d\n", rank, flag); errs++; } MPIX_Comm_failure_ack(MPI_COMM_WORLD); if (0 == rank) flag = 0; else flag = 1; rc = MPIX_Comm_agree(MPI_COMM_WORLD, &flag); MPI_Error_class(rc, &errclass); if (MPI_SUCCESS != rc) { fprintf(stderr, "[%d] Expected MPI_SUCCESS after agree. Received: %d\n", rank, errclass); MPI_Abort(MPI_COMM_WORLD, 1); errs++; } else if (0 != flag) { fprintf(stderr, "[%d] Expected flag to be 0. Received: %d\n", rank, flag); MPI_Abort(MPI_COMM_WORLD, 1); errs++; } MPI_Finalize(); if (0 == rank) { if (errs == 0) fprintf(stdout, " No Errors\n"); else fprintf(stdout, " Found %d errors\n", errs); } return errs; } mpi-testsuite-3.2+dfsg/ft/shrink.c0000644000175000017500000000271112620254305016434 0ustar mbanckmbanck /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* * This test ensures that shrink works correctly */ int main(int argc, char **argv) { int rank, size, newsize, rc, errclass, errs = 0; MPI_Comm newcomm; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); if (size < 4) { fprintf(stderr, "Must run with at least 4 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } if (2 == rank) exit(EXIT_FAILURE); rc = MPIX_Comm_shrink(MPI_COMM_WORLD, &newcomm); if (rc) { MPI_Error_class(rc, &errclass); fprintf(stderr, "Expected MPI_SUCCESS from MPIX_Comm_shrink. Received: %d\n", errclass); errs++; MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_size(newcomm, &newsize); if (newsize != size - 1) errs++; rc = MPI_Barrier(newcomm); if (rc) { MPI_Error_class(rc, &errclass); fprintf(stderr, "Expected MPI_SUCCESS from MPI_BARRIER. Received: %d\n", errclass); errs++; MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_free(&newcomm); if (0 == rank) fprintf(stdout, " No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/ft/anysource.c0000644000175000017500000000666212620254305017157 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include /* * This test makes sure the MPI_ANY_SOURCE receive operations are handled * correctly. */ int main(int argc, char **argv) { int rank, size, err, ec; char buf[10]; MPI_Request request; MPI_Status status; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); if (size < 3) { fprintf(stderr, "Must run with at least 3 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); if (rank == 1) { exit(EXIT_FAILURE); } /* Make sure ANY_SOURCE returns correctly after a failure */ if (rank == 0) { char buf[10]; err = MPI_Recv(buf, 10, MPI_CHAR, MPI_ANY_SOURCE, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); MPI_Error_class(err, &ec); if (MPIX_ERR_PROC_FAILED != ec) { fprintf(stderr, "Expected MPIX_ERR_PROC_FAILED for receive from ANY_SOURCE: %d\n", ec); MPI_Abort(MPI_COMM_WORLD, 1); } /* Make sure that new ANY_SOURCE operations don't work yet */ err = MPI_Irecv(buf, 10, MPI_CHAR, MPI_ANY_SOURCE, 0, MPI_COMM_WORLD, &request); if (request == MPI_REQUEST_NULL) { fprintf(stderr, "Request for ANY_SOURCE receive is NULL\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Error_class(err, &ec); if (ec != MPI_SUCCESS && ec != MPIX_ERR_PROC_FAILED_PENDING) { fprintf(stderr, "Expected SUCCESS or MPIX_ERR_PROC_FAILED_PENDING: %d\n", ec); MPI_Abort(MPI_COMM_WORLD, 1); } err = MPI_Wait(&request, &status); MPI_Error_class(err, &ec); if (MPIX_ERR_PROC_FAILED_PENDING != ec) { fprintf(stderr, "Expected a MPIX_ERR_PROC_FAILED_PENDING (%d) for receive from ANY_SOURCE: %d\n", MPIX_ERR_PROC_FAILED_PENDING, ec); MPI_Abort(MPI_COMM_WORLD, 1); } err = MPI_Send(NULL, 0, MPI_INT, 2, 0, MPI_COMM_WORLD); if (MPI_SUCCESS != err) { MPI_Error_class(err, &ec); fprintf(stderr, "MPI_SEND failed: %d", ec); MPI_Abort(MPI_COMM_WORLD, 1); } /* Make sure that ANY_SOURCE works after failures are acknowledged */ MPIX_Comm_failure_ack(MPI_COMM_WORLD); err = MPI_Wait(&request, &status); if (MPI_SUCCESS != err) { MPI_Error_class(err, &ec); fprintf(stderr, "Unexpected failure after acknowledged failure (%d)\n", ec); MPI_Abort(MPI_COMM_WORLD, 1); } fprintf(stdout, " %s\n", buf); } else if (rank == 2) { char buf[10] = "No errors"; err = MPI_Recv(NULL, 0, MPI_INT, 0, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); if (MPI_SUCCESS != err) { MPI_Error_class(err, &ec); fprintf(stderr, "MPI_RECV failed: %d\n", ec); MPI_Abort(MPI_COMM_WORLD, 1); } err = MPI_Send(buf, 10, MPI_CHAR, 0, 0, MPI_COMM_WORLD); if (MPI_SUCCESS != err) { MPI_Error_class(err, &ec); fprintf(stderr, "Unexpected failure from MPI_Send (%d)\n", ec); MPI_Abort(MPI_COMM_WORLD, 1); } } MPI_Finalize(); } mpi-testsuite-3.2+dfsg/ft/revoke_shrink.c0000644000175000017500000000337712620254305020020 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include #include #include "mpi.h" MPI_Comm comm_all; void error_handler(MPI_Comm * communicator, int *error_code, ...) { MPI_Comm *new_comm = malloc(sizeof(MPI_Comm)); MPIX_Comm_revoke(comm_all); MPIX_Comm_shrink(comm_all, new_comm); MPI_Comm_free(&comm_all); comm_all = *new_comm; } int main(int argc, char *argv[]) { int rank, size, i; int sum = 0, val = 1; int errs = 0; MPI_Errhandler errhandler; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); if (size < 4) { fprintf(stderr, "Must run with at least 4 processes.\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_dup(MPI_COMM_WORLD, &comm_all); MPI_Comm_create_errhandler(&error_handler, &errhandler); MPI_Comm_set_errhandler(comm_all, errhandler); for (i = 0; i < 10; ++i) { MPI_Comm_size(comm_all, &size); sum = 0; if (i == 5 && rank == 1) { exit(1); } else if (i != 5) { MPI_Allreduce(&val, &sum, 1, MPI_INT, MPI_SUM, comm_all); if (sum != size && rank == 0) { errs++; fprintf(stderr, "Incorrect answer: %d != %d\n", sum, size); } } } if (0 == rank && errs) { fprintf(stdout, " Found %d errors\n", errs); } else if (0 == rank) { fprintf(stdout, " No errors\n"); } MPI_Comm_free(&comm_all); MPI_Errhandler_free(&errhandler); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/ft/reduce.c0000644000175000017500000000316412620254305016410 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include /* * This test attempts collective communication after a process in * the communicator has failed. Since all processes contribute to * the result of the operation, all process will receive an error. */ int main(int argc, char **argv) { int rank, size, err, errclass; int sendbuf[1] = { 42 }; int recvbuf[1]; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); if (size < 3) { fprintf(stderr, "Must run with at least 3 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } if (rank == 1) { exit(EXIT_FAILURE); } err = MPI_Reduce(sendbuf, recvbuf, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (rank == 0) { #if defined (MPICH) && (MPICH_NUMVERSION >= 30100102) MPI_Error_class(err, &errclass); if (errclass == MPIX_ERR_PROC_FAILED) { printf(" No Errors\n"); fflush(stdout); } else { fprintf(stderr, "Wrong error code (%d) returned. Expected MPIX_ERR_PROC_FAILED\n", errclass); } #else if (err) { printf(" No Errors\n"); fflush(stdout); } else { fprintf(stderr, "Program reported MPI_SUCCESS, but an error code was expected.\n"); } #endif } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/ft/die.c0000644000175000017500000000101612620254305015674 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include int main(int argc, char **argv) { int rank, size; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (rank == 1) { exit(EXIT_FAILURE); } if (rank == 0) { printf(" No Errors\n"); fflush(stdout); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/ft/abort.c0000644000175000017500000000066712620254305016255 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include int main(int argc, char **argv) { int rank, size; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (rank == 0) MPI_Abort(MPI_COMM_WORLD, 1); while (1); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/ft/scatter.c0000644000175000017500000000546312620254305016612 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include /* * This test attempts collective communication after a process in * the communicator has failed. */ int main(int argc, char **argv) { int rank, size, i, rc, errclass, toterrs, errs = 0; char rbuf[100000]; char *sendbuf; int deadprocs[1] = { 1 }; MPI_Group world, newgroup; MPI_Comm newcomm; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); if (size < 3) { fprintf(stderr, "Must run with at least 3 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_group(MPI_COMM_WORLD, &world); MPI_Group_excl(world, 1, deadprocs, &newgroup); MPI_Comm_create_group(MPI_COMM_WORLD, newgroup, 0, &newcomm); if (rank == 1) { exit(EXIT_FAILURE); } /* try a small send first */ sendbuf = (char *) malloc(10 * size * sizeof(char)); if (rank == 0) { for (i = 0; i < size; i++) { strcpy(sendbuf + i * 10, "No Errors"); } } rc = MPI_Scatter(sendbuf, 10, MPI_CHAR, rbuf, 10, MPI_CHAR, 0, MPI_COMM_WORLD); #if defined (MPICH) && (MPICH_NUMVERSION >= 30100102) MPI_Error_class(rc, &errclass); if ((rc) && (errclass != MPIX_ERR_PROC_FAILED)) { fprintf(stderr, "Wrong error code (%d) returned. Expected MPIX_ERR_PROC_FAILED\n", errclass); errs++; } #endif /* reset the buffers and try a larger scatter */ free(sendbuf); memset(rbuf, 0, sizeof(rbuf)); sendbuf = (char *) malloc(100000 * size * sizeof(char)); if (rank == 0) { for (i = 0; i < size; i++) { strcpy(sendbuf + i * 100000, "No Errors"); } } rc = MPI_Scatter(sendbuf, 100000, MPI_CHAR, rbuf, 100000, MPI_CHAR, 0, MPI_COMM_WORLD); #if defined (MPICH) && (MPICH_NUMVERSION >= 30100102) MPI_Error_class(rc, &errclass); if ((rc) && (errclass != MPIX_ERR_PROC_FAILED)) { fprintf(stderr, "Wrong error code (%d) returned. Expected MPIX_ERR_PROC_FAILED\n", errclass); errs++; } #endif rc = MPI_Reduce(&errs, &toterrs, 1, MPI_INT, MPI_SUM, 0, newcomm); if (rc) fprintf(stderr, "Failed to get errors from other processes\n"); if (rank == 0) { if (toterrs) { printf(" Found %d errors\n", toterrs); } else { printf(" No Errors\n"); } fflush(stdout); } free(sendbuf); MPI_Comm_free(&newcomm); MPI_Group_free(&newgroup); MPI_Group_free(&world); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/ft/recvdead.c0000644000175000017500000000326712620254305016722 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include /* * This test attempts MPI_Recv with the source being a dead process. It should fail * and return an error. If we are testing sufficiently new MPICH, we look for the * MPIX_ERR_PROC_FAILED error code. These should be converted to look for the * standarized error code once it is finalized. */ int main(int argc, char **argv) { int rank, size, err, errclass; char buf[10]; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); if (size < 2) { fprintf(stderr, "Must run with at least 2 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } if (rank == 1) { exit(EXIT_FAILURE); } if (rank == 0) { MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); err = MPI_Recv(buf, 1, MPI_CHAR, 1, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); #if defined (MPICH) && (MPICH_NUMVERSION >= 30100102) MPI_Error_class(err, &errclass); if (errclass == MPIX_ERR_PROC_FAILED) { printf(" No Errors\n"); fflush(stdout); } else { fprintf(stderr, "Wrong error code (%d) returned. Expected MPIX_ERR_PROC_FAILED\n", errclass); } #else if (err) { printf(" No Errors\n"); fflush(stdout); } else { fprintf(stderr, "Program reported MPI_SUCCESS, but an error code was expected.\n"); } #endif } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/ft/testlist0000644000175000017500000000537112620254305016575 0ustar mbanckmbanckdie 4 env=MPIR_CVAR_ENABLE_FT=1 mpiexecarg=-disable-auto-cleanup timeLimit=10 strict=false resultTest=TestStatusNoErrors xfail=ticket2237 abort 2 env=MPIR_CVAR_ENABLE_FT=1 mpiexecarg=-disable-auto-cleanup timeLimit=10 strict=false resultTest=TestStatus sendalive 4 env=MPIR_CVAR_ENABLE_FT=1 mpiexecarg=-disable-auto-cleanup timeLimit=10 strict=false resultTest=TestStatusNoErrors xfail=ticket2237 isendalive 3 env=MPIR_CVAR_ENABLE_FT=1 mpiexecarg=-disable-auto-cleanup resultTest=TestStatusNoErrors strict=false xfail=ticket2237 multi_isendalive 4 env=MPIR_CVAR_ENABLE_FT=1 mpiexecarg=-disable-auto-cleanup resultTest=TestStatusNoErrors strict=false xfail=ticket2203 senddead 2 env=MPIR_CVAR_ENABLE_FT=1 mpiexecarg=-disable-auto-cleanup resultTest=TestStatusNoErrors strict=false timeLimit=10 recvdead 2 env=MPIR_CVAR_ENABLE_FT=1 mpiexecarg=-disable-auto-cleanup resultTest=TestStatusNoErrors strict=false timeLimit=10 isenddead 2 env=MPIR_CVAR_ENABLE_FT=1 mpiexecarg=-disable-auto-cleanup resultTest=TestStatusNoErrors strict=false timeLimit=10 irecvdead 2 env=MPIR_CVAR_ENABLE_FT=1 mpiexecarg=-disable-auto-cleanup resultTest=TestStatusNoErrors strict=false timeLimit=10 barrier 4 env=MPIR_CVAR_ENABLE_FT=1 mpiexecarg=-disable-auto-cleanup resultTest=TestStatusNoErrors strict=false timeLimit=10 xfail=ticket2237 gather 4 env=MPIR_CVAR_ENABLE_FT=1 mpiexecarg=-disable-auto-cleanup resultTest=TestStatusNoErrors strict=false timeLimit=10 xfail=ticket2237 reduce 4 env=MPIR_CVAR_ENABLE_FT=1 mpiexecarg=-disable-auto-cleanup resultTest=TestStatusNoErrors strict=false timeLimit=10 xfail=ticket2237 bcast 4 env=MPIR_CVAR_ENABLE_FT=1 mpiexecarg=-disable-auto-cleanup resultTest=TestStatusNoErrors strict=false timeLimit=10 xfail=ticket2237 scatter 4 env=MPIR_CVAR_ENABLE_FT=1 mpiexecarg=-disable-auto-cleanup resultTest=TestStatusNoErrors strict=false timeLimit=10 xfail=ticket2237 anysource 3 env=MPIR_CVAR_ENABLE_FT=1 mpiexecarg=-disable-auto-cleanup resultTest=TestStatusNoErrors strict=false timeLimit=10 xfail=ticket2237 revoke_nofail 2 env=MPIR_CVAR_ENABLE_FT=1 strict=false timeLimit=10 xfail=ticket2237 shrink 8 env=MPIR_CVAR_ENABLE_FT=1 mpiexecarg=-disable-auto-cleanup resultTest=TestStatusNoErrors strict=false timeLimit=10 xfail=ticket2237 agree 4 env=MPIR_CVAR_ENABLE_FT=1 mpiexecarg=-disable-auto-cleanup resultTest=TestStatusNoErrors strict=false timeLimit=10 xfail=ticket2289 agree_shrink 4 env=MPIR_CVAR_ENABLE_FT=1 mpiexecarg=-disable-auto-cleanup resultTest=TestStatusNoErrors strict=false timeLimit=10 revoke_shrink 4 env=MPIR_CVAR_ENABLE_FT=1 mpiexecarg=-disable-auto-cleanup resultTest=TestStatusNoErrors strict=false timeLimit=10 xfail=ticket2198 nbccoll 4 env=MPIR_CVAR_ENABLE_FT=1 mpiexecarg=-disable-auto-cleanup resultTest=TestStatusNoErrors strict=false timeLimit=10 xfail=ticket2237 mpi-testsuite-3.2+dfsg/ft/Makefile.in0000644000175000017500000007465412621010235017047 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = die$(EXEEXT) abort$(EXEEXT) sendalive$(EXEEXT) \ isendalive$(EXEEXT) senddead$(EXEEXT) recvdead$(EXEEXT) \ isenddead$(EXEEXT) irecvdead$(EXEEXT) barrier$(EXEEXT) \ gather$(EXEEXT) reduce$(EXEEXT) bcast$(EXEEXT) \ scatter$(EXEEXT) failure_ack$(EXEEXT) anysource$(EXEEXT) \ revoke_nofail$(EXEEXT) shrink$(EXEEXT) agree$(EXEEXT) \ multi_isendalive$(EXEEXT) agree_shrink$(EXEEXT) \ revoke_shrink$(EXEEXT) nbccoll$(EXEEXT) subdir = ft ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) abort_SOURCES = abort.c abort_OBJECTS = abort.$(OBJEXT) abort_LDADD = $(LDADD) abort_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o agree_SOURCES = agree.c agree_OBJECTS = agree.$(OBJEXT) agree_LDADD = $(LDADD) agree_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o agree_shrink_SOURCES = agree_shrink.c agree_shrink_OBJECTS = agree_shrink.$(OBJEXT) agree_shrink_LDADD = $(LDADD) agree_shrink_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o anysource_SOURCES = anysource.c anysource_OBJECTS = anysource.$(OBJEXT) anysource_LDADD = $(LDADD) anysource_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o barrier_SOURCES = barrier.c barrier_OBJECTS = barrier.$(OBJEXT) barrier_LDADD = $(LDADD) barrier_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o bcast_SOURCES = bcast.c bcast_OBJECTS = bcast.$(OBJEXT) bcast_LDADD = $(LDADD) bcast_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o die_SOURCES = die.c die_OBJECTS = die.$(OBJEXT) die_LDADD = $(LDADD) die_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o failure_ack_SOURCES = failure_ack.c failure_ack_OBJECTS = failure_ack.$(OBJEXT) failure_ack_LDADD = $(LDADD) failure_ack_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o gather_SOURCES = gather.c gather_OBJECTS = gather.$(OBJEXT) gather_LDADD = $(LDADD) gather_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o irecvdead_SOURCES = irecvdead.c irecvdead_OBJECTS = irecvdead.$(OBJEXT) irecvdead_LDADD = $(LDADD) irecvdead_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o isendalive_SOURCES = isendalive.c isendalive_OBJECTS = isendalive.$(OBJEXT) isendalive_LDADD = $(LDADD) isendalive_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o isenddead_SOURCES = isenddead.c isenddead_OBJECTS = isenddead.$(OBJEXT) isenddead_LDADD = $(LDADD) isenddead_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o multi_isendalive_SOURCES = multi_isendalive.c multi_isendalive_OBJECTS = multi_isendalive.$(OBJEXT) multi_isendalive_LDADD = $(LDADD) multi_isendalive_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o nbccoll_SOURCES = nbccoll.c nbccoll_OBJECTS = nbccoll.$(OBJEXT) nbccoll_LDADD = $(LDADD) nbccoll_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o recvdead_SOURCES = recvdead.c recvdead_OBJECTS = recvdead.$(OBJEXT) recvdead_LDADD = $(LDADD) recvdead_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o reduce_SOURCES = reduce.c reduce_OBJECTS = reduce.$(OBJEXT) reduce_LDADD = $(LDADD) reduce_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o revoke_nofail_SOURCES = revoke_nofail.c revoke_nofail_OBJECTS = revoke_nofail.$(OBJEXT) revoke_nofail_LDADD = $(LDADD) revoke_nofail_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o revoke_shrink_SOURCES = revoke_shrink.c revoke_shrink_OBJECTS = revoke_shrink.$(OBJEXT) revoke_shrink_LDADD = $(LDADD) revoke_shrink_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o scatter_SOURCES = scatter.c scatter_OBJECTS = scatter.$(OBJEXT) scatter_LDADD = $(LDADD) scatter_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o sendalive_SOURCES = sendalive.c sendalive_OBJECTS = sendalive.$(OBJEXT) sendalive_LDADD = $(LDADD) sendalive_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o senddead_SOURCES = senddead.c senddead_OBJECTS = senddead.$(OBJEXT) senddead_LDADD = $(LDADD) senddead_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o shrink_SOURCES = shrink.c shrink_OBJECTS = shrink.$(OBJEXT) shrink_LDADD = $(LDADD) shrink_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = abort.c agree.c agree_shrink.c anysource.c barrier.c bcast.c \ die.c failure_ack.c gather.c irecvdead.c isendalive.c \ isenddead.c multi_isendalive.c nbccoll.c recvdead.c reduce.c \ revoke_nofail.c revoke_shrink.c scatter.c sendalive.c \ senddead.c shrink.c DIST_SOURCES = abort.c agree.c agree_shrink.c anysource.c barrier.c \ bcast.c die.c failure_ack.c gather.c irecvdead.c isendalive.c \ isenddead.c multi_isendalive.c nbccoll.c recvdead.c reduce.c \ revoke_nofail.c revoke_shrink.c scatter.c sendalive.c \ senddead.c shrink.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.mtest \ $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign ft/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign ft/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) abort$(EXEEXT): $(abort_OBJECTS) $(abort_DEPENDENCIES) $(EXTRA_abort_DEPENDENCIES) @rm -f abort$(EXEEXT) $(AM_V_CCLD)$(LINK) $(abort_OBJECTS) $(abort_LDADD) $(LIBS) agree$(EXEEXT): $(agree_OBJECTS) $(agree_DEPENDENCIES) $(EXTRA_agree_DEPENDENCIES) @rm -f agree$(EXEEXT) $(AM_V_CCLD)$(LINK) $(agree_OBJECTS) $(agree_LDADD) $(LIBS) agree_shrink$(EXEEXT): $(agree_shrink_OBJECTS) $(agree_shrink_DEPENDENCIES) $(EXTRA_agree_shrink_DEPENDENCIES) @rm -f agree_shrink$(EXEEXT) $(AM_V_CCLD)$(LINK) $(agree_shrink_OBJECTS) $(agree_shrink_LDADD) $(LIBS) anysource$(EXEEXT): $(anysource_OBJECTS) $(anysource_DEPENDENCIES) $(EXTRA_anysource_DEPENDENCIES) @rm -f anysource$(EXEEXT) $(AM_V_CCLD)$(LINK) $(anysource_OBJECTS) $(anysource_LDADD) $(LIBS) barrier$(EXEEXT): $(barrier_OBJECTS) $(barrier_DEPENDENCIES) $(EXTRA_barrier_DEPENDENCIES) @rm -f barrier$(EXEEXT) $(AM_V_CCLD)$(LINK) $(barrier_OBJECTS) $(barrier_LDADD) $(LIBS) bcast$(EXEEXT): $(bcast_OBJECTS) $(bcast_DEPENDENCIES) $(EXTRA_bcast_DEPENDENCIES) @rm -f bcast$(EXEEXT) $(AM_V_CCLD)$(LINK) $(bcast_OBJECTS) $(bcast_LDADD) $(LIBS) die$(EXEEXT): $(die_OBJECTS) $(die_DEPENDENCIES) $(EXTRA_die_DEPENDENCIES) @rm -f die$(EXEEXT) $(AM_V_CCLD)$(LINK) $(die_OBJECTS) $(die_LDADD) $(LIBS) failure_ack$(EXEEXT): $(failure_ack_OBJECTS) $(failure_ack_DEPENDENCIES) $(EXTRA_failure_ack_DEPENDENCIES) @rm -f failure_ack$(EXEEXT) $(AM_V_CCLD)$(LINK) $(failure_ack_OBJECTS) $(failure_ack_LDADD) $(LIBS) gather$(EXEEXT): $(gather_OBJECTS) $(gather_DEPENDENCIES) $(EXTRA_gather_DEPENDENCIES) @rm -f gather$(EXEEXT) $(AM_V_CCLD)$(LINK) $(gather_OBJECTS) $(gather_LDADD) $(LIBS) irecvdead$(EXEEXT): $(irecvdead_OBJECTS) $(irecvdead_DEPENDENCIES) $(EXTRA_irecvdead_DEPENDENCIES) @rm -f irecvdead$(EXEEXT) $(AM_V_CCLD)$(LINK) $(irecvdead_OBJECTS) $(irecvdead_LDADD) $(LIBS) isendalive$(EXEEXT): $(isendalive_OBJECTS) $(isendalive_DEPENDENCIES) $(EXTRA_isendalive_DEPENDENCIES) @rm -f isendalive$(EXEEXT) $(AM_V_CCLD)$(LINK) $(isendalive_OBJECTS) $(isendalive_LDADD) $(LIBS) isenddead$(EXEEXT): $(isenddead_OBJECTS) $(isenddead_DEPENDENCIES) $(EXTRA_isenddead_DEPENDENCIES) @rm -f isenddead$(EXEEXT) $(AM_V_CCLD)$(LINK) $(isenddead_OBJECTS) $(isenddead_LDADD) $(LIBS) multi_isendalive$(EXEEXT): $(multi_isendalive_OBJECTS) $(multi_isendalive_DEPENDENCIES) $(EXTRA_multi_isendalive_DEPENDENCIES) @rm -f multi_isendalive$(EXEEXT) $(AM_V_CCLD)$(LINK) $(multi_isendalive_OBJECTS) $(multi_isendalive_LDADD) $(LIBS) nbccoll$(EXEEXT): $(nbccoll_OBJECTS) $(nbccoll_DEPENDENCIES) $(EXTRA_nbccoll_DEPENDENCIES) @rm -f nbccoll$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nbccoll_OBJECTS) $(nbccoll_LDADD) $(LIBS) recvdead$(EXEEXT): $(recvdead_OBJECTS) $(recvdead_DEPENDENCIES) $(EXTRA_recvdead_DEPENDENCIES) @rm -f recvdead$(EXEEXT) $(AM_V_CCLD)$(LINK) $(recvdead_OBJECTS) $(recvdead_LDADD) $(LIBS) reduce$(EXEEXT): $(reduce_OBJECTS) $(reduce_DEPENDENCIES) $(EXTRA_reduce_DEPENDENCIES) @rm -f reduce$(EXEEXT) $(AM_V_CCLD)$(LINK) $(reduce_OBJECTS) $(reduce_LDADD) $(LIBS) revoke_nofail$(EXEEXT): $(revoke_nofail_OBJECTS) $(revoke_nofail_DEPENDENCIES) $(EXTRA_revoke_nofail_DEPENDENCIES) @rm -f revoke_nofail$(EXEEXT) $(AM_V_CCLD)$(LINK) $(revoke_nofail_OBJECTS) $(revoke_nofail_LDADD) $(LIBS) revoke_shrink$(EXEEXT): $(revoke_shrink_OBJECTS) $(revoke_shrink_DEPENDENCIES) $(EXTRA_revoke_shrink_DEPENDENCIES) @rm -f revoke_shrink$(EXEEXT) $(AM_V_CCLD)$(LINK) $(revoke_shrink_OBJECTS) $(revoke_shrink_LDADD) $(LIBS) scatter$(EXEEXT): $(scatter_OBJECTS) $(scatter_DEPENDENCIES) $(EXTRA_scatter_DEPENDENCIES) @rm -f scatter$(EXEEXT) $(AM_V_CCLD)$(LINK) $(scatter_OBJECTS) $(scatter_LDADD) $(LIBS) sendalive$(EXEEXT): $(sendalive_OBJECTS) $(sendalive_DEPENDENCIES) $(EXTRA_sendalive_DEPENDENCIES) @rm -f sendalive$(EXEEXT) $(AM_V_CCLD)$(LINK) $(sendalive_OBJECTS) $(sendalive_LDADD) $(LIBS) senddead$(EXEEXT): $(senddead_OBJECTS) $(senddead_DEPENDENCIES) $(EXTRA_senddead_DEPENDENCIES) @rm -f senddead$(EXEEXT) $(AM_V_CCLD)$(LINK) $(senddead_OBJECTS) $(senddead_LDADD) $(LIBS) shrink$(EXEEXT): $(shrink_OBJECTS) $(shrink_DEPENDENCIES) $(EXTRA_shrink_DEPENDENCIES) @rm -f shrink$(EXEEXT) $(AM_V_CCLD)$(LINK) $(shrink_OBJECTS) $(shrink_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/abort.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/agree.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/agree_shrink.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/anysource.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/barrier.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bcast.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/die.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/failure_ack.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gather.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/irecvdead.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isendalive.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isenddead.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi_isendalive.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nbccoll.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/recvdead.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reduce.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/revoke_nofail.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/revoke_shrink.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scatter.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendalive.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/senddead.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shrink.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/ft/nbccoll.c0000644000175000017500000000356312620254305016560 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include /* * This test checks if a non-blocking collective failing impacts the result * of another operation going on at the same time. */ int main(int argc, char **argv) { int rank, size; int err; int excl; MPI_Comm small_comm; MPI_Group orig_grp, small_grp; MPI_Request req; MPI_Status status; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); MPI_Comm_group(MPI_COMM_WORLD, &orig_grp); MPI_Group_size(orig_grp, &excl); excl--; MPI_Group_excl(orig_grp, 1, &excl, &small_grp); MPI_Comm_create_group(MPI_COMM_WORLD, small_grp, 0, &small_comm); MPI_Group_free(&orig_grp); MPI_Group_free(&small_grp); if (size < 4) { fprintf(stderr, "Must run with at least 2 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } if (rank == excl) { exit(EXIT_FAILURE); } MPI_Ibarrier(MPI_COMM_WORLD, &req); err = MPI_Barrier(small_comm); if (err != MPI_SUCCESS) { int ec; MPI_Error_class(err, &ec); fprintf(stderr, "Result != MPI_SUCCESS: %d\n", ec); MPI_Abort(MPI_COMM_WORLD, 1); } err = MPI_Wait(&req, &status); if (err == MPI_SUCCESS) { int ec, ec2; MPI_Error_class(err, &ec); MPI_Error_class(status.MPI_ERROR, &ec2); fprintf(stderr, "Result != MPIX_ERR_PROC_FAILED: %d Status: %d\n", ec, ec2); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_free(&small_comm); if (rank == 0) { printf(" No Errors\n"); fflush(stdout); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/ft/bcast.c0000644000175000017500000000467712620254305016247 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include #include "mpitest.h" /* * This test attempts collective bcast communication after a process in * the communicator has failed. */ int main(int argc, char **argv) { int rank, size, rc, errclass, toterrs, errs = 0; int deadprocs[] = { 1 }; char buf[100000]; MPI_Group world, newgroup; MPI_Comm newcomm; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); MPI_Comm_group(MPI_COMM_WORLD, &world); MPI_Group_excl(world, 1, deadprocs, &newgroup); MPI_Comm_create_group(MPI_COMM_WORLD, newgroup, 0, &newcomm); if (size < 3) { fprintf(stderr, "Must run with at least 3 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } if (rank == 1) { exit(EXIT_FAILURE); } if (rank == 0) { strcpy(buf, "No Errors"); } /* do a small bcast first */ rc = MPI_Bcast(buf, 10, MPI_CHAR, 0, MPI_COMM_WORLD); #if defined (MPICH) && (MPICH_NUMVERSION >= 30100102) MPI_Error_class(rc, &errclass); if ((rc) && (errclass != MPIX_ERR_PROC_FAILED)) { fprintf(stderr, "Wrong error code (%d) returned. Expected MPIX_ERR_PROC_FAILED\n", errclass); errs++; } #endif /* reset the non-root buffers */ if (rank != 0) memset(buf, 0, sizeof(buf)); /* do a larger bcast */ rc = MPI_Bcast(buf, 100000, MPI_CHAR, 0, MPI_COMM_WORLD); #if defined (MPICH) && (MPICH_NUMVERSION >= 30100102) MPI_Error_class(rc, &errclass); if ((rc) && (errclass != MPIX_ERR_PROC_FAILED)) { fprintf(stderr, "Wrong error code (%d) returned. Expected MPIX_ERR_PROC_FAILED\n", errclass); errs++; } #endif rc = MPI_Reduce(&errs, &toterrs, 1, MPI_INT, MPI_SUM, 0, newcomm); if (rc) fprintf(stderr, "Failed to get errors from other processes\n"); if (rank == 0) { if (toterrs) { printf(" Found %d errors\n", toterrs); } else { printf(" No Errors\n"); } fflush(stdout); } MPI_Group_free(&world); MPI_Group_free(&newgroup); MPI_Comm_free(&newcomm); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/ft/isendalive.c0000644000175000017500000000274512620254305017270 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include /* * This test attempts communication between 2 running processes * after another process has failed. The communication should complete * successfully. */ int main(int argc, char **argv) { int rank, size, err; char buf[10]; MPI_Request request; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); if (size < 3) { fprintf(stderr, "Must run with at least 3 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } if (rank == 1) { exit(EXIT_FAILURE); } if (rank == 0) { err = MPI_Isend("No Errors", 10, MPI_CHAR, 2, 0, MPI_COMM_WORLD, &request); err += MPI_Wait(&request, MPI_STATUS_IGNORE); if (err) { fprintf(stderr, "An error occurred during the send operation\n"); } } if (rank == 2) { err = MPI_Irecv(buf, 10, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &request); err += MPI_Wait(&request, MPI_STATUS_IGNORE); if (err) { fprintf(stderr, "An error occurred during the recv operation\n"); } else { printf(" %s\n", buf); fflush(stdout); } } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/ft/failure_ack.c0000644000175000017500000001013012620254305017375 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include /* * This test makes sure that after a failure, the correct group of failed * processes is returned from MPIX_Comm_failure_ack/get_acked. */ int main(int argc, char **argv) { int rank, size, err, result, i; char buf[10] = " No errors"; char error[MPI_MAX_ERROR_STRING]; MPI_Group failed_grp, one_grp, world_grp; int one[] = { 1 }; int world_ranks[] = { 0, 1, 2 }; int failed_ranks[3]; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); if (size < 3) { fprintf(stderr, "Must run with at least 3 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); if (rank == 1) { exit(EXIT_FAILURE); } if (rank == 0) { err = MPI_Recv(buf, 10, MPI_CHAR, 1, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); if (MPI_SUCCESS == err) { fprintf(stderr, "Expected a failure for receive from rank 1\n"); MPI_Abort(MPI_COMM_WORLD, 1); } err = MPIX_Comm_failure_ack(MPI_COMM_WORLD); if (MPI_SUCCESS != err) { int ec; MPI_Error_class(err, &ec); MPI_Error_string(err, error, &size); fprintf(stderr, "MPIX_Comm_failure_ack returned an error: %d\n%s", ec, error); MPI_Abort(MPI_COMM_WORLD, 1); } err = MPIX_Comm_failure_get_acked(MPI_COMM_WORLD, &failed_grp); if (MPI_SUCCESS != err) { int ec; MPI_Error_class(err, &ec); MPI_Error_string(err, error, &size); fprintf(stderr, "MPIX_Comm_failure_get_acked returned an error: %d\n%s", ec, error); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_group(MPI_COMM_WORLD, &world_grp); MPI_Group_incl(world_grp, 1, one, &one_grp); MPI_Group_compare(one_grp, failed_grp, &result); if (MPI_IDENT != result) { fprintf(stderr, "First failed group contains incorrect processes\n"); MPI_Group_size(failed_grp, &size); MPI_Group_translate_ranks(failed_grp, size, world_ranks, world_grp, failed_ranks); for (i = 0; i < size; i++) fprintf(stderr, "DEAD: %d\n", failed_ranks[i]); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Group_free(&failed_grp); err = MPI_Recv(buf, 10, MPI_CHAR, 2, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); if (MPI_SUCCESS != err) { fprintf(stderr, "First receive failed\n"); MPI_Abort(MPI_COMM_WORLD, 1); } err = MPI_Recv(buf, 10, MPI_CHAR, 2, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); if (MPI_SUCCESS == err) { fprintf(stderr, "Expected a failure for receive from rank 2\n"); MPI_Abort(MPI_COMM_WORLD, 1); } err = MPIX_Comm_failure_get_acked(MPI_COMM_WORLD, &failed_grp); if (MPI_SUCCESS != err) { int ec; MPI_Error_class(err, &ec); MPI_Error_string(err, error, &size); fprintf(stderr, "MPIX_Comm_failure_get_acked returned an error: %d\n%s", ec, error); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Group_compare(one_grp, failed_grp, &result); if (MPI_IDENT != result) { fprintf(stderr, "Second failed group contains incorrect processes\n"); MPI_Group_size(failed_grp, &size); MPI_Group_translate_ranks(failed_grp, size, world_ranks, world_grp, failed_ranks); for (i = 0; i < size; i++) fprintf(stderr, "DEAD: %d\n", failed_ranks[i]); MPI_Abort(MPI_COMM_WORLD, 1); } fprintf(stdout, " No errors\n"); } else if (rank == 2) { MPI_Ssend(buf, 10, MPI_CHAR, 0, 0, MPI_COMM_WORLD); exit(EXIT_FAILURE); } MPI_Group_free(&failed_grp); MPI_Group_free(&one_grp); MPI_Group_free(&world_grp); MPI_Finalize(); } mpi-testsuite-3.2+dfsg/ft/Makefile.am0000644000175000017500000000114312620254305017024 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile.mtest EXTRA_DIST = testlist ## for all programs that are just built from the single corresponding source ## file, we don't need per-target _SOURCES rules, automake will infer them ## correctly noinst_PROGRAMS = die abort sendalive isendalive senddead recvdead isenddead \ irecvdead barrier gather reduce bcast scatter failure_ack \ anysource revoke_nofail shrink agree multi_isendalive \ agree_shrink revoke_shrink nbccoll mpi-testsuite-3.2+dfsg/ft/gather.c0000644000175000017500000000327712620254305016420 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include /* * This test attempts collective communication after a process in * the communicator has failed. Since all processes contribute to * the result of the operation, all process will receive an error. */ int main(int argc, char **argv) { int rank, size, err, errclass; int sendbuf[1] = { 42 }; int *recvbuf; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); if (size < 3) { fprintf(stderr, "Must run with at least 3 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } if (rank == 1) { exit(EXIT_FAILURE); } recvbuf = (int *) malloc(size * sizeof(int)); err = MPI_Gather(sendbuf, 1, MPI_INT, recvbuf, size, MPI_INT, 0, MPI_COMM_WORLD); if (rank == 0) { #if defined (MPICH) && (MPICH_NUMVERSION >= 30100102) MPI_Error_class(err, &errclass); if (errclass == MPIX_ERR_PROC_FAILED) { printf(" No Errors\n"); fflush(stdout); } else { fprintf(stderr, "Wrong error code (%d) returned. Expected MPIX_ERR_PROC_FAILED\n", errclass); } #else if (err) { printf(" No Errors\n"); fflush(stdout); } else { fprintf(stderr, "Program reported MPI_SUCCESS, but an error code was expected.\n"); } #endif } free(recvbuf); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/ft/irecvdead.c0000644000175000017500000000353212620254305017066 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include /* * This test attempts MPI_Irecv with the source being a dead process. It should fail * and return an error at completion. If we are testing sufficiently new MPICH, we * look for the MPIX_ERR_PROC_FAILED error code. These should be converted to look * for the standarized error code once it is finalized. */ int main(int argc, char **argv) { int rank, size, err, errclass; MPI_Request request; char buf[10]; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); if (size < 2) { fprintf(stderr, "Must run with at least 2 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } if (rank == 1) { exit(EXIT_FAILURE); } if (rank == 0) { MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); err = MPI_Irecv(buf, 1, MPI_CHAR, 1, 0, MPI_COMM_WORLD, &request); if (err) fprintf(stderr, "MPI_Irecv returned an error"); err = MPI_Wait(&request, MPI_STATUS_IGNORE); #if defined (MPICH) && (MPICH_NUMVERSION >= 30100102) MPI_Error_class(err, &errclass); if (errclass == MPIX_ERR_PROC_FAILED) { printf(" No Errors\n"); fflush(stdout); } else { fprintf(stderr, "Wrong error code (%d) returned. Expected MPIX_ERR_PROC_FAILED\n", errclass); } #else if (err) { printf(" No Errors\n"); fflush(stdout); } else { fprintf(stderr, "Program reported MPI_SUCCESS, but an error code was expected.\n"); } #endif } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/ft/sendalive.c0000644000175000017500000000217112620254305017110 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include /* * This test attempts communication between 2 running processes * after another process has failed. */ int main(int argc, char **argv) { int rank, err; char buf[10]; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); if (rank == 1) { exit(EXIT_FAILURE); } if (rank == 0) { err = MPI_Send("No Errors", 10, MPI_CHAR, 2, 0, MPI_COMM_WORLD); if (err) { fprintf(stderr, "An error occurred during the send operation\n"); } } if (rank == 2) { err = MPI_Recv(buf, 10, MPI_CHAR, 0, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); if (err) { fprintf(stderr, "An error occurred during the recv operation\n"); } else { printf(" %s\n", buf); fflush(stdout); } } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/ft/barrier.c0000644000175000017500000000304212620254305016562 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include /* * This test attempts collective communication after a process in * the communicator has failed. Since all processes contribute to * the result of the operation, all process will receive an error. */ int main(int argc, char **argv) { int rank, size; int err, errclass; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); if (size < 2) { fprintf(stderr, "Must run with at least 2 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } if (rank == 1) { exit(EXIT_FAILURE); } err = MPI_Barrier(MPI_COMM_WORLD); if (rank == 0) { #if defined (MPICH) && (MPICH_NUMVERSION >= 30100102) MPI_Error_class(err, &errclass); if (errclass == MPIX_ERR_PROC_FAILED) { printf(" No Errors\n"); fflush(stdout); } else { fprintf(stderr, "Wrong error code (%d) returned. Expected MPIX_ERR_PROC_FAILED\n", errclass); } #else if (err) { printf(" No Errors\n"); fflush(stdout); } else { fprintf(stderr, "Program reported MPI_SUCCESS, but an error code was expected.\n"); } #endif } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/ft/multi_isendalive.c0000644000175000017500000000416212620254305020475 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include /* * This test attempts communication between 2 running processes * after another process has failed. The communication should complete * successfully. */ int main(int argc, char **argv) { int rank, size, err; char buf[10]; MPI_Request request; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); if (size < 4) { fprintf(stderr, "Must run with at least 4 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } if (rank == 1) { exit(EXIT_FAILURE); } if (rank == 0) { err = MPI_Issend("No Errors", 10, MPI_CHAR, 3, 0, MPI_COMM_WORLD, &request); err += MPI_Wait(&request, MPI_STATUS_IGNORE); if (err) { fprintf(stderr, "An error occurred during the send operation\n"); } } if (rank == 3) { err = MPI_Irecv(buf, 10, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &request); err += MPI_Wait(&request, MPI_STATUS_IGNORE); if (err) { fprintf(stderr, "An error occurred during the recv operation\n"); } } if (rank == 3) { exit(EXIT_FAILURE); } if (rank == 0) { err = MPI_Issend("No Errors", 10, MPI_CHAR, 2, 0, MPI_COMM_WORLD, &request); err += MPI_Wait(&request, MPI_STATUS_IGNORE); if (err) { fprintf(stderr, "An error occurred during the send operation\n"); } } if (rank == 2) { err = MPI_Irecv(buf, 10, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &request); err += MPI_Wait(&request, MPI_STATUS_IGNORE); if (err) { fprintf(stderr, "An error occurred during the recv operation\n"); } else { printf(" %s\n", buf); fflush(stdout); } } if (rank == 2) { exit(EXIT_FAILURE); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/ft/revoke_nofail.c0000644000175000017500000000255212620254305017764 0ustar mbanckmbanck /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include /* * This test ensures that MPI_Comm_revoke works when a process failure has not * occurred yet. */ int main(int argc, char **argv) { int rank, size; int rc, ec; char error[MPI_MAX_ERROR_STRING]; MPI_Comm world_dup; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); if (size < 2) { fprintf(stderr, "Must run with at least 2 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); MPI_Comm_dup(MPI_COMM_WORLD, &world_dup); if (rank == 1) { MPIX_Comm_revoke(world_dup); } rc = MPI_Barrier(world_dup); MPI_Error_class(rc, &ec); if (ec != MPIX_ERR_REVOKED) { MPI_Error_string(ec, error, &size); fprintf(stderr, "[%d] MPI_Barrier should have returned MPIX_ERR_REVOKED (%d), but it actually returned: %d\n%s\n", rank, MPIX_ERR_REVOKED, ec, error); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_free(&world_dup); if (rank == 0) fprintf(stdout, " No errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/ft/isenddead.c0000644000175000017500000000310512620254305017054 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include /* * This test attempts to MPI_Isend with the destination being a dead process. * The communication should succeed or report an error. It must not block * indefinitely. */ int main(int argc, char **argv) { int rank, size, err, errclass; char buf[100000]; MPI_Request request; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); if (size < 2) { fprintf(stderr, "Must run with at least 2 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } if (rank == 1) { exit(EXIT_FAILURE); } if (rank == 0) { MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); err = MPI_Isend(buf, 100000, MPI_CHAR, 1, 0, MPI_COMM_WORLD, &request); if (err) fprintf(stderr, "MPI_Isend returned error\n"); err = MPI_Wait(&request, MPI_STATUS_IGNORE); #if defined (MPICH) && (MPICH_NUMVERSION >= 30100102) MPI_Error_class(err, &errclass); if ((err) && (errclass != MPIX_ERR_PROC_FAILED)) { fprintf(stderr, "Wrong error code (%d) returned. Expected MPIX_ERR_PROC_FAILED\n", errclass); } else { printf(" No Errors\n"); fflush(stdout); } #else printf(" No Errors\n"); fflush(stdout); #endif } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/ft/senddead.c0000644000175000017500000000341412620254305016706 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include /* * This test attempts to MPI_Send with the destination being a dead process. * The communication should succeed or report an error. It must not block * indefinitely. */ int main(int argc, char **argv) { int rank, size, err, errclass; char buf[100000]; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); if (size < 2) { fprintf(stderr, "Must run with at least 2 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } if (rank == 1) { exit(EXIT_FAILURE); } if (rank == 0) { MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); err = MPI_Send(buf, 100000, MPI_CHAR, 1, 0, MPI_COMM_WORLD); #if defined (MPICH) && (MPICH_NUMVERSION >= 30100102) MPI_Error_class(err, &errclass); if ((err) && (errclass != MPIX_ERR_PROC_FAILED)) { fprintf(stderr, "Wrong error code (%d) returned. Expected MPIX_ERR_PROC_FAILED\n", errclass); } #endif err = MPI_Send(buf, 100000, MPI_CHAR, 1, 0, MPI_COMM_WORLD); #if defined (MPICH) && (MPICH_NUMVERSION >= 30100102) MPI_Error_class(err, &errclass); if ((err) && (errclass != MPIX_ERR_PROC_FAILED)) { fprintf(stderr, "Wrong error code (%d) returned. Expected MPIX_ERR_PROC_FAILED\n", errclass); } else { printf(" No Errors\n"); fflush(stdout); } #else printf(" No Errors\n"); fflush(stdout); #endif } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/ft/agree_shrink.c0000644000175000017500000000321512620254305017577 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" int main(int argc, char **argv) { int rank, size, rc, ec, errs = 0; int flag = 1; MPI_Comm dup, shrunk; MPI_Init(&argc, &argv); MPI_Comm_dup(MPI_COMM_WORLD, &dup); MPI_Comm_rank(dup, &rank); MPI_Comm_size(dup, &size); MPI_Comm_set_errhandler(dup, MPI_ERRORS_RETURN); if (size < 4) { fprintf(stderr, "Must run with at least 4 processes\n"); MPI_Abort(dup, 1); } if (2 == rank) exit(EXIT_FAILURE); if (MPI_SUCCESS == (rc = MPIX_Comm_agree(dup, &flag))) { MPI_Error_class(rc, &ec); fprintf(stderr, "[%d] Expected MPIX_ERR_PROC_FAILED after agree. Received: %d\n", rank, ec); errs++; MPI_Abort(dup, 1); } if (MPI_SUCCESS != (rc = MPIX_Comm_shrink(dup, &shrunk))) { MPI_Error_class(rc, &ec); fprintf(stderr, "[%d] Expected MPI_SUCCESS after shrink. Received: %d\n", rank, ec); errs++; MPI_Abort(dup, 1); } if (MPI_SUCCESS != (rc = MPIX_Comm_agree(shrunk, &flag))) { MPI_Error_class(rc, &ec); fprintf(stderr, "[%d] Expected MPI_SUCCESS after agree. Received: %d\n", rank, ec); errs++; MPI_Abort(dup, 1); } MPI_Comm_free(&shrunk); MPI_Comm_free(&dup); if (0 == rank) { if (errs) fprintf(stdout, " Found %d errors\n", errs); else fprintf(stdout, " No errors\n"); } MPI_Finalize(); } mpi-testsuite-3.2+dfsg/project_cxx.txt0000644000175000017500000000740712620254305017461 0ustar mbanckmbanck mpi-testsuite-3.2+dfsg/configure0000755000175000017500000147233212621010231016270 0ustar mbanckmbanck#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for mpich-testsuite 3.2. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and discuss@mpich.org $0: about your system, including any error possibly output $0: before this message. Then install a modern shell, or $0: manually run the script under such a shell if you do $0: have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='mpich-testsuite' PACKAGE_TARNAME='mpich-testsuite' PACKAGE_VERSION='3.2' PACKAGE_STRING='mpich-testsuite 3.2' PACKAGE_BUGREPORT='discuss@mpich.org' PACKAGE_URL='http://www.mpich.org/' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS MPI_SOURCE MPILIBNAME threadsdir otherlangs PERL impldir iodir CXXCPP nocxxdistgraph cxxdir am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE ac_ct_CXX CXXFLAGS CXX f08dir FCMODOUTFLAG FCMODINCFLAG FC_WORK_FILES_ARG FCMODEXT F03SPAWNARGTEST ALLOCMEMFC FCFLAGS_f90 f90dir ac_ct_FC FCFLAGS FC F77_MPI_ADDRESS F77_MPI_OFFSET ALLOCMEMF F77SPAWNARGTEST FC_GETARG_LIBS F77_GETARG_LIBS F77_NAME_MANGLE FLIBS host_os host_vendor host_cpu host build_os build_vendor build_cpu build MPI_SIZEOF_OFFSET MPI_SIZEOF_AINT f77dir ac_ct_F77 FFLAGS F77 MPI_SUBVERSION MPI_VERSION threadlib nslib socklib largetest EGREP CPP FGREP GREP ac_ct_AR AR RANLIB am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC MPIEXEC MPICXX MPIFC MPIF77 MPICC WRAPPER_CXXFLAGS WRAPPER_FCFLAGS WRAPPER_FFLAGS WRAPPER_LIBS WRAPPER_LDFLAGS WRAPPER_CPPFLAGS WRAPPER_CFLAGS BUILD_MPIX_TESTS_FALSE BUILD_MPIX_TESTS_TRUE mpix MPI_HAS_MPIX MPI_IS_STRICT faultsdir rmadir MPI_NO_RMA spawndir MPI_NO_SPAWN namepub_tests MPICH_ENABLE_CXX MPICH_ENABLE_FC MPICH_ENABLE_F77 MPILIBLOC SET_CFLAGS VPATH MAKE RUN_XFAIL ckpointdir comm_overlap ftdir perfdir errordir MPICH_THREAD_LEVEL FROM_MPICH master_top_srcdir master_top_builddir mpich_top_srcdir MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM VERSION target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_maintainer_mode enable_echo enable_fortran enable_cxx enable_romio enable_spawn enable_rma enable_long_double_complex enable_long_double enable_checkerrors enable_perftest enable_ft_tests enable_comm_overlap_tests enable_checkfaults enable_checkpointing enable_fast enable_strictmpi enable_threads enable_xfail with_mpi with_pm with_config_args enable_dependency_tracking enable_stricttest ' ac_precious_vars='build_alias host_alias target_alias master_top_builddir master_top_srcdir FROM_MPICH MPICH_THREAD_LEVEL MPICH_ENABLE_F77 MPICH_ENABLE_FC MPICH_ENABLE_CXX MPI_NO_SPAWN MPI_NO_RMA WRAPPER_CFLAGS WRAPPER_CPPFLAGS WRAPPER_LDFLAGS WRAPPER_LIBS WRAPPER_FFLAGS WRAPPER_FCFLAGS WRAPPER_CXXFLAGS CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP F77 FFLAGS MPI_SIZEOF_AINT MPI_SIZEOF_OFFSET FC FCFLAGS CXX CXXFLAGS CCC CXXCPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures mpich-testsuite 3.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/mpich-testsuite] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of mpich-testsuite 3.2:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --disable-maintainer-mode disable make rules and dependencies not useful (and sometimes confusing) to the casual installer --enable-echo Turn on strong echoing. The default is enable=no. --enable-fortran=option - Control the level of Fortran support in the MPICH implementation. yes|all - Enable all available Fortran implementations (F77, F90, F08) f77 - Enable Fortran 77 support f90 - Enable Fortran 90 support f08 - Enable Fortran 2008 support no|none - No Fortran support --enable-cxx Turn on C++ tests (default) --enable-romio Enable ROMIO MPI I/O implementation --enable-spawn Enable tests of the dynamic process parts of MPI-2 (default) --enable-rma Enable tests of the one sided parts of MPI-2 (default) --enable-long-double-complex Enable tests involving MPI_LONG_DOUBLE_COMPLEX (default) --enable-long-double-complex Enable tests involving MPI_LONG_DOUBLE and related types (default) --enable-checkerrors Add some tests for checking for errors in user programs --enable-perftest Include tests for basic performance consistency (default) --enable-ft-tests Include tests for fault tolerance (default) --enable-comm-overlap-tests Include tests for communicator overlap (default) --enable-checkfaults Add some tests for checking on handling of faults in user programs --enable-checkpointing Add some tests for checkpointing --enable-fast Indicates that the MPI implementation may have been built for fastest operation, such as building without error checking. Has the effect of --enable-checkerrors=no --enable-strictmpi Only test for operations specifically defined by the MPI standard. This turns off tests for some common extensions, including for combinations of predefined datatypes and predefined MPI_Op s. --enable-threads=level - Specify the level of thread support expected from the MPI implementation. The following levels are supported. single - No threads (MPI_THREAD_SINGLE) funneled - Only the main thread calls MPI (MPI_THREAD_FUNNELED) serialized - User serializes calls to MPI (MPI_THREAD_SERIALIZED) multiple - Fully multi-threaded (MPI_THREAD_MULTIPLE) The default is funneled. If enabled and no level is specified, the level is set to multiple. If disabled, the level is set to single. If the environment variable MPICH_THREAD_LEVEL is set, that thread level is used (this is to let MPICH build for the correct thread support without requiring a specific --enable-threads argument. --enable-xfail Run tests marked for expected failure --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --enable-stricttest Turn on strict GCC compilation Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-mpi=dir Use the selected MPI; compilation scripts for mpicc, mpifort and mpicxx should be in dir/bin --with-pm=name Specify the process manager for MPICH. "no" or "none" are valid values. Multiple process managers may be specified as long as they all use the same pmi interface by separating them with colons. The mpiexec for the first named process manager will be installed. Example: "--with-pm=hydra:gforker" builds the two process managers hydra and gforker; only the mpiexec from hydra is installed into the bin directory. --with-config-args=filename Specify configure argument file that contains the values of variables that configure reads, e.g. CC,CFLAGS,F77,FFLAGS,FC,FCFLAGS.... If the filename does not begin with / (absolute path), . or .. (relative path), the filename will be assumed to be $top_srcdir/configargs/.cfg. Some influential environment variables: master_top_builddir path to the MPICH top-level build directory (if present) master_top_srcdir path to the MPICH top-level source directory (if present) FROM_MPICH should be set to "yes" if this configure script is being invoked by the main MPICH configure MPICH_THREAD_LEVEL the MPI thread level supported by the enclosing MPICH build (when built within MPICH) MPICH_ENABLE_F77 "yes" if the enclosing MPICH build supports Fortran 77 MPICH_ENABLE_FC "yes" if the enclosing MPICH build supports modern Fortran MPICH_ENABLE_CXX "yes" if the enclosing MPICH build supports C++ MPI_NO_SPAWN set to "yes" to disable dynamic process tests MPI_NO_RMA set to "yes" to disable one-sided tests WRAPPER_CFLAGS WRAPPER_CPPFLAGS WRAPPER_LDFLAGS WRAPPER_LIBS WRAPPER_FFLAGS WRAPPER_FCFLAGS WRAPPER_CXXFLAGS CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor F77 Fortran 77 compiler command FFLAGS Fortran 77 compiler flags MPI_SIZEOF_AINT if set, force MPI_Aint to a width of this many bytes MPI_SIZEOF_OFFSET if set, force MPI_Offset to a width of this many bytes FC Fortran compiler command FCFLAGS Fortran compiler flags CXX C++ compiler command CXXFLAGS C++ compiler flags CXXCPP C++ preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . mpich-testsuite home page: . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF mpich-testsuite configure 3.2 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## -------------------------------- ## ## Report this to discuss@mpich.org ## ## -------------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_find_intX_t LINENO BITS VAR # ----------------------------------- # Finds a signed integer type with width BITS, setting cache variable VAR # accordingly. ac_fn_c_find_intX_t () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for int$2_t" >&5 $as_echo_n "checking for int$2_t... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" # Order is important - never check a type that is potentially smaller # than half of the expected target width. for ac_type in int$2_t 'int' 'long int' \ 'long long int' 'short int' 'signed char'; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default enum { N = $2 / 2 - 1 }; int main () { static int test_array [1 - 2 * !(0 < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1))]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default enum { N = $2 / 2 - 1 }; int main () { static int test_array [1 - 2 * !(($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1) < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 2))]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else case $ac_type in #( int$2_t) : eval "$3=yes" ;; #( *) : eval "$3=\$ac_type" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if eval test \"x\$"$3"\" = x"no"; then : else break fi done fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_find_intX_t # ac_fn_c_find_uintX_t LINENO BITS VAR # ------------------------------------ # Finds an unsigned integer type with width BITS, setting cache variable VAR # accordingly. ac_fn_c_find_uintX_t () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5 $as_echo_n "checking for uint$2_t... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" # Order is important - never check a type that is potentially smaller # than half of the expected target width. for ac_type in uint$2_t 'unsigned int' 'unsigned long int' \ 'unsigned long long int' 'unsigned short int' 'unsigned char'; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : case $ac_type in #( uint$2_t) : eval "$3=yes" ;; #( *) : eval "$3=\$ac_type" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if eval test \"x\$"$3"\" = x"no"; then : else break fi done fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_find_uintX_t # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type # ac_fn_c_compute_int LINENO EXPR VAR INCLUDES # -------------------------------------------- # Tries to find the compile-time value of EXPR in a program that includes # INCLUDES, setting VAR accordingly. Returns whether the value could be # computed ac_fn_c_compute_int () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) >= 0)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_lo=0 ac_mid=0 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=$ac_mid; break else as_fn_arith $ac_mid + 1 && ac_lo=$as_val if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) < 0)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=-1 ac_mid=-1 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) >= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_lo=$ac_mid; break else as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else ac_lo= ac_hi= fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=$ac_mid else as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in #(( ?*) eval "$3=\$ac_lo"; ac_retval=0 ;; '') ac_retval=1 ;; esac else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 static long int longval () { return $2; } static unsigned long int ulongval () { return $2; } #include #include int main () { FILE *f = fopen ("conftest.val", "w"); if (! f) return 1; if (($2) < 0) { long int i = longval (); if (i != ($2)) return 1; fprintf (f, "%ld", i); } else { unsigned long int i = ulongval (); if (i != ($2)) return 1; fprintf (f, "%lu", i); } /* Do not output a trailing newline, as this causes \r\n confusion on some platforms. */ return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : echo >>conftest.val; read $3 &5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_f77_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_f77_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_f77_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_f77_try_compile # ac_fn_f77_try_link LINENO # ------------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_f77_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_f77_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_f77_try_link # ac_fn_fc_try_compile LINENO # --------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_fc_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_fc_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_fc_try_compile # ac_fn_fc_try_link LINENO # ------------------------ # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_fc_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_fc_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_fc_try_link # ac_fn_fc_try_run LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_fc_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_fc_try_run # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_cxx_try_link LINENO # ------------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_link # ac_fn_cxx_try_cpp LINENO # ------------------------ # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_cpp # ac_fn_cxx_check_header_mongrel LINENO HEADER VAR INCLUDES # --------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_cxx_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## -------------------------------- ## ## Report this to discuss@mpich.org ## ## -------------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_cxx_check_header_mongrel cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by mpich-testsuite $as_me 3.2, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test "$CONFIGURE_DEBUG_CACHE" = yes ; then oldopts="$-" clearMinusX=no set -x if test "$oldopts" != "$-" ; then clearMinusX=yes fi fi if test "X$cache_system" = "X" ; then # A default file name, just in case cache_system="config.system" if test "$cache_file" != "/dev/null" ; then # Get the directory for the cache file, if any cache_system=`echo $cache_file | sed -e 's%^\(.*/\)[^/]*%\1config.system%'` test "x$cache_system" = "x$cache_file" && cache_system="config.system" # else # We must *not* set enable_cache to no because we need to know if # enable_cache was not set. # enable_cache=no fi fi # # Get a test value and flag whether we should remove/replace the # cache_system file (do so unless cache_system_ok is yes) # FC and F77 should be synonyms. Save both in case # We include the xxxFLAGS in case the user is using the flags to change # the language (either input or output) of the compiler. E.g., # using -xarch=v9 on Solaris to select 64 bit output or using -D_BSD_SOURCE # with gcc to get different header files on input. cleanargs=`echo "$CC $F77 $FC $CXX $F90 $CFLAGS $FFLAGS $CXXFLAGS $F90FLAGS $PATH" | tr '"' ' '` if uname -srm >/dev/null 2>&1 ; then cache_system_text="`uname -srm` $cleanargs" else cache_system_text="-no-uname- $cleanargs" fi cache_system_ok=no # if test -z "$real_enable_cache" ; then real_enable_cache=$enable_cache if test -z "$real_enable_cache" ; then real_enable_cache="notgiven" ; fi fi if test "X$real_enable_cache" = "Xnotgiven" ; then # check for valid cache file if test -z "$cache_system" ; then cache_system="config.system" ; fi if uname -srm >/dev/null 2>&1 ; then if test -f "$cache_system" -a -n "$cache_system_text" ; then if test "$cache_system_text" = "`cat $cache_system`" ; then real_enable_cache="yes" cache_system_ok=yes fi elif test ! -f "$cache_system" -a -n "$cache_system_text" ; then # remove the cache file because it may not correspond to our # system if test "$cache_file" != "/dev/null" ; then rm -f $cache_file fi real_enable_cache="yes" fi fi fi if test "X$real_enable_cache" = "Xyes" -a "$cache_file" = "/dev/null" ; then real_enable_cache=no fi if test "X$real_enable_cache" = "Xyes" ; then if test -r "$cache_file" ; then echo "loading cache $cache_file" if test -w "$cache_file" ; then # Clean the cache file (ergh) rm -f confcache sed -e "s/'\\\\''//g" -e "s/'\\\\/'/" -e "s/\\\\'/'/" \ -e "s/'\\\\''//g" $cache_file > confcache if cmp -s $cache_file confcache ; then : else if test -w $cache_file ; then echo "updating cache $cache_file" cat confcache > $cache_file else echo "not updating unwritable cache $cache_file" fi fi rm -f confcache if test "$DEBUG_AUTOCONF_CACHE" = "yes" ; then echo "Results of cleaned cache file:" echo "--------------------------------------------------------" cat $cache_file echo "--------------------------------------------------------" fi fi . $cache_file else echo "Configure in `pwd` creating cache $cache_file" > $cache_file rm -f $cache_system fi else cache_file="/dev/null" fi # Remember our location and the name of the cachefile pac_cv_my_conf_dir=`pwd` # # Update the cache_system file if necessary if test "$cache_system_ok" != yes ; then if test -n "$cache_system" ; then rm -f $cache_system echo $cache_system_text > $cache_system fi fi if test "$clearMinusX" = yes ; then set +x fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_headers="$ac_config_headers include/mpitestconf.h" VERSION=3.2 ac_aux_dir= for ac_dir in confdb "$srcdir"/confdb; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in confdb \"$srcdir\"/confdb" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. echo "RUNNING CONFIGURE FOR MPI TESTS" am__api_version='1.15' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='mpich-testsuite' VERSION='3.2' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then : enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else USE_MAINTAINER_MODE=yes fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 $as_echo "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi MAINT=$MAINTAINER_MODE_TRUE # Non-verbose make by default # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=0;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test -z "$mpich_top_srcdir" ; then if test -z "$top_srcdir" ; then use_top_srcdir=$srcdir else use_top_srcdir=$top_srcdir fi case "$use_top_srcdir" in /*) ;; *) use_top_srcdir=`(cd $use_top_srcdir && pwd)` ;; esac if test -f $use_top_srcdir/../../maint/version.m4 ; then mpich_top_srcdir=`cd $use_top_srcdir && cd ../.. && pwd` fi fi # these (in particular master_top_srcdir) are needed to regenerate # the f90 files from the f77 files # Ensure that master_top_srcdir is set if maintainer mode for is set, # since some of the Makefile targets require it. if test "X$master_top_srcdir" = "X" -a "$USE_MAINTAINER_MODE" = "yes" ; then if test -z "$top_srcdir" ; then use_top_srcdir=$srcdir else use_top_srcdir=$top_srcdir fi # Make use_top_srcdir absolute case "$use_top_srcdir" in /*) ;; *) use_top_srcdir=`(cd $use_top_srcdir && pwd)` ;; esac # Now, see if we can find the f77tof90 routine if test -x $use_top_srcdir/../../maint/f77tof90 ; then master_top_srcdir=`cd $use_top_srcdir && cd ../.. && pwd` else as_fn_error $? "Unable to find master source file - reconfigure using --disable-maintainer_mode" "$LINENO" 5 fi fi # Check whether --enable-echo was given. if test "${enable_echo+set}" = set; then : enableval=$enable_echo; set -x fi # Check whether --enable-fortran was given. if test "${enable_fortran+set}" = set; then : enableval=$enable_fortran; else enable_fortran=f77,f90 fi save_IFS="$IFS" IFS="," enable_f77=no enable_fc=no enable_f08=no for option in $enable_fortran ; do case "$option" in yes|all) enable_f77=yes enable_fc=yes ;; no|none) enable_f77=no enable_fc=no ;; f77) enable_f77=yes ;; f90) enable_fc=yes ;; f08) enable_f08=yes ;; *) IFS="$save_IFS" { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unknown value $option for --enable-fortran" >&5 $as_echo "$as_me: WARNING: Unknown value $option for --enable-fortran" >&2;} IFS="," ;; esac done IFS="$save_IFS" # Check whether --enable-cxx was given. if test "${enable_cxx+set}" = set; then : enableval=$enable_cxx; else enable_cxx=yes fi # Check whether --enable-romio was given. if test "${enable_romio+set}" = set; then : enableval=$enable_romio; else enable_romio=yes fi # Check whether --enable-spawn was given. if test "${enable_spawn+set}" = set; then : enableval=$enable_spawn; else enable_spawn=yes fi # Check whether --enable-rma was given. if test "${enable_rma+set}" = set; then : enableval=$enable_rma; else enable_rma=yes fi # Check whether --enable-long-double-complex was given. if test "${enable_long_double_complex+set}" = set; then : enableval=$enable_long_double_complex; else enable_long_double_complex=yes fi # Check whether --enable-long-double was given. if test "${enable_long_double+set}" = set; then : enableval=$enable_long_double; else enable_long_double=yes fi # Check whether --enable-checkerrors was given. if test "${enable_checkerrors+set}" = set; then : enableval=$enable_checkerrors; else enable_checkerrors=yes fi # Check whether --enable-perftest was given. if test "${enable_perftest+set}" = set; then : enableval=$enable_perftest; else enable_perftest=yes fi # Check whether --enable-ft-tests was given. if test "${enable_ft_tests+set}" = set; then : enableval=$enable_ft_tests; else enable_ft_tests=yes fi # Check whether --enable-comm-overlap-tests was given. if test "${enable_comm_overlap_tests+set}" = set; then : enableval=$enable_comm_overlap_tests; else enable_comm_overlap_tests=yes fi # Check whether --enable-checkfaults was given. if test "${enable_checkfaults+set}" = set; then : enableval=$enable_checkfaults; else enable_checkfaults=no fi # Check whether --enable-checkpointing was given. if test "${enable_checkpointing+set}" = set; then : enableval=$enable_checkpointing; else enable_checkpointing=no fi # Check whether --enable-fast was given. if test "${enable_fast+set}" = set; then : enableval=$enable_fast; fi # Check whether --enable-strictmpi was given. if test "${enable_strictmpi+set}" = set; then : enableval=$enable_strictmpi; else enable_strictmpi=no fi # Check whether --enable-threads was given. if test "${enable_threads+set}" = set; then : enableval=$enable_threads; else enable_threads=default fi # Check whether --enable-xfail was given. if test "${enable_xfail+set}" = set; then : enableval=$enable_xfail; else enable_xfail=no fi # Check whether --with-mpi was given. if test "${with_mpi+set}" = set; then : withval=$with_mpi; fi # Check whether --with-pm was given. if test "${with_pm+set}" = set; then : withval=$with_pm; else with_pm=default fi if test "$with_pm" = "none" ; then # add "none" as synonym for "no" to agree with older erroneous docs with_pm="no" fi if test "$MPID_NO_PM" = yes ; then if test "$with_pm" != "default" -a "$with_pm" != no ; then as_fn_error $? "The PM chosen ($with_pm) is is not valid for the selected device ($with_device)" "$LINENO" 5 fi # This is used to change with_pm=default to with_pm=no in the case # where the device does not want a PM with_pm=no fi if test -z "$with_pm" ; then with_pm="no" fi if test "$with_pmi" = "uni" -a "$with_pm" = "default" ; then with_pm="no" fi if test "$with_pm" = "default" -o "$with_pm" = "yes" ; then if test ! -z "$MPID_DEFAULT_PM" ; then with_pm=${MPID_DEFAULT_PM} else with_pm=hydra fi fi # Get the first pm specified if test "$with_pm" != "no" ; then first_pm="`echo $with_pm | sed -e 's/:.*//' -e 's/,.*//'`" else first_pm="" fi # Check whether --with-config-args was given. if test "${with_config_args+set}" = set; then : withval=$with_config_args; else with_config_args=no fi if test "$with_config_args" != "no" ; then case "$with_config_args" in /*|../*|./*) config_args_file="$with_config_args" ;; *) config_args_file="$srcdir/configargs/$with_config_args.cfg" ;; esac if test -s "$config_args_file" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: Reading the configure arguments in ${config_args_file}." >&5 $as_echo "Reading the configure arguments in ${config_args_file}." >&6; } . $config_args_file # Export all the variables in $config_args_file # i.e. CC,CFLAGS, F77/FFLAGS, FC/FCFLAGS, CXX/CXXFLAGS and friends... config_args_vars=`grep -v '^#' $config_args_file | sed -e 's/=.*//g'` for var in $config_args_vars ; do eval value=\$"$var" echo "Exporting $var=$value ..." export $var done else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Non-existent ${config_args_file}." >&5 $as_echo "$as_me: WARNING: Non-existent ${config_args_file}." >&2;} fi fi # First, determine whether we are/can support the language bindings # # Since F90/F90FLAGS are replaced by FC/FCFLAGS, rather than silently # substituting them, i.e. FC=$F90 and FCFLAGS=$F90FLAGS, we choose to emit # an error message and abort to avoid any ambiguous/hidden bug in choosing # Fortran90 compilers. if test -n "$F90" -o -n "$F90FLAGS" ; then as_fn_error $? "F90 and F90FLAGS are replaced by FC and FCFLAGS respectively in this configure, please unset F90/F90FLAGS and set FC/FCFLAGS instead and rerun configure again." "$LINENO" 5 fi # ------------------------------------------------------------------------ # ------------------------------------------------------------------------ if test "$enable_threads" = "yes" ; then enable_threads=multiple elif test "$enable_threads" = "no" ; then enable_threads=single elif test "$enable_threads" = default ; then if test -n "$MPICH_THREAD_LEVEL" ; then case $MPICH_THREAD_LEVEL in MPI_THREAD_MULTIPLE) enable_threads=multiple ;; MPI_THREAD_SERIALIZED) enable_threads=serialized ;; MPI_THREAD_FUNNELED) enable_threads=funneled ;; MPI_THREAD_SINGLE) enable_threads=single ;; esac else enable_threads=funneled fi fi # errordir is substituted into the testlist file as errors when the # tests should check error handling and as a comment (#) otherwise. errordir="#" if test "$enable_checkerrors" = "yes" ; then errordir=errors fi # The performance tests are not part of the MPI standard perfdir="perf" if test "$enable_strictmpi" = "yes" -o "$enable_perftest" = "no" ; then perfdir="#" fi # The ft tests are not part of the MPI standard and some of the netmods can't handle them ftdir="#ft" if test "$first_pm" = "hydra" -a "$enable_strictmpi" = "no" -a "$enable_ft_tests" = "yes" ; then ftdir="ft" fi # Setup "comm_overlap" variable based on whether comm_overlap tests # are enabled or not if test "${enable_comm_overlap_tests}" = "yes" ; then comm_overlap="" else comm_overlap="#" fi # # Only run the threads tests if multiple is specified if test "$enable_threads" = "multiple" -o "$enable_threads" = "runtime" ; then threadsdir="threads" fi # # Only run the checkpointing tests if enabled ckpointdir="#ckpoint" if test "$enable_checkpointing" = "yes" ; then ckpointdir="ckpoint" fi # # Only run xfail tests if enabled RUN_XFAIL=false if test "$enable_xfail" = "yes" ; then RUN_XFAIL=true fi if test -n "$CONF_BASE_CACHEFILE" -a -s "$CONF_BASE_CACHEFILE" ; then echo "Loading base cachefile $CONF_BASE_CACHEFILE" . $CONF_BASE_CACHEFILE export CONF_BASE_CACHEFILE fi # This is needed for Mac OSX 10.5 rm -rf conftest.dSYM rm -f conftest* date >conftest$$ # If creating a file in the current directory does not show up in the srcdir # then we're doing a VPATH build (or something is very wrong) if test ! -s $srcdir/conftest$$ ; then pac_dirtyfiles="" pac_dirtydirs="" pac_header="" for file in config.status $pac_header ; do if test -f $srcdir/$file ; then pac_dirtyfiles="$pac_dirtyfiles $file" fi done if test -n "$pac_dirtyfiles" -o -n "$pac_dirtydirs" ; then # Create a nice message about what to remove rmmsg="" if test -n "$pac_dirtyfiles" ; then rmmsg="files $pac_dirtyfiles" fi if test -n "$pac_dirtydirs" ; then if test -n "$rmmsg" ; then rmmsg="$rmmsg and directories $pac_dirtydirs" else rmmsg="directories $pac_dirtydirs" fi fi if test -f $srcdir/Makefile ; then as_fn_error $? "You cannot do a VPATH build if the source directory has been configured. Run \"make distclean\" in $srcdir first and make sure that the $rmmsg have been removed." "$LINENO" 5 else as_fn_error $? "You cannot do a VPATH build if the source directory has been configured. Remove the $rmmsg in $srcdir." "$LINENO" 5 fi fi fi # This is needed for Mac OSX 10.5 rm -rf conftest.dSYM rm -f conftest* true if test "X$MAKE" = "X" ; then for ac_prog in make gnumake nmake pmake smake do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_MAKE+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$MAKE"; then ac_cv_prog_MAKE="$MAKE" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_MAKE="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MAKE=$ac_cv_prog_MAKE if test -n "$MAKE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAKE" >&5 $as_echo "$MAKE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$MAKE" && break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether clock skew breaks make" >&5 $as_echo_n "checking whether clock skew breaks make... " >&6; } if ${pac_cv_prog_make_found_clock_skew+:} false; then : $as_echo_n "(cached) " >&6 else # This is needed for Mac OSX 10.5 rm -rf conftest.dSYM rm -f conftest* cat > conftest < conftest.out 2>&1 if grep -i skew conftest >/dev/null 2>&1 ; then pac_cv_prog_make_found_clock_skew=yes else pac_cv_prog_make_found_clock_skew=no fi # This is needed for Mac OSX 10.5 rm -rf conftest.dSYM rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_cv_prog_make_found_clock_skew" >&5 $as_echo "$pac_cv_prog_make_found_clock_skew" >&6; } if test "$pac_cv_prog_make_found_clock_skew" = "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Clock skew found by make. The configure and build may fail. Consider building in a local instead of NFS filesystem." >&5 $as_echo "$as_me: WARNING: Clock skew found by make. The configure and build may fail. Consider building in a local instead of NFS filesystem." >&2;} fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether make supports include" >&5 $as_echo_n "checking whether make supports include... " >&6; } if ${pac_cv_prog_make_include+:} false; then : $as_echo_n "(cached) " >&6 else # This is needed for Mac OSX 10.5 rm -rf conftest.dSYM rm -f conftest cat > conftest <<. ALL: @echo "success" . cat > conftest1 <<. include conftest . pac_str=`$MAKE -f conftest1 2>&1` # This is needed for Mac OSX 10.5 rm -rf conftest.dSYM rm -f conftest conftest1 if test "$pac_str" != "success" ; then pac_cv_prog_make_include="no" else pac_cv_prog_make_include="yes" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_cv_prog_make_include" >&5 $as_echo "$pac_cv_prog_make_include" >&6; } if test "$pac_cv_prog_make_include" = "no" ; then : else : fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether make allows comments in actions" >&5 $as_echo_n "checking whether make allows comments in actions... " >&6; } if ${pac_cv_prog_make_allows_comments+:} false; then : $as_echo_n "(cached) " >&6 else # This is needed for Mac OSX 10.5 rm -rf conftest.dSYM rm -f conftest cat > conftest <<. SHELL=/bin/sh ALL: @# This is a valid comment! @echo "success" . pac_str=`$MAKE -f conftest 2>&1` # This is needed for Mac OSX 10.5 rm -rf conftest.dSYM rm -f conftest if test "$pac_str" != "success" ; then pac_cv_prog_make_allows_comments="no" else pac_cv_prog_make_allows_comments="yes" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_cv_prog_make_allows_comments" >&5 $as_echo "$pac_cv_prog_make_allows_comments" >&6; } if test "$pac_cv_prog_make_allows_comments" = "no" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Your make does not allow comments in target code. Using this make may cause problems when building programs. You should consider using gnumake instead." >&5 $as_echo "$as_me: WARNING: Your make does not allow comments in target code. Using this make may cause problems when building programs. You should consider using gnumake instead." >&2;} fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for virtual path format" >&5 $as_echo_n "checking for virtual path format... " >&6; } if ${pac_cv_prog_make_vpath+:} false; then : $as_echo_n "(cached) " >&6 else # This is needed for Mac OSX 10.5 rm -rf conftest.dSYM rm -rf conftest* mkdir conftestdir cat >conftestdir/a.c < conftest <&1 | grep 'conftestdir/a.c'` if test -n "$ac_out" ; then pac_cv_prog_make_vpath="VPATH" else rm -f conftest cat > conftest <&1 | grep 'conftestdir/a.c'` if test -n "$ac_out" ; then pac_cv_prog_make_vpath=".PATH" else pac_cv_prog_make_vpath="neither VPATH nor .PATH works" fi fi # This is needed for Mac OSX 10.5 rm -rf conftest.dSYM rm -rf conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_cv_prog_make_vpath" >&5 $as_echo "$pac_cv_prog_make_vpath" >&6; } if test "$pac_cv_prog_make_vpath" = "VPATH" ; then VPATH='VPATH=.:${srcdir}' elif test "$pac_cv_prog_make_vpath" = ".PATH" ; then VPATH='.PATH: . ${srcdir}' fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether make sets CFLAGS" >&5 $as_echo_n "checking whether make sets CFLAGS... " >&6; } if ${pac_cv_prog_make_set_cflags+:} false; then : $as_echo_n "(cached) " >&6 else # This is needed for Mac OSX 10.5 rm -rf conftest.dSYM rm -f conftest cat > conftest <&1` # This is needed for Mac OSX 10.5 rm -rf conftest.dSYM rm -f conftest if test "$pac_str" = "XX" ; then pac_cv_prog_make_set_cflags="no" else pac_cv_prog_make_set_cflags="yes" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_cv_prog_make_set_cflags" >&5 $as_echo "$pac_cv_prog_make_set_cflags" >&6; } if test "$pac_cv_prog_make_set_cflags" = "no" ; then : else SET_CFLAGS='CFLAGS=' fi if test "$pac_cv_prog_make_echos_dir" = "no" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi else SET_MAKE="MAKE=${MAKE-make}" fi MPILIBLOC="" # more variables that must be marked precious for proper re-configure operation # If we're building from MPICH, check the MPICH_ENABLE_xxx environment # variables for enable defaults if test "$FROM_MPICH" = yes ; then if test -n "$MPICH_ENABLE_F77" ; then enable_f77=$MPICH_ENABLE_F77 fi if test -n "$MPICH_ENABLE_FC" ; then enable_fc=$MPICH_ENABLE_FC fi if test -n "$MPICH_ENABLE_CXX" ; then enable_cxx=$MPICH_ENABLE_CXX fi namepub_tests="#" if test -n "$nameserv_name" ; then namepub_tests="" fi fi # Some MPI-2 implementations (including some of the MPICH shared-memory # channels and BG/L) leave out the dynamic process routines. This # allows tests to avoid reporting failure for these routines. # This can be controlled by either a --disable-spawn argument or by # setting the environment variable MPI_NO_SPAWN to yes. if test "$enable_spawn" = "yes" -a "$MPI_NO_SPAWN" != "yes" ; then spawndir=spawn $as_echo "#define HAVE_MPI_SPAWN 1" >>confdefs.h fi # Also allow rma to be disabled rmadir=rma if test "$enable_rma" != yes ; then rmadir="#" elif test "$MPI_NO_RMA" = yes ; then rmadir="#" else $as_echo "#define HAVE_MPI_WIN_CREATE 1" >>confdefs.h fi faultsdir=# if test "$enable_checkfaults" = "yes" ; then faultsdir=faults fi # MPI_IS_STRICT=false if test "$enable_strictmpi" = "yes" ; then MPI_IS_STRICT=true $as_echo "#define USE_STRICT_MPI 1" >>confdefs.h fi # # At this writing, MPICH has many MPIX routines, and the test suite includes # them. As these are not MPI routines (yet), they are invalid and incorrect # when this test suite is used for other MPI implementations, including those # based on earlier versions of MPICH. MPI_HAS_MPIX=no # # Hack to detect build from within MPICH. Ensure strictmpi not selected. if test "$FROM_MPICH" = "yes" -a "$enable_strictmpi" = "no" ; then MPI_HAS_MPIX=yes fi # Prepend @mpix@ to lines of tests in testlist.in which are MPIX tests so that # we can skip running these tests when we do strict MPI test. mpix="#" if test "$enable_strictmpi" = "no"; then mpix="" fi # Use the conditional variable BUILD_MPIX_TESTS to conditionally add MPIX tests # to noninst_PROGRAMS to skip building the tests when we do strict MPI test if test "$enable_strictmpi" = "no"; then BUILD_MPIX_TESTS_TRUE= BUILD_MPIX_TESTS_FALSE='#' else BUILD_MPIX_TESTS_TRUE='#' BUILD_MPIX_TESTS_FALSE= fi # preserve these values across a reconfigure # Attach program prefix and suffix to executable names MPICC_NAME="mpicc" if test "$program_prefix" != "NONE" ; then MPICC_NAME="${program_prefix}$MPICC_NAME" fi if test "$program_suffix" != "NONE" ; then MPICC_NAME="$MPICC_NAME$program_suffix" fi MPIF77_NAME="mpif77" if test "$program_prefix" != "NONE" ; then MPIF77_NAME="${program_prefix}$MPIF77_NAME" fi if test "$program_suffix" != "NONE" ; then MPIF77_NAME="$MPIF77_NAME$program_suffix" fi MPIFORT_NAME="mpifort" if test "$program_prefix" != "NONE" ; then MPIFORT_NAME="${program_prefix}$MPIFORT_NAME" fi if test "$program_suffix" != "NONE" ; then MPIFORT_NAME="$MPIFORT_NAME$program_suffix" fi MPICXX_NAME="mpicxx" if test "$program_prefix" != "NONE" ; then MPICXX_NAME="${program_prefix}$MPICXX_NAME" fi if test "$program_suffix" != "NONE" ; then MPICXX_NAME="$MPICXX_NAME$program_suffix" fi MPIEXEC_NAME="mpiexec" if test "$program_prefix" != "NONE" ; then MPIEXEC_NAME="${program_prefix}$MPIEXEC_NAME" fi if test "$program_suffix" != "NONE" ; then MPIEXEC_NAME="$MPIEXEC_NAME$program_suffix" fi if test "$FROM_MPICH" = "yes" ; then # perform configure tests with the normal compilers ($CC/$F77/etc), but use # the WRAPPER_xFLAGS computed by MPICH as our flags instead. Then at the # end of configure we will empty out these flags and set our compilers to # the installed compiler wrappers CFLAGS="$WRAPPER_CFLAGS" CPPFLAGS="$WRAPPER_CPPFLAGS" LDFLAGS="$WRAPPER_LDFLAGS" FFLAGS="$WRAPPER_FFLAGS" FCFLAGS="$WRAPPER_FCFLAGS" CXXFLAGS="$WRAPPER_CXXFLAGS" # WRAPPER_LIBS contains currently non-existent libs like "-lopa" and "-lmpl" # right now, so set LIBS to the user-specified libs for now. # FIXME Does this need to be an AC_ARG_VAR? LIBS="$MPICH_LIBS" elif test -n "$with_mpi" ; then if test -z "$MPICC" ; then CC=$with_mpi/bin/$MPICC_NAME else CC=$MPICC fi if test -z "$MPIF77" ; then F77=$with_mpi/bin/$MPIF77_NAME else F77=$MPIF77 fi if test -z "$MPIFC" ; then FC=$with_mpi/bin/$MPIFORT_NAME else FC=$MPIFC fi if test -z "$MPICXX" ; then CXX=$with_mpi/bin/$MPICXX_NAME else CXX=$MPICXX fi if test -z "$MPIEXEC" ; then MPIEXEC=$with_mpi/bin/$MPIEXEC_NAME fi else # Try to use mpicc etc names if test -z "$MPICC" ; then # Extract the first word of "$MPICC_NAME mpcc", so it can be a program name with args. set dummy $MPICC_NAME mpcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MPICC+:} false; then : $as_echo_n "(cached) " >&6 else case $MPICC in [\\/]* | ?:[\\/]*) ac_cv_path_MPICC="$MPICC" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_MPICC="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi MPICC=$ac_cv_path_MPICC if test -n "$MPICC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MPICC" >&5 $as_echo "$MPICC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test "x$MPICC" != "x" ; then CC=$MPICC fi if test -z "$MPIF77" ; then # Extract the first word of "$MPIF77_NAME mpf77", so it can be a program name with args. set dummy $MPIF77_NAME mpf77; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MPIF77+:} false; then : $as_echo_n "(cached) " >&6 else case $MPIF77 in [\\/]* | ?:[\\/]*) ac_cv_path_MPIF77="$MPIF77" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_MPIF77="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi MPIF77=$ac_cv_path_MPIF77 if test -n "$MPIF77"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MPIF77" >&5 $as_echo "$MPIF77" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test "x$MPIF77" != "x" ; then F77=$MPIF77 fi if test -z "$MPIFC" ; then # Extract the first word of "$MPIFORT_NAME mpftn", so it can be a program name with args. set dummy $MPIFORT_NAME mpftn; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MPIFC+:} false; then : $as_echo_n "(cached) " >&6 else case $MPIFC in [\\/]* | ?:[\\/]*) ac_cv_path_MPIFC="$MPIFC" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_MPIFC="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi MPIFC=$ac_cv_path_MPIFC if test -n "$MPIFC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MPIFC" >&5 $as_echo "$MPIFC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test "x$MPIFC" != "x" ; then FC=$MPIFC fi if test -z "$MPICXX" ; then # We left mpiCC off of this list because mpicc and mpiCC are the # same on Mac OSX systems. # Extract the first word of "$MPICXX_NAME mpCC", so it can be a program name with args. set dummy $MPICXX_NAME mpCC; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MPICXX+:} false; then : $as_echo_n "(cached) " >&6 else case $MPICXX in [\\/]* | ?:[\\/]*) ac_cv_path_MPICXX="$MPICXX" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_MPICXX="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi MPICXX=$ac_cv_path_MPICXX if test -n "$MPICXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MPICXX" >&5 $as_echo "$MPICXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test "x$MPICXX" != "x" ; then CXX=$MPICXX fi if test -z "$MPIEXEC" ; then # Extract the first word of "$MPIEXEC_NAME", so it can be a program name with args. set dummy $MPIEXEC_NAME; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MPIEXEC+:} false; then : $as_echo_n "(cached) " >&6 else case $MPIEXEC in [\\/]* | ?:[\\/]*) ac_cv_path_MPIEXEC="$MPIEXEC" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_MPIEXEC="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi MPIEXEC=$ac_cv_path_MPIEXEC if test -n "$MPIEXEC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MPIEXEC" >&5 $as_echo "$MPIEXEC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi # Running C compiler tests DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi if test -z "${pac_save_CFLAGS_nesting}" ; then pac_save_CFLAGS_nesting=0 fi eval pac_save_CFLAGS_${pac_save_CFLAGS_nesting}='"$CFLAGS"' pac_save_CFLAGS_nesting=`expr ${pac_save_CFLAGS_nesting} + 1` ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then for ac_prog in icc pgcc xlc xlC pathcc gcc clang cc do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in icc pgcc xlc xlC pathcc gcc clang cc do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi pac_save_CFLAGS_nesting=`expr ${pac_save_CFLAGS_nesting} - 1` eval CFLAGS="\$pac_save_CFLAGS_${pac_save_CFLAGS_nesting}" eval pac_save_CFLAGS_${pac_save_CFLAGS_nesting}="" # Note that some versions of autoconf will insist that the compiler # produce executables at this point, which is why we must do something # special for building within MPICH # Ensure that we can compile an MPI program before we go any further # We don't use a cached value here because this is a sanity check # The exception is if we are executing this configure from within the # MPICH configure - in that case, the if test "$FROM_MPICH" != "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can compile and link MPI programs in C" >&5 $as_echo_n "checking whether we can compile and link MPI programs in C... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "mpi.h" int main () { MPI_Init(0,0);MPI_Finalize(); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : mpi_compile_works=yes else mpi_compile_works=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $mpi_compile_works" >&5 $as_echo "$mpi_compile_works" >&6; } if test "$mpi_compile_works" != "yes" ; then as_fn_error $? "Unable to compile and/or link an MPI program! Check config.log" "$LINENO" 5 fi fi # Check on support for long double and long long types. Do this before the # structure alignment test because it will test for including those # types as well # # If --disable-long-double is selected, then bypass this test. # Some MPI implementations may choose to not support long double because # their C compilers are inconsistent on the length of long double (this # is the case on the Cray, with Cray, PGI, and GNU not agreeing on the # size of long double) if test "$enable_long_double" = "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether long double is supported" >&5 $as_echo_n "checking whether long double is supported... " >&6; } if ${pac_cv_have_long_double+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { long double a; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : pac_cv_have_long_double=yes else pac_cv_have_long_double=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_cv_have_long_double" >&5 $as_echo "$pac_cv_have_long_double" >&6; } if test "$pac_cv_have_long_double" = "yes" ; then $as_echo "#define HAVE_LONG_DOUBLE 1" >>confdefs.h fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether long long is supported" >&5 $as_echo_n "checking whether long long is supported... " >&6; } if ${pac_cv_have_long_long+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { long long a; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : pac_cv_have_long_long=yes else pac_cv_have_long_long=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_cv_have_long_long" >&5 $as_echo "$pac_cv_have_long_long" >&6; } if test "$pac_cv_have_long_long" = yes ; then $as_echo "#define HAVE_LONG_LONG 1" >>confdefs.h fi # # Check for const and restrict (used in some of the performance tests) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if ${ac_cv_c_const+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __cplusplus /* Ultrix mips cc rejects this sort of thing. */ typedef int charset[2]; const charset cs = { 0, 0 }; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this sort of thing. */ char tx; char *t = &tx; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; } bx; struct s *b = &bx; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_const=yes else ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then $as_echo "#define const /**/" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C/C++ restrict keyword" >&5 $as_echo_n "checking for C/C++ restrict keyword... " >&6; } if ${ac_cv_c_restrict+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_restrict=no # The order here caters to the fact that C++ does not require restrict. for ac_kw in __restrict __restrict__ _Restrict restrict; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ typedef int * int_ptr; int foo (int_ptr $ac_kw ip) { return ip[0]; } int main () { int s[1]; int * $ac_kw t = s; t[0] = 0; return foo(t) ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_restrict=$ac_kw fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext test "$ac_cv_c_restrict" != no && break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_restrict" >&5 $as_echo "$ac_cv_c_restrict" >&6; } case $ac_cv_c_restrict in restrict) ;; no) $as_echo "#define restrict /**/" >>confdefs.h ;; *) cat >>confdefs.h <<_ACEOF #define restrict $ac_cv_c_restrict _ACEOF ;; esac # not using libtool for the test suite, so no LT_INIT. Instead, test here # for Library programs if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi if test -n "$ac_tool_prefix"; then for ac_prog in ar lib "link -lib" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar lib "link -lib" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} { $as_echo "$as_me:${as_lineno-$LINENO}: checking the archiver ($AR) interface" >&5 $as_echo_n "checking the archiver ($AR) interface... " >&6; } if ${am_cv_ar_interface+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu am_cv_ar_interface=ar cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int some_variable = 0; _ACEOF if ac_fn_c_try_compile "$LINENO"; then : am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 (eval $am_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -eq 0; then am_cv_ar_interface=ar else am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 (eval $am_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -eq 0; then am_cv_ar_interface=lib else am_cv_ar_interface=unknown fi fi rm -f conftest.lib libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_ar_interface" >&5 $as_echo "$am_cv_ar_interface" >&6; } case $am_cv_ar_interface in ar) ;; lib) # Microsoft lib, so override with the ar-lib wrapper script. # FIXME: It is wrong to rewrite AR. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__AR in this case, # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something # similar. AR="$am_aux_dir/ar-lib $AR" ;; unknown) as_fn_error $? "could not determine $AR interface" "$LINENO" 5 ;; esac # Enable STRICT CFLAGS # Check whether --enable-stricttest was given. if test "${enable_stricttest+set}" = set; then : enableval=$enable_stricttest; fi enable_strict_done=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if ${ac_cv_path_FGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in fgrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 $as_echo "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" export enable_strict_done if test "$enable_strict_done" != "yes" ; then # Some comments on strict warning options. # These were added to improve portability # -Wstack-usage=262144 -- 32 bit FreeBSD did not like the mprobe test # allocating a big variable on the stack. (See tt#2160). The "right" # value requires further investigation; 1 MiB would have at least # caught #2160 at compile-time, and only two other tests show a # warning at 256k. # # These were added to reduce warnings: # -Wno-missing-field-initializers -- We want to allow a struct to be # initialized to zero using "struct x y = {0};" and not require # each field to be initialized individually. # -Wno-unused-parameter -- For portability, some parameters go unused # when we have different implementations of functions for # different platforms # -Wno-unused-label -- We add fn_exit: and fn_fail: on all functions, # but fn_fail may not be used if the function doesn't return an # error. # -Wno-sign-compare -- read() and write() return bytes read/written # as a signed value, but we often compare this to size_t (or # msg_sz_t) variables. # -Wno-format-zero-length -- this warning is irritating and useless, since # a zero-length format string is very well defined # These were removed to reduce warnings: # -Wcast-qual -- Sometimes we need to cast "volatile char*" to # "char*", e.g., for memcpy. # -Wpadded -- We catch struct padding with asserts when we need to # -Wredundant-decls -- Having redundant declarations is benign and the # code already has some. # -Waggregate-return -- This seems to be a performance-related warning # aggregate return values are legal in ANSI C, but they may be returned # in memory rather than through a register. We do use aggregate return # values, but they are structs of a single basic type (used to enforce # type checking for relative vs. absolute ptrs), and with optimization # the aggregate value is converted to a scalar. # -Wdeclaration-after-statement -- This is a C89 # requirement. When compiling with C99, this should be # disabled. # -Wfloat-equal -- There are places in hwloc that set a float var to 0, then # compare it to 0 later to see if it was updated. Also when using strtod() # one needs to compare the return value with 0 to see whether a conversion # was performed. # -Werror-implicit-function-declaration -- implicit function declarations # should never be tolerated. This also ensures that we get quick # compilation failures rather than later link failures that usually # come from a function name typo. # -Wcast-align -- Casting alignment warnings. This is an # important check, but is temporarily disabled, since it is # throwing too many (correct) warnings currently, causing us # to miss other warnings. # -Wshorten-64-to-32 -- Bad type-casting warnings. This is an # important check, but is temporarily disabled, since it is # throwing too many (correct) warnings currently, causing us # to miss other warnings. # # This was removed because it masks important failures (see ticket #2094). # However, since Intel compiler currently does not include -Wtype-limits # in -Wextra, -Wtype-limits was added to handle warnings with the Intel # compiler. # -Wno-type-limits -- There are places where we compare an unsigned to # a constant that happens to be zero e.g., if x is unsigned and # MIN_VAL is zero, we'd like to do "MPIU_Assert(x >= MIN_VAL);". # Note this option is not supported by gcc 4.2. This needs to be added # after most other warning flags, so that we catch a gcc bug on 32-bit # that doesn't give a warning that this is unsupported, unless another # warning is triggered, and then if gives an error. # the embedded newlines in this string are safe because we evaluate each # argument in the for-loop below and append them to the CFLAGS with a space # as the separator instead pac_common_strict_flags=" -Wall -Wextra -Wno-missing-field-initializers -Wstrict-prototypes -Wmissing-prototypes -DGCC_WALL -Wno-unused-parameter -Wno-unused-label -Wshadow -Wmissing-declarations -Wno-long-long -Wundef -Wno-endif-labels -Wpointer-arith -Wbad-function-cast -Wwrite-strings -Wno-sign-compare -Wold-style-definition -Wno-multichar -Wno-deprecated-declarations -Wpacked -Wnested-externs -Winvalid-pch -Wno-pointer-sign -Wvariadic-macros -Wno-format-zero-length -Wtype-limits -Werror-implicit-function-declaration -Wstack-usage=262144 " enable_c89=no enable_c99=yes enable_posix=2001 enable_opt=yes flags="`echo $enable_stricttest | sed -e 's/:/ /g' -e 's/,/ /g'`" for flag in ${flags}; do case "$flag" in c89) enable_strict_done="yes" enable_c89=yes enable_c99=no ;; c99) enable_strict_done="yes" enable_c89=no enable_c99=yes ;; posix1995) enable_strict_done="yes" enable_posix=1995 ;; posix|posix2001) enable_strict_done="yes" enable_posix=2001 ;; posix2008) enable_strict_done="yes" enable_posix=2008 ;; noposix) enable_strict_done="yes" enable_posix=no ;; opt) enable_strict_done="yes" enable_opt=yes ;; noopt) enable_strict_done="yes" enable_opt=no ;; all|yes) enable_strict_done="yes" enable_c99=yes enable_posix=2001 enable_opt=yes ;; no) # Accept and ignore this value : ;; *) if test -n "$flag" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unrecognized value for enable-strict:$flag" >&5 $as_echo "$as_me: WARNING: Unrecognized value for enable-strict:$flag" >&2;} fi ;; esac done pac_cc_strict_flags="" if test "${enable_strict_done}" = "yes" ; then if test "${enable_opt}" = "yes" ; then pac_cc_strict_flags="-O2" fi pac_cc_strict_flags="$pac_cc_strict_flags $pac_common_strict_flags" case "$enable_posix" in no) : ;; 1995) if echo "$pac_cc_strict_flags" | $FGREP -e "\<-D_POSIX_C_SOURCE=199506L\>" >/dev/null 2>&1; then : echo "pac_cc_strict_flags(='$pac_cc_strict_flags') contains '-D_POSIX_C_SOURCE=199506L', not appending" >&5 else echo "pac_cc_strict_flags(='$pac_cc_strict_flags') does not contain '-D_POSIX_C_SOURCE=199506L', appending" >&5 pac_cc_strict_flags="$pac_cc_strict_flags -D_POSIX_C_SOURCE=199506L" fi ;; 2001) if echo "$pac_cc_strict_flags" | $FGREP -e "\<-D_POSIX_C_SOURCE=200112L\>" >/dev/null 2>&1; then : echo "pac_cc_strict_flags(='$pac_cc_strict_flags') contains '-D_POSIX_C_SOURCE=200112L', not appending" >&5 else echo "pac_cc_strict_flags(='$pac_cc_strict_flags') does not contain '-D_POSIX_C_SOURCE=200112L', appending" >&5 pac_cc_strict_flags="$pac_cc_strict_flags -D_POSIX_C_SOURCE=200112L" fi ;; 2008) if echo "$pac_cc_strict_flags" | $FGREP -e "\<-D_POSIX_C_SOURCE=200809L\>" >/dev/null 2>&1; then : echo "pac_cc_strict_flags(='$pac_cc_strict_flags') contains '-D_POSIX_C_SOURCE=200809L', not appending" >&5 else echo "pac_cc_strict_flags(='$pac_cc_strict_flags') does not contain '-D_POSIX_C_SOURCE=200809L', appending" >&5 pac_cc_strict_flags="$pac_cc_strict_flags -D_POSIX_C_SOURCE=200809L" fi ;; *) as_fn_error $? "internal error, unexpected POSIX version: '$enable_posix'" "$LINENO" 5 ;; esac # We only allow one of strict-C99 or strict-C89 to be # enabled. If C99 is enabled, we automatically disable C89. if test "${enable_c99}" = "yes" ; then if echo "$pac_cc_strict_flags" | $FGREP -e "\<-std=c99\>" >/dev/null 2>&1; then : echo "pac_cc_strict_flags(='$pac_cc_strict_flags') contains '-std=c99', not appending" >&5 else echo "pac_cc_strict_flags(='$pac_cc_strict_flags') does not contain '-std=c99', appending" >&5 pac_cc_strict_flags="$pac_cc_strict_flags -std=c99" fi # Use -D_STDC_C99= for Solaris compilers. See # http://lists.gnu.org/archive/html/autoconf/2010-12/msg00059.html # for discussion on why not to use -xc99 if echo "$pac_cc_strict_flags" | $FGREP -e "\<-D_STDC_C99=\>" >/dev/null 2>&1; then : echo "pac_cc_strict_flags(='$pac_cc_strict_flags') contains '-D_STDC_C99=', not appending" >&5 else echo "pac_cc_strict_flags(='$pac_cc_strict_flags') does not contain '-D_STDC_C99=', appending" >&5 pac_cc_strict_flags="$pac_cc_strict_flags -D_STDC_C99=" fi elif test "${enable_c89}" = "yes" ; then if echo "$pac_cc_strict_flags" | $FGREP -e "\<-std=c89\>" >/dev/null 2>&1; then : echo "pac_cc_strict_flags(='$pac_cc_strict_flags') contains '-std=c89', not appending" >&5 else echo "pac_cc_strict_flags(='$pac_cc_strict_flags') does not contain '-std=c89', appending" >&5 pac_cc_strict_flags="$pac_cc_strict_flags -std=c89" fi if echo "$pac_cc_strict_flags" | $FGREP -e "\<-Wdeclaration-after-statement\>" >/dev/null 2>&1; then : echo "pac_cc_strict_flags(='$pac_cc_strict_flags') contains '-Wdeclaration-after-statement', not appending" >&5 else echo "pac_cc_strict_flags(='$pac_cc_strict_flags') does not contain '-Wdeclaration-after-statement', appending" >&5 pac_cc_strict_flags="$pac_cc_strict_flags -Wdeclaration-after-statement" fi fi fi # See if the above options work with the compiler accepted_flags="" for flag in $pac_cc_strict_flags ; do if test -z "${pac_save_CFLAGS_nesting}" ; then pac_save_CFLAGS_nesting=0 fi eval pac_save_CFLAGS_${pac_save_CFLAGS_nesting}='"$CFLAGS"' pac_save_CFLAGS_nesting=`expr ${pac_save_CFLAGS_nesting} + 1` CFLAGS="$CFLAGS $accepted_flags" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts option $flag" >&5 $as_echo_n "checking whether C compiler accepts option $flag... " >&6; } pac_opt="$flag" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CFLAGS_orig="$CFLAGS" CFLAGS_opt="$pac_opt $CFLAGS" pac_result="unknown" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include const char hw[] = "Hello, World\n"; int main () { fputs (hw, stdout); ; return 0; } _ACEOF CFLAGS="$CFLAGS_orig" rm -f pac_test1.log # START of PUSHVAL if ${pac_stk_ac_link_level+:} false; then : as_fn_arith $pac_stk_ac_link_level + 1 && pac_stk_ac_link_level=$as_val else pac_stk_ac_link_level=0 fi eval "pac_stk_ac_link_$pac_stk_ac_link_level=\$ac_link" if test "x$pac_stk_ac_link_level" = x0; then : eval pac_FirstSavedValueOf_ac_link=\$pac_stk_ac_link_$pac_stk_ac_link_level fi eval pac_LastSavedValueOf_ac_link=\$pac_stk_ac_link_$pac_stk_ac_link_level # END of PUSHVAL ac_link="`echo $pac_FirstSavedValueOf_ac_link | sed -e 's|>.*$|> pac_test1.log 2>\&1|g'`" if ac_fn_c_try_link "$LINENO"; then : CFLAGS="$CFLAGS_opt" rm -f pac_test2.log # START of PUSHVAL if ${pac_stk_ac_link_level+:} false; then : as_fn_arith $pac_stk_ac_link_level + 1 && pac_stk_ac_link_level=$as_val else pac_stk_ac_link_level=0 fi eval "pac_stk_ac_link_$pac_stk_ac_link_level=\$ac_link" if test "x$pac_stk_ac_link_level" = x0; then : eval pac_FirstSavedValueOf_ac_link=\$pac_stk_ac_link_$pac_stk_ac_link_level fi eval pac_LastSavedValueOf_ac_link=\$pac_stk_ac_link_$pac_stk_ac_link_level # END of PUSHVAL ac_link="`echo $pac_FirstSavedValueOf_ac_link | sed -e 's|>.*$|> pac_test2.log 2>\&1|g'`" if ac_fn_c_try_link "$LINENO"; then : pac_TESTLOG="pac_test.log" rm -f $pac_TESTLOG if { $as_echo "$as_me:$LINENO: diff -b pac_test1.log pac_test2.log > $pac_TESTLOG" >&5 (eval diff -b pac_test1.log pac_test2.log > $pac_TESTLOG) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 test $ac_status = 0; }; then : pac_result=yes else $as_echo "$as_me: program exited with status $ac_status" >&5 (exit $ac_status) $as_echo "*** diff -b pac_test1.log pac_test2.log :" >&5 cat $pac_TESTLOG >&5 pac_result=no fi rm -f $pac_TESTLOG else pac_result=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext # START of POPVAL if ${pac_stk_ac_link_level+:} false; then : if test "x$pac_stk_ac_link_level" = x-1; then : { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"Imbalance of PUSHVAL/POPVAL of ac_link\"" >&5 $as_echo "$as_me: WARNING: \"Imbalance of PUSHVAL/POPVAL of ac_link\"" >&2;} else eval ac_link=\$pac_stk_ac_link_$pac_stk_ac_link_level as_fn_arith $pac_stk_ac_link_level - 1 && pac_stk_ac_link_level=$as_val fi else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"Uninitialized PUSHVAL/POPVAL of ac_link\"" >&5 $as_echo "$as_me: WARNING: \"Uninitialized PUSHVAL/POPVAL of ac_link\"" >&2;} fi # END of POPVAL else pac_result=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext # START of POPVAL if ${pac_stk_ac_link_level+:} false; then : if test "x$pac_stk_ac_link_level" = x-1; then : { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"Imbalance of PUSHVAL/POPVAL of ac_link\"" >&5 $as_echo "$as_me: WARNING: \"Imbalance of PUSHVAL/POPVAL of ac_link\"" >&2;} else eval ac_link=\$pac_stk_ac_link_$pac_stk_ac_link_level as_fn_arith $pac_stk_ac_link_level - 1 && pac_stk_ac_link_level=$as_val fi else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"Uninitialized PUSHVAL/POPVAL of ac_link\"" >&5 $as_echo "$as_me: WARNING: \"Uninitialized PUSHVAL/POPVAL of ac_link\"" >&2;} fi # END of POPVAL { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_result" >&5 $as_echo "$pac_result" >&6; } rm -f conftest.$ac_ext # gcc 4.2.4 on 32-bit does not complain about the -Wno-type-limits option # even though it doesn't support it. However, when another warning is # triggered, it gives an error that the option is not recognized. So we # need to test with a conftest file that will generate warnings. # # add an extra switch, pac_c_check_compiler_option_prototest, to # disable this test just in case some new compiler does not like it. # # Linking with a program with an invalid prototype to ensure a compiler warning. if test "$pac_result" = "yes" \ -a "$pac_c_check_compiler_option_prototest" != "no" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler option $flag works with an invalid prototype program" >&5 $as_echo_n "checking whether C compiler option $flag works with an invalid prototype program... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(int argc, char **argv){ int foo, bar = 0; foo += 1; return foo; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : pac_result=yes else pac_result=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_result" >&5 $as_echo "$pac_result" >&6; } fi # if test "$pac_result" = "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether routines compiled with $pac_opt can be linked with ones compiled without $pac_opt" >&5 $as_echo_n "checking whether routines compiled with $pac_opt can be linked with ones compiled without $pac_opt... " >&6; } pac_result=unknown CFLAGS="$CFLAGS_orig" rm -f pac_test3.log # START of PUSHVAL if ${pac_stk_ac_compile_level+:} false; then : as_fn_arith $pac_stk_ac_compile_level + 1 && pac_stk_ac_compile_level=$as_val else pac_stk_ac_compile_level=0 fi eval "pac_stk_ac_compile_$pac_stk_ac_compile_level=\$ac_compile" if test "x$pac_stk_ac_compile_level" = x0; then : eval pac_FirstSavedValueOf_ac_compile=\$pac_stk_ac_compile_$pac_stk_ac_compile_level fi eval pac_LastSavedValueOf_ac_compile=\$pac_stk_ac_compile_$pac_stk_ac_compile_level # END of PUSHVAL ac_compile="`echo $pac_FirstSavedValueOf_ac_compile | sed -e 's|>.*$|> pac_test3.log 2>\&1|g'`" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo(void); int foo(void){return 0;} _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:$LINENO: mv conftest.$OBJEXT pac_conftest.$OBJEXT" >&5 (eval mv conftest.$OBJEXT pac_conftest.$OBJEXT) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 test $ac_status = 0; } saved_LIBS="$LIBS" LIBS="pac_conftest.$OBJEXT $LIBS" rm -f pac_test4.log # START of PUSHVAL if ${pac_stk_ac_link_level+:} false; then : as_fn_arith $pac_stk_ac_link_level + 1 && pac_stk_ac_link_level=$as_val else pac_stk_ac_link_level=0 fi eval "pac_stk_ac_link_$pac_stk_ac_link_level=\$ac_link" if test "x$pac_stk_ac_link_level" = x0; then : eval pac_FirstSavedValueOf_ac_link=\$pac_stk_ac_link_$pac_stk_ac_link_level fi eval pac_LastSavedValueOf_ac_link=\$pac_stk_ac_link_$pac_stk_ac_link_level # END of PUSHVAL ac_link="`echo $pac_FirstSavedValueOf_ac_link | sed -e 's|>.*$|> pac_test4.log 2>\&1|g'`" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : CFLAGS="$CFLAGS_opt" rm -f pac_test5.log # START of PUSHVAL if ${pac_stk_ac_link_level+:} false; then : as_fn_arith $pac_stk_ac_link_level + 1 && pac_stk_ac_link_level=$as_val else pac_stk_ac_link_level=0 fi eval "pac_stk_ac_link_$pac_stk_ac_link_level=\$ac_link" if test "x$pac_stk_ac_link_level" = x0; then : eval pac_FirstSavedValueOf_ac_link=\$pac_stk_ac_link_$pac_stk_ac_link_level fi eval pac_LastSavedValueOf_ac_link=\$pac_stk_ac_link_$pac_stk_ac_link_level # END of PUSHVAL ac_link="`echo $pac_FirstSavedValueOf_ac_link | sed -e 's|>.*$|> pac_test5.log 2>\&1|g'`" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : pac_TESTLOG="pac_test.log" rm -f $pac_TESTLOG if { $as_echo "$as_me:$LINENO: diff -b pac_test4.log pac_test5.log > $pac_TESTLOG" >&5 (eval diff -b pac_test4.log pac_test5.log > $pac_TESTLOG) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 test $ac_status = 0; }; then : pac_result=yes else $as_echo "$as_me: program exited with status $ac_status" >&5 (exit $ac_status) $as_echo "*** diff -b pac_test4.log pac_test5.log :" >&5 cat $pac_TESTLOG >&5 pac_result=no fi rm -f $pac_TESTLOG else pac_result=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext # START of POPVAL if ${pac_stk_ac_link_level+:} false; then : if test "x$pac_stk_ac_link_level" = x-1; then : { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"Imbalance of PUSHVAL/POPVAL of ac_link\"" >&5 $as_echo "$as_me: WARNING: \"Imbalance of PUSHVAL/POPVAL of ac_link\"" >&2;} else eval ac_link=\$pac_stk_ac_link_$pac_stk_ac_link_level as_fn_arith $pac_stk_ac_link_level - 1 && pac_stk_ac_link_level=$as_val fi else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"Uninitialized PUSHVAL/POPVAL of ac_link\"" >&5 $as_echo "$as_me: WARNING: \"Uninitialized PUSHVAL/POPVAL of ac_link\"" >&2;} fi # END of POPVAL else pac_result=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext # START of POPVAL if ${pac_stk_ac_link_level+:} false; then : if test "x$pac_stk_ac_link_level" = x-1; then : { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"Imbalance of PUSHVAL/POPVAL of ac_link\"" >&5 $as_echo "$as_me: WARNING: \"Imbalance of PUSHVAL/POPVAL of ac_link\"" >&2;} else eval ac_link=\$pac_stk_ac_link_$pac_stk_ac_link_level as_fn_arith $pac_stk_ac_link_level - 1 && pac_stk_ac_link_level=$as_val fi else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"Uninitialized PUSHVAL/POPVAL of ac_link\"" >&5 $as_echo "$as_me: WARNING: \"Uninitialized PUSHVAL/POPVAL of ac_link\"" >&2;} fi # END of POPVAL LIBS="$saved_LIBS" rm -f pac_conftest.$OBJEXT else pac_result=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # START of POPVAL if ${pac_stk_ac_compile_level+:} false; then : if test "x$pac_stk_ac_compile_level" = x-1; then : { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"Imbalance of PUSHVAL/POPVAL of ac_compile\"" >&5 $as_echo "$as_me: WARNING: \"Imbalance of PUSHVAL/POPVAL of ac_compile\"" >&2;} else eval ac_compile=\$pac_stk_ac_compile_$pac_stk_ac_compile_level as_fn_arith $pac_stk_ac_compile_level - 1 && pac_stk_ac_compile_level=$as_val fi else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"Uninitialized PUSHVAL/POPVAL of ac_compile\"" >&5 $as_echo "$as_me: WARNING: \"Uninitialized PUSHVAL/POPVAL of ac_compile\"" >&2;} fi # END of POPVAL { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_result" >&5 $as_echo "$pac_result" >&6; } rm -f pac_test3.log pac_test4.log pac_test5.log fi rm -f pac_test1.log pac_test2.log CFLAGS="$CFLAGS_orig" if test "$pac_result" = "yes" ; then accepted_flags="$accepted_flags $flag" else : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu pac_save_CFLAGS_nesting=`expr ${pac_save_CFLAGS_nesting} - 1` eval CFLAGS="\$pac_save_CFLAGS_${pac_save_CFLAGS_nesting}" eval pac_save_CFLAGS_${pac_save_CFLAGS_nesting}="" done pac_cc_strict_flags=$accepted_flags fi # -Wfloat-equal isn't meaningful in testsuite, # remove it if it is in strict flags. pac_cc_strict_flags="`echo $pac_cc_strict_flags | sed -e 's|-Wfloat-equal||g'`" CFLAGS="$CFLAGS $pac_cc_strict_flags" # General headers ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in stdarg.h sys/time.h sys/resource.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Check for fixed width types ac_fn_c_find_intX_t "$LINENO" "8" "ac_cv_c_int8_t" case $ac_cv_c_int8_t in #( no|yes) ;; #( *) cat >>confdefs.h <<_ACEOF #define int8_t $ac_cv_c_int8_t _ACEOF ;; esac ac_fn_c_find_intX_t "$LINENO" "16" "ac_cv_c_int16_t" case $ac_cv_c_int16_t in #( no|yes) ;; #( *) cat >>confdefs.h <<_ACEOF #define int16_t $ac_cv_c_int16_t _ACEOF ;; esac ac_fn_c_find_intX_t "$LINENO" "32" "ac_cv_c_int32_t" case $ac_cv_c_int32_t in #( no|yes) ;; #( *) cat >>confdefs.h <<_ACEOF #define int32_t $ac_cv_c_int32_t _ACEOF ;; esac ac_fn_c_find_intX_t "$LINENO" "64" "ac_cv_c_int64_t" case $ac_cv_c_int64_t in #( no|yes) ;; #( *) cat >>confdefs.h <<_ACEOF #define int64_t $ac_cv_c_int64_t _ACEOF ;; esac ac_fn_c_find_uintX_t "$LINENO" "8" "ac_cv_c_uint8_t" case $ac_cv_c_uint8_t in #( no|yes) ;; #( *) $as_echo "#define _UINT8_T 1" >>confdefs.h cat >>confdefs.h <<_ACEOF #define uint8_t $ac_cv_c_uint8_t _ACEOF ;; esac ac_fn_c_find_uintX_t "$LINENO" "16" "ac_cv_c_uint16_t" case $ac_cv_c_uint16_t in #( no|yes) ;; #( *) cat >>confdefs.h <<_ACEOF #define uint16_t $ac_cv_c_uint16_t _ACEOF ;; esac ac_fn_c_find_uintX_t "$LINENO" "32" "ac_cv_c_uint32_t" case $ac_cv_c_uint32_t in #( no|yes) ;; #( *) $as_echo "#define _UINT32_T 1" >>confdefs.h cat >>confdefs.h <<_ACEOF #define uint32_t $ac_cv_c_uint32_t _ACEOF ;; esac ac_fn_c_find_uintX_t "$LINENO" "64" "ac_cv_c_uint64_t" case $ac_cv_c_uint64_t in #( no|yes) ;; #( *) $as_echo "#define _UINT64_T 1" >>confdefs.h cat >>confdefs.h <<_ACEOF #define uint64_t $ac_cv_c_uint64_t _ACEOF ;; esac # Check for availability of C99 types ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" if test "x$ac_cv_type__Bool" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE__BOOL 1 _ACEOF fi ac_fn_c_check_type "$LINENO" "float _Complex" "ac_cv_type_float__Complex" "$ac_includes_default" if test "x$ac_cv_type_float__Complex" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_FLOAT__COMPLEX 1 _ACEOF fi ac_fn_c_check_type "$LINENO" "double _Complex" "ac_cv_type_double__Complex" "$ac_includes_default" if test "x$ac_cv_type_double__Complex" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DOUBLE__COMPLEX 1 _ACEOF fi ac_fn_c_check_type "$LINENO" "long double _Complex" "ac_cv_type_long_double__Complex" "$ac_includes_default" if test "x$ac_cv_type_long_double__Complex" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LONG_DOUBLE__COMPLEX 1 _ACEOF fi # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void *" >&5 $as_echo_n "checking size of void *... " >&6; } if ${ac_cv_sizeof_void_p+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void *))" "ac_cv_sizeof_void_p" "$ac_includes_default"; then : else if test "$ac_cv_type_void_p" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (void *) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_void_p=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_void_p" >&5 $as_echo "$ac_cv_sizeof_void_p" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_VOID_P $ac_cv_sizeof_void_p _ACEOF # for tests that require large mem largetest="#" if test $ac_cv_sizeof_void_p -ge 8; then largetest="" fi # Only run the long double complex tests if that type is available if test "x$enable_long_double" = "xyes" && \ test "x$enable_long_double_complex" = "xyes" && \ test "x$ac_cv_type_long_double__Complex" = "xyes" ; then $as_echo "#define USE_LONG_DOUBLE_COMPLEX 1" >>confdefs.h fi # extra libraries may be necessary on some platforms (solaris) for spawn/join if test "$spawndir" = "spawn" ; then if test -z "${pac_save_LIBS_nesting}" ; then pac_save_LIBS_nesting=0 fi eval pac_save_LIBS_${pac_save_LIBS_nesting}='"$LIBS"' pac_save_LIBS_nesting=`expr ${pac_save_LIBS_nesting} + 1` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5 $as_echo_n "checking for library containing socket... " >&6; } if ${ac_cv_search_socket+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char socket (); int main () { return socket (); ; return 0; } _ACEOF for ac_lib in '' socket; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_socket=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_socket+:} false; then : break fi done if ${ac_cv_search_socket+:} false; then : else ac_cv_search_socket=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socket" >&5 $as_echo "$ac_cv_search_socket" >&6; } ac_res=$ac_cv_search_socket if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" socklib=$LIBS fi pac_save_LIBS_nesting=`expr ${pac_save_LIBS_nesting} - 1` eval LIBS="\$pac_save_LIBS_${pac_save_LIBS_nesting}" eval pac_save_LIBS_${pac_save_LIBS_nesting}="" if test -z "${pac_save_LIBS_nesting}" ; then pac_save_LIBS_nesting=0 fi eval pac_save_LIBS_${pac_save_LIBS_nesting}='"$LIBS"' pac_save_LIBS_nesting=`expr ${pac_save_LIBS_nesting} + 1` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5 $as_echo_n "checking for library containing gethostbyname... " >&6; } if ${ac_cv_search_gethostbyname+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main () { return gethostbyname (); ; return 0; } _ACEOF for ac_lib in '' nsl; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_gethostbyname=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_gethostbyname+:} false; then : break fi done if ${ac_cv_search_gethostbyname+:} false; then : else ac_cv_search_gethostbyname=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5 $as_echo "$ac_cv_search_gethostbyname" >&6; } ac_res=$ac_cv_search_gethostbyname if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" nslib=$LIBS fi pac_save_LIBS_nesting=`expr ${pac_save_LIBS_nesting} - 1` eval LIBS="\$pac_save_LIBS_${pac_save_LIBS_nesting}" eval pac_save_LIBS_${pac_save_LIBS_nesting}="" fi threadlib="" # Headers needed for threads tests if test "$threadsdir" = "threads" ; then # Check for needed threads headers and needed and optional routines for ac_header in pthread.h do : ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default" if test "x$ac_cv_header_pthread_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_PTHREAD_H 1 _ACEOF fi done # we shouldn't actually need to do this, but we are dodging the chicken/egg # problem b/c we don't have a working mpicc yet and we temporarily discarded # the MPICH-set LIBS (probably the wrong thing to do) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing pthread_create" >&5 $as_echo_n "checking for library containing pthread_create... " >&6; } if ${ac_cv_search_pthread_create+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char pthread_create (); int main () { return pthread_create (); ; return 0; } _ACEOF for ac_lib in '' pthread; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_pthread_create=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_pthread_create+:} false; then : break fi done if ${ac_cv_search_pthread_create+:} false; then : else ac_cv_search_pthread_create=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_pthread_create" >&5 $as_echo "$ac_cv_search_pthread_create" >&6; } ac_res=$ac_cv_search_pthread_create if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" threadlib="-lpthread" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing pthread_barrier_init" >&5 $as_echo_n "checking for library containing pthread_barrier_init... " >&6; } if ${ac_cv_search_pthread_barrier_init+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char pthread_barrier_init (); int main () { return pthread_barrier_init (); ; return 0; } _ACEOF for ac_lib in '' pthread; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_pthread_barrier_init=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_pthread_barrier_init+:} false; then : break fi done if ${ac_cv_search_pthread_barrier_init+:} false; then : else ac_cv_search_pthread_barrier_init=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_pthread_barrier_init" >&5 $as_echo "$ac_cv_search_pthread_barrier_init" >&6; } ac_res=$ac_cv_search_pthread_barrier_init if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi for ac_func in pthread_create pthread_yield pthread_barrier_init pthread_barrier_wait do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done if test "$FROM_MPICH" != yes ; then for ac_func in MPI_Init_thread do : ac_fn_c_check_func "$LINENO" "MPI_Init_thread" "ac_cv_func_MPI_Init_thread" if test "x$ac_cv_func_MPI_Init_thread" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_MPI_INIT_THREAD 1 _ACEOF fi done fi fi # Check for h_addr or h_addr_list. This is needed for the singjoin test # in manual/singjoin.c { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct hostent contains h_addr_list" >&5 $as_echo_n "checking whether struct hostent contains h_addr_list... " >&6; } if ${pac_cv_have_haddr_list+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { struct hostent hp; hp.h_addr_list[0]=0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : pac_cv_have_haddr_list=yes else pac_cv_have_haddr_list=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_cv_have_haddr_list" >&5 $as_echo "$pac_cv_have_haddr_list" >&6; } if test "$pac_cv_have_haddr_list" = "yes" ; then $as_echo "#define HAVE_H_ADDR_LIST 1" >>confdefs.h fi for ac_func in getrusage do : ac_fn_c_check_func "$LINENO" "getrusage" "ac_cv_func_getrusage" if test "x$ac_cv_func_getrusage" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_GETRUSAGE 1 _ACEOF fi done # Check for the MPI Version. This test assumes at least MPI 2.0. For # some tests, we need to know if we are MPI 2.1 or MPI 2.2, # particularly for new routines in Fortran if test "$FROM_MPICH" != "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking that MPI program can be compiled" >&5 $as_echo_n "checking that MPI program can be compiled... " >&6; } if ${pac_cv_mpi_compile_ok+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "mpi.h" int main () { MPI_Init(0,0);MPI_Finalize(); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : pac_cv_mpi_compile_ok=yes else pac_cv_mpi_compile_ok=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_cv_mpi_compile_ok" >&5 $as_echo "$pac_cv_mpi_compile_ok" >&6; } if test "$pac_cv_mpi_compile_ok" != yes ; then as_fn_error $? "Unable to compile an MPI program containing mpi.h!" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for major version of MPI" >&5 $as_echo_n "checking for major version of MPI... " >&6; } if ${pac_cv_mpi_major_version+:} false; then : $as_echo_n "(cached) " >&6 else for pac_cv_mpi_major_version in 3 2 1 unknown ; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "mpi.h" int main () { #if MPI_VERSION == $pac_cv_mpi_major_version ''' force failure ''' #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_cv_mpi_major_version" >&5 $as_echo "$pac_cv_mpi_major_version" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for minor version of MPI" >&5 $as_echo_n "checking for minor version of MPI... " >&6; } if ${pac_cv_mpi_minor_version+:} false; then : $as_echo_n "(cached) " >&6 else for pac_cv_mpi_minor_version in 4 3 2 1 0 unknown ; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "mpi.h" int main () { #if MPI_SUBVERSION == $pac_cv_mpi_minor_version ''' force failure ''' #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_cv_mpi_minor_version" >&5 $as_echo "$pac_cv_mpi_minor_version" >&6; } MPI_VERSION=$pac_cv_mpi_major_version MPI_SUBVERSION=$pac_cv_mpi_minor_version else # We are within the MPICH build. Extract the MPI versions from # mpi.h.in if test ! -f $mpich_top_srcdir/src/include/mpi.h.in ; then as_fn_error $? "Could not find the required mpi.h.in file!" "$LINENO" 5 fi MPI_VERSION=`grep MPI_VERSION $mpich_top_srcdir/src/include/mpi.h.in | \ sed -e 's/#define *MPI_VERSION *\([0-4]\).*/\1/g'` MPI_SUBVERSION=`grep MPI_SUBVERSION $mpich_top_srcdir/src/include/mpi.h.in | \ sed -e 's/#define *MPI_SUBVERSION *\([0-9]\).*/\1/g'` fi # Running Fortran 77 compiler tests if test -z "${pac_save_FFLAGS_nesting}" ; then pac_save_FFLAGS_nesting=0 fi eval pac_save_FFLAGS_${pac_save_FFLAGS_nesting}='"$FFLAGS"' pac_save_FFLAGS_nesting=`expr ${pac_save_FFLAGS_nesting} + 1` ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu if test -n "$ac_tool_prefix"; then for ac_prog in ifort pgf77 af77 xlf frt cf77 fort77 fl32 fort ifc efc ftn gfortran f77 g77 do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_F77+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$F77"; then ac_cv_prog_F77="$F77" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_F77="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi F77=$ac_cv_prog_F77 if test -n "$F77"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $F77" >&5 $as_echo "$F77" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$F77" && break done fi if test -z "$F77"; then ac_ct_F77=$F77 for ac_prog in ifort pgf77 af77 xlf frt cf77 fort77 fl32 fort ifc efc ftn gfortran f77 g77 do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_F77+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_F77"; then ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_F77="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_F77=$ac_cv_prog_ac_ct_F77 if test -n "$ac_ct_F77"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_F77" >&5 $as_echo "$ac_ct_F77" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_F77" && break done if test "x$ac_ct_F77" = x; then F77="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac F77=$ac_ct_F77 fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran 77 compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done rm -f a.out # If we don't use `.F' as extension, the preprocessor is not run on the # input file. (Note that this only needs to work for GNU compilers.) ac_save_ext=$ac_ext ac_ext=F { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Fortran 77 compiler" >&5 $as_echo_n "checking whether we are using the GNU Fortran 77 compiler... " >&6; } if ${ac_cv_f77_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat > conftest.$ac_ext <<_ACEOF program main #ifndef __GNUC__ choke me #endif end _ACEOF if ac_fn_f77_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_f77_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_f77_compiler_gnu" >&5 $as_echo "$ac_cv_f77_compiler_gnu" >&6; } ac_ext=$ac_save_ext ac_test_FFLAGS=${FFLAGS+set} ac_save_FFLAGS=$FFLAGS FFLAGS= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $F77 accepts -g" >&5 $as_echo_n "checking whether $F77 accepts -g... " >&6; } if ${ac_cv_prog_f77_g+:} false; then : $as_echo_n "(cached) " >&6 else FFLAGS=-g cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF if ac_fn_f77_try_compile "$LINENO"; then : ac_cv_prog_f77_g=yes else ac_cv_prog_f77_g=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_f77_g" >&5 $as_echo "$ac_cv_prog_f77_g" >&6; } if test "$ac_test_FFLAGS" = set; then FFLAGS=$ac_save_FFLAGS elif test $ac_cv_prog_f77_g = yes; then if test "x$ac_cv_f77_compiler_gnu" = xyes; then FFLAGS="-g -O2" else FFLAGS="-g" fi else if test "x$ac_cv_f77_compiler_gnu" = xyes; then FFLAGS="-O2" else FFLAGS= fi fi if test $ac_compiler_gnu = yes; then G77=yes else G77= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu pac_save_FFLAGS_nesting=`expr ${pac_save_FFLAGS_nesting} - 1` eval FFLAGS="\$pac_save_FFLAGS_${pac_save_FFLAGS_nesting}" eval pac_save_FFLAGS_${pac_save_FFLAGS_nesting}="" if test "$enable_f77" = yes ; then # If there is no working F77, then set enable_f77 to no if test -z "$F77" ; then enable_f77=no fi fi # Simple tests for which other languages we can handle. # Use these only when configuring separate from an MPICH build f77dir="#" buildingF77=no if test "$FROM_MPICH" = yes ; then if test "$enable_f77" = yes ; then # Assume success otherlangs="$otherlangs f77" f77dir=f77 buildingF77=yes fi elif test "$enable_f77" = yes ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking that we can build MPI programs with Fortran 77" >&5 $as_echo_n "checking that we can build MPI programs with Fortran 77... " >&6; } ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu cat > conftest.$ac_ext <<_ACEOF program main include 'mpif.h' integer ierr call mpi_init(ierr) call mpi_finalize(ierr) end _ACEOF if ac_fn_f77_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } otherlangs="$otherlangs f77" f77dir=f77 buildingF77=yes else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi # # At least one test (C++ test of C and Fortran datatypes) needs to # know if Fortran is supported if test "$f77dir" = "f77" ; then $as_echo "#define HAVE_FORTRAN_BINDING 1" >>confdefs.h fi # Common tests for F77 if test "$buildingF77" = "yes" ; then # Match integer types to the MPI types for MPI_Aint and MPI_Offset # FIXME: Add a test to see if the environment is importing the # necessary information. # Get the sizes of the MPI types. We use the following: # MPI_SIZEOF_OFFSET and MPI_SIZEOF_AINT if test -z "$MPI_SIZEOF_AINT" ; then # Aint should be an address-sized integer, the same as void* # We use a test on the size of void * to avoid any complications # in dealing with running programs containing MPI headers (e.g., # the IBM MPI changes the main entry point so that MPI # programs cannot be run on the host node) # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void *" >&5 $as_echo_n "checking size of void *... " >&6; } if ${ac_cv_sizeof_void_p+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void *))" "ac_cv_sizeof_void_p" "$ac_includes_default"; then : else if test "$ac_cv_type_void_p" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (void *) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_void_p=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_void_p" >&5 $as_echo "$ac_cv_sizeof_void_p" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_VOID_P $ac_cv_sizeof_void_p _ACEOF MPI_SIZEOF_AINT=$ac_cv_sizeof_void_p fi if test -z "$MPI_SIZEOF_OFFSET" ; then # We have to try and get the size of offset anyway, since # it is not the same as void * (it depends on the available # file systems). Since we want to avoid using the MPI linker, # we could do the following: # Use the mpi compiler to compile the file, using the mpi # header but no MPI calls # Use the regular C linker to link the program # However, we do this only if the environment variable BASECC # has been provided. Else we can try the following: # use # sed -n 's/typedef \(.*\) MPI_Offset *;/\1/p' mpi.h # to extract the type corresponding to MPI_Offset and then # just use that. # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of MPI_Offset" >&5 $as_echo_n "checking size of MPI_Offset... " >&6; } if ${ac_cv_sizeof_MPI_Offset+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (MPI_Offset))" "ac_cv_sizeof_MPI_Offset" "#include \"mpi.h\" "; then : else if test "$ac_cv_type_MPI_Offset" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (MPI_Offset) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_MPI_Offset=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_MPI_Offset" >&5 $as_echo "$ac_cv_sizeof_MPI_Offset" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_MPI_OFFSET $ac_cv_sizeof_MPI_Offset _ACEOF if test "$ac_cv_sizeof_MPI_Offset" = "unknown" \ -o "$ac_cv_sizeof_MPI_Offset" -eq 0 ; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Using 8 for the size of MPI_Offset" >&5 $as_echo "$as_me: WARNING: Using 8 for the size of MPI_Offset" >&2;} MPI_SIZEOF_OFFSET=8 else MPI_SIZEOF_OFFSET=$ac_cv_sizeof_MPI_Offset fi fi ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether integer*4 is supported" >&5 $as_echo_n "checking whether integer*4 is supported... " >&6; } if ${pac_cv_fort_integer4+:} false; then : $as_echo_n "(cached) " >&6 else cat > conftest.$ac_ext <<_ACEOF program main integer*4 i end _ACEOF if ac_fn_f77_try_compile "$LINENO"; then : pac_cv_fort_integer4=yes else pac_cv_fort_integer4=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_cv_fort_integer4" >&5 $as_echo "$pac_cv_fort_integer4" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether integer*8 is supported" >&5 $as_echo_n "checking whether integer*8 is supported... " >&6; } if ${pac_cv_fort_integer8+:} false; then : $as_echo_n "(cached) " >&6 else cat > conftest.$ac_ext <<_ACEOF program main integer*8 i end _ACEOF if ac_fn_f77_try_compile "$LINENO"; then : pac_cv_fort_integer8=yes else pac_cv_fort_integer8=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_cv_fort_integer8" >&5 $as_echo "$pac_cv_fort_integer8" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether integer*16 is supported" >&5 $as_echo_n "checking whether integer*16 is supported... " >&6; } if ${pac_cv_fort_integer16+:} false; then : $as_echo_n "(cached) " >&6 else cat > conftest.$ac_ext <<_ACEOF program main integer*16 i end _ACEOF if ac_fn_f77_try_compile "$LINENO"; then : pac_cv_fort_integer16=yes else pac_cv_fort_integer16=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_cv_fort_integer16" >&5 $as_echo "$pac_cv_fort_integer16" >&6; } ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Determine Aint and Offset for len in 4 8 16 ; do eval testval=\$"pac_cv_fort_integer$len" if test "$testval" = no ; then continue ; fi testval=$len if test $len = "$MPI_SIZEOF_AINT" ; then F77_MPI_ADDRESS="integer*$len" fi if test $len = "$MPI_SIZEOF_OFFSET" ; then F77_MPI_OFFSET="integer*$len" fi done # At this point, we could create a test program that would confirm that # the values in Fortran matched the values in C. # Note that we must make this an MPI program because the compiler for # MPI programs may require that the programs be run with mpiexec or # something similar (this is true for the IBM MPI, for example). rm -f f77/init/checksizes.c # If it is a VPATH build, f77/init may not be there. if test ! -d f77/init ; then mkdir f77 mkdir f77/init fi cat > f77/init/checksizes.c < int main( int argc, char **argv ) { int fsizeof_aint = $MPI_SIZEOF_AINT; int fsizeof_offset = $MPI_SIZEOF_OFFSET; int err = 0, rc = 0; MPI_Init( &argc, &argv ); if (sizeof(MPI_Aint) != fsizeof_aint) { printf( "Sizeof MPI_Aint is %d but Fortran thinks it is %d\n", (int)sizeof(MPI_Aint), fsizeof_aint ); err++; } if (sizeof(MPI_Offset) != fsizeof_offset) { printf( "Sizeof MPI_Offset is %d but Fortran thinks it is %d\n", (int)sizeof(MPI_Offset), fsizeof_offset ); err++; } MPI_Finalize( ); if (err > 0) rc = 1; return rc; } EOF # Check for name mapping so that we can do the handle conversion tests # This test needs both the base c and fortran compilers ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to get verbose linking output from $F77" >&5 $as_echo_n "checking how to get verbose linking output from $F77... " >&6; } if ${ac_cv_prog_f77_v+:} false; then : $as_echo_n "(cached) " >&6 else cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF if ac_fn_f77_try_compile "$LINENO"; then : ac_cv_prog_f77_v= # Try some options frequently used verbose output for ac_verb in -v -verbose --verbose -V -\#\#\#; do cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF # Compile and link our simple test program by passing a flag (argument # 1 to this macro) to the Fortran compiler in order to get # "verbose" output that we can then parse for the Fortran linker # flags. ac_save_FFLAGS=$FFLAGS FFLAGS="$FFLAGS $ac_verb" eval "set x $ac_link" shift $as_echo "$as_me:${as_lineno-$LINENO}: $*" >&5 # gfortran 4.3 outputs lines setting COLLECT_GCC_OPTIONS, COMPILER_PATH, # LIBRARY_PATH; skip all such settings. ac_f77_v_output=`eval $ac_link 5>&1 2>&1 | sed '/^Driving:/d; /^Configured with:/d; '"/^[_$as_cr_Letters][_$as_cr_alnum]*=/d"` $as_echo "$ac_f77_v_output" >&5 FFLAGS=$ac_save_FFLAGS rm -rf conftest* # On HP/UX there is a line like: "LPATH is: /foo:/bar:/baz" where # /foo, /bar, and /baz are search directories for the Fortran linker. # Here, we change these into -L/foo -L/bar -L/baz (and put it first): ac_f77_v_output="`echo $ac_f77_v_output | grep 'LPATH is:' | sed 's|.*LPATH is\(: *[^ ]*\).*|\1|;s|: */| -L/|g'` $ac_f77_v_output" # FIXME: we keep getting bitten by quoted arguments; a more general fix # that detects unbalanced quotes in FLIBS should be implemented # and (ugh) tested at some point. case $ac_f77_v_output in # With xlf replace commas with spaces, # and remove "-link" and closing parenthesis. *xlfentry*) ac_f77_v_output=`echo $ac_f77_v_output | sed ' s/,/ /g s/ -link / /g s/) *$// ' ` ;; # With Intel ifc, ignore the quoted -mGLOB_options_string stuff (quoted # $LIBS confuse us, and the libraries appear later in the output anyway). *mGLOB_options_string*) ac_f77_v_output=`echo $ac_f77_v_output | sed 's/"-mGLOB[^"]*"/ /g'` ;; # Portland Group compiler has singly- or doubly-quoted -cmdline argument # Singly-quoted arguments were reported for versions 5.2-4 and 6.0-4. # Doubly-quoted arguments were reported for "PGF90/x86 Linux/x86 5.0-2". *-cmdline\ * | *-ignore\ * | *-def\ *) ac_f77_v_output=`echo $ac_f77_v_output | sed "\ s/-cmdline *'[^']*'/ /g; s/-cmdline *\"[^\"]*\"/ /g s/-ignore *'[^']*'/ /g; s/-ignore *\"[^\"]*\"/ /g s/-def *'[^']*'/ /g; s/-def *\"[^\"]*\"/ /g"` ;; # If we are using fort77 (the f2c wrapper) then filter output and delete quotes. *fort77*f2c*gcc*) ac_f77_v_output=`echo "$ac_f77_v_output" | sed -n ' /:[ ]\+Running[ ]\{1,\}"gcc"/{ /"-c"/d /[.]c"*/d s/^.*"gcc"/"gcc"/ s/"//gp }'` ;; # If we are using Cray Fortran then delete quotes. *cft90*) ac_f77_v_output=`echo $ac_f77_v_output | sed 's/"//g'` ;; esac # look for -l* and *.a constructs in the output for ac_arg in $ac_f77_v_output; do case $ac_arg in [\\/]*.a | ?:[\\/]*.a | -[lLRu]*) ac_cv_prog_f77_v=$ac_verb break 2 ;; esac done done if test -z "$ac_cv_prog_f77_v"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot determine how to obtain linking information from $F77" >&5 $as_echo "$as_me: WARNING: cannot determine how to obtain linking information from $F77" >&2;} fi else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: compilation failed" >&5 $as_echo "$as_me: WARNING: compilation failed" >&2;} fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_f77_v" >&5 $as_echo "$ac_cv_prog_f77_v" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran 77 libraries of $F77" >&5 $as_echo_n "checking for Fortran 77 libraries of $F77... " >&6; } if ${ac_cv_f77_libs+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$FLIBS" != "x"; then ac_cv_f77_libs="$FLIBS" # Let the user override the test. else cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF # Compile and link our simple test program by passing a flag (argument # 1 to this macro) to the Fortran compiler in order to get # "verbose" output that we can then parse for the Fortran linker # flags. ac_save_FFLAGS=$FFLAGS FFLAGS="$FFLAGS $ac_cv_prog_f77_v" eval "set x $ac_link" shift $as_echo "$as_me:${as_lineno-$LINENO}: $*" >&5 # gfortran 4.3 outputs lines setting COLLECT_GCC_OPTIONS, COMPILER_PATH, # LIBRARY_PATH; skip all such settings. ac_f77_v_output=`eval $ac_link 5>&1 2>&1 | sed '/^Driving:/d; /^Configured with:/d; '"/^[_$as_cr_Letters][_$as_cr_alnum]*=/d"` $as_echo "$ac_f77_v_output" >&5 FFLAGS=$ac_save_FFLAGS rm -rf conftest* # On HP/UX there is a line like: "LPATH is: /foo:/bar:/baz" where # /foo, /bar, and /baz are search directories for the Fortran linker. # Here, we change these into -L/foo -L/bar -L/baz (and put it first): ac_f77_v_output="`echo $ac_f77_v_output | grep 'LPATH is:' | sed 's|.*LPATH is\(: *[^ ]*\).*|\1|;s|: */| -L/|g'` $ac_f77_v_output" # FIXME: we keep getting bitten by quoted arguments; a more general fix # that detects unbalanced quotes in FLIBS should be implemented # and (ugh) tested at some point. case $ac_f77_v_output in # With xlf replace commas with spaces, # and remove "-link" and closing parenthesis. *xlfentry*) ac_f77_v_output=`echo $ac_f77_v_output | sed ' s/,/ /g s/ -link / /g s/) *$// ' ` ;; # With Intel ifc, ignore the quoted -mGLOB_options_string stuff (quoted # $LIBS confuse us, and the libraries appear later in the output anyway). *mGLOB_options_string*) ac_f77_v_output=`echo $ac_f77_v_output | sed 's/"-mGLOB[^"]*"/ /g'` ;; # Portland Group compiler has singly- or doubly-quoted -cmdline argument # Singly-quoted arguments were reported for versions 5.2-4 and 6.0-4. # Doubly-quoted arguments were reported for "PGF90/x86 Linux/x86 5.0-2". *-cmdline\ * | *-ignore\ * | *-def\ *) ac_f77_v_output=`echo $ac_f77_v_output | sed "\ s/-cmdline *'[^']*'/ /g; s/-cmdline *\"[^\"]*\"/ /g s/-ignore *'[^']*'/ /g; s/-ignore *\"[^\"]*\"/ /g s/-def *'[^']*'/ /g; s/-def *\"[^\"]*\"/ /g"` ;; # If we are using fort77 (the f2c wrapper) then filter output and delete quotes. *fort77*f2c*gcc*) ac_f77_v_output=`echo "$ac_f77_v_output" | sed -n ' /:[ ]\+Running[ ]\{1,\}"gcc"/{ /"-c"/d /[.]c"*/d s/^.*"gcc"/"gcc"/ s/"//gp }'` ;; # If we are using Cray Fortran then delete quotes. *cft90*) ac_f77_v_output=`echo $ac_f77_v_output | sed 's/"//g'` ;; esac ac_cv_f77_libs= # Save positional arguments (if any) ac_save_positional="$@" set X $ac_f77_v_output while test $# != 1; do shift ac_arg=$1 case $ac_arg in [\\/]*.a | ?:[\\/]*.a) ac_exists=false for ac_i in $ac_cv_f77_libs; do if test x"$ac_arg" = x"$ac_i"; then ac_exists=true break fi done if test x"$ac_exists" = xtrue; then : else ac_cv_f77_libs="$ac_cv_f77_libs $ac_arg" fi ;; -bI:*) ac_exists=false for ac_i in $ac_cv_f77_libs; do if test x"$ac_arg" = x"$ac_i"; then ac_exists=true break fi done if test x"$ac_exists" = xtrue; then : else if test "$ac_compiler_gnu" = yes; then for ac_link_opt in $ac_arg; do ac_cv_f77_libs="$ac_cv_f77_libs -Xlinker $ac_link_opt" done else ac_cv_f77_libs="$ac_cv_f77_libs $ac_arg" fi fi ;; # Ignore these flags. -lang* | -lcrt*.o | -lc | -lgcc* | -lSystem | -libmil | -little \ |-LANG:=* | -LIST:* | -LNO:* | -link) ;; -lkernel32) case $host_os in *cygwin*) ;; *) ac_cv_f77_libs="$ac_cv_f77_libs $ac_arg" ;; esac ;; -[LRuYz]) # These flags, when seen by themselves, take an argument. # We remove the space between option and argument and re-iterate # unless we find an empty arg or a new option (starting with -) case $2 in "" | -*);; *) ac_arg="$ac_arg$2" shift; shift set X $ac_arg "$@" ;; esac ;; -YP,*) for ac_j in `$as_echo "$ac_arg" | sed -e 's/-YP,/-L/;s/:/ -L/g'`; do ac_exists=false for ac_i in $ac_cv_f77_libs; do if test x"$ac_j" = x"$ac_i"; then ac_exists=true break fi done if test x"$ac_exists" = xtrue; then : else ac_arg="$ac_arg $ac_j" ac_cv_f77_libs="$ac_cv_f77_libs $ac_j" fi done ;; -[lLR]*) ac_exists=false for ac_i in $ac_cv_f77_libs; do if test x"$ac_arg" = x"$ac_i"; then ac_exists=true break fi done if test x"$ac_exists" = xtrue; then : else ac_cv_f77_libs="$ac_cv_f77_libs $ac_arg" fi ;; -zallextract*| -zdefaultextract) ac_cv_f77_libs="$ac_cv_f77_libs $ac_arg" ;; # Ignore everything else. esac done # restore positional arguments set X $ac_save_positional; shift # We only consider "LD_RUN_PATH" on Solaris systems. If this is seen, # then we insist that the "run path" must be an absolute path (i.e. it # must begin with a "/"). case `(uname -sr) 2>/dev/null` in "SunOS 5"*) ac_ld_run_path=`$as_echo "$ac_f77_v_output" | sed -n 's,^.*LD_RUN_PATH *= *\(/[^ ]*\).*$,-R\1,p'` test "x$ac_ld_run_path" != x && if test "$ac_compiler_gnu" = yes; then for ac_link_opt in $ac_ld_run_path; do ac_cv_f77_libs="$ac_cv_f77_libs -Xlinker $ac_link_opt" done else ac_cv_f77_libs="$ac_cv_f77_libs $ac_ld_run_path" fi ;; esac fi # test "x$[]_AC_LANG_PREFIX[]LIBS" = "x" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_f77_libs" >&5 $as_echo "$ac_cv_f77_libs" >&6; } FLIBS="$ac_cv_f77_libs" ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran 77 name mangling" >&5 $as_echo_n "checking for Fortran 77 name mangling... " >&6; } if ${pac_cv_prog_f77_name_mangle+:} false; then : $as_echo_n "(cached) " >&6 else # Initialize pac_found to indicate if name mangling scheme has been found pac_found=no ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu cat > conftest.$ac_ext <<_ACEOF subroutine MY_name( ii ) return end _ACEOF if ac_fn_f77_try_compile "$LINENO"; then : { $as_echo "$as_me:$LINENO: mv conftest.$OBJEXT f77conftest.$OBJEXT" >&5 (eval mv conftest.$OBJEXT f77conftest.$OBJEXT) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 test $ac_status = 0; } saved_LIBS="$LIBS" LIBS="f77conftest.$OBJEXT $FLIBS $LIBS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu for call in "" __stdcall ; do for sym in my_name_ my_name__ my_name MY_NAME MY_name MY_name_ NONE ; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ extern void ${call} ${sym}(int); int main () { ${sym}(0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : pac_found=yes break fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext done test "$pac_found" = "yes" && break done ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu LIBS="$saved_LIBS" rm -f f77conftest.$OBJEXT fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu # If we got to here and pac_cv_prog_f77_name_mangle is still NOT definable, # it may be that the programs have to be linked with the Fortran compiler, # not the C compiler. Try reversing the language used for the test if test "$pac_found" != "yes" ; then ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu for call in "" __stdcall ; do for sym in my_name_ my_name__ my_name MY_NAME MY_name MY_name_ NONE ; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ void ${call} ${sym}(int a) {} _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:$LINENO: mv conftest.$OBJEXT cconftest.$OBJEXT" >&5 (eval mv conftest.$OBJEXT cconftest.$OBJEXT) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 test $ac_status = 0; } saved_LIBS="$LIBS" LIBS="cconftest.$OBJEXT $LIBS" ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu cat > conftest.$ac_ext <<_ACEOF program main call my_name(0) end _ACEOF if ac_fn_f77_try_link "$LINENO"; then : pac_found=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu LIBS="$saved_LIBS" rm -f cconftest.$OBJEXT test "$pac_found" = "yes" && break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done test "$pac_found" = "yes" && break done ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu fi if test "$pac_found" = "yes" ; then case ${sym} in my_name_) pac_cv_prog_f77_name_mangle="lower uscore" ;; my_name__) pac_cv_prog_f77_name_mangle="lower 2uscore" ;; my_name) pac_cv_prog_f77_name_mangle="lower" ;; MY_NAME) pac_cv_prog_f77_name_mangle="upper" ;; MY_name) pac_cv_prog_f77_name_mangle="mixed" ;; MY_name_) pac_cv_prog_f77_name_mangle="mixed uscore" ;; *) pac_cv_prog_f77_name_mangle="" pac_found=no; ;; esac if test "X$pac_cv_prog_f77_name_mangle" != "X" ; then if test "$call" = "__stdcall" ; then pac_cv_prog_f77_name_mangle="$pac_cv_prog_f77_name_mangle stdcall" fi fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_cv_prog_f77_name_mangle" >&5 $as_echo "$pac_cv_prog_f77_name_mangle" >&6; } case $pac_cv_prog_f77_name_mangle in *stdcall) F77_STDCALL="__stdcall" ;; *) F77_STDCALL="" ;; esac # Get the standard call definition # FIXME: This should use F77_STDCALL, not STDCALL (non-conforming name) F77_STDCALL="$call" cat >>confdefs.h <<_ACEOF #define STDCALL $F77_STDCALL _ACEOF # new_name="`echo $name | tr ' ' '_' | tr [a-z] [A-Z]`" # We could have done the character conversion with 'tr' # which may not be portable, e.g. solaris's /usr/ucb/bin/tr. # So use a conservative approach. # Replace blank with underscore name_scheme="`echo $pac_cv_prog_f77_name_mangle | sed 's% %_%g'`" # Turn lowercase into uppercase. name_scheme="`echo $name_scheme | sed -e 'y%abcdefghijklmnopqrstuvwxyz%ABCDEFGHIJKLMNOPQRSTUVWXYZ%'`" F77_NAME_MANGLE="F77_NAME_${name_scheme}" cat >>confdefs.h <<_ACEOF #define $F77_NAME_MANGLE 1 _ACEOF if test "X$pac_cv_prog_f77_name_mangle" = "X" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unknown Fortran naming scheme" >&5 $as_echo "$as_me: WARNING: Unknown Fortran naming scheme" >&2;} fi # Check that the Fortran compiler will allow us to pass arguments # of different types (e.g., for MPI_Send) # Any strict Fortran compiler will require that the arguments be # the same type - currently, the NAG Fortran compiler (nagfor) is known # to enforce this. # We could set the FFLAGS/FCFLAGS values with the option that disables # this check (if we found one), but because that may affect other tests, # instead we tell the user and exit. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $F77 allows mismatched arguments" >&5 $as_echo_n "checking whether $F77 allows mismatched arguments... " >&6; } if test "X$pac_cv_prog_f77_mismatched_args" = X ; then pac_cv_prog_f77_mismatched_args_parm="" pac_cv_prog_f77_mismatched_args=no ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu cat > conftest.$ac_ext <<_ACEOF program main integer a real b character c call foo1(a) call foo1(b) call foo1(c) end _ACEOF if ac_fn_f77_try_compile "$LINENO"; then : pac_cv_prog_f77_mismatched_args=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test "$pac_cv_prog_f77_mismatched_args" != "yes" ; then # try again with -wmismatch=foo1 save_FFLAGS="$FFLAGS" # The best solution is to turn off errors on particular routines # if that isn't possible (e.g., too many of them), then # just try arguments that turn off all checking for flags in "-mismatch" ; do testok=no FFLAGS="$FFLAGS $flags" cat > conftest.$ac_ext <<_ACEOF program main integer a real b character c call foo1(a) call foo1(b) call foo1(c) end _ACEOF if ac_fn_f77_try_compile "$LINENO"; then : testok=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext FFLAGS="$save_FFLAGS" if test "$testok" = yes ; then break ; fi done if test "$testok" = yes ; then pac_cv_prog_f77_mismatched_args_parm="$flags" pac_cv_prog_f77_mismatched_args="yes, with $pac_cv_prog_f77_mismatched_args_parm" fi fi ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_cv_prog_f77_mismatched_args" >&5 $as_echo "$pac_cv_prog_f77_mismatched_args" >&6; } if test "$pac_cv_prog_f77_mismatched_args" = no ; then as_fn_error $? "The Fortran compiler $F77 will not compile files that call the same routine with arguments of different types." "$LINENO" 5 fi addarg=$pac_cv_prog_f77_mismatched_args_parm if test "X$addarg" != "X" ; then # We could add the names of all of the MPI routines that # accept different types. Instead, we fail cleanly. # Some Fortran compilers allow you to turn off checking for # mismatched arguments for *all* routines. Adding an argument # that turns off checking for *everything* is not something that # configure should do - if the user wants this, they can follow # the instructions in the following error message. as_fn_error $? "The Fortran compiler $F77 does not accept programs that call the same routine with arguments of different types without the option $addarg. Rerun configure with FFLAGS=$addarg" "$LINENO" 5 fi # Check whether we need -lU77 to get iargc and getarg, which # are used for a few of the tests in spawn (U77 was needed with # the native compilers on HPUX. See the aclocal_f77(old).m4 file, # which has a much more complete set of tests. # # FIXME: if we can't figure out how to get iargc/getarg, then # we should really turn off those spawn tests # Even better is to limit this to the F200x version, where there is # an interface to the command line. F77SPAWNARGTEST="" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran libraries needed for getarg" >&5 $as_echo_n "checking for Fortran libraries needed for getarg... " >&6; } cat > conftest.$ac_ext <<_ACEOF program main character*64 s integer i i = iargc() call getarg(i,s) end _ACEOF if ac_fn_f77_try_link "$LINENO"; then : pac_cv_getarg_needs_u77=no else pac_cv_getarg_needs_u77=unknown fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if test "$pac_cv_getarg_needs_u77" != "no" ; then # Try again with -lU77 saveLIBS="$LIBS" LIBS="$LIBS -lU77" if ac_fn_f77_try_link "$LINENO"; then : pac_cv_getarg_needs_u77=yes else pac_cv_getarg_needs_u77=unavailable fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext LIBS="$saveLIBS" if test "$pac_cv_getarg_needs_u77" = "yes" ; then F77_GETARG_LIBS=-lU77 fi fi rm -f conftest$ac_exeext if test -n "$F77_GETARG_LIBS" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $F77_GETARG_LIBS" >&5 $as_echo "$F77_GETARG_LIBS" >&6; } else if test "$pac_cv_getarg_needs_u77" = "unavailable" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: getarg and/or iargc are not available. Some spawn tests will fail to link" >&5 $as_echo "getarg and/or iargc are not available. Some spawn tests will fail to link" >&6; } F77SPAWNARGTEST="#" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } fi fi # FIXME: Currently, we hope that FC accepts the same library FC_GETARG_LIBS="$F77_GETARG_LIBS" # F77SPAWNARGTEST is set to "#" to comment out tests in # f77/spawn/testlist.in that require non-standard extensions to # access the commandline # ALLOCMEMF is set in f77/ext/testlist if we can try this # Fortran extension ALLOCMEMF="" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether Fortran 77 supports Cray-style pointer" >&5 $as_echo_n "checking whether Fortran 77 supports Cray-style pointer... " >&6; } if ${pac_cv_prog_f77_has_pointer+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu cat > conftest.$ac_ext <<_ACEOF program main integer M pointer (MPTR,M) data MPTR/0/ end _ACEOF saved_FFLAGS="$FFLAGS" pac_cv_prog_f77_has_pointer=no CRAYPTR_FFLAGS="" for ptrflag in '' '-fcray-pointer' ; do FFLAGS="$saved_FFLAGS $ptrflag" if ac_fn_f77_try_compile "$LINENO"; then : pac_cv_prog_f77_has_pointer=yes CRAYPTR_FFLAGS="$ptrflag" break fi rm -f core conftest.err conftest.$ac_objext done FFLAGS="$saved_FFLAGS" rm -f conftest.$ac_ext ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_cv_prog_f77_has_pointer" >&5 $as_echo "$pac_cv_prog_f77_has_pointer" >&6; } if test "$pac_cv_prog_f77_has_pointer" = "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran 77 compiler flag for Cray-style pointer" >&5 $as_echo_n "checking for Fortran 77 compiler flag for Cray-style pointer... " >&6; } if test "X$CRAYPTR_FFLAGS" != "X" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CRAYPTR_FFLAGS" >&5 $as_echo "$CRAYPTR_FFLAGS" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } fi ALLOCMEMF="allocmemf 1" FFLAGS="$FFLAGS $CRAYPTR_FFLAGS" else : fi # See the f90 block of code for the Fortran 90 version of ALLOCMEMF, # i.e. ALLOCMEMFC. fi # Set a default for the Fortran 77 version of MPI_Offset. if test -z "$F77_MPI_OFFSET" ; then F77_MPI_OFFSET="integer*8" { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Selecting integer*8 as the Fortran type for MPI_Offset" >&5 $as_echo "$as_me: WARNING: Selecting integer*8 as the Fortran type for MPI_Offset" >&2;} fi # FIXME: Find a way to get the correct value if test -z "$F77_MPI_ADDRESS" ; then F77_MPI_ADDRESS="integer" { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Selecting integer as the Fortran type for MPI_Aint" >&5 $as_echo "$as_me: WARNING: Selecting integer as the Fortran type for MPI_Aint" >&2;} fi # Running Fortran 90+ compiler tests if test -z "${pac_save_FCFLAGS_nesting}" ; then pac_save_FCFLAGS_nesting=0 fi eval pac_save_FCFLAGS_${pac_save_FCFLAGS_nesting}='"$FCFLAGS"' pac_save_FCFLAGS_nesting=`expr ${pac_save_FCFLAGS_nesting} + 1` ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_fc_compiler_gnu if test -n "$ac_tool_prefix"; then for ac_prog in ifort pgf90 pathf90 pathf95 xlf90 xlf95 xlf2003 gfortran f90 epcf90 f95 fort lf95 g95 ifc efc gfc do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_FC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$FC"; then ac_cv_prog_FC="$FC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_FC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi FC=$ac_cv_prog_FC if test -n "$FC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FC" >&5 $as_echo "$FC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$FC" && break done fi if test -z "$FC"; then ac_ct_FC=$FC for ac_prog in ifort pgf90 pathf90 pathf95 xlf90 xlf95 xlf2003 gfortran f90 epcf90 f95 fort lf95 g95 ifc efc gfc do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_FC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_FC"; then ac_cv_prog_ac_ct_FC="$ac_ct_FC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_FC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_FC=$ac_cv_prog_ac_ct_FC if test -n "$ac_ct_FC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_FC" >&5 $as_echo "$ac_ct_FC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_FC" && break done if test "x$ac_ct_FC" = x; then FC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac FC=$ac_ct_FC fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done rm -f a.out # If we don't use `.F' as extension, the preprocessor is not run on the # input file. (Note that this only needs to work for GNU compilers.) ac_save_ext=$ac_ext ac_ext=F { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Fortran compiler" >&5 $as_echo_n "checking whether we are using the GNU Fortran compiler... " >&6; } if ${ac_cv_fc_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat > conftest.$ac_ext <<_ACEOF program main #ifndef __GNUC__ choke me #endif end _ACEOF if ac_fn_fc_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_fc_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_fc_compiler_gnu" >&5 $as_echo "$ac_cv_fc_compiler_gnu" >&6; } ac_ext=$ac_save_ext ac_test_FCFLAGS=${FCFLAGS+set} ac_save_FCFLAGS=$FCFLAGS FCFLAGS= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $FC accepts -g" >&5 $as_echo_n "checking whether $FC accepts -g... " >&6; } if ${ac_cv_prog_fc_g+:} false; then : $as_echo_n "(cached) " >&6 else FCFLAGS=-g cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF if ac_fn_fc_try_compile "$LINENO"; then : ac_cv_prog_fc_g=yes else ac_cv_prog_fc_g=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_fc_g" >&5 $as_echo "$ac_cv_prog_fc_g" >&6; } if test "$ac_test_FCFLAGS" = set; then FCFLAGS=$ac_save_FCFLAGS elif test $ac_cv_prog_fc_g = yes; then if test "x$ac_cv_fc_compiler_gnu" = xyes; then FCFLAGS="-g -O2" else FCFLAGS="-g" fi else if test "x$ac_cv_fc_compiler_gnu" = xyes; then FCFLAGS="-O2" else FCFLAGS= fi fi if test $ac_compiler_gnu = yes; then GFC=yes else GFC= fi ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu pac_save_FCFLAGS_nesting=`expr ${pac_save_FCFLAGS_nesting} - 1` eval FCFLAGS="\$pac_save_FCFLAGS_${pac_save_FCFLAGS_nesting}" eval pac_save_FCFLAGS_${pac_save_FCFLAGS_nesting}="" if test "$enable_fc" = yes ; then # Work around feature in autoconf that adds -g -O2 to FCFLAGS saveFCFLAGS="$FCFLAGS" FCFLAGS="$saveFCFLAGS" # If there is no working FC, then set enable_fc to no if test -z "$FC" ; then enable_fc=no fi fi f90dir="#" # First, see if we have an f90 compiler. This uses code similar to that # in the MPICH top-level configure if test "$enable_fc" = yes -a "$enable_f77" = yes ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for extension for Fortran 90 programs" >&5 $as_echo_n "checking for extension for Fortran 90 programs... " >&6; } ac_fc_srcext="f90" ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_fc_compiler_gnu cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF if ac_fn_fc_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: f90" >&5 $as_echo "f90" >&6; } else ac_fc_srcext="f" cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF if ac_fn_fc_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: f" >&5 $as_echo "f" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: unknown!" >&5 $as_echo "unknown!" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_fc_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the Fortran 90 compiler ($FC $FCFLAGS $LDFLAGS) works" >&5 $as_echo_n "checking whether the Fortran 90 compiler ($FC $FCFLAGS $LDFLAGS) works... " >&6; } cat > conftest.$ac_ext <<_ACEOF program conftest integer, dimension(10) :: n end _ACEOF if ac_fn_fc_try_link "$LINENO"; then : pac_cv_prog_fc_works="yes" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_cv_prog_fc_works" >&5 $as_echo "$pac_cv_prog_fc_works" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the Fortran 90 compiler ($FC $FCFLAGS $LDFLAGS) is a cross-compiler" >&5 $as_echo_n "checking whether the Fortran 90 compiler ($FC $FCFLAGS $LDFLAGS) is a cross-compiler... " >&6; } if test "$cross_compiling" = yes; then : pac_cv_prog_fc_cross="$cross_compiling" else if ac_fn_fc_try_run "$LINENO"; then : pac_cv_prog_fc_cross="no" else pac_cv_prog_fc_cross="yes" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_cv_prog_fc_cross" >&5 $as_echo "$pac_cv_prog_fc_cross" >&6; } else pac_cv_prog_fc_works="no" { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: installation or configuration problem: Fortran 90 compiler cannot create executables." >&5 $as_echo "$as_me: WARNING: installation or configuration problem: Fortran 90 compiler cannot create executables." >&2;} fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext # The intel compiler sometimes generates these work.pc and .pcl files rm -f work.pc work.pcl ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu if test -z "$FC" -o "$pac_cv_prog_fc_works" != yes ; then enable_fc=no fi fi if test "$enable_fc" = yes ; then # Make sure that the compilers are compatible. This # will also make sure that the program named in FC is # a working Fortran 90 compiler # Only check if we're *not* building within MPICH # (MPICH will have made the test) # FIXME: Do we want to check only simple routine names # (those without an underscore?) if test "$FROM_MPICH" != yes ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether Fortran 90 compiler works with Fortran 77 compiler" >&5 $as_echo_n "checking whether Fortran 90 compiler works with Fortran 77 compiler... " >&6; } if ${pac_cv_fc_and_f77+:} false; then : $as_echo_n "(cached) " >&6 else pacTestRoutine=foo_abc pac_cv_fc_and_f77="unknown" # compile the f77 program and link with the f90 program # The reverse may not work because the Fortran 90 environment may # expect to be in control (and to provide library files unknown to any other # environment, even Fortran 77!) ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu cat > conftest.$ac_ext <<_ACEOF subroutine ${pacTestRoutine}(b) integer b b = b + 1 end _ACEOF if ac_fn_f77_try_compile "$LINENO"; then : # pac_f77compile_ok=yes { $as_echo "$as_me:$LINENO: mv conftest.$OBJEXT pac_f77conftest.$OBJEXT" >&5 (eval mv conftest.$OBJEXT pac_f77conftest.$OBJEXT) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 test $ac_status = 0; } # Save original LIBS, prepend previously generated object file to LIBS saved_LIBS="$LIBS" LIBS="pac_f77conftest.$OBJEXT $LIBS" ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_fc_compiler_gnu cat > conftest.$ac_ext <<_ACEOF program main integer a a = 1 call ${pacTestRoutine}(a) end _ACEOF if ac_fn_fc_try_link "$LINENO"; then : pac_cv_fc_and_f77=yes else pac_cv_fc_and_f77=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext # Some versions of the Intel compiler produce these two files rm -f work.pc work.pcl # Restore LIBS LIBS="$saved_LIBS" ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu # remove previously generated object file. rm -f pac_f77conftest.$OBJEXT else # pac_f77compile_ok=no pac_cv_fc_and_f77=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu # Perform the requested action based on whether the test succeeded if test "$pac_cv_fc_and_f77" = yes ; then enable_fc=yes else enable_fc=no { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: See config.log for the failed test program and its output." >&5 $as_echo "$as_me: WARNING: See config.log for the failed test program and its output." >&2;} fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_cv_fc_and_f77" >&5 $as_echo "$pac_cv_fc_and_f77" >&6; } fi fi if test "$enable_fc" = yes ; then if test "$ac_fc_srcext" != "f90" ; then ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_fc_compiler_gnu ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_fc_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran flag to compile .f90 files" >&5 $as_echo_n "checking for Fortran flag to compile .f90 files... " >&6; } if ${ac_cv_fc_srcext_f90+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=f90 ac_fcflags_srcext_save=$ac_fcflags_srcext ac_fcflags_srcext= ac_cv_fc_srcext_f90=unknown case $ac_ext in #( [fF]77) ac_try=f77;; #( *) ac_try=f95;; esac for ac_flag in none -qsuffix=f=f90 -Tf "-x $ac_try"; do test "x$ac_flag" != xnone && ac_fcflags_srcext="$ac_flag" cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF if ac_fn_fc_try_compile "$LINENO"; then : ac_cv_fc_srcext_f90=$ac_flag; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest.$ac_objext conftest.f90 ac_fcflags_srcext=$ac_fcflags_srcext_save fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_fc_srcext_f90" >&5 $as_echo "$ac_cv_fc_srcext_f90" >&6; } if test "x$ac_cv_fc_srcext_f90" = xunknown; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Fortran 90 test being disabled because the $FC compiler does not accept a .f90 extension" >&5 $as_echo "$as_me: WARNING: Fortran 90 test being disabled because the $FC compiler does not accept a .f90 extension" >&2;} f90dir=# enable_fc=no else ac_fc_srcext=f90 if test "x$ac_cv_fc_srcext_f90" = xnone; then ac_fcflags_srcext="" FCFLAGS_f90="" else ac_fcflags_srcext=$ac_cv_fc_srcext_f90 FCFLAGS_f90=$ac_cv_fc_srcext_f90 fi FCFLAGS="$FCFLAGS $FCFLAGS_f90" fi ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_fc_compiler_gnu ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu fi # The Fortran90 tests rely on free-form input which needs to be tested # before any test that may modify FCFLAGS, e.g. the cray-pointer test. # The order of the tests is important in compiler like g95. # Recent experience showed that the IBM xlf compiler, at least on # some systems, requires -qfree=f90 instead of -qfree . At this # writing (11/27/12), this Autoconf macro still uses -qfree and has # no mechanism for extension. This test may fail in that case; if # you encounter a problem, document it and submit it to the autoconf # bug list, not the MPICH bug list. ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_fc_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran flag needed to accept free-form source" >&5 $as_echo_n "checking for Fortran flag needed to accept free-form source... " >&6; } if ${ac_cv_fc_freeform+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_fc_freeform=unknown ac_fc_freeform_FCFLAGS_save=$FCFLAGS for ac_flag in none -ffree-form -FR -free -qfree -Mfree -Mfreeform \ -freeform "-f free" -8 +source=free -nfix --nfix -Free do test "x$ac_flag" != xnone && FCFLAGS="$ac_fc_freeform_FCFLAGS_save $ac_flag" cat > conftest.$ac_ext <<_ACEOF program freeform ! FIXME: how to best confuse non-freeform compilers? print *, 'Hello ', & 'world.' end _ACEOF if ac_fn_fc_try_compile "$LINENO"; then : ac_cv_fc_freeform=$ac_flag; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest.err conftest.$ac_objext conftest.$ac_ext FCFLAGS=$ac_fc_freeform_FCFLAGS_save fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_fc_freeform" >&5 $as_echo "$ac_cv_fc_freeform" >&6; } if test "x$ac_cv_fc_freeform" = xunknown; then as_fn_error 77 "Fortran does not accept free-form source" "$LINENO" 5 else if test "x$ac_cv_fc_freeform" != xnone; then FCFLAGS="$FCFLAGS $ac_cv_fc_freeform" fi fi ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu # See if the compiler supports the Cray-style pointers ALLOCMEMFC="" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether Fortran 90 supports Cray-style pointer" >&5 $as_echo_n "checking whether Fortran 90 supports Cray-style pointer... " >&6; } if ${pac_cv_prog_fc_has_pointer+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_fc_compiler_gnu cat > conftest.$ac_ext <<_ACEOF program main integer M pointer (MPTR,M) data MPTR/0/ end _ACEOF saved_FCFLAGS="$FCFLAGS" pac_cv_prog_fc_has_pointer=no CRAYPTR_FCFLAGS="" for ptrflag in '' '-fcray-pointer' ; do FCFLAGS="$saved_FCFLAGS $ptrflag" if ac_fn_fc_try_compile "$LINENO"; then : pac_cv_prog_fc_has_pointer=yes CRAYPTR_FCFLAGS="$ptrflag" break fi rm -f core conftest.err conftest.$ac_objext done FCFLAGS="$saved_FCFLAGS" rm -f conftest.$ac_ext ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_cv_prog_fc_has_pointer" >&5 $as_echo "$pac_cv_prog_fc_has_pointer" >&6; } if test "$pac_cv_prog_fc_has_pointer" = "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran 90 compiler flag for Cray-style pointer" >&5 $as_echo_n "checking for Fortran 90 compiler flag for Cray-style pointer... " >&6; } if test "X$CRAYPTR_FCFLAGS" != "X" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CRAYPTR_FCFLAGS" >&5 $as_echo "$CRAYPTR_FCFLAGS" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } fi ALLOCMEMFC="allocmemf90 1" FCFLAGS="$FCFLAGS $CRAYPTR_FCFLAGS" else : fi # Check for the new command line routines used in one of the spawn tests ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_fc_compiler_gnu F03SPAWNARGTEST="" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $FC supports the Fortran 2003 routines to access the commandline" >&5 $as_echo_n "checking whether $FC supports the Fortran 2003 routines to access the commandline... " >&6; } cat > conftest.$ac_ext <<_ACEOF program main character*64 s integer i i = command_argument_count() call get_command_argument(i,s) end _ACEOF if ac_fn_fc_try_link "$LINENO"; then : pac_cv_fc_has_args=yes else pac_cv_fc_has_args=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_cv_fc_has_args" >&5 $as_echo "$pac_cv_fc_has_args" >&6; } if test "$pac_cv_fc_has_args" != "yes" ; then F03SPAWNARGTEST="#" fi # F03SPAWNARGTEST is set to "#" to comment out tests in # f90/spawn/testlist.in that require Fortran 2003 features to # access the commandline ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu if test -f f77/init/checksizes.c ; then # If it is a VPATH build, f90/init may not be there. if test ! -d f90/init ; then mkdir f90 mkdir f90/init fi cp f77/init/checksizes.c f90/init fi # At least one of the Fortran 90 tests makes use of a module; this # allows us to find it to delete the created object file { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran 90 module extension" >&5 $as_echo_n "checking for Fortran 90 module extension... " >&6; } if ${pac_cv_fc_module_ext+:} false; then : $as_echo_n "(cached) " >&6 else pac_cv_fc_module_case="unknown" ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_fc_compiler_gnu cat > conftest.$ac_ext <<_ACEOF module conftest integer n parameter (n=1) end module conftest _ACEOF if ac_fn_fc_try_compile "$LINENO"; then : # Look for module name # First, try to find known names. This avoids confusion caused by # additional files (like .stb created by some versions of pgf90) # Early versions of the Intel compiler used d as the module extension; # we include that just to finish the test as early as possible. for name in conftest CONFTEST ; do for ext in mod MOD d ; do if test -s $name.$ext ; then if test $name = conftest ; then pac_cv_fc_module_case=lower else pac_cv_fc_module_case=upper fi pac_cv_fc_module_ext=$ext pac_MOD=$ext break fi done if test -n "$pac_cv_fc_module_ext" ; then break ; fi done if test -z "$pac_MOD" ; then # The test on .err is needed for Cray Fortran. pac_MOD=`ls conftest.* 2>&1 | grep -v conftest.${ac_fc_srcext} | grep -v conftest.o | grep -v conftest.err` pac_MOD=`echo $pac_MOD | sed -e 's/conftest\.//g'` pac_cv_fc_module_case="lower" if test "X$pac_MOD" = "X" ; then pac_MOD=`ls CONFTEST* 2>&1 | grep -v CONFTEST.${ac_fc_srcext} | grep -v CONFTEST.o | grep -v CONFTEST.err` pac_MOD=`echo $pac_MOD | sed -e 's/CONFTEST\.//g'` if test -n "$pac_MOD" -a -s "CONFTEST.$pac_MOD" ; then pac_cv_fc_module_case="upper" else # Clear because we must have gotten an error message pac_MOD="" fi fi if test -z "$pac_MOD" ; then pac_cv_fc_module_ext="unknown" else pac_cv_fc_module_ext=$pac_MOD fi fi else pac_cv_fc_module_ext="unknown" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test "$pac_cv_fc_module_ext" = "unknown" ; then # Try again, but with an -em option. Abbreviated, because we're # just looking for the Cray option saveFCFLAGS=$FCFLAGS FCFLAGS="$FCFLAGS -em" cat > conftest.$ac_ext <<_ACEOF module conftest integer n parameter (n=1) end module conftest _ACEOF if ac_fn_fc_try_compile "$LINENO"; then : if test -s conftest.mod ; then pac_cv_fc_module_ext="mod" pac_cv_fc_module_case="lower" elif test -s CONFTEST.mod ; then pac_cv_fc_module_ext="mod" pac_cv_fc_module_case="upper" fi else : # do nothing - already have the unknown default value fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test "$pac_cv_fc_module_ext" = "unknown" ; then # The additional command line option did not help - restore # the original flags. FCFLAGS=$saveFCFLAGS fi fi ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_cv_fc_module_ext" >&5 $as_echo "$pac_cv_fc_module_ext" >&6; } # if test "$pac_cv_fc_module_ext" = "unknown" ; then : else FCMODEXT=$pac_MOD fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran 90 module include flag" >&5 $as_echo_n "checking for Fortran 90 module include flag... " >&6; } if ${pac_cv_fc_module_incflag+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_fc_compiler_gnu cat > conftest.$ac_ext <<_ACEOF module conf integer n parameter (n=1) end module conf _ACEOF pac_madedir="no" if test ! -d conf ; then mkdir conftestdir ; pac_madedir="yes"; fi if test "$pac_cv_fc_module_case" = "upper" ; then pac_module="CONF.$pac_cv_fc_module_ext" else pac_module="conf.$pac_cv_fc_module_ext" fi if ac_fn_fc_try_compile "$LINENO"; then : if test -s "$pac_module" ; then mv $pac_module conftestdir # Remove any temporary files, and hide the work.pc file # (if the compiler generates them) if test -f work.pc ; then mv -f work.pc conftest.pc fi rm -f work.pcl else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to build a simple Fortran 90 module" >&5 $as_echo "$as_me: WARNING: Unable to build a simple Fortran 90 module" >&2;} # echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD # cat conftest.$ac_ext >&AS_MESSAGE_LOG_FD $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi fi rm -f core conftest.err conftest.$ac_objext # Remove the conftest* after AC_LANG_CONFTEST rm -rf conftest.dSYM rm -f conftest.$ac_ext cat > conftest.$ac_ext <<_ACEOF program main use conf end _ACEOF # Save the original FCFLAGS saved_FCFLAGS="$FCFLAGS" pac_cv_fc_module_incflag="" for inchdr in '-I' '-M' '-p' ; do FCFLAGS="$saved_FCFLAGS ${inchdr}conftestdir" if ac_fn_fc_try_compile "$LINENO"; then : pac_cv_fc_module_incflag="$inchdr" ; break fi rm -f core conftest.err conftest.$ac_objext done if test "X$pac_cv_fc_module_incflag" = "X" ; then if test -s conftest.pc ; then mv conftest.pc conftestdir/mpimod.pc echo "mpimod.pc" > conftestdir/mpimod.pcl echo "`pwd`/conftestdir/mpimod.pc" >> conftestdir/mpimod.pcl inchdr='-cl,' FCFLAGS="$save_FCFLAGS ${inchdr}conftestdir" if ac_fn_fc_try_compile "$LINENO"; then : pac_fcompile_ok=yes else pac_fcompile_ok=no fi rm -f core conftest.err conftest.$ac_objext if test "$pac_fcompile_ok" = "yes" ; then pac_cv_fc_module_incflag="$inchdr" # Not quite right; see the comments that follow { $as_echo "$as_me:${as_lineno-$LINENO}: result: -cl,filename where filename contains a list of files and directories" >&5 $as_echo "-cl,filename where filename contains a list of files and directories" >&6; } FC_WORK_FILES_ARG="-cl,mpimod.pcl" FCMODINCSPEC="-cl,/mod.pcl" else # The version of the Intel compiler that I have refuses to let # you put the "work catalog" list anywhere but the current directory. pac_cv_fc_module_incflag="Unavailable!" fi else # Early versions of the Intel ifc compiler required a *file* # containing the names of files that contained the names of the # # -cl,filename.pcl # filename.pcl contains # fullpathname.pc # The "fullpathname.pc" is generated, I believe, when a module is # compiled. # Intel compilers use a wierd system: -cl,filename.pcl . If no file is # specified, work.pcl and work.pc are created. However, if you specify # a file, it must contain the name of a file ending in .pc . Ugh! pac_cv_fc_module_incflag="unknown" fi fi # Restore the original FCFLAGS FCFLAGS="$saved_FCFLAGS" if test "$pac_madedir" = "yes" ; then rm -rf conftestdir ; fi # Remove the conftest* after AC_LANG_CONFTEST # This is needed for Mac OSX 10.5 rm -rf conftest.dSYM rm -f conftest* ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_cv_fc_module_incflag" >&5 $as_echo "$pac_cv_fc_module_incflag" >&6; } FCMODINCFLAG=$pac_cv_fc_module_incflag { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran 90 module output directory flag" >&5 $as_echo_n "checking for Fortran 90 module output directory flag... " >&6; } if ${pac_cv_fc_module_outflag+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_fc_compiler_gnu cat > conftest.$ac_ext <<_ACEOF module conf integer n parameter (n=1) end module conf _ACEOF pac_madedir="no" if test ! -d conf ; then mkdir conftestdir ; pac_madedir="yes"; fi if test "$pac_cv_fc_module_case" = "upper" ; then pac_module="CONF.$pac_cv_fc_module_ext" else pac_module="conf.$pac_cv_fc_module_ext" fi # check base case that the compiler can create modules and that they endup in # the current directory if ac_fn_fc_try_compile "$LINENO"; then : if test -s "$pac_module" ; then rm -f "$pac_module" # Remove any temporary files, and hide the work.pc file # (if the compiler generates them) if test -f work.pc ; then mv -f work.pc conftest.pc fi rm -f work.pcl else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to build a simple Fortran 90 module" >&5 $as_echo "$as_me: WARNING: Unable to build a simple Fortran 90 module" >&2;} # echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD # cat conftest.$ac_ext >&AS_MESSAGE_LOG_FD $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi fi rm -f core conftest.err conftest.$ac_objext # known flags for reasonably recent versions of various f90 compilers: # gfortran -J${dir} # xlf -qmoddir=${dir} # pgf90 -module ${dir} # ifort -module ${dir} # nagfor -mdir ${dir} # ftn -J ${dir} ## the Cray fortran compiler # ftn -em -J${dir} ## the Cray fortran compiler (crayftn, in 2013) # For this above case, we must have added -em to FCFLAGS, since other # module tests do not always use the module output flag. See # FC_MODULE_EXT , where this is determined. # f95 -YMOD_OUT_DIR=${dir} ## the Absoft fortran compiler # lf95 -Am -mod ${dir} ## the Lahey/Fujitsu fortran compiler # f90 -moddir=${dir} ## the Sun f90 compiler # g95 -fmod=${dir} # # If there are any compilers still out there that are totally brain-dead and # don't support an output directory flag, we can write a wrapper script to tell # users to use. Alternatively they can use an older version of MPICH. pac_cv_fc_module_outflag= for mod_flag in '-J' '-J ' '-qmoddir=' '-module ' '-YMOD_OUT_DIR=' '-mdir ' '-moddir=' '-fmod=' ; do rm -f conftestdir/NONEXISTENT conftestdir/* if test -z "${pac_save_FCFLAGS_nesting}" ; then pac_save_FCFLAGS_nesting=0 fi eval pac_save_FCFLAGS_${pac_save_FCFLAGS_nesting}='"$FCFLAGS"' pac_save_FCFLAGS_nesting=`expr ${pac_save_FCFLAGS_nesting} + 1` FCFLAGS="$FCFLAGS ${mod_flag}conftestdir" if ac_fn_fc_try_compile "$LINENO"; then : pac_build_success=yes else pac_build_success=no fi rm -f core conftest.err conftest.$ac_objext if test "X$pac_build_success" = Xyes; then : if test -s "conftestdir/${pac_module}"; then : pac_cv_fc_module_outflag="$mod_flag" fi fi pac_save_FCFLAGS_nesting=`expr ${pac_save_FCFLAGS_nesting} - 1` eval FCFLAGS="\$pac_save_FCFLAGS_${pac_save_FCFLAGS_nesting}" eval pac_save_FCFLAGS_${pac_save_FCFLAGS_nesting}="" if test "X$pac_cv_fc_module_outflag" = X; then : : else break fi done # Remove the conftest* after AC_LANG_CONFTEST rm -rf conftest.dSYM rm -f conftest.$ac_ext if test "$pac_madedir" = "yes" ; then rm -rf conftestdir ; fi { pac_madedir=; unset pac_madedir;} # Remove the conftest* after AC_LANG_CONFTEST # This is needed for Mac OSX 10.5 rm -rf conftest.dSYM rm -f conftest* ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_cv_fc_module_outflag" >&5 $as_echo "$pac_cv_fc_module_outflag" >&6; } FCMODOUTFLAG=$pac_cv_fc_module_outflag fi # if test "$FROM_MPICH" = yes ; then if test "$enable_fc" = yes ; then otherlangs="$otherlangs f90" f90dir=f90 fi elif test "$enable_fc" = yes ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking that we can build MPI programs with Fortran 90" >&5 $as_echo_n "checking that we can build MPI programs with Fortran 90... " >&6; } ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_fc_compiler_gnu cat > conftest.$ac_ext <<_ACEOF program main use mpi integer ierr call mpi_init(ierr) call mpi_finalize(ierr) end _ACEOF if ac_fn_fc_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } otherlangs="$otherlangs f90" f90dir=f90 else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu fi f08dir="#" # FIXME if $FROM_MPICH is no, we should test build an MPI F08 program if test "$enable_f08" = "yes" -a "$FROM_MPICH" = "yes" ; then f08dir=f08 fi # Running C++ compiler tests if test -z "${pac_save_CXXFLAGS_nesting}" ; then pac_save_CXXFLAGS_nesting=0 fi eval pac_save_CXXFLAGS_${pac_save_CXXFLAGS_nesting}='"$CXXFLAGS"' pac_save_CXXFLAGS_nesting=`expr ${pac_save_CXXFLAGS_nesting} + 1` # This test uses the list from a recent PROG_CXX, but with the # addition of the Portland group, IBM, and Intel C++ compilers # (While the Intel icc compiler will compile C++ programs, it will # not *link* C++ object files unless there is at least one C++ source # file present on the command that performs the linking. icpc is the # Intel C++ compiler that both compiles and links C++ programs) ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in $CCC icpc pgCC xlC pathCC g++ clang++ c++ cc++ cxx CC cl do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in $CCC icpc pgCC xlC pathCC g++ clang++ c++ cc++ cxx CC cl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CXX_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi pac_save_CXXFLAGS_nesting=`expr ${pac_save_CXXFLAGS_nesting} - 1` eval CXXFLAGS="\$pac_save_CXXFLAGS_${pac_save_CXXFLAGS_nesting}" eval pac_save_CXXFLAGS_${pac_save_CXXFLAGS_nesting}="" if test "$enable_cxx" = yes ; then if test -z "$CXX" ; then enable_cxx=no fi fi # Simple tests for which other languages we can handle cxxdir="#" # The C++ interface added support for the Distgraph routines in MPI-2.2, # but not all MPI implementations support that. nocxxdistgraph allows # us to detect that and to skip the test when it is not supported. nocxxdistgraph="#" if test "$FROM_MPICH" = yes ; then if test "$enable_cxx" = yes ; then otherlangs="$otherlangs cxx" cxxdir=cxx # MPICH ABI removed support for MPI::Distgraphcomm, so # nocxxdistgraph is left as #, which comments out the test # in cxx/topol/testlist.in fi elif test "$enable_cxx" = yes ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking that we can build MPI programs with C++" >&5 $as_echo_n "checking that we can build MPI programs with C++... " >&6; } ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "mpi.h" int main () { MPI::Init(); MPI::Finalize(); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } otherlangs="$otherlangs cxx" cxxdir=cxx else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext # Check for support of the Distgraphcomm, added in MPI 2.2. # Some MPI implementations may support MPI 2.2 or MPI 3.x, but not # support the Distgraphcomm C++ interface { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether MPI C++ includes Distgraphcomm" >&5 $as_echo_n "checking whether MPI C++ includes Distgraphcomm... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "mpi.h" int main () { MPI::Distgraphcomm dcomm; MPI::Init(); MPI::Finalize(); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } nocxxdistgraph="" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu fi if test "$enable_cxx" = yes ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether available" >&5 $as_echo_n "checking whether available... " >&6; } if ${pac_cv_cxx_has_iostream+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { using namespace std; ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : pac_cv_cxx_has_iostream=yes else pac_cv_cxx_has_iostream=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_cv_cxx_has_iostream" >&5 $as_echo "$pac_cv_cxx_has_iostream" >&6; } if test "$pac_cv_cxx_has_iostream" = yes ; then $as_echo "#define HAVE_IOSTREAM 1" >>confdefs.h else # Look for iostream.h (in C++ mode, we need the full name) ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 $as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if ${ac_cv_prog_CXXCPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 $as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu for ac_header in iostream.h do : ac_fn_cxx_check_header_mongrel "$LINENO" "iostream.h" "ac_cv_header_iostream_h" "$ac_includes_default" if test "x$ac_cv_header_iostream_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_IOSTREAM_H 1 _ACEOF fi done if test "$ac_cv_header_iostream_h" != yes ; then as_fn_error $? "C++ compiler $CXX $CXXFLAGS has neither iostream nor iostream.h." "$LINENO" 5 fi # Warning: the autoconf macros will fall back onto /lib/cpp for # C and C++ preprocessing *without* checking that /lib/cpp even # exists. if test "$CXXCPP" = "/lib/cpp" ; then if test ! -x "/lib/cpp" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Warning: Autoconf error, could not find a C++ Preprocessor. Using false for the preprocessor so that tests will continue." >&5 $as_echo "$as_me: WARNING: Warning: Autoconf error, could not find a C++ Preprocessor. Using false for the preprocessor so that tests will continue." >&2;} CXXCPP=false fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler implements namespaces" >&5 $as_echo_n "checking whether the compiler implements namespaces... " >&6; } if ${ac_cv_cxx_namespaces+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ namespace Outer { namespace Inner { int i = 0; }} int main () { using namespace Outer::Inner; return i; ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_cxx_namespaces=yes else ac_cv_cxx_namespaces=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_namespaces" >&5 $as_echo "$ac_cv_cxx_namespaces" >&6; } if test "$ac_cv_cxx_namespaces" = yes; then $as_echo "#define HAVE_NAMESPACES /**/" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler implements the namespace std" >&5 $as_echo_n "checking whether the compiler implements the namespace std... " >&6; } if ${ac_cv_cxx_namespace_std+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_cxx_namespace_std=no if test "$ac_cv_cxx_namespaces" = yes ; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include using namespace std; int main () { cout << "message\n"; ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_cxx_namespace_std=yes else ac_cv_cxx_namespace_std=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_namespace_std" >&5 $as_echo "$ac_cv_cxx_namespace_std" >&6; } if test "$ac_cv_cxx_namespace_std" = yes; then $as_echo "#define HAVE_NAMESPACE_STD /**/" >>confdefs.h fi if test "$ac_cv_cxx_namespaces" != yes ; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: The compiler $CXX does not support C++ namespaces. This may cause problems for the tests" >&5 $as_echo "$as_me: WARNING: The compiler $CXX does not support C++ namespaces. This may cause problems for the tests" >&2;} fi ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # IO iodir="#" if test "$enable_romio" != no ; then iodir=io $as_echo "#define HAVE_MPI_IO 1" >>confdefs.h if test "$FROM_MPICH" = yes ; then # MPICH no longer uses and MPIO_Request pac_cv_have_mpio_request=no else { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether MPIO_Request is defined for MPI IO" >&5 $as_echo_n "checking whether MPIO_Request is defined for MPI IO... " >&6; } if ${pac_cv_have_mpio_request+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "mpi.h" int main () { MPIO_Request r; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : pac_cv_have_mpio_request=yes else pac_cv_have_mpio_request=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_cv_have_mpio_request" >&5 $as_echo "$pac_cv_have_mpio_request" >&6; } fi if test "$pac_cv_have_mpio_request" = no ; then $as_echo "#define MPIO_USES_MPI_REQUEST /**/" >>confdefs.h fi fi impldir="#" # # Check for implementation to enable implementation-specific options if test $enable_strictmpi != "yes" ; then # Is this MPICH? if test "$FROM_MPICH" = yes ; then impldir="mpich" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking Is the MPI derived from MPICH" >&5 $as_echo_n "checking Is the MPI derived from MPICH... " >&6; } if ${pac_cv_ismpich+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "mpi.h" int main () { return 1 + MPICH; ; return 0; }, pac_cv_ismpich=yes,pac_cv_ismpich=no _ACEOF if ac_fn_c_try_compile "$LINENO"; then : fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_cv_ismpich" >&5 $as_echo "$pac_cv_ismpich" >&6; } if test "$pac_cv_ismpich" = "yes" ; then impldir="mpich" fi fi fi # # MPI_INTEGER16 is mentioned in only one place in MPI 2.1, and some # implementations may have missed it. Check to see if it is available in # C. if test "$FROM_MPICH" = yes ; then # MPICH correctly includes this type. pac_cv_have_mpi_integer16=yes else { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether MPI_INTEGER16 is available" >&5 $as_echo_n "checking whether MPI_INTEGER16 is available... " >&6; } if ${pac_cv_have_mpi_integer16+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "mpi.h" int main () { MPI_Datatype t = MPI_INTEGER16; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : pac_cv_have_mpi_integer16=yes else pac_cv_have_mpi_integer16=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_cv_have_mpi_integer16" >&5 $as_echo "$pac_cv_have_mpi_integer16" >&6; } fi if test "$pac_cv_have_mpi_integer16" = yes ; then $as_echo "#define HAVE_MPI_INTEGER16 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether MPI_2DOUBLE_COMPLEX is available" >&5 $as_echo_n "checking whether MPI_2DOUBLE_COMPLEX is available... " >&6; } if ${pac_cv_have_mpi_2double_complex+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "mpi.h" int main () { MPI_Datatype t = MPI_2DOUBLE_COMPLEX; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : pac_cv_have_mpi_2double_complex=yes else pac_cv_have_mpi_2double_complex=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_cv_have_mpi_2double_complex" >&5 $as_echo "$pac_cv_have_mpi_2double_complex" >&6; } if test "$pac_cv_have_mpi_2double_complex" = yes ; then $as_echo "#define HAVE_MPI_2DOUBLE_COMPLEX 1" >>confdefs.h fi # 2COMPLEX was in MPI 1.0 and removed after that. This allows us to # test 2COMPLEX if it is present { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether MPI_2COMPLEX is available" >&5 $as_echo_n "checking whether MPI_2COMPLEX is available... " >&6; } if ${pac_cv_have_mpi_2complex+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "mpi.h" int main () { MPI_Datatype t = MPI_2COMPLEX; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : pac_cv_have_mpi_2complex=yes else pac_cv_have_mpi_2complex=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_cv_have_mpi_2complex" >&5 $as_echo "$pac_cv_have_mpi_2complex" >&6; } if test "$pac_cv_have_mpi_2complex" = yes ; then $as_echo "#define HAVE_MPI_2COMPLEX 1" >>confdefs.h fi # MPI_Aint was intended as an address-sized int. However, MPI didn't # specify this - MPI_Aint must be large enough to hold an address-sized # integer, but it can be larger. To get clean compilation in some places, # we need a pointer-sized integer. The following code looks for one. # Make sure we are using the local C compiler (if the local # machine is different that the system that MPICC is for, then # set the cross-compilation feature) # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void *" >&5 $as_echo_n "checking size of void *... " >&6; } if ${ac_cv_sizeof_void_p+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void *))" "ac_cv_sizeof_void_p" "$ac_includes_default"; then : else if test "$ac_cv_type_void_p" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (void *) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_void_p=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_void_p" >&5 $as_echo "$ac_cv_sizeof_void_p" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_VOID_P $ac_cv_sizeof_void_p _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5 $as_echo_n "checking size of int... " >&6; } if ${ac_cv_sizeof_int+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default"; then : else if test "$ac_cv_type_int" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (int) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_int=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5 $as_echo "$ac_cv_sizeof_int" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_INT $ac_cv_sizeof_int _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 $as_echo_n "checking size of long... " >&6; } if ${ac_cv_sizeof_long+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"; then : else if test "$ac_cv_type_long" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (long) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_long=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 $as_echo "$ac_cv_sizeof_long" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_LONG $ac_cv_sizeof_long _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5 $as_echo_n "checking size of long long... " >&6; } if ${ac_cv_sizeof_long_long+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long" "$ac_includes_default"; then : else if test "$ac_cv_type_long_long" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (long long) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_long_long=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5 $as_echo "$ac_cv_sizeof_long_long" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of short" >&5 $as_echo_n "checking size of short... " >&6; } if ${ac_cv_sizeof_short+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short" "$ac_includes_default"; then : else if test "$ac_cv_type_short" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (short) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_short=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5 $as_echo "$ac_cv_sizeof_short" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_SHORT $ac_cv_sizeof_short _ACEOF POINTERINT=MPI_Aint { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C integer type of address size" >&5 $as_echo_n "checking for C integer type of address size... " >&6; } for type in int long long_long short ; do eval len=\$ac_cv_sizeof_$type if test "$len" = "$ac_cv_sizeof_void_p" ; then POINTERINT=`echo $type | sed -e 's/_/ /'` break fi done { $as_echo "$as_me:${as_lineno-$LINENO}: result: $POINTERINT" >&5 $as_echo "$POINTERINT" >&6; } cat >>confdefs.h <<_ACEOF #define POINTERINT_t $POINTERINT _ACEOF # Find perl; used to create some of the tests from template and # defintion files # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PERL+:} false; then : $as_echo_n "(cached) " >&6 else case $PERL in [\\/]* | ?:[\\/]*) ac_cv_path_PERL="$PERL" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PERL=$ac_cv_path_PERL if test -n "$PERL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 $as_echo "$PERL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$MPILIBNAME" ; then MPILIBNAME=mpich ; fi if test "$FROM_MPICH" = yes ; then # Set compilers/flags to be substituted in output files, e.g. Makefiles. LDFLAGS="$saveLDFLAGS" # note that the default definition of bindir is # '${exec_prefix}/bin' # so even if prefix is set, exec prefix is not until # the very last moment (i.e., not here). if test "X$exec_prefix" = "XNONE" ; then saveExec_prefix=$exec_prefix if test "X$prefix" = "XNONE" ; then # Use the default exec_prefix=$ac_default_prefix else exec_prefix=$prefix fi # Evaluate with the current setting of exec_prefix eval mpibindir=${bindir} exec_prefix=$saveExec_prefix else eval mpibindir=${bindir} fi # we did our tests with the base compilers, now point the make system at the # installed compiler wrappers for actually building the tests CC=$mpibindir/$MPICC_NAME F77=$mpibindir/$MPIF77_NAME FC=$mpibindir/$MPIFORT_NAME CXX=$mpibindir/$MPICXX_NAME MPIEXEC=$mpibindir/$MPIEXEC_NAME # Zero out the flags, since they are already contained in the compiler # wrapper scripts. Note that this will kill any flags that have been added # to the xFLAGS only in this script. # # The only real flags we seem to add in this script relate to cray # pointer support in Fortran, so we include that var here where # appropriate. # # The other case are the performance tests - for datatype performance, # compiling with optimization is important. CFLAGS="" CPPFLAGS="" LDFLAGS="" LIBS="" FFLAGS="$CRAYPTR_FFLAGS" FCFLAGS="$CRAYPTR_FCFLAGS" CXXFLAGS="" else # We need either mpiexec or mpirun. If we don't find them, # the user will need to determine how to run a program # Extract the first word of "$MPIEXEC_NAME", so it can be a program name with args. set dummy $MPIEXEC_NAME; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MPIEXEC+:} false; then : $as_echo_n "(cached) " >&6 else case $MPIEXEC in [\\/]* | ?:[\\/]*) ac_cv_path_MPIEXEC="$MPIEXEC" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_MPIEXEC="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi MPIEXEC=$ac_cv_path_MPIEXEC if test -n "$MPIEXEC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MPIEXEC" >&5 $as_echo "$MPIEXEC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi ac_config_commands="$ac_config_commands default-1" ac_config_commands="$ac_config_commands default-2" ac_config_commands="$ac_config_commands default-3" ac_config_commands="$ac_config_commands default-4" ac_config_files="$ac_config_files maint/testmerge runtests checktests Makefile basic/Makefile attr/Makefile util/Makefile coll/Makefile coll/testlist comm/Makefile datatype/Makefile datatype/testlist errhan/Makefile group/Makefile info/Makefile init/Makefile pt2pt/Makefile mpi_t/Makefile rma/Makefile rma/testlist spawn/Makefile spawn/testlist topo/Makefile io/Makefile io/testlist f77/Makefile f77/attr/Makefile f77/attr/attraints.h f77/pt2pt/attr1aints.h f77/ext/add1size.h f77/datatype/Makefile f77/datatype/typeaints.h f77/util/Makefile f77/coll/Makefile f77/comm/Makefile f77/topo/Makefile f77/init/Makefile f77/rma/addsize.h f77/pt2pt/Makefile f77/info/Makefile f77/spawn/Makefile f77/spawn/testlist f77/spawn/type1aint.h f77/rma/Makefile f77/ext/Makefile f77/ext/testlist f77/io/Makefile f77/io/iooffset.h f77/io/iodisp.h f77/io/ioaint.h f77/io/testlist f77/profile/Makefile f90/Makefile f90/attr/Makefile f90/datatype/Makefile f90/f90types/Makefile f90/util/Makefile f90/coll/Makefile f90/comm/Makefile f90/topo/Makefile f90/init/Makefile f90/pt2pt/Makefile f90/rma/Makefile f90/info/Makefile f90/spawn/Makefile f90/spawn/testlist f90/timer/Makefile f90/ext/Makefile f90/ext/testlist f90/io/Makefile f90/io/testlist f90/misc/Makefile f90/profile/Makefile f08/Makefile f08/attr/Makefile f08/datatype/Makefile f08/util/Makefile f08/coll/Makefile f08/comm/Makefile f08/pt2pt/Makefile f08/rma/Makefile f08/subarray/Makefile f08/topo/Makefile f08/io/Makefile f08/io/testlist f08/init/Makefile f08/info/Makefile f08/spawn/Makefile f08/spawn/testlist f08/timer/Makefile f08/ext/Makefile f08/misc/Makefile f08/profile/Makefile cxx/Makefile cxx/util/Makefile cxx/attr/Makefile cxx/pt2pt/Makefile cxx/comm/Makefile cxx/coll/Makefile cxx/errhan/Makefile cxx/info/Makefile cxx/datatype/Makefile cxx/io/Makefile cxx/init/Makefile cxx/rma/Makefile cxx/spawn/Makefile cxx/spawn/testlist cxx/topo/Makefile threads/Makefile threads/pt2pt/Makefile threads/util/Makefile threads/comm/Makefile threads/comm/testlist threads/init/Makefile threads/mpi_t/Makefile threads/spawn/Makefile threads/rma/Makefile threads/coll/Makefile threads/coll/testlist errors/Makefile errors/attr/Makefile errors/basic/Makefile errors/coll/Makefile errors/comm/Makefile errors/datatype/Makefile errors/faults/Makefile errors/group/Makefile errors/pt2pt/Makefile errors/rma/Makefile errors/spawn/Makefile errors/spawn/testlist errors/topo/Makefile errors/io/Makefile errors/cxx/Makefile errors/cxx/errhan/Makefile errors/cxx/io/Makefile errors/f77/Makefile errors/f77/io/Makefile errors/f77/io/addsize.h errors/f77/io/iooffset.h errors/f90/Makefile errors/f90/io/Makefile errors/f08/Makefile errors/f08/io/Makefile ckpoint/Makefile ft/Makefile manual/Makefile manual/manyconnect manual/mpi_t/Makefile perf/Makefile testlist cxx/testlist cxx/topo/testlist f77/testlist f90/testlist threads/testlist errors/testlist errors/cxx/testlist errors/f77/testlist errors/f90/testlist impls/testlist f77/rma/testlist f90/rma/testlist f08/rma/testlist impls/Makefile impls/hydra/Makefile impls/hydra/proc_binding.sh impls/mpich/Makefile impls/mpich/testlist impls/mpich/mpi_t/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${BUILD_MPIX_TESTS_TRUE}" && test -z "${BUILD_MPIX_TESTS_FALSE}"; then as_fn_error $? "conditional \"BUILD_MPIX_TESTS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by mpich-testsuite $as_me 3.2, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to . mpich-testsuite home page: ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ mpich-testsuite config.status 3.2 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "include/mpitestconf.h") CONFIG_HEADERS="$CONFIG_HEADERS include/mpitestconf.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; "default-2") CONFIG_COMMANDS="$CONFIG_COMMANDS default-2" ;; "default-3") CONFIG_COMMANDS="$CONFIG_COMMANDS default-3" ;; "default-4") CONFIG_COMMANDS="$CONFIG_COMMANDS default-4" ;; "maint/testmerge") CONFIG_FILES="$CONFIG_FILES maint/testmerge" ;; "runtests") CONFIG_FILES="$CONFIG_FILES runtests" ;; "checktests") CONFIG_FILES="$CONFIG_FILES checktests" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "basic/Makefile") CONFIG_FILES="$CONFIG_FILES basic/Makefile" ;; "attr/Makefile") CONFIG_FILES="$CONFIG_FILES attr/Makefile" ;; "util/Makefile") CONFIG_FILES="$CONFIG_FILES util/Makefile" ;; "coll/Makefile") CONFIG_FILES="$CONFIG_FILES coll/Makefile" ;; "coll/testlist") CONFIG_FILES="$CONFIG_FILES coll/testlist" ;; "comm/Makefile") CONFIG_FILES="$CONFIG_FILES comm/Makefile" ;; "datatype/Makefile") CONFIG_FILES="$CONFIG_FILES datatype/Makefile" ;; "datatype/testlist") CONFIG_FILES="$CONFIG_FILES datatype/testlist" ;; "errhan/Makefile") CONFIG_FILES="$CONFIG_FILES errhan/Makefile" ;; "group/Makefile") CONFIG_FILES="$CONFIG_FILES group/Makefile" ;; "info/Makefile") CONFIG_FILES="$CONFIG_FILES info/Makefile" ;; "init/Makefile") CONFIG_FILES="$CONFIG_FILES init/Makefile" ;; "pt2pt/Makefile") CONFIG_FILES="$CONFIG_FILES pt2pt/Makefile" ;; "mpi_t/Makefile") CONFIG_FILES="$CONFIG_FILES mpi_t/Makefile" ;; "rma/Makefile") CONFIG_FILES="$CONFIG_FILES rma/Makefile" ;; "rma/testlist") CONFIG_FILES="$CONFIG_FILES rma/testlist" ;; "spawn/Makefile") CONFIG_FILES="$CONFIG_FILES spawn/Makefile" ;; "spawn/testlist") CONFIG_FILES="$CONFIG_FILES spawn/testlist" ;; "topo/Makefile") CONFIG_FILES="$CONFIG_FILES topo/Makefile" ;; "io/Makefile") CONFIG_FILES="$CONFIG_FILES io/Makefile" ;; "io/testlist") CONFIG_FILES="$CONFIG_FILES io/testlist" ;; "f77/Makefile") CONFIG_FILES="$CONFIG_FILES f77/Makefile" ;; "f77/attr/Makefile") CONFIG_FILES="$CONFIG_FILES f77/attr/Makefile" ;; "f77/attr/attraints.h") CONFIG_FILES="$CONFIG_FILES f77/attr/attraints.h" ;; "f77/pt2pt/attr1aints.h") CONFIG_FILES="$CONFIG_FILES f77/pt2pt/attr1aints.h" ;; "f77/ext/add1size.h") CONFIG_FILES="$CONFIG_FILES f77/ext/add1size.h" ;; "f77/datatype/Makefile") CONFIG_FILES="$CONFIG_FILES f77/datatype/Makefile" ;; "f77/datatype/typeaints.h") CONFIG_FILES="$CONFIG_FILES f77/datatype/typeaints.h" ;; "f77/util/Makefile") CONFIG_FILES="$CONFIG_FILES f77/util/Makefile" ;; "f77/coll/Makefile") CONFIG_FILES="$CONFIG_FILES f77/coll/Makefile" ;; "f77/comm/Makefile") CONFIG_FILES="$CONFIG_FILES f77/comm/Makefile" ;; "f77/topo/Makefile") CONFIG_FILES="$CONFIG_FILES f77/topo/Makefile" ;; "f77/init/Makefile") CONFIG_FILES="$CONFIG_FILES f77/init/Makefile" ;; "f77/rma/addsize.h") CONFIG_FILES="$CONFIG_FILES f77/rma/addsize.h" ;; "f77/pt2pt/Makefile") CONFIG_FILES="$CONFIG_FILES f77/pt2pt/Makefile" ;; "f77/info/Makefile") CONFIG_FILES="$CONFIG_FILES f77/info/Makefile" ;; "f77/spawn/Makefile") CONFIG_FILES="$CONFIG_FILES f77/spawn/Makefile" ;; "f77/spawn/testlist") CONFIG_FILES="$CONFIG_FILES f77/spawn/testlist" ;; "f77/spawn/type1aint.h") CONFIG_FILES="$CONFIG_FILES f77/spawn/type1aint.h" ;; "f77/rma/Makefile") CONFIG_FILES="$CONFIG_FILES f77/rma/Makefile" ;; "f77/ext/Makefile") CONFIG_FILES="$CONFIG_FILES f77/ext/Makefile" ;; "f77/ext/testlist") CONFIG_FILES="$CONFIG_FILES f77/ext/testlist" ;; "f77/io/Makefile") CONFIG_FILES="$CONFIG_FILES f77/io/Makefile" ;; "f77/io/iooffset.h") CONFIG_FILES="$CONFIG_FILES f77/io/iooffset.h" ;; "f77/io/iodisp.h") CONFIG_FILES="$CONFIG_FILES f77/io/iodisp.h" ;; "f77/io/ioaint.h") CONFIG_FILES="$CONFIG_FILES f77/io/ioaint.h" ;; "f77/io/testlist") CONFIG_FILES="$CONFIG_FILES f77/io/testlist" ;; "f77/profile/Makefile") CONFIG_FILES="$CONFIG_FILES f77/profile/Makefile" ;; "f90/Makefile") CONFIG_FILES="$CONFIG_FILES f90/Makefile" ;; "f90/attr/Makefile") CONFIG_FILES="$CONFIG_FILES f90/attr/Makefile" ;; "f90/datatype/Makefile") CONFIG_FILES="$CONFIG_FILES f90/datatype/Makefile" ;; "f90/f90types/Makefile") CONFIG_FILES="$CONFIG_FILES f90/f90types/Makefile" ;; "f90/util/Makefile") CONFIG_FILES="$CONFIG_FILES f90/util/Makefile" ;; "f90/coll/Makefile") CONFIG_FILES="$CONFIG_FILES f90/coll/Makefile" ;; "f90/comm/Makefile") CONFIG_FILES="$CONFIG_FILES f90/comm/Makefile" ;; "f90/topo/Makefile") CONFIG_FILES="$CONFIG_FILES f90/topo/Makefile" ;; "f90/init/Makefile") CONFIG_FILES="$CONFIG_FILES f90/init/Makefile" ;; "f90/pt2pt/Makefile") CONFIG_FILES="$CONFIG_FILES f90/pt2pt/Makefile" ;; "f90/rma/Makefile") CONFIG_FILES="$CONFIG_FILES f90/rma/Makefile" ;; "f90/info/Makefile") CONFIG_FILES="$CONFIG_FILES f90/info/Makefile" ;; "f90/spawn/Makefile") CONFIG_FILES="$CONFIG_FILES f90/spawn/Makefile" ;; "f90/spawn/testlist") CONFIG_FILES="$CONFIG_FILES f90/spawn/testlist" ;; "f90/timer/Makefile") CONFIG_FILES="$CONFIG_FILES f90/timer/Makefile" ;; "f90/ext/Makefile") CONFIG_FILES="$CONFIG_FILES f90/ext/Makefile" ;; "f90/ext/testlist") CONFIG_FILES="$CONFIG_FILES f90/ext/testlist" ;; "f90/io/Makefile") CONFIG_FILES="$CONFIG_FILES f90/io/Makefile" ;; "f90/io/testlist") CONFIG_FILES="$CONFIG_FILES f90/io/testlist" ;; "f90/misc/Makefile") CONFIG_FILES="$CONFIG_FILES f90/misc/Makefile" ;; "f90/profile/Makefile") CONFIG_FILES="$CONFIG_FILES f90/profile/Makefile" ;; "f08/Makefile") CONFIG_FILES="$CONFIG_FILES f08/Makefile" ;; "f08/attr/Makefile") CONFIG_FILES="$CONFIG_FILES f08/attr/Makefile" ;; "f08/datatype/Makefile") CONFIG_FILES="$CONFIG_FILES f08/datatype/Makefile" ;; "f08/util/Makefile") CONFIG_FILES="$CONFIG_FILES f08/util/Makefile" ;; "f08/coll/Makefile") CONFIG_FILES="$CONFIG_FILES f08/coll/Makefile" ;; "f08/comm/Makefile") CONFIG_FILES="$CONFIG_FILES f08/comm/Makefile" ;; "f08/pt2pt/Makefile") CONFIG_FILES="$CONFIG_FILES f08/pt2pt/Makefile" ;; "f08/rma/Makefile") CONFIG_FILES="$CONFIG_FILES f08/rma/Makefile" ;; "f08/subarray/Makefile") CONFIG_FILES="$CONFIG_FILES f08/subarray/Makefile" ;; "f08/topo/Makefile") CONFIG_FILES="$CONFIG_FILES f08/topo/Makefile" ;; "f08/io/Makefile") CONFIG_FILES="$CONFIG_FILES f08/io/Makefile" ;; "f08/io/testlist") CONFIG_FILES="$CONFIG_FILES f08/io/testlist" ;; "f08/init/Makefile") CONFIG_FILES="$CONFIG_FILES f08/init/Makefile" ;; "f08/info/Makefile") CONFIG_FILES="$CONFIG_FILES f08/info/Makefile" ;; "f08/spawn/Makefile") CONFIG_FILES="$CONFIG_FILES f08/spawn/Makefile" ;; "f08/spawn/testlist") CONFIG_FILES="$CONFIG_FILES f08/spawn/testlist" ;; "f08/timer/Makefile") CONFIG_FILES="$CONFIG_FILES f08/timer/Makefile" ;; "f08/ext/Makefile") CONFIG_FILES="$CONFIG_FILES f08/ext/Makefile" ;; "f08/misc/Makefile") CONFIG_FILES="$CONFIG_FILES f08/misc/Makefile" ;; "f08/profile/Makefile") CONFIG_FILES="$CONFIG_FILES f08/profile/Makefile" ;; "cxx/Makefile") CONFIG_FILES="$CONFIG_FILES cxx/Makefile" ;; "cxx/util/Makefile") CONFIG_FILES="$CONFIG_FILES cxx/util/Makefile" ;; "cxx/attr/Makefile") CONFIG_FILES="$CONFIG_FILES cxx/attr/Makefile" ;; "cxx/pt2pt/Makefile") CONFIG_FILES="$CONFIG_FILES cxx/pt2pt/Makefile" ;; "cxx/comm/Makefile") CONFIG_FILES="$CONFIG_FILES cxx/comm/Makefile" ;; "cxx/coll/Makefile") CONFIG_FILES="$CONFIG_FILES cxx/coll/Makefile" ;; "cxx/errhan/Makefile") CONFIG_FILES="$CONFIG_FILES cxx/errhan/Makefile" ;; "cxx/info/Makefile") CONFIG_FILES="$CONFIG_FILES cxx/info/Makefile" ;; "cxx/datatype/Makefile") CONFIG_FILES="$CONFIG_FILES cxx/datatype/Makefile" ;; "cxx/io/Makefile") CONFIG_FILES="$CONFIG_FILES cxx/io/Makefile" ;; "cxx/init/Makefile") CONFIG_FILES="$CONFIG_FILES cxx/init/Makefile" ;; "cxx/rma/Makefile") CONFIG_FILES="$CONFIG_FILES cxx/rma/Makefile" ;; "cxx/spawn/Makefile") CONFIG_FILES="$CONFIG_FILES cxx/spawn/Makefile" ;; "cxx/spawn/testlist") CONFIG_FILES="$CONFIG_FILES cxx/spawn/testlist" ;; "cxx/topo/Makefile") CONFIG_FILES="$CONFIG_FILES cxx/topo/Makefile" ;; "threads/Makefile") CONFIG_FILES="$CONFIG_FILES threads/Makefile" ;; "threads/pt2pt/Makefile") CONFIG_FILES="$CONFIG_FILES threads/pt2pt/Makefile" ;; "threads/util/Makefile") CONFIG_FILES="$CONFIG_FILES threads/util/Makefile" ;; "threads/comm/Makefile") CONFIG_FILES="$CONFIG_FILES threads/comm/Makefile" ;; "threads/comm/testlist") CONFIG_FILES="$CONFIG_FILES threads/comm/testlist" ;; "threads/init/Makefile") CONFIG_FILES="$CONFIG_FILES threads/init/Makefile" ;; "threads/mpi_t/Makefile") CONFIG_FILES="$CONFIG_FILES threads/mpi_t/Makefile" ;; "threads/spawn/Makefile") CONFIG_FILES="$CONFIG_FILES threads/spawn/Makefile" ;; "threads/rma/Makefile") CONFIG_FILES="$CONFIG_FILES threads/rma/Makefile" ;; "threads/coll/Makefile") CONFIG_FILES="$CONFIG_FILES threads/coll/Makefile" ;; "threads/coll/testlist") CONFIG_FILES="$CONFIG_FILES threads/coll/testlist" ;; "errors/Makefile") CONFIG_FILES="$CONFIG_FILES errors/Makefile" ;; "errors/attr/Makefile") CONFIG_FILES="$CONFIG_FILES errors/attr/Makefile" ;; "errors/basic/Makefile") CONFIG_FILES="$CONFIG_FILES errors/basic/Makefile" ;; "errors/coll/Makefile") CONFIG_FILES="$CONFIG_FILES errors/coll/Makefile" ;; "errors/comm/Makefile") CONFIG_FILES="$CONFIG_FILES errors/comm/Makefile" ;; "errors/datatype/Makefile") CONFIG_FILES="$CONFIG_FILES errors/datatype/Makefile" ;; "errors/faults/Makefile") CONFIG_FILES="$CONFIG_FILES errors/faults/Makefile" ;; "errors/group/Makefile") CONFIG_FILES="$CONFIG_FILES errors/group/Makefile" ;; "errors/pt2pt/Makefile") CONFIG_FILES="$CONFIG_FILES errors/pt2pt/Makefile" ;; "errors/rma/Makefile") CONFIG_FILES="$CONFIG_FILES errors/rma/Makefile" ;; "errors/spawn/Makefile") CONFIG_FILES="$CONFIG_FILES errors/spawn/Makefile" ;; "errors/spawn/testlist") CONFIG_FILES="$CONFIG_FILES errors/spawn/testlist" ;; "errors/topo/Makefile") CONFIG_FILES="$CONFIG_FILES errors/topo/Makefile" ;; "errors/io/Makefile") CONFIG_FILES="$CONFIG_FILES errors/io/Makefile" ;; "errors/cxx/Makefile") CONFIG_FILES="$CONFIG_FILES errors/cxx/Makefile" ;; "errors/cxx/errhan/Makefile") CONFIG_FILES="$CONFIG_FILES errors/cxx/errhan/Makefile" ;; "errors/cxx/io/Makefile") CONFIG_FILES="$CONFIG_FILES errors/cxx/io/Makefile" ;; "errors/f77/Makefile") CONFIG_FILES="$CONFIG_FILES errors/f77/Makefile" ;; "errors/f77/io/Makefile") CONFIG_FILES="$CONFIG_FILES errors/f77/io/Makefile" ;; "errors/f77/io/addsize.h") CONFIG_FILES="$CONFIG_FILES errors/f77/io/addsize.h" ;; "errors/f77/io/iooffset.h") CONFIG_FILES="$CONFIG_FILES errors/f77/io/iooffset.h" ;; "errors/f90/Makefile") CONFIG_FILES="$CONFIG_FILES errors/f90/Makefile" ;; "errors/f90/io/Makefile") CONFIG_FILES="$CONFIG_FILES errors/f90/io/Makefile" ;; "errors/f08/Makefile") CONFIG_FILES="$CONFIG_FILES errors/f08/Makefile" ;; "errors/f08/io/Makefile") CONFIG_FILES="$CONFIG_FILES errors/f08/io/Makefile" ;; "ckpoint/Makefile") CONFIG_FILES="$CONFIG_FILES ckpoint/Makefile" ;; "ft/Makefile") CONFIG_FILES="$CONFIG_FILES ft/Makefile" ;; "manual/Makefile") CONFIG_FILES="$CONFIG_FILES manual/Makefile" ;; "manual/manyconnect") CONFIG_FILES="$CONFIG_FILES manual/manyconnect" ;; "manual/mpi_t/Makefile") CONFIG_FILES="$CONFIG_FILES manual/mpi_t/Makefile" ;; "perf/Makefile") CONFIG_FILES="$CONFIG_FILES perf/Makefile" ;; "testlist") CONFIG_FILES="$CONFIG_FILES testlist" ;; "cxx/testlist") CONFIG_FILES="$CONFIG_FILES cxx/testlist" ;; "cxx/topo/testlist") CONFIG_FILES="$CONFIG_FILES cxx/topo/testlist" ;; "f77/testlist") CONFIG_FILES="$CONFIG_FILES f77/testlist" ;; "f90/testlist") CONFIG_FILES="$CONFIG_FILES f90/testlist" ;; "threads/testlist") CONFIG_FILES="$CONFIG_FILES threads/testlist" ;; "errors/testlist") CONFIG_FILES="$CONFIG_FILES errors/testlist" ;; "errors/cxx/testlist") CONFIG_FILES="$CONFIG_FILES errors/cxx/testlist" ;; "errors/f77/testlist") CONFIG_FILES="$CONFIG_FILES errors/f77/testlist" ;; "errors/f90/testlist") CONFIG_FILES="$CONFIG_FILES errors/f90/testlist" ;; "impls/testlist") CONFIG_FILES="$CONFIG_FILES impls/testlist" ;; "f77/rma/testlist") CONFIG_FILES="$CONFIG_FILES f77/rma/testlist" ;; "f90/rma/testlist") CONFIG_FILES="$CONFIG_FILES f90/rma/testlist" ;; "f08/rma/testlist") CONFIG_FILES="$CONFIG_FILES f08/rma/testlist" ;; "impls/Makefile") CONFIG_FILES="$CONFIG_FILES impls/Makefile" ;; "impls/hydra/Makefile") CONFIG_FILES="$CONFIG_FILES impls/hydra/Makefile" ;; "impls/hydra/proc_binding.sh") CONFIG_FILES="$CONFIG_FILES impls/hydra/proc_binding.sh" ;; "impls/mpich/Makefile") CONFIG_FILES="$CONFIG_FILES impls/mpich/Makefile" ;; "impls/mpich/testlist") CONFIG_FILES="$CONFIG_FILES impls/mpich/testlist" ;; "impls/mpich/mpi_t/Makefile") CONFIG_FILES="$CONFIG_FILES impls/mpich/mpi_t/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; "default-1":C) chmod a+x maint/testmerge ;; "default-2":C) chmod a+x runtests checktests ;; "default-3":C) chmod a+x manual/manyconnect ;; "default-4":C) chmod a+x impls/hydra/proc_binding.sh ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi mpi-testsuite-3.2+dfsg/io/0000755000175000017500000000000012621010235014760 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/io/userioerr.c0000644000175000017500000000424712620254305017161 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2006 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" #include "mpitestconf.h" int verbose = 0; int handlerCalled = 0; /* Prototype to suppress compiler warnings */ void user_handler(MPI_File * fh, int *errcode, ...); void user_handler(MPI_File * fh, int *errcode, ...) { if (*errcode != MPI_SUCCESS) { handlerCalled++; if (verbose) { printf("In user_handler with code %d\n", *errcode); } } } int main(int argc, char *argv[]) { int rank, errs = 0, rc; MPI_Errhandler ioerr_handler; MPI_Status status; MPI_File fh; char inbuf[80]; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); /* Create a file to which to attach the handler */ rc = MPI_File_open(MPI_COMM_WORLD, (char *) "test.txt", MPI_MODE_CREATE | MPI_MODE_WRONLY | MPI_MODE_DELETE_ON_CLOSE, MPI_INFO_NULL, &fh); if (rc) { errs++; printf("Unable to open test.txt for writing\n"); } rc = MPI_File_create_errhandler(user_handler, &ioerr_handler); if (rc) { errs++; printf("MPI_File_create_Errhandler returned an error code: %d\n", rc); } rc = MPI_File_set_errhandler(fh, ioerr_handler); if (rc) { errs++; printf("MPI_File_set_errhandler returned an error code: %d\n", rc); } /* avoid leaking the errhandler, safe because they have refcount semantics */ rc = MPI_Errhandler_free(&ioerr_handler); if (rc) { errs++; printf("MPI_Errhandler_free returned an error code: %d\n", rc); } /* This should generate an error because the file mode is WRONLY */ rc = MPI_File_read_at(fh, 0, inbuf, 80, MPI_BYTE, &status); if (handlerCalled != 1) { errs++; printf("User-defined error handler was not called\n"); } rc = MPI_File_close(&fh); if (rc) { errs++; printf("MPI_File_close returned an error code: %d\n", rc); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/io/async.c0000644000175000017500000001206312620254305016252 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test contig asynchronous I/O"; */ #define DEFAULT_SIZE (65536) /* Uses asynchronous I/O. Each process writes to separate files and reads them back. The file name is taken as a command-line argument, and the process rank is appended to it.*/ static void handle_error(int errcode, char *str) { char msg[MPI_MAX_ERROR_STRING]; int resultlen; MPI_Error_string(errcode, msg, &resultlen); fprintf(stderr, "%s: %s\n", str, msg); MPI_Abort(MPI_COMM_WORLD, 1); } int main(int argc, char **argv) { int *buf, i, rank, nints, len, err; char *filename = 0, *tmp; int errs = 0; int SIZE = DEFAULT_SIZE; MPI_File fh; MPI_Status status; #ifdef MPIO_USES_MPI_REQUEST MPI_Request request; #else MPIO_Request request; #endif MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); /* process 0 takes the file name as a command-line argument and broadcasts it to other processes */ if (!rank) { i = 1; argv++; /* Skip unrecognized arguments */ while (i < argc) { if (strcmp(*argv, "-fname") == 0) { argv++; i++; len = (int) strlen(*argv); filename = (char *) malloc(len + 10); strcpy(filename, *argv); } else if (strcmp(*argv, "-size") == 0) { argv++; i++; SIZE = strtol(*argv, 0, 10); if (errno) { fprintf(stderr, "-size requires a numeric argument\n"); MPI_Abort(MPI_COMM_WORLD, 1); } else if (SIZE <= 0) { fprintf(stderr, "-size requires a positive value\n"); } } else { i++; argv++; } } if (!filename) { /* Use a default filename of testfile */ len = 8; filename = (char *) malloc(len + 10); strcpy(filename, "testfile"); } MPI_Bcast(&len, 1, MPI_INT, 0, MPI_COMM_WORLD); MPI_Bcast(filename, len + 10, MPI_CHAR, 0, MPI_COMM_WORLD); MPI_Bcast(&SIZE, 1, MPI_INT, 0, MPI_COMM_WORLD); } else { MPI_Bcast(&len, 1, MPI_INT, 0, MPI_COMM_WORLD); filename = (char *) malloc(len + 10); MPI_Bcast(filename, len + 10, MPI_CHAR, 0, MPI_COMM_WORLD); MPI_Bcast(&SIZE, 1, MPI_INT, 0, MPI_COMM_WORLD); } /* printf("Starting (size=%d, file=%s)...\n", SIZE, filename); fflush(stdout); */ buf = (int *) malloc(SIZE); nints = SIZE / sizeof(int); for (i = 0; i < nints; i++) buf[i] = rank * 100000 + i; /* each process opens a separate file called filename.'myrank' */ tmp = (char *) malloc(len + 10); strcpy(tmp, filename); sprintf(filename, "%s.%d", tmp, rank); free(tmp); err = MPI_File_open(MPI_COMM_SELF, filename, MPI_MODE_CREATE | MPI_MODE_RDWR, MPI_INFO_NULL, &fh); if (err != MPI_SUCCESS) handle_error(err, "MPI_File_open"); err = MPI_File_set_view(fh, 0, MPI_INT, MPI_INT, (char *) "native", MPI_INFO_NULL); if (err != MPI_SUCCESS) handle_error(err, "MPI_File_set_view"); err = MPI_File_iwrite(fh, buf, nints, MPI_INT, &request); if (err != MPI_SUCCESS) handle_error(err, "MPI_File_iwrtie"); #ifdef MPIO_USES_MPI_REQUEST MPI_Wait(&request, &status); #else MPIO_Wait(&request, &status); #endif MPI_File_close(&fh); /* reopen the file and read the data back */ for (i = 0; i < nints; i++) buf[i] = 0; err = MPI_File_open(MPI_COMM_SELF, filename, MPI_MODE_CREATE | MPI_MODE_RDWR, MPI_INFO_NULL, &fh); if (err != MPI_SUCCESS) handle_error(err, "MPI_File_open (read)"); err = MPI_File_set_view(fh, 0, MPI_INT, MPI_INT, (char *) "native", MPI_INFO_NULL); if (err != MPI_SUCCESS) handle_error(err, "MPI_File_set_view (read)"); err = MPI_File_iread(fh, buf, nints, MPI_INT, &request); if (err != MPI_SUCCESS) handle_error(err, "MPI_File_iread"); #ifdef MPIO_USES_MPI_REQUEST MPI_Wait(&request, &status); #else MPIO_Wait(&request, &status); #endif MPI_File_close(&fh); /* check if the data read is correct */ for (i = 0; i < nints; i++) { if (buf[i] != (rank * 100000 + i)) { errs++; if (errs < 25) { fprintf(stderr, "Process %d: error, read %d, should be %d\n", rank, buf[i], rank * 100000 + i); } else if (errs == 25) { fprintf(stderr, "Reached maximum number of errors to report\n"); } } } free(buf); free(filename); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/io/simple_collective.c0000644000175000017500000000764112620254305020645 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* this deceptively simple test uncovered a bug in the way certain file systems * dealt with tuning parmeters. See * https://github.com/open-mpi/ompi/issues/158 and * http://trac.mpich.org/projects/mpich/ticket/2261 * * originally uncovered in Darshan: * http://lists.mcs.anl.gov/pipermail/darshan-users/2015-February/000256.html * * to really exercise the bug in simple_collective, * we'd have to run on a Lustre or Panasas file system. * * I am surprised src/mpi/romio/test/create_excl.c did not uncover the bug */ #define _LARGEFILE64_SOURCE #include #include #include #include #include #include #include #include #include #include #include #include static char *opt_file = NULL; static int rank = -1; static int parse_args(int argc, char **argv); static void usage(const char *prog); int test_write(char *file, int nprocs, int rank, MPI_Info info) { double stime, etime, wtime, w_elapsed, w_slowest, elapsed, slowest; MPI_File fh; int ret; char buffer[700] = { 0 }; MPI_Status status; int verbose = 0; MPI_Barrier(MPI_COMM_WORLD); stime = MPI_Wtime(); ret = MPI_File_open(MPI_COMM_WORLD, file, MPI_MODE_CREATE | MPI_MODE_WRONLY | MPI_MODE_EXCL, info, &fh); if (ret != 0) { fprintf(stderr, "Error: failed to open %s\n", file); return 1; } etime = MPI_Wtime(); ret = MPI_File_write_at_all(fh, rank * 700, buffer, 700, MPI_BYTE, &status); if (ret != 0) { fprintf(stderr, "Error: failed to write %s\n", file); return 1; } wtime = MPI_Wtime(); MPI_File_close(&fh); elapsed = etime - stime; w_elapsed = wtime - etime; MPI_Reduce(&elapsed, &slowest, 1, MPI_DOUBLE, MPI_MAX, 0, MPI_COMM_WORLD); MPI_Reduce(&w_elapsed, &w_slowest, 1, MPI_DOUBLE, MPI_MAX, 0, MPI_COMM_WORLD); if (rank == 0) { unlink(file); slowest *= 1000.0; w_slowest *= 1000.0; if (verbose == 1) { printf("file: %s, nprocs: %d, open_time: %f ms, write_time: %f ms\n", file, nprocs, slowest, w_slowest); } } return 0; } int main(int argc, char **argv) { int nprocs; char file[256]; MPI_Info info; int nr_errors = 0; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); /* parse the command line arguments */ parse_args(argc, argv); sprintf(file, "%s", opt_file); MPI_Info_create(&info); nr_errors += test_write(file, nprocs, rank, info); /* acutal value does not matter. test only writes a small amount of data */ MPI_Info_set(info, "striping_factor", "50"); nr_errors += test_write(file, nprocs, rank, info); MPI_Info_free(&info); MPI_Finalize(); if (!rank && nr_errors == 0) { printf(" No Errors\n"); } return (-nr_errors); } static int parse_args(int argc, char **argv) { int c; while ((c = getopt(argc, argv, "e")) != EOF) { switch (c) { case 'h': if (rank == 0) usage(argv[0]); exit(0); case '?': /* unknown */ if (rank == 0) usage(argv[0]); exit(1); default: break; } } if (argc - optind != 1) { if (rank == 0) usage(argv[0]); exit(1); } opt_file = strdup(argv[optind]); assert(opt_file); return (0); } static void usage(const char *prog) { printf("Usage: %s [...] \n", prog); printf("\n is one or more of\n"); printf(" -h print this help\n"); } /* * vim: ts=8 sts=4 sw=4 noexpandtab */ mpi-testsuite-3.2+dfsg/io/i_setviewcur.c0000644000175000017500000000675212620254305017655 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test set_view with DISPLACEMENT_CURRENT"; */ int main(int argc, char *argv[]) { int errs = 0, err; int size, rank, *buf; MPI_Offset offset; MPI_File fh; MPI_Comm comm; MPI_Status status; MPI_Request request; MTest_Init(&argc, &argv); /* This test reads a header then sets the view to every "size" int, * using set view and current displacement. The file is first written * using a combination of collective and ordered writes */ comm = MPI_COMM_WORLD; err = MPI_File_open(comm, (char *) "test.ord", MPI_MODE_WRONLY | MPI_MODE_CREATE, MPI_INFO_NULL, &fh); if (err) { errs++; MTestPrintErrorMsg("Open(1)", err); } MPI_Comm_size(comm, &size); MPI_Comm_rank(comm, &rank); buf = (int *) malloc(size * sizeof(int)); buf[0] = size; err = MPI_File_iwrite_all(fh, buf, 1, MPI_INT, &request); if (err) { errs++; MTestPrintErrorMsg("Iwrite_all", err); } err = MPI_Wait(&request, &status); if (err) { errs++; MTestPrintErrorMsg("Wait", err); } err = MPI_File_get_position(fh, &offset); if (err) { errs++; MTestPrintErrorMsg("Get_position", err); } err = MPI_File_seek_shared(fh, offset, MPI_SEEK_SET); if (err) { errs++; MTestPrintErrorMsg("Seek_shared", err); } buf[0] = rank; err = MPI_File_write_ordered(fh, buf, 1, MPI_INT, &status); if (err) { errs++; MTestPrintErrorMsg("Write_ordered", err); } err = MPI_File_close(&fh); if (err) { errs++; MTestPrintErrorMsg("Close(1)", err); } /* Reopen the file as sequential */ err = MPI_File_open(comm, (char *) "test.ord", MPI_MODE_RDONLY | MPI_MODE_SEQUENTIAL | MPI_MODE_DELETE_ON_CLOSE, MPI_INFO_NULL, &fh); if (err) { errs++; MTestPrintErrorMsg("Open(Read)", err); } if (rank == 0) { err = MPI_File_read_shared(fh, buf, 1, MPI_INT, &status); if (err) { errs++; MTestPrintErrorMsg("Read_all", err); } if (buf[0] != size) { errs++; fprintf(stderr, "Unexpected value for the header = %d, should be %d\n", buf[0], size); fflush(stderr); } } MPI_Barrier(comm); /* All processes must provide the same file view for MODE_SEQUENTIAL */ /* See MPI 2.1, 13.3 - DISPLACEMENT_CURRENT is *required* for * MODE_SEQUENTIAL files */ err = MPI_File_set_view(fh, MPI_DISPLACEMENT_CURRENT, MPI_INT, MPI_INT, (char *) "native", MPI_INFO_NULL); if (err) { errs++; MTestPrintErrorMsg("Set_view (DISPLACEMENT_CURRENT)", err); } buf[0] = -1; err = MPI_File_read_ordered(fh, buf, 1, MPI_INT, &status); if (err) { errs++; MTestPrintErrorMsg("Read_all", err); } if (buf[0] != rank) { errs++; fprintf(stderr, "%d: buf[0] = %d\n", rank, buf[0]); fflush(stderr); } free(buf); err = MPI_File_close(&fh); if (err) { errs++; MTestPrintErrorMsg("Close(2)", err); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/io/async_any.c0000644000175000017500000000657412620254305017133 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test asynchronous I/O w/ multiple completion"; */ #define SIZE (65536) #define NUMOPS 10 /* Uses asynchronous I/O. Each process writes to separate files and reads them back. The file name is taken as a command-line argument, and the process rank is appended to it.*/ int main(int argc, char **argv) { int *buf, i, rank, nints, len; char *filename, *tmp; int errs = 0; MPI_File fh; MPI_Status statuses[NUMOPS]; MPI_Request requests[NUMOPS]; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); /* process 0 takes the file name as a command-line argument and broadcasts it to other processes */ if (!rank) { i = 1; while ((i < argc) && strcmp("-fname", *argv)) { i++; argv++; } if (i >= argc) { /* Use a default filename of testfile */ len = 8; filename = (char *) malloc(len + 10); strcpy(filename, "testfile"); /* * fprintf(stderr, "\n*# Usage: async_any -fname filename\n\n"); * MPI_Abort(MPI_COMM_WORLD, 1); */ } else { argv++; len = (int) strlen(*argv); filename = (char *) malloc(len + 10); strcpy(filename, *argv); } MPI_Bcast(&len, 1, MPI_INT, 0, MPI_COMM_WORLD); MPI_Bcast(filename, len + 10, MPI_CHAR, 0, MPI_COMM_WORLD); } else { MPI_Bcast(&len, 1, MPI_INT, 0, MPI_COMM_WORLD); filename = (char *) malloc(len + 10); MPI_Bcast(filename, len + 10, MPI_CHAR, 0, MPI_COMM_WORLD); } buf = (int *) malloc(SIZE); nints = SIZE / sizeof(int); for (i = 0; i < nints; i++) buf[i] = rank * 100000 + i; /* each process opens a separate file called filename.'myrank' */ tmp = (char *) malloc(len + 10); strcpy(tmp, filename); sprintf(filename, "%s.%d", tmp, rank); MPI_File_open(MPI_COMM_SELF, filename, MPI_MODE_CREATE | MPI_MODE_RDWR, MPI_INFO_NULL, &fh); MPI_File_set_view(fh, 0, MPI_INT, MPI_INT, (char *) "native", MPI_INFO_NULL); for (i = 0; i < NUMOPS; i++) { MPI_File_iwrite(fh, buf, nints, MPI_INT, &(requests[i])); } MPI_Waitall(NUMOPS, requests, statuses); MPI_File_close(&fh); /* reopen the file and read the data back */ for (i = 0; i < nints; i++) buf[i] = 0; MPI_File_open(MPI_COMM_SELF, filename, MPI_MODE_CREATE | MPI_MODE_RDWR, MPI_INFO_NULL, &fh); MPI_File_set_view(fh, 0, MPI_INT, MPI_INT, (char *) "native", MPI_INFO_NULL); for (i = 0; i < NUMOPS; i++) { MPI_File_iread(fh, buf, nints, MPI_INT, &(requests[i])); } MPI_Waitall(NUMOPS, requests, statuses); MPI_File_close(&fh); /* check if the data read is correct */ for (i = 0; i < nints; i++) { if (buf[i] != (rank * 100000 + i)) { errs++; fprintf(stderr, "Process %d: error, read %d, should be %d\n", rank, buf[i], rank * 100000 + i); } } free(buf); free(filename); free(tmp); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/io/setinfo.c0000644000175000017500000000567712620254305016621 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include "mpitestconf.h" #ifdef HAVE_STRING_H #include #endif /* static char MTEST_Descrip[] = "Test file_set_view"; */ /* * access style is explicitly described as modifiable. values include * read_once, read_mostly, write_once, write_mostlye, random * * */ int main(int argc, char *argv[]) { int errs = 0, err; int buf[10]; int rank; MPI_Comm comm; MPI_Status status; MPI_File fh; MPI_Info infoin, infoout; char value[1024]; int flag, count; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_Comm_rank(comm, &rank); MPI_Info_create(&infoin); MPI_Info_set(infoin, (char *) "access_style", (char *) "write_once,random"); MPI_File_open(comm, (char *) "testfile", MPI_MODE_RDWR | MPI_MODE_CREATE, infoin, &fh); buf[0] = rank; err = MPI_File_write_ordered(fh, buf, 1, MPI_INT, &status); if (err) { errs++; MTestPrintError(err); } MPI_Info_set(infoin, (char *) "access_style", (char *) "read_once"); err = MPI_File_seek_shared(fh, 0, MPI_SEEK_SET); if (err) { errs++; MTestPrintError(err); } err = MPI_File_set_info(fh, infoin); if (err) { errs++; MTestPrintError(err); } MPI_Info_free(&infoin); buf[0] = -1; err = MPI_File_read_ordered(fh, buf, 1, MPI_INT, &status); if (err) { errs++; MTestPrintError(err); } MPI_Get_count(&status, MPI_INT, &count); if (count != 1) { errs++; printf("Expected to read one int, read %d\n", count); } if (buf[0] != rank) { errs++; printf("Did not read expected value (%d)\n", buf[0]); } err = MPI_File_get_info(fh, &infoout); if (err) { errs++; MTestPrintError(err); } MPI_Info_get(infoout, (char *) "access_style", 1024, value, &flag); /* Note that an implementation is allowed to ignore the set_info, * so we'll accept either the original or the updated version */ if (!flag) { ; /* * errs++; * printf("Access style hint not saved\n"); */ } else { if (strcmp(value, "read_once") != 0 && strcmp(value, "write_once,random") != 0) { errs++; printf("value for access_style unexpected; is %s\n", value); } } MPI_Info_free(&infoout); err = MPI_File_close(&fh); if (err) { errs++; MTestPrintError(err); } MPI_Barrier(comm); MPI_Comm_rank(comm, &rank); if (rank == 0) { err = MPI_File_delete((char *) "testfile", MPI_INFO_NULL); if (err) { errs++; MTestPrintError(err); } } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/io/hindexed_io.c0000644000175000017500000000602712620254305017417 0ustar mbanckmbanck#include #include #include #include #include #define DATA_SIZE 324*4 #define PAD 256 #define HEADER 144 #define BLK_COUNT 3 static void handle_error(int errcode, char *str) { char msg[MPI_MAX_ERROR_STRING]; int resultlen; MPI_Error_string(errcode, msg, &resultlen); fprintf(stderr, "%s: %s\n", str, msg); MPI_Abort(MPI_COMM_WORLD, 1); } #define CHECK(fn) { int errcode; errcode = (fn); if (errcode != MPI_SUCCESS) handle_error(errcode, #fn); } int main(int argc, char **argv) { MPI_File fh; MPI_Datatype file_type, mem_type; int *data = NULL; int *verify = NULL; int data_size = DATA_SIZE; int i, j, k, nr_errors = 0; MPI_Aint disp[BLK_COUNT]; int block_lens[BLK_COUNT]; char *filename = "unnamed.dat"; MPI_Init(&argc, &argv); disp[0] = (MPI_Aint) (PAD); disp[1] = (MPI_Aint) (data_size * 1 + PAD); disp[2] = (MPI_Aint) (data_size * 2 + PAD); block_lens[0] = data_size; block_lens[1] = data_size; block_lens[2] = data_size; data = malloc(data_size); verify = malloc(data_size * BLK_COUNT + HEADER + PAD); for (i = 0; i < data_size / sizeof(int); i++) data[i] = i; MPI_Type_create_hindexed_block(BLK_COUNT, data_size, disp, MPI_BYTE, &file_type); MPI_Type_commit(&file_type); MPI_Type_create_hvector(BLK_COUNT, data_size, 0, MPI_BYTE, &mem_type); MPI_Type_commit(&mem_type); if (1 < argc) filename = argv[1]; CHECK(MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_RDWR | MPI_MODE_CREATE | MPI_MODE_DELETE_ON_CLOSE, MPI_INFO_NULL, &fh) != 0); CHECK(MPI_File_set_view(fh, HEADER, MPI_BYTE, file_type, "native", MPI_INFO_NULL)); /* write everything */ CHECK(MPI_File_write_at_all(fh, 0, data, 1, mem_type, MPI_STATUS_IGNORE)); /* verify */ CHECK(MPI_File_set_view(fh, 0, MPI_BYTE, MPI_BYTE, "native", MPI_INFO_NULL)); CHECK(MPI_File_read_at_all(fh, 0, verify, (HEADER + PAD + BLK_COUNT * DATA_SIZE) / sizeof(int), MPI_INT, MPI_STATUS_IGNORE)); /* header and block padding should have no data */ for (i = 0; i < (HEADER + PAD) / sizeof(int); i++) { if (verify[i] != 0) { nr_errors++; fprintf(stderr, "expected 0, read %d\n", verify[i]); } } /* blocks are replicated */ for (j = 0; j < BLK_COUNT; j++) { for (k = 0; k < (DATA_SIZE / sizeof(int)); k++) { if (verify[(HEADER + PAD) / sizeof(int) + k + j * (DATA_SIZE / sizeof(int))] != data[k]) { nr_errors++; fprintf(stderr, "expcted %d, read %d\n", data[k], verify[(HEADER + PAD) / sizeof(int) + k + j * (DATA_SIZE / sizeof(int))]); } i++; } } MPI_File_close(&fh); MPI_Type_free(&mem_type); MPI_Type_free(&file_type); if (nr_errors == 0) printf(" No Errors\n"); MPI_Finalize(); free(data); return 0; } mpi-testsuite-3.2+dfsg/io/Makefile.in0000644000175000017500000010540712621010235017034 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = rdwrord$(EXEEXT) rdwrzero$(EXEEXT) \ getextent$(EXEEXT) setinfo$(EXEEXT) setviewcur$(EXEEXT) \ i_noncontig$(EXEEXT) async$(EXEEXT) async_any$(EXEEXT) \ userioerr$(EXEEXT) resized$(EXEEXT) resized2$(EXEEXT) \ bigtype$(EXEEXT) hindexed_io$(EXEEXT) \ simple_collective$(EXEEXT) $(am__EXEEXT_1) @BUILD_MPIX_TESTS_TRUE@am__append_1 = \ @BUILD_MPIX_TESTS_TRUE@ i_bigtype \ @BUILD_MPIX_TESTS_TRUE@ i_hindexed_io \ @BUILD_MPIX_TESTS_TRUE@ i_rdwrord \ @BUILD_MPIX_TESTS_TRUE@ i_setviewcur \ @BUILD_MPIX_TESTS_TRUE@ i_aggregation1 \ @BUILD_MPIX_TESTS_TRUE@ i_aggregation2 \ @BUILD_MPIX_TESTS_TRUE@ i_coll_test \ @BUILD_MPIX_TESTS_TRUE@ i_darray_read \ @BUILD_MPIX_TESTS_TRUE@ i_hindexed \ @BUILD_MPIX_TESTS_TRUE@ i_noncontig_coll \ @BUILD_MPIX_TESTS_TRUE@ i_noncontig_coll2 \ @BUILD_MPIX_TESTS_TRUE@ i_types_with_zeros subdir = io ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = testlist CONFIG_CLEAN_VPATH_FILES = @BUILD_MPIX_TESTS_TRUE@am__EXEEXT_1 = i_bigtype$(EXEEXT) \ @BUILD_MPIX_TESTS_TRUE@ i_hindexed_io$(EXEEXT) \ @BUILD_MPIX_TESTS_TRUE@ i_rdwrord$(EXEEXT) \ @BUILD_MPIX_TESTS_TRUE@ i_setviewcur$(EXEEXT) \ @BUILD_MPIX_TESTS_TRUE@ i_aggregation1$(EXEEXT) \ @BUILD_MPIX_TESTS_TRUE@ i_aggregation2$(EXEEXT) \ @BUILD_MPIX_TESTS_TRUE@ i_coll_test$(EXEEXT) \ @BUILD_MPIX_TESTS_TRUE@ i_darray_read$(EXEEXT) \ @BUILD_MPIX_TESTS_TRUE@ i_hindexed$(EXEEXT) \ @BUILD_MPIX_TESTS_TRUE@ i_noncontig_coll$(EXEEXT) \ @BUILD_MPIX_TESTS_TRUE@ i_noncontig_coll2$(EXEEXT) \ @BUILD_MPIX_TESTS_TRUE@ i_types_with_zeros$(EXEEXT) PROGRAMS = $(noinst_PROGRAMS) async_SOURCES = async.c async_OBJECTS = async.$(OBJEXT) async_LDADD = $(LDADD) async_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o async_any_SOURCES = async_any.c async_any_OBJECTS = async_any.$(OBJEXT) async_any_LDADD = $(LDADD) async_any_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o bigtype_SOURCES = bigtype.c bigtype_OBJECTS = bigtype.$(OBJEXT) bigtype_LDADD = $(LDADD) bigtype_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o getextent_SOURCES = getextent.c getextent_OBJECTS = getextent.$(OBJEXT) getextent_LDADD = $(LDADD) getextent_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o hindexed_io_SOURCES = hindexed_io.c hindexed_io_OBJECTS = hindexed_io.$(OBJEXT) hindexed_io_LDADD = $(LDADD) hindexed_io_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o i_aggregation1_SOURCES = i_aggregation1.c i_aggregation1_OBJECTS = i_aggregation1.$(OBJEXT) i_aggregation1_LDADD = $(LDADD) i_aggregation1_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o i_aggregation2_SOURCES = i_aggregation2.c i_aggregation2_OBJECTS = i_aggregation2.$(OBJEXT) i_aggregation2_LDADD = $(LDADD) i_aggregation2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o i_bigtype_SOURCES = i_bigtype.c i_bigtype_OBJECTS = i_bigtype.$(OBJEXT) i_bigtype_LDADD = $(LDADD) i_bigtype_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o i_coll_test_SOURCES = i_coll_test.c i_coll_test_OBJECTS = i_coll_test.$(OBJEXT) i_coll_test_LDADD = $(LDADD) i_coll_test_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o i_darray_read_SOURCES = i_darray_read.c i_darray_read_OBJECTS = i_darray_read.$(OBJEXT) i_darray_read_LDADD = $(LDADD) i_darray_read_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o i_hindexed_SOURCES = i_hindexed.c i_hindexed_OBJECTS = i_hindexed.$(OBJEXT) i_hindexed_LDADD = $(LDADD) i_hindexed_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o i_hindexed_io_SOURCES = i_hindexed_io.c i_hindexed_io_OBJECTS = i_hindexed_io.$(OBJEXT) i_hindexed_io_LDADD = $(LDADD) i_hindexed_io_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o i_noncontig_SOURCES = i_noncontig.c i_noncontig_OBJECTS = i_noncontig.$(OBJEXT) i_noncontig_LDADD = $(LDADD) i_noncontig_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o i_noncontig_coll_SOURCES = i_noncontig_coll.c i_noncontig_coll_OBJECTS = i_noncontig_coll.$(OBJEXT) i_noncontig_coll_LDADD = $(LDADD) i_noncontig_coll_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o i_noncontig_coll2_SOURCES = i_noncontig_coll2.c i_noncontig_coll2_OBJECTS = i_noncontig_coll2.$(OBJEXT) i_noncontig_coll2_LDADD = $(LDADD) i_noncontig_coll2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o i_rdwrord_SOURCES = i_rdwrord.c i_rdwrord_OBJECTS = i_rdwrord.$(OBJEXT) i_rdwrord_LDADD = $(LDADD) i_rdwrord_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o i_setviewcur_SOURCES = i_setviewcur.c i_setviewcur_OBJECTS = i_setviewcur.$(OBJEXT) i_setviewcur_LDADD = $(LDADD) i_setviewcur_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o i_types_with_zeros_SOURCES = i_types_with_zeros.c i_types_with_zeros_OBJECTS = i_types_with_zeros.$(OBJEXT) i_types_with_zeros_LDADD = $(LDADD) i_types_with_zeros_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o rdwrord_SOURCES = rdwrord.c rdwrord_OBJECTS = rdwrord.$(OBJEXT) rdwrord_LDADD = $(LDADD) rdwrord_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o rdwrzero_SOURCES = rdwrzero.c rdwrzero_OBJECTS = rdwrzero.$(OBJEXT) rdwrzero_LDADD = $(LDADD) rdwrzero_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o resized_SOURCES = resized.c resized_OBJECTS = resized.$(OBJEXT) resized_LDADD = $(LDADD) resized_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o resized2_SOURCES = resized2.c resized2_OBJECTS = resized2.$(OBJEXT) resized2_LDADD = $(LDADD) resized2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o setinfo_SOURCES = setinfo.c setinfo_OBJECTS = setinfo.$(OBJEXT) setinfo_LDADD = $(LDADD) setinfo_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o setviewcur_SOURCES = setviewcur.c setviewcur_OBJECTS = setviewcur.$(OBJEXT) setviewcur_LDADD = $(LDADD) setviewcur_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o simple_collective_SOURCES = simple_collective.c simple_collective_OBJECTS = simple_collective.$(OBJEXT) simple_collective_LDADD = $(LDADD) simple_collective_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o userioerr_SOURCES = userioerr.c userioerr_OBJECTS = userioerr.$(OBJEXT) userioerr_LDADD = $(LDADD) userioerr_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = async.c async_any.c bigtype.c getextent.c hindexed_io.c \ i_aggregation1.c i_aggregation2.c i_bigtype.c i_coll_test.c \ i_darray_read.c i_hindexed.c i_hindexed_io.c i_noncontig.c \ i_noncontig_coll.c i_noncontig_coll2.c i_rdwrord.c \ i_setviewcur.c i_types_with_zeros.c rdwrord.c rdwrzero.c \ resized.c resized2.c setinfo.c setviewcur.c \ simple_collective.c userioerr.c DIST_SOURCES = async.c async_any.c bigtype.c getextent.c hindexed_io.c \ i_aggregation1.c i_aggregation2.c i_bigtype.c i_coll_test.c \ i_darray_read.c i_hindexed.c i_hindexed_io.c i_noncontig.c \ i_noncontig_coll.c i_noncontig_coll2.c i_rdwrord.c \ i_setviewcur.c i_types_with_zeros.c rdwrord.c rdwrzero.c \ resized.c resized2.c setinfo.c setviewcur.c \ simple_collective.c userioerr.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/testlist.in \ $(top_srcdir)/Makefile.mtest $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist.in all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign io/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign io/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): testlist: $(top_builddir)/config.status $(srcdir)/testlist.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) async$(EXEEXT): $(async_OBJECTS) $(async_DEPENDENCIES) $(EXTRA_async_DEPENDENCIES) @rm -f async$(EXEEXT) $(AM_V_CCLD)$(LINK) $(async_OBJECTS) $(async_LDADD) $(LIBS) async_any$(EXEEXT): $(async_any_OBJECTS) $(async_any_DEPENDENCIES) $(EXTRA_async_any_DEPENDENCIES) @rm -f async_any$(EXEEXT) $(AM_V_CCLD)$(LINK) $(async_any_OBJECTS) $(async_any_LDADD) $(LIBS) bigtype$(EXEEXT): $(bigtype_OBJECTS) $(bigtype_DEPENDENCIES) $(EXTRA_bigtype_DEPENDENCIES) @rm -f bigtype$(EXEEXT) $(AM_V_CCLD)$(LINK) $(bigtype_OBJECTS) $(bigtype_LDADD) $(LIBS) getextent$(EXEEXT): $(getextent_OBJECTS) $(getextent_DEPENDENCIES) $(EXTRA_getextent_DEPENDENCIES) @rm -f getextent$(EXEEXT) $(AM_V_CCLD)$(LINK) $(getextent_OBJECTS) $(getextent_LDADD) $(LIBS) hindexed_io$(EXEEXT): $(hindexed_io_OBJECTS) $(hindexed_io_DEPENDENCIES) $(EXTRA_hindexed_io_DEPENDENCIES) @rm -f hindexed_io$(EXEEXT) $(AM_V_CCLD)$(LINK) $(hindexed_io_OBJECTS) $(hindexed_io_LDADD) $(LIBS) i_aggregation1$(EXEEXT): $(i_aggregation1_OBJECTS) $(i_aggregation1_DEPENDENCIES) $(EXTRA_i_aggregation1_DEPENDENCIES) @rm -f i_aggregation1$(EXEEXT) $(AM_V_CCLD)$(LINK) $(i_aggregation1_OBJECTS) $(i_aggregation1_LDADD) $(LIBS) i_aggregation2$(EXEEXT): $(i_aggregation2_OBJECTS) $(i_aggregation2_DEPENDENCIES) $(EXTRA_i_aggregation2_DEPENDENCIES) @rm -f i_aggregation2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(i_aggregation2_OBJECTS) $(i_aggregation2_LDADD) $(LIBS) i_bigtype$(EXEEXT): $(i_bigtype_OBJECTS) $(i_bigtype_DEPENDENCIES) $(EXTRA_i_bigtype_DEPENDENCIES) @rm -f i_bigtype$(EXEEXT) $(AM_V_CCLD)$(LINK) $(i_bigtype_OBJECTS) $(i_bigtype_LDADD) $(LIBS) i_coll_test$(EXEEXT): $(i_coll_test_OBJECTS) $(i_coll_test_DEPENDENCIES) $(EXTRA_i_coll_test_DEPENDENCIES) @rm -f i_coll_test$(EXEEXT) $(AM_V_CCLD)$(LINK) $(i_coll_test_OBJECTS) $(i_coll_test_LDADD) $(LIBS) i_darray_read$(EXEEXT): $(i_darray_read_OBJECTS) $(i_darray_read_DEPENDENCIES) $(EXTRA_i_darray_read_DEPENDENCIES) @rm -f i_darray_read$(EXEEXT) $(AM_V_CCLD)$(LINK) $(i_darray_read_OBJECTS) $(i_darray_read_LDADD) $(LIBS) i_hindexed$(EXEEXT): $(i_hindexed_OBJECTS) $(i_hindexed_DEPENDENCIES) $(EXTRA_i_hindexed_DEPENDENCIES) @rm -f i_hindexed$(EXEEXT) $(AM_V_CCLD)$(LINK) $(i_hindexed_OBJECTS) $(i_hindexed_LDADD) $(LIBS) i_hindexed_io$(EXEEXT): $(i_hindexed_io_OBJECTS) $(i_hindexed_io_DEPENDENCIES) $(EXTRA_i_hindexed_io_DEPENDENCIES) @rm -f i_hindexed_io$(EXEEXT) $(AM_V_CCLD)$(LINK) $(i_hindexed_io_OBJECTS) $(i_hindexed_io_LDADD) $(LIBS) i_noncontig$(EXEEXT): $(i_noncontig_OBJECTS) $(i_noncontig_DEPENDENCIES) $(EXTRA_i_noncontig_DEPENDENCIES) @rm -f i_noncontig$(EXEEXT) $(AM_V_CCLD)$(LINK) $(i_noncontig_OBJECTS) $(i_noncontig_LDADD) $(LIBS) i_noncontig_coll$(EXEEXT): $(i_noncontig_coll_OBJECTS) $(i_noncontig_coll_DEPENDENCIES) $(EXTRA_i_noncontig_coll_DEPENDENCIES) @rm -f i_noncontig_coll$(EXEEXT) $(AM_V_CCLD)$(LINK) $(i_noncontig_coll_OBJECTS) $(i_noncontig_coll_LDADD) $(LIBS) i_noncontig_coll2$(EXEEXT): $(i_noncontig_coll2_OBJECTS) $(i_noncontig_coll2_DEPENDENCIES) $(EXTRA_i_noncontig_coll2_DEPENDENCIES) @rm -f i_noncontig_coll2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(i_noncontig_coll2_OBJECTS) $(i_noncontig_coll2_LDADD) $(LIBS) i_rdwrord$(EXEEXT): $(i_rdwrord_OBJECTS) $(i_rdwrord_DEPENDENCIES) $(EXTRA_i_rdwrord_DEPENDENCIES) @rm -f i_rdwrord$(EXEEXT) $(AM_V_CCLD)$(LINK) $(i_rdwrord_OBJECTS) $(i_rdwrord_LDADD) $(LIBS) i_setviewcur$(EXEEXT): $(i_setviewcur_OBJECTS) $(i_setviewcur_DEPENDENCIES) $(EXTRA_i_setviewcur_DEPENDENCIES) @rm -f i_setviewcur$(EXEEXT) $(AM_V_CCLD)$(LINK) $(i_setviewcur_OBJECTS) $(i_setviewcur_LDADD) $(LIBS) i_types_with_zeros$(EXEEXT): $(i_types_with_zeros_OBJECTS) $(i_types_with_zeros_DEPENDENCIES) $(EXTRA_i_types_with_zeros_DEPENDENCIES) @rm -f i_types_with_zeros$(EXEEXT) $(AM_V_CCLD)$(LINK) $(i_types_with_zeros_OBJECTS) $(i_types_with_zeros_LDADD) $(LIBS) rdwrord$(EXEEXT): $(rdwrord_OBJECTS) $(rdwrord_DEPENDENCIES) $(EXTRA_rdwrord_DEPENDENCIES) @rm -f rdwrord$(EXEEXT) $(AM_V_CCLD)$(LINK) $(rdwrord_OBJECTS) $(rdwrord_LDADD) $(LIBS) rdwrzero$(EXEEXT): $(rdwrzero_OBJECTS) $(rdwrzero_DEPENDENCIES) $(EXTRA_rdwrzero_DEPENDENCIES) @rm -f rdwrzero$(EXEEXT) $(AM_V_CCLD)$(LINK) $(rdwrzero_OBJECTS) $(rdwrzero_LDADD) $(LIBS) resized$(EXEEXT): $(resized_OBJECTS) $(resized_DEPENDENCIES) $(EXTRA_resized_DEPENDENCIES) @rm -f resized$(EXEEXT) $(AM_V_CCLD)$(LINK) $(resized_OBJECTS) $(resized_LDADD) $(LIBS) resized2$(EXEEXT): $(resized2_OBJECTS) $(resized2_DEPENDENCIES) $(EXTRA_resized2_DEPENDENCIES) @rm -f resized2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(resized2_OBJECTS) $(resized2_LDADD) $(LIBS) setinfo$(EXEEXT): $(setinfo_OBJECTS) $(setinfo_DEPENDENCIES) $(EXTRA_setinfo_DEPENDENCIES) @rm -f setinfo$(EXEEXT) $(AM_V_CCLD)$(LINK) $(setinfo_OBJECTS) $(setinfo_LDADD) $(LIBS) setviewcur$(EXEEXT): $(setviewcur_OBJECTS) $(setviewcur_DEPENDENCIES) $(EXTRA_setviewcur_DEPENDENCIES) @rm -f setviewcur$(EXEEXT) $(AM_V_CCLD)$(LINK) $(setviewcur_OBJECTS) $(setviewcur_LDADD) $(LIBS) simple_collective$(EXEEXT): $(simple_collective_OBJECTS) $(simple_collective_DEPENDENCIES) $(EXTRA_simple_collective_DEPENDENCIES) @rm -f simple_collective$(EXEEXT) $(AM_V_CCLD)$(LINK) $(simple_collective_OBJECTS) $(simple_collective_LDADD) $(LIBS) userioerr$(EXEEXT): $(userioerr_OBJECTS) $(userioerr_DEPENDENCIES) $(EXTRA_userioerr_DEPENDENCIES) @rm -f userioerr$(EXEEXT) $(AM_V_CCLD)$(LINK) $(userioerr_OBJECTS) $(userioerr_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/async.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/async_any.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bigtype.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getextent.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hindexed_io.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i_aggregation1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i_aggregation2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i_bigtype.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i_coll_test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i_darray_read.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i_hindexed.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i_hindexed_io.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i_noncontig.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i_noncontig_coll.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i_noncontig_coll2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i_rdwrord.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i_setviewcur.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i_types_with_zeros.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rdwrord.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rdwrzero.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resized.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resized2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setinfo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setviewcur.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simple_collective.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/userioerr.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-local clean-noinstPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-local clean-noinstPROGRAMS cscopelist-am ctags ctags-am \ distclean distclean-compile distclean-generic distclean-tags \ distdir dvi dvi-am html html-am info info-am install \ install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml clean-local: -rm -f testfile testfile.* # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/io/rdwrzero.c0000644000175000017500000000624512620254305017020 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include "mpitestconf.h" #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_MEMORY_H #include #endif /* static char MTEST_Descrip[] = "Test reading and writing zero bytes (set status correctly)"; */ int main(int argc, char *argv[]) { int errs = 0; int size, rank, i, *buf, count, rc; MPI_File fh; MPI_Comm comm; MPI_Status status; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; rc = MPI_File_open(comm, (char *) "test.ord", MPI_MODE_RDWR | MPI_MODE_CREATE | MPI_MODE_DELETE_ON_CLOSE, MPI_INFO_NULL, &fh); if (rc) { MTestPrintErrorMsg("File_open", rc); errs++; /* If the open fails, there isn't anything else that we can do */ goto fn_fail; } MPI_Comm_size(comm, &size); MPI_Comm_rank(comm, &rank); buf = (int *) malloc(size * sizeof(int)); buf[0] = rank; /* Write to file */ rc = MPI_File_write_ordered(fh, buf, 1, MPI_INT, &status); if (rc) { MTestPrintErrorMsg("File_write_ordered", rc); errs++; } else { MPI_Get_count(&status, MPI_INT, &count); if (count != 1) { errs++; fprintf(stderr, "Wrong count (%d) on write-ordered\n", count); } } /* Set the individual pointer to 0, since we want to use a read_all */ MPI_File_seek(fh, 0, MPI_SEEK_SET); /* Read nothing (check status) */ memset(&status, 0xff, sizeof(MPI_Status)); MPI_File_read(fh, buf, 0, MPI_INT, &status); MPI_Get_count(&status, MPI_INT, &count); if (count != 0) { errs++; fprintf(stderr, "Count not zero (%d) on read\n", count); } /* Write nothing (check status) */ memset(&status, 0xff, sizeof(MPI_Status)); MPI_File_write(fh, buf, 0, MPI_INT, &status); if (count != 0) { errs++; fprintf(stderr, "Count not zero (%d) on write\n", count); } /* Read shared nothing (check status) */ MPI_File_seek_shared(fh, 0, MPI_SEEK_SET); /* Read nothing (check status) */ memset(&status, 0xff, sizeof(MPI_Status)); MPI_File_read_shared(fh, buf, 0, MPI_INT, &status); MPI_Get_count(&status, MPI_INT, &count); if (count != 0) { errs++; fprintf(stderr, "Count not zero (%d) on read shared\n", count); } /* Write nothing (check status) */ memset(&status, 0xff, sizeof(MPI_Status)); MPI_File_write_shared(fh, buf, 0, MPI_INT, &status); if (count != 0) { errs++; fprintf(stderr, "Count not zero (%d) on write\n", count); } MPI_Barrier(comm); MPI_File_seek_shared(fh, 0, MPI_SEEK_SET); for (i = 0; i < size; i++) buf[i] = -1; MPI_File_read_ordered(fh, buf, 1, MPI_INT, &status); if (buf[0] != rank) { errs++; fprintf(stderr, "%d: buf = %d\n", rank, buf[0]); } free(buf); MPI_File_close(&fh); fn_fail: MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/io/i_noncontig_coll2.c0000644000175000017500000004247412620254305020547 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include /* tests noncontiguous reads/writes using nonblocking collective I/O */ /* this test is almost exactly like i_noncontig_coll.c with the following changes: * * . generalized file writing/reading to handle arbitrary number of processors * . provides the "cb_config_list" hint with several permutations of the * avaliable processors. * [ makes use of code copied from ROMIO's ADIO code to collect the names of * the processors ] */ /* we are going to muck with this later to make it evenly divisible by however many compute nodes we have */ #define STARTING_SIZE 5000 int test_file(char *filename, int mynod, int nprocs, char *cb_hosts, const char *msg, int verbose); #define ADIOI_Free free #define ADIOI_Malloc malloc #define FPRINTF fprintf /* I have no idea what the "D" stands for; it's how things are done in adio.h */ struct ADIO_cb_name_arrayD { int refct; int namect; char **names; }; typedef struct ADIO_cb_name_arrayD *ADIO_cb_name_array; void handle_error(int errcode, const char *str); int cb_gather_name_array(MPI_Comm comm, ADIO_cb_name_array * arrayp); void default_str(int mynod, int len, ADIO_cb_name_array array, char *dest); void reverse_str(int mynod, int len, ADIO_cb_name_array array, char *dest); void reverse_alternating_str(int mynod, int len, ADIO_cb_name_array array, char *dest); void simple_shuffle_str(int mynod, int len, ADIO_cb_name_array array, char *dest); void handle_error(int errcode, const char *str) { char msg[MPI_MAX_ERROR_STRING]; int resultlen; MPI_Error_string(errcode, msg, &resultlen); fprintf(stderr, "%s: %s\n", str, msg); MPI_Abort(MPI_COMM_WORLD, 1); } /* cb_gather_name_array() - gather a list of processor names from all processes * in a communicator and store them on rank 0. * * This is a collective call on the communicator(s) passed in. * * Obtains a rank-ordered list of processor names from the processes in * "dupcomm". * * Returns 0 on success, -1 on failure. * * NOTE: Needs some work to cleanly handle out of memory cases! */ int cb_gather_name_array(MPI_Comm comm, ADIO_cb_name_array * arrayp) { /* this is copied from ROMIO, but since this test is for correctness, * not performance, note that we have removed the parts where ROMIO * uses a keyval to cache the name array. We'll just rebuild it if we * need to */ char my_procname[MPI_MAX_PROCESSOR_NAME], **procname = 0; int *procname_len = NULL, my_procname_len, *disp = NULL, i; int commsize, commrank; ADIO_cb_name_array array = NULL; MPI_Comm_size(comm, &commsize); MPI_Comm_rank(comm, &commrank); MPI_Get_processor_name(my_procname, &my_procname_len); /* allocate space for everything */ array = (ADIO_cb_name_array) malloc(sizeof(*array)); if (array == NULL) { return -1; } array->refct = 1; if (commrank == 0) { /* process 0 keeps the real list */ array->namect = commsize; array->names = (char **) ADIOI_Malloc(sizeof(char *) * commsize); if (array->names == NULL) { return -1; } procname = array->names; /* simpler to read */ procname_len = (int *) ADIOI_Malloc(commsize * sizeof(int)); if (procname_len == NULL) { return -1; } } else { /* everyone else just keeps an empty list as a placeholder */ array->namect = 0; array->names = NULL; } /* gather lengths first */ MPI_Gather(&my_procname_len, 1, MPI_INT, procname_len, 1, MPI_INT, 0, comm); if (commrank == 0) { #ifdef CB_CONFIG_LIST_DEBUG for (i = 0; i < commsize; i++) { FPRINTF(stderr, "len[%d] = %d\n", i, procname_len[i]); } #endif for (i = 0; i < commsize; i++) { /* add one to the lengths because we need to count the * terminator, and we are going to use this list of lengths * again in the gatherv. */ procname_len[i]++; procname[i] = malloc(procname_len[i]); if (procname[i] == NULL) { return -1; } } /* create our list of displacements for the gatherv. we're going * to do everything relative to the start of the region allocated * for procname[0] * * I suppose it is theoretically possible that the distance between * malloc'd regions could be more than will fit in an int. We don't * cover that case. */ disp = malloc(commsize * sizeof(int)); disp[0] = 0; for (i = 1; i < commsize; i++) { disp[i] = (int) (procname[i] - procname[0]); } } /* now gather strings */ if (commrank == 0) { MPI_Gatherv(my_procname, my_procname_len + 1, MPI_CHAR, procname[0], procname_len, disp, MPI_CHAR, 0, comm); } else { /* if we didn't do this, we would need to allocate procname[] * on all processes...which seems a little silly. */ MPI_Gatherv(my_procname, my_procname_len + 1, MPI_CHAR, NULL, NULL, NULL, MPI_CHAR, 0, comm); } if (commrank == 0) { /* no longer need the displacements or lengths */ free(disp); free(procname_len); #ifdef CB_CONFIG_LIST_DEBUG for (i = 0; i < commsize; i++) { fprintf(stderr, "name[%d] = %s\n", i, procname[i]); } #endif } *arrayp = array; return 0; } void default_str(int mynod, int len, ADIO_cb_name_array array, char *dest) { char *ptr; int i, p; if (!mynod) { ptr = dest; for (i = 0; i < array->namect; i++) { p = snprintf(ptr, len, "%s,", array->names[i]); ptr += p; } /* chop off that last comma */ dest[strlen(dest) - 1] = '\0'; } MPI_Bcast(dest, len, MPI_CHAR, 0, MPI_COMM_WORLD); } void reverse_str(int mynod, int len, ADIO_cb_name_array array, char *dest) { char *ptr; int i, p; if (!mynod) { ptr = dest; for (i = (array->namect - 1); i >= 0; i--) { p = snprintf(ptr, len, "%s,", array->names[i]); ptr += p; } dest[strlen(dest) - 1] = '\0'; } MPI_Bcast(dest, len, MPI_CHAR, 0, MPI_COMM_WORLD); } void reverse_alternating_str(int mynod, int len, ADIO_cb_name_array array, char *dest) { char *ptr; int i, p; if (!mynod) { ptr = dest; /* evens */ for (i = (array->namect - 1); i >= 0; i -= 2) { p = snprintf(ptr, len, "%s,", array->names[i]); ptr += p; } /* odds */ for (i = (array->namect - 2); i > 0; i -= 2) { p = snprintf(ptr, len, "%s,", array->names[i]); ptr += p; } dest[strlen(dest) - 1] = '\0'; } MPI_Bcast(dest, len, MPI_CHAR, 0, MPI_COMM_WORLD); } void simple_shuffle_str(int mynod, int len, ADIO_cb_name_array array, char *dest) { char *ptr; int i, p; if (!mynod) { ptr = dest; for (i = (array->namect / 2); i < array->namect; i++) { p = snprintf(ptr, len, "%s,", array->names[i]); ptr += p; } for (i = 0; i < (array->namect / 2); i++) { p = snprintf(ptr, len, "%s,", array->names[i]); ptr += p; } dest[strlen(dest) - 1] = '\0'; } MPI_Bcast(dest, len, MPI_CHAR, 0, MPI_COMM_WORLD); } int main(int argc, char **argv) { int i, mynod, nprocs, len, errs = 0, sum_errs = 0, verbose = 0; char *filename; char *cb_config_string; int cb_config_len; ADIO_cb_name_array array; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &mynod); /* process 0 takes the file name as a command-line argument and * broadcasts it to other processes */ if (!mynod) { filename = "testfile"; len = strlen(filename); MPI_Bcast(&len, 1, MPI_INT, 0, MPI_COMM_WORLD); MPI_Bcast(filename, len + 1, MPI_CHAR, 0, MPI_COMM_WORLD); } else { MPI_Bcast(&len, 1, MPI_INT, 0, MPI_COMM_WORLD); filename = (char *) malloc(len + 1); MPI_Bcast(filename, len + 1, MPI_CHAR, 0, MPI_COMM_WORLD); } /* want to hint the cb_config_list, but do so in a non-sequential way */ cb_gather_name_array(MPI_COMM_WORLD, &array); /* sanity check */ if (!mynod) { if (array->namect < 2) { fprintf(stderr, "Run this test on two or more hosts\n"); MPI_Abort(MPI_COMM_WORLD, 1); } } /* get space for the permuted cb_config_string */ if (!mynod) { cb_config_len = 0; for (i = 0; i < array->namect; i++) { /* +1: space for either a , or \0 if last */ cb_config_len += strlen(array->names[i]) + 1; } ++cb_config_len; } MPI_Bcast(&cb_config_len, 1, MPI_INT, 0, MPI_COMM_WORLD); if ((cb_config_string = malloc(cb_config_len)) == NULL) { perror("malloc"); MPI_Abort(MPI_COMM_WORLD, 1); } /* first, no hinting */ errs += test_file(filename, mynod, nprocs, NULL, "collective w/o hinting", verbose); /* hint, but no change in order */ default_str(mynod, cb_config_len, array, cb_config_string); errs += test_file(filename, mynod, nprocs, cb_config_string, "collective w/ hinting: default order", verbose); /* reverse order */ reverse_str(mynod, cb_config_len, array, cb_config_string); errs += test_file(filename, mynod, nprocs, cb_config_string, "collective w/ hinting: reverse order", verbose); /* reverse, every other */ reverse_alternating_str(mynod, cb_config_len, array, cb_config_string); errs += test_file(filename, mynod, nprocs, cb_config_string, "collective w/ hinting: permutation1", verbose); /* second half, first half */ simple_shuffle_str(mynod, cb_config_len, array, cb_config_string); errs += test_file(filename, mynod, nprocs, cb_config_string, "collective w/ hinting: permutation2", verbose); MPI_Allreduce(&errs, &sum_errs, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD); if (!mynod) { if (sum_errs) fprintf(stderr, "Found %d error cases\n", sum_errs); else printf(" No Errors\n"); } if (mynod) free(filename); free(cb_config_string); MPI_Finalize(); return 0; } #define SEEDER(x,y,z) ((x)*1000000 + (y) + (x)*(z)) int test_file(char *filename, int mynod, int nprocs, char *cb_hosts, const char *msg, int verbose) { MPI_Datatype typevec, newtype, t[3]; int *buf, i, b[3], errcode, errors = 0; MPI_File fh; MPI_Aint d[3]; MPI_Request request; MPI_Status status; int SIZE = (STARTING_SIZE / nprocs) * nprocs; MPI_Info info; if (mynod == 0 && verbose) fprintf(stderr, "%s\n", msg); buf = (int *) malloc(SIZE * sizeof(int)); if (buf == NULL) { perror("test_file"); MPI_Abort(MPI_COMM_WORLD, -1); } if (cb_hosts != NULL) { MPI_Info_create(&info); MPI_Info_set(info, "cb_config_list", cb_hosts); } else { info = MPI_INFO_NULL; } MPI_Type_vector(SIZE / nprocs, 1, nprocs, MPI_INT, &typevec); b[0] = b[1] = b[2] = 1; d[0] = 0; d[1] = mynod * sizeof(int); d[2] = SIZE * sizeof(int); t[0] = MPI_LB; t[1] = typevec; t[2] = MPI_UB; MPI_Type_struct(3, b, d, t, &newtype); MPI_Type_commit(&newtype); MPI_Type_free(&typevec); if (!mynod) { if (verbose) fprintf(stderr, "\ntesting noncontiguous in memory, noncontiguous " "in file using collective I/O\n"); MPI_File_delete(filename, info); } MPI_Barrier(MPI_COMM_WORLD); errcode = MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_CREATE | MPI_MODE_RDWR, info, &fh); if (errcode != MPI_SUCCESS) { handle_error(errcode, "MPI_File_open"); } MPI_File_set_view(fh, 0, MPI_INT, newtype, "native", info); for (i = 0; i < SIZE; i++) buf[i] = SEEDER(mynod, i, SIZE); errcode = MPI_File_iwrite_all(fh, buf, 1, newtype, &request); if (errcode != MPI_SUCCESS) { handle_error(errcode, "nc mem - nc file: MPI_File_iwrite_all"); } MPI_Barrier(MPI_COMM_WORLD); MPI_Wait(&request, &status); for (i = 0; i < SIZE; i++) buf[i] = -1; errcode = MPI_File_iread_at_all(fh, 0, buf, 1, newtype, &request); if (errcode != MPI_SUCCESS) { handle_error(errcode, "nc mem - nc file: MPI_File_iread_at_all"); } MPI_Wait(&request, &status); /* the verification for N compute nodes is tricky. Say we have 3 * processors. * process 0 sees: 0 -1 -1 3 -1 -1 ... * process 1 sees: -1 34 -1 -1 37 -1 ... * process 2 sees: -1 -1 68 -1 -1 71 ... */ /* verify those leading -1s exist if they should */ for (i = 0; i < mynod; i++) { if (buf[i] != -1) { if (verbose) fprintf(stderr, "Process %d: buf is %d, should be -1\n", mynod, buf[i]); errors++; } } /* now the modulo games are hairy. processor 0 sees real data in the 0th, * 3rd, 6th... elements of the buffer (assuming nprocs==3). proc 1 sees * the data in 1st, 4th, 7th..., and proc 2 sees it in 2nd, 5th, 8th */ for (/* 'i' set in above loop */ ; i < SIZE; i++) { if (((i - mynod) % nprocs) && buf[i] != -1) { if (verbose) fprintf(stderr, "Process %d: buf %d is %d, should be -1\n", mynod, i, buf[i]); errors++; } if (!((i - mynod) % nprocs) && buf[i] != SEEDER(mynod, i, SIZE)) { if (verbose) fprintf(stderr, "Process %d: buf %d is %d, should be %d\n", mynod, i, buf[i], SEEDER(mynod, i, SIZE)); errors++; } } MPI_File_close(&fh); MPI_Barrier(MPI_COMM_WORLD); if (!mynod) { if (verbose) fprintf(stderr, "\ntesting noncontiguous in memory, contiguous in " "file using collective I/O\n"); MPI_File_delete(filename, info); } MPI_Barrier(MPI_COMM_WORLD); MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_CREATE | MPI_MODE_RDWR, info, &fh); for (i = 0; i < SIZE; i++) buf[i] = SEEDER(mynod, i, SIZE); errcode = MPI_File_iwrite_at_all(fh, mynod * (SIZE / nprocs) * sizeof(int), buf, 1, newtype, &request); if (errcode != MPI_SUCCESS) handle_error(errcode, "nc mem - c file: MPI_File_iwrite_at_all"); MPI_Barrier(MPI_COMM_WORLD); MPI_Wait(&request, &status); for (i = 0; i < SIZE; i++) buf[i] = -1; errcode = MPI_File_iread_at_all(fh, mynod * (SIZE / nprocs) * sizeof(int), buf, 1, newtype, &request); if (errcode != MPI_SUCCESS) handle_error(errcode, "nc mem - c file: MPI_File_iread_at_all"); MPI_Wait(&request, &status); /* just like as above */ for (i = 0; i < mynod; i++) { if (buf[i] != -1) { if (verbose) fprintf(stderr, "Process %d: buf is %d, should be -1\n", mynod, buf[i]); errors++; } } for (/* i set in above loop */ ; i < SIZE; i++) { if (((i - mynod) % nprocs) && buf[i] != -1) { if (verbose) fprintf(stderr, "Process %d: buf %d is %d, should be -1\n", mynod, i, buf[i]); errors++; } if (!((i - mynod) % nprocs) && buf[i] != SEEDER(mynod, i, SIZE)) { if (verbose) fprintf(stderr, "Process %d: buf %d is %d, should be %d\n", mynod, i, buf[i], SEEDER(mynod, i, SIZE)); errors++; } } MPI_File_close(&fh); MPI_Barrier(MPI_COMM_WORLD); if (!mynod) { if (verbose) fprintf(stderr, "\ntesting contiguous in memory, noncontiguous in " "file using collective I/O\n"); MPI_File_delete(filename, info); } MPI_Barrier(MPI_COMM_WORLD); MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_CREATE | MPI_MODE_RDWR, info, &fh); MPI_File_set_view(fh, 0, MPI_INT, newtype, "native", info); for (i = 0; i < SIZE; i++) buf[i] = SEEDER(mynod, i, SIZE); errcode = MPI_File_iwrite_all(fh, buf, SIZE, MPI_INT, &request); if (errcode != MPI_SUCCESS) handle_error(errcode, "c mem - nc file: MPI_File_iwrite_all"); MPI_Barrier(MPI_COMM_WORLD); MPI_Wait(&request, &status); for (i = 0; i < SIZE; i++) buf[i] = -1; errcode = MPI_File_iread_at_all(fh, 0, buf, SIZE, MPI_INT, &request); if (errcode != MPI_SUCCESS) handle_error(errcode, "c mem - nc file: MPI_File_iread_at_all"); MPI_Wait(&request, &status); /* same crazy checking */ for (i = 0; i < SIZE; i++) { if (buf[i] != SEEDER(mynod, i, SIZE)) { if (verbose) fprintf(stderr, "Process %d: buf %d is %d, should be %d\n", mynod, i, buf[i], SEEDER(mynod, i, SIZE)); errors++; } } MPI_File_close(&fh); MPI_Type_free(&newtype); free(buf); if (info != MPI_INFO_NULL) MPI_Info_free(&info); return errors; } mpi-testsuite-3.2+dfsg/io/resized2.c0000644000175000017500000000777312620254305016700 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2008 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test file views with MPI_Type_create_resized"; */ int main(int argc, char **argv) { int i, nprocs, len, mpi_errno, buf[2], newbuf[4]; int errs = 0; MPI_Offset size; MPI_Aint lb, extent; MPI_File fh; char *filename; MPI_Datatype newtype, newtype1; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); if (nprocs != 1) { fprintf(stderr, "Run this program on 1 process\n"); MPI_Abort(MPI_COMM_WORLD, 1); } i = 1; while ((i < argc) && strcmp("-fname", *argv)) { i++; argv++; } if (i >= argc) { len = 8; filename = (char *) malloc(len + 10); strcpy(filename, "testfile"); /* * fprintf(stderr, "\n*# Usage: resized -fname filename\n\n"); * MPI_Abort(MPI_COMM_WORLD, 1); */ } else { argv++; len = (int) strlen(*argv); filename = (char *) malloc(len + 1); strcpy(filename, *argv); } MPI_File_delete(filename, MPI_INFO_NULL); /* create a resized type comprising an integer with an lb at sizeof(int) and extent = 3*sizeof(int) */ lb = sizeof(int); extent = 3 * sizeof(int); MPI_Type_create_resized(MPI_INT, lb, extent, &newtype1); MPI_Type_commit(&newtype1); MPI_Type_create_resized(newtype1, lb, extent, &newtype); MPI_Type_commit(&newtype); /* initialize the file */ MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_CREATE | MPI_MODE_RDWR, MPI_INFO_NULL, &fh); for (i = 0; i < 4; i++) newbuf[i] = 55; MPI_File_write(fh, newbuf, 4, MPI_INT, MPI_STATUS_IGNORE); MPI_File_close(&fh); /* write 2 ints into file view with resized type */ buf[0] = 10; buf[1] = 20; MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_CREATE | MPI_MODE_RDWR, MPI_INFO_NULL, &fh); mpi_errno = MPI_File_set_view(fh, 0, MPI_INT, newtype, (char *) "native", MPI_INFO_NULL); if (mpi_errno != MPI_SUCCESS) errs++; MPI_File_write(fh, buf, 2, MPI_INT, MPI_STATUS_IGNORE); MPI_File_close(&fh); /* read back file view with resized type and verify */ MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_RDONLY, MPI_INFO_NULL, &fh); mpi_errno = MPI_File_set_view(fh, 0, MPI_INT, newtype, (char *) "native", MPI_INFO_NULL); if (mpi_errno != MPI_SUCCESS) errs++; for (i = 0; i < 4; i++) newbuf[i] = 100; MPI_File_read(fh, newbuf, 2, MPI_INT, MPI_STATUS_IGNORE); if ((newbuf[0] != 10) || (newbuf[1] != 20) || (newbuf[2] != 100) || (newbuf[3] != 100)) { errs++; fprintf(stderr, "newbuf[0] is %d, should be 10,\n newbuf[1] is %d, should be 20\n newbuf[2] is %d, should be 100,\n newbuf[3] is %d, should be 100,\n", newbuf[0], newbuf[1], newbuf[2], newbuf[3]); } MPI_File_close(&fh); /* read file back and verify */ MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_RDONLY, MPI_INFO_NULL, &fh); MPI_File_get_size(fh, &size); if (size != 4 * sizeof(int)) { errs++; fprintf(stderr, "file size is %lld, should be %d\n", size, (int) (4 * sizeof(int))); } for (i = 0; i < 4; i++) newbuf[i] = 100; MPI_File_read(fh, newbuf, 4, MPI_INT, MPI_STATUS_IGNORE); if ((newbuf[0] != 10) || (newbuf[3] != 20) || (newbuf[1] != 55) || (newbuf[2] != 55)) { errs++; fprintf(stderr, "newbuf[0] is %d, should be 10,\n newbuf[1] is %d, should be 55,\n newbuf[2] is %d, should be 55,\n newbuf[3] is %d, should be 20\n", newbuf[0], newbuf[1], newbuf[2], newbuf[3]); } MPI_File_close(&fh); MPI_Type_free(&newtype1); MPI_Type_free(&newtype); free(filename); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/io/Makefile.am0000644000175000017500000000206712620254305017030 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile.mtest EXTRA_DIST = testlist.in ## for all programs that are just built from the single corresponding source ## file, we don't need per-target _SOURCES rules, automake will infer them ## correctly noinst_PROGRAMS = \ rdwrord \ rdwrzero \ getextent \ setinfo \ setviewcur \ i_noncontig \ async \ async_any \ userioerr \ resized \ resized2 \ bigtype \ hindexed_io \ simple_collective if BUILD_MPIX_TESTS noinst_PROGRAMS += \ i_bigtype \ i_hindexed_io \ i_rdwrord \ i_setviewcur \ i_aggregation1 \ i_aggregation2 \ i_coll_test \ i_darray_read \ i_hindexed \ i_noncontig_coll \ i_noncontig_coll2 \ i_types_with_zeros endif clean-local: -rm -f testfile testfile.* mpi-testsuite-3.2+dfsg/io/i_types_with_zeros.c0000644000175000017500000001157212620254305021072 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include #include #include #include #define MAXLEN 9 static void handle_error(int errcode, const char *str) { char msg[MPI_MAX_ERROR_STRING]; int resultlen; MPI_Error_string(errcode, msg, &resultlen); fprintf(stderr, "%s: %s\n", str, msg); MPI_Abort(MPI_COMM_WORLD, 1); } enum { INDEXED, HINDEXED, STRUCT } testcases; static int test_indexed_with_zeros(char *filename, int testcase) { int i, rank, np, buflen, num, err, nr_errors = 0; int nelms[MAXLEN], buf[MAXLEN], indices[MAXLEN], blocklen[MAXLEN]; MPI_File fh; MPI_Request request; MPI_Status status; MPI_Datatype filetype; MPI_Datatype types[MAXLEN]; MPI_Aint addrs[MAXLEN]; MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &np); /* set up the number of integers to write in each iteration */ for (i = 0; i < MAXLEN; i++) nelms[i] = 0; if (rank == 0) nelms[4] = nelms[5] = nelms[7] = 1; if (rank == 1) nelms[0] = nelms[1] = nelms[2] = nelms[3] = nelms[6] = nelms[8] = 1; /* pre-fill the file with integers -999 */ if (rank == 0) { for (i = 0; i < MAXLEN; i++) buf[i] = -999; err = MPI_File_open(MPI_COMM_SELF, filename, MPI_MODE_CREATE | MPI_MODE_WRONLY, MPI_INFO_NULL, &fh); if (err != MPI_SUCCESS) handle_error(err, "MPI_File_open"); err = MPI_File_write(fh, buf, MAXLEN, MPI_INT, &status); if (err != MPI_SUCCESS) handle_error(err, "MPI_File_write"); err = MPI_File_close(&fh); if (err != MPI_SUCCESS) handle_error(err, "MPI_File_close"); } MPI_Barrier(MPI_COMM_WORLD); /* define a filetype with spurious leading zeros */ buflen = num = 0; for (i = 0; i < MAXLEN; i++) { buflen += nelms[i]; indices[num] = i; addrs[num] = i * sizeof(int); blocklen[num] = nelms[i]; types[num] = MPI_INT; num++; } switch (testcase) { case INDEXED: MPI_Type_indexed(num, blocklen, indices, MPI_INT, &filetype); break; case HINDEXED: MPI_Type_hindexed(num, blocklen, addrs, MPI_INT, &filetype); break; case STRUCT: MPI_Type_create_struct(num, blocklen, addrs, types, &filetype); break; default: fprintf(stderr, "unknown testcase!\n"); return (-100); } MPI_Type_commit(&filetype); /* initialize write buffer and write to file */ for (i = 0; i < MAXLEN; i++) buf[i] = 1; err = MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_WRONLY, MPI_INFO_NULL, &fh); if (err != MPI_SUCCESS) handle_error(err, "MPI_File_open"); err = MPI_File_set_view(fh, 0, MPI_INT, filetype, "native", MPI_INFO_NULL); if (err != MPI_SUCCESS) handle_error(err, "MPI_File_set_view"); err = MPI_File_iwrite_all(fh, buf, buflen, MPI_INT, &request); if (err != MPI_SUCCESS) handle_error(err, "MPI_File_iwrite_all"); err = MPI_Wait(&request, &status); if (err != MPI_SUCCESS) handle_error(err, "MPI_Wait"); MPI_Type_free(&filetype); err = MPI_File_close(&fh); if (err != MPI_SUCCESS) handle_error(err, "MPI_File_close"); /* read back and check */ if (rank == 0) { err = MPI_File_open(MPI_COMM_SELF, filename, MPI_MODE_RDONLY, MPI_INFO_NULL, &fh); if (err != MPI_SUCCESS) handle_error(err, "MPI_File_open"); err = MPI_File_read(fh, buf, MAXLEN, MPI_INT, &status); if (err != MPI_SUCCESS) handle_error(err, "MPI_File_read"); err = MPI_File_close(&fh); if (err != MPI_SUCCESS) handle_error(err, "MPI_File_close"); for (i = 0; i < MAXLEN; i++) { if (buf[i] < 0) { nr_errors++; printf("Error: unexpected value for case %d at buf[%d] == %d\n", testcase, i, buf[i]); } } } return nr_errors; } int main(int argc, char **argv) { int nr_errors, rank, np; char *filename; filename = (argc > 1) ? argv[1] : "testfile"; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &np); if (np != 2) { if (rank == 0) fprintf(stderr, "Must run on 2 MPI processes\n"); MPI_Finalize(); return 1; } nr_errors = test_indexed_with_zeros(filename, INDEXED); nr_errors += test_indexed_with_zeros(filename, HINDEXED); nr_errors += test_indexed_with_zeros(filename, STRUCT); if (rank == 0 && nr_errors == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/io/i_noncontig_coll.c0000644000175000017500000001510612620254305020455 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include /* tests noncontiguous reads/writes using nonblocking collective I/O */ #define SIZE 5000 #define VERBOSE 0 int main(int argc, char **argv) { int *buf, i, mynod, nprocs, len, b[3]; int errs = 0, toterrs; MPI_Aint d[3]; MPI_File fh; MPI_Request request; MPI_Status status; char *filename; MPI_Datatype typevec, newtype, t[3]; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &mynod); if (nprocs != 2) { fprintf(stderr, "Run this program on two processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } /* process 0 broadcasts the file name to other processes */ if (!mynod) { filename = "testfile"; len = strlen(filename); MPI_Bcast(&len, 1, MPI_INT, 0, MPI_COMM_WORLD); MPI_Bcast(filename, len + 1, MPI_CHAR, 0, MPI_COMM_WORLD); } else { MPI_Bcast(&len, 1, MPI_INT, 0, MPI_COMM_WORLD); filename = (char *) malloc(len + 1); MPI_Bcast(filename, len + 1, MPI_CHAR, 0, MPI_COMM_WORLD); } buf = (int *) malloc(SIZE * sizeof(int)); MPI_Type_vector(SIZE / 2, 1, 2, MPI_INT, &typevec); b[0] = b[1] = b[2] = 1; d[0] = 0; d[1] = mynod * sizeof(int); d[2] = SIZE * sizeof(int); t[0] = MPI_LB; t[1] = typevec; t[2] = MPI_UB; MPI_Type_struct(3, b, d, t, &newtype); MPI_Type_commit(&newtype); MPI_Type_free(&typevec); if (!mynod) { #if VERBOSE fprintf(stderr, "\ntesting noncontiguous in memory, noncontiguous in " "file using collective I/O\n"); #endif MPI_File_delete(filename, MPI_INFO_NULL); } MPI_Barrier(MPI_COMM_WORLD); MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_CREATE | MPI_MODE_RDWR, MPI_INFO_NULL, &fh); MPI_File_set_view(fh, 0, MPI_INT, newtype, "native", MPI_INFO_NULL); for (i = 0; i < SIZE; i++) buf[i] = i + mynod * SIZE; MPI_File_iwrite_all(fh, buf, 1, newtype, &request); MPI_Barrier(MPI_COMM_WORLD); MPI_Wait(&request, &status); for (i = 0; i < SIZE; i++) buf[i] = -1; MPI_File_iread_at_all(fh, 0, buf, 1, newtype, &request); MPI_Wait(&request, &status); for (i = 0; i < SIZE; i++) { if (!mynod) { if ((i % 2) && (buf[i] != -1)) { errs++; fprintf(stderr, "Process %d: buf %d is %d, should be -1\n", mynod, i, buf[i]); } if (!(i % 2) && (buf[i] != i)) { errs++; fprintf(stderr, "Process %d: buf %d is %d, should be %d\n", mynod, i, buf[i], i); } } else { if ((i % 2) && (buf[i] != i + mynod * SIZE)) { errs++; fprintf(stderr, "Process %d: buf %d is %d, should be %d\n", mynod, i, buf[i], i + mynod * SIZE); } if (!(i % 2) && (buf[i] != -1)) { errs++; fprintf(stderr, "Process %d: buf %d is %d, should be -1\n", mynod, i, buf[i]); } } } MPI_File_close(&fh); MPI_Barrier(MPI_COMM_WORLD); if (!mynod) { #if VERBOSE fprintf(stderr, "\ntesting noncontiguous in memory, contiguous in file " "using collective I/O\n"); #endif MPI_File_delete(filename, MPI_INFO_NULL); } MPI_Barrier(MPI_COMM_WORLD); MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_CREATE | MPI_MODE_RDWR, MPI_INFO_NULL, &fh); for (i = 0; i < SIZE; i++) buf[i] = i + mynod * SIZE; MPI_File_iwrite_at_all(fh, mynod * (SIZE / 2) * sizeof(int), buf, 1, newtype, &request); MPI_Barrier(MPI_COMM_WORLD); MPI_Wait(&request, &status); for (i = 0; i < SIZE; i++) buf[i] = -1; MPI_File_iread_at_all(fh, mynod * (SIZE / 2) * sizeof(int), buf, 1, newtype, &request); MPI_Wait(&request, &status); for (i = 0; i < SIZE; i++) { if (!mynod) { if ((i % 2) && (buf[i] != -1)) { errs++; fprintf(stderr, "Process %d: buf %d is %d, should be -1\n", mynod, i, buf[i]); } if (!(i % 2) && (buf[i] != i)) { errs++; fprintf(stderr, "Process %d: buf %d is %d, should be %d\n", mynod, i, buf[i], i); } } else { if ((i % 2) && (buf[i] != i + mynod * SIZE)) { errs++; fprintf(stderr, "Process %d: buf %d is %d, should be %d\n", mynod, i, buf[i], i + mynod * SIZE); } if (!(i % 2) && (buf[i] != -1)) { errs++; fprintf(stderr, "Process %d: buf %d is %d, should be -1\n", mynod, i, buf[i]); } } } MPI_File_close(&fh); MPI_Barrier(MPI_COMM_WORLD); if (!mynod) { #if VERBOSE fprintf(stderr, "\ntesting contiguous in memory, noncontiguous in file " "using collective I/O\n"); #endif MPI_File_delete(filename, MPI_INFO_NULL); } MPI_Barrier(MPI_COMM_WORLD); MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_CREATE | MPI_MODE_RDWR, MPI_INFO_NULL, &fh); MPI_File_set_view(fh, 0, MPI_INT, newtype, "native", MPI_INFO_NULL); for (i = 0; i < SIZE; i++) buf[i] = i + mynod * SIZE; MPI_File_iwrite_all(fh, buf, SIZE, MPI_INT, &request); MPI_Barrier(MPI_COMM_WORLD); MPI_Wait(&request, &status); for (i = 0; i < SIZE; i++) buf[i] = -1; MPI_File_iread_at_all(fh, 0, buf, SIZE, MPI_INT, &request); MPI_Wait(&request, &status); for (i = 0; i < SIZE; i++) { if (!mynod) { if (buf[i] != i) { errs++; fprintf(stderr, "Process %d: buf %d is %d, should be %d\n", mynod, i, buf[i], i); } } else { if (buf[i] != i + mynod * SIZE) { errs++; fprintf(stderr, "Process %d: buf %d is %d, should be %d\n", mynod, i, buf[i], i + mynod * SIZE); } } } MPI_File_close(&fh); MPI_Allreduce(&errs, &toterrs, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD); if (mynod == 0) { if (toterrs > 0) { fprintf(stderr, "Found %d errors\n", toterrs); } else { fprintf(stdout, " No Errors\n"); } } MPI_Type_free(&newtype); free(buf); if (mynod) free(filename); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/io/testlist.in0000644000175000017500000000107412620254305017174 0ustar mbanckmbanckrdwrord 4 rdwrzero 4 getextent 2 setinfo 4 setviewcur 4 i_noncontig 2 async 4 async_any 4 userioerr 1 resized 1 resized2 1 bigtype 1 hindexed_io 1 simple_collective 1 arg="simple_collective.testfile" i_bigtype 1 mpiversion=3.1 i_hindexed_io 1 mpiversion=3.1 i_rdwrord 4 mpiversion=3.1 i_setviewcur 4 mpiversion=3.1 i_aggregation1 4 mpiversion=3.1 i_aggregation2 4 mpiversion=3.1 i_coll_test 4 mpiversion=3.1 i_darray_read 4 mpiversion=3.1 i_hindexed 4 mpiversion=3.1 i_noncontig_coll 2 mpiversion=3.1 i_noncontig_coll2 4 mpiversion=3.1 i_types_with_zeros 2 mpiversion=3.1 mpi-testsuite-3.2+dfsg/io/i_darray_read.c0000644000175000017500000000744312620254305017730 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #define NSIDE 5 #define NBLOCK 3 #define NPROC 2 #define CHECK(fn) {int errcode; errcode = (fn); if (errcode != MPI_SUCCESS) handle_error(errcode, #fn);} static void handle_error(int errcode, const char *str) { char msg[MPI_MAX_ERROR_STRING]; int resultlen; MPI_Error_string(errcode, msg, &resultlen); fprintf(stderr, "%s: %s\n", str, msg); MPI_Abort(MPI_COMM_WORLD, 1); } int main(int argc, char *argv[]) { int i, j, nerrors = 0, total_errors = 0; int rank, size; int bpos; MPI_Datatype darray; MPI_Request request; MPI_Status status; MPI_File mpi_fh; /* Define array distribution * A 2x2 block size works with ROMIO, a 3x3 block size breaks it. */ int distrib[2] = { MPI_DISTRIBUTE_CYCLIC, MPI_DISTRIBUTE_CYCLIC }; int bsize[2] = { NBLOCK, NBLOCK }; int gsize[2] = { NSIDE, NSIDE }; int psize[2] = { NPROC, NPROC }; double data[NSIDE * NSIDE]; double *ldata, *pdata; int tsize, nelem; char *filename; MPI_File dfile; filename = (argc > 1) ? argv[1] : "testfile"; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); /* Set up type */ CHECK(MPI_Type_create_darray(size, rank, 2, gsize, distrib, bsize, psize, MPI_ORDER_FORTRAN, MPI_DOUBLE, &darray)); CHECK(MPI_Type_commit(&darray)); CHECK(MPI_Type_size(darray, &tsize)); nelem = tsize / sizeof(double); for (i = 0; i < (NSIDE * NSIDE); i++) data[i] = i; if (rank == 0) { CHECK(MPI_File_open(MPI_COMM_SELF, filename, MPI_MODE_CREATE | MPI_MODE_WRONLY, MPI_INFO_NULL, &dfile)); CHECK(MPI_File_write(dfile, data, NSIDE * NSIDE, MPI_DOUBLE, &status)); CHECK(MPI_File_close(&dfile)); } MPI_Barrier(MPI_COMM_WORLD); /* Allocate buffer */ ldata = (double *) malloc(tsize); pdata = (double *) malloc(tsize); /* Use Pack to pull out array */ bpos = 0; CHECK(MPI_Pack(data, 1, darray, pdata, tsize, &bpos, MPI_COMM_WORLD)); MPI_Barrier(MPI_COMM_WORLD); /* Read in array from file. */ CHECK(MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_RDONLY, MPI_INFO_NULL, &mpi_fh)); CHECK(MPI_File_set_view(mpi_fh, 0, MPI_DOUBLE, darray, "native", MPI_INFO_NULL)); CHECK(MPI_File_iread_all(mpi_fh, ldata, nelem, MPI_DOUBLE, &request)); CHECK(MPI_Wait(&request, &status)); CHECK(MPI_File_close(&mpi_fh)); for (i = 0; i < size; i++) { #ifdef VERBOSE MPI_Barrier(MPI_COMM_WORLD); if (rank == i) { printf("=== Rank %i === (%i elements) \nPacked: ", rank, nelem); for (j = 0; j < nelem; j++) { printf("%4.1f ", pdata[j]); fflush(stdout); } printf("\nRead: "); for (j = 0; j < nelem; j++) { printf("%4.1f ", ldata[j]); fflush(stdout); } printf("\n\n"); fflush(stdout); } #endif if (rank == i) { for (j = 0; j < nelem; j++) { if (pdata[j] != ldata[j]) { fprintf(stderr, "rank %d at index %d: packbuf %4.1f filebuf %4.1f\n", rank, j, pdata[j], ldata[j]); nerrors++; } } } } MPI_Allreduce(&nerrors, &total_errors, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD); if (rank == 0 && total_errors == 0) printf(" No Errors\n"); free(ldata); free(pdata); MPI_Type_free(&darray); MPI_Finalize(); exit(total_errors); } mpi-testsuite-3.2+dfsg/io/resized.c0000644000175000017500000000756512620254305016615 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2008 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test file views with MPI_Type_create_resized"; */ int main(int argc, char **argv) { int i, nprocs, len, mpi_errno, buf[2], newbuf[4]; int errs = 0; MPI_Offset size; MPI_Aint lb, extent; MPI_File fh; char *filename; MPI_Datatype newtype; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); if (nprocs != 1) { fprintf(stderr, "Run this program on 1 process\n"); MPI_Abort(MPI_COMM_WORLD, 1); } i = 1; while ((i < argc) && strcmp("-fname", *argv)) { i++; argv++; } if (i >= argc) { len = 8; filename = (char *) malloc(len + 10); strcpy(filename, "testfile"); /* * fprintf(stderr, "\n*# Usage: resized -fname filename\n\n"); * MPI_Abort(MPI_COMM_WORLD, 1); */ } else { argv++; len = (int) strlen(*argv); filename = (char *) malloc(len + 1); strcpy(filename, *argv); } MPI_File_delete(filename, MPI_INFO_NULL); /* create a resized type comprising an integer with an lb at sizeof(int) and extent = 3*sizeof(int) */ lb = sizeof(int); extent = 3 * sizeof(int); MPI_Type_create_resized(MPI_INT, lb, extent, &newtype); MPI_Type_commit(&newtype); /* initialize the file */ MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_CREATE | MPI_MODE_RDWR, MPI_INFO_NULL, &fh); for (i = 0; i < 4; i++) newbuf[i] = 55; MPI_File_write(fh, newbuf, 4, MPI_INT, MPI_STATUS_IGNORE); MPI_File_close(&fh); /* write 2 ints into file view with resized type */ buf[0] = 10; buf[1] = 20; MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_CREATE | MPI_MODE_RDWR, MPI_INFO_NULL, &fh); mpi_errno = MPI_File_set_view(fh, 0, MPI_INT, newtype, (char *) "native", MPI_INFO_NULL); if (mpi_errno != MPI_SUCCESS) errs++; MPI_File_write(fh, buf, 2, MPI_INT, MPI_STATUS_IGNORE); MPI_File_close(&fh); /* read back file view with resized type and verify */ MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_RDONLY, MPI_INFO_NULL, &fh); mpi_errno = MPI_File_set_view(fh, 0, MPI_INT, newtype, (char *) "native", MPI_INFO_NULL); if (mpi_errno != MPI_SUCCESS) errs++; for (i = 0; i < 4; i++) newbuf[i] = 100; MPI_File_read(fh, newbuf, 2, MPI_INT, MPI_STATUS_IGNORE); if ((newbuf[0] != 10) || (newbuf[1] != 20) || (newbuf[2] != 100) || (newbuf[3] != 100)) { errs++; fprintf(stderr, "newbuf[0] is %d, should be 10,\n newbuf[1] is %d, should be 20\n newbuf[2] is %d, should be 100,\n newbuf[3] is %d, should be 100,\n", newbuf[0], newbuf[1], newbuf[2], newbuf[3]); } MPI_File_close(&fh); /* read file back and verify */ MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_RDONLY, MPI_INFO_NULL, &fh); MPI_File_get_size(fh, &size); if (size != 4 * sizeof(int)) { errs++; fprintf(stderr, "file size is %lld, should be %d\n", size, (int) (4 * sizeof(int))); } for (i = 0; i < 4; i++) newbuf[i] = 100; MPI_File_read(fh, newbuf, 4, MPI_INT, MPI_STATUS_IGNORE); if ((newbuf[0] != 10) || (newbuf[3] != 20) || (newbuf[1] != 55) || (newbuf[2] != 55)) { errs++; fprintf(stderr, "newbuf[0] is %d, should be 10,\n newbuf[1] is %d, should be 55,\n newbuf[2] is %d, should be 55,\n newbuf[3] is %d, should be 20\n", newbuf[0], newbuf[1], newbuf[2], newbuf[3]); } MPI_File_close(&fh); MPI_Type_free(&newtype); free(filename); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/io/getextent.c0000644000175000017500000000162412620254305017145 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test file_get_extent"; */ int main(int argc, char *argv[]) { int errs = 0; MPI_File fh; MPI_Comm comm; MPI_Aint extent, nextent; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_File_open(comm, (char *) "test.ord", MPI_MODE_RDWR | MPI_MODE_CREATE | MPI_MODE_DELETE_ON_CLOSE, MPI_INFO_NULL, &fh); MPI_File_get_type_extent(fh, MPI_INT, &extent); MPI_Type_extent(MPI_INT, &nextent); if (nextent != extent) { errs++; fprintf(stderr, "Native extent not the same as the file extent\n"); } MPI_File_close(&fh); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/io/i_hindexed.c0000644000175000017500000002261112620254305017235 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Wei-keng Liao (wkliao@ece.northwestern.edu) September 8, 2008 */ /* Uses nonblocking collective I/O.*/ #include #include #include #include #define YLEN 5 #define XLEN 10 #define SUB_XLEN 3 /* rjl: I was just too lazy to compute this at run-time */ char compare_buf[XLEN * 4][YLEN * 4] = { {'0', '1', '2', 0, 0, '3', '4', '5', 0, 0, 'D', 'E', 'F', 0, 0, 'G', 'H', 'I'}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {'6', '7', '8', 0, 0, '9', ':', ';', 0, 0, 'J', 'K', 'L', 0, 0, 'M', 'N', 'O'}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {'X', 'Y', 'Z', 0, 0, '[', '\\', ']', 0, 0, 'l', 'm', 'n', 0, 0, 'o', 'p', 'q'}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {'^', '_', '`', 0, 0, 'a', 'b', 'c', 0, 0, 'r', 's', 't', 0, 0, 'u', 'v', 'w'}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {'0', '1', '2', 0, 0, '3', '4', '5', 0, 0, 'D', 'E', 'F', 0, 0, 'G', 'H', 'I'}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {'6', '7', '8', 0, 0, '9', ':', ';', 0, 0, 'J', 'K', 'L', 0, 0, 'M', 'N', 'O'}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {'X', 'Y', 'Z', 0, 0, '[', '\\', ']', 0, 0, 'l', 'm', 'n', 0, 0, 'o', 'p', 'q'}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {'^', '_', '`', 0, 0, 'a', 'b', 'c', 0, 0, 'r', 's', 't', 0, 0, 'u', 'v', 'w'}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }; /* set this if you want a dump of the global array #define VERBOSE 1 */ /*----< main() >------------------------------------------------------------*/ int main(int argc, char **argv) { int i, j, err, rank, np, num_io; char *buf, *filename; int rank_dim[2], array_of_sizes[2]; int array_of_subsizes[2]; int count, *blocklengths, global_array_size; MPI_Count ftype_size; MPI_Aint *displacements; MPI_File fh; MPI_Datatype ftype; MPI_Request *request; MPI_Status *statuses; MPI_Status status; MPI_Offset offset = 0; int nr_errors = 0; #ifdef VERBOSE int k; #endif MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &np); if (np != 4) { if (!rank) printf("Please run with 4 processes. Exiting ...\n\n"); MPI_Finalize(); return 1; } filename = (argc > 1) ? argv[1] : "testfile"; num_io = 2; request = (MPI_Request *) malloc(num_io * sizeof(MPI_Request)); statuses = (MPI_Status *) malloc(num_io * sizeof(MPI_Status)); /*-----------------------------------------------------------------------*/ /* process rank in each dimension */ rank_dim[0] = rank / 2; rank_dim[1] = rank % 2; /* global 2D array size */ array_of_sizes[0] = YLEN * 2; array_of_sizes[1] = XLEN * 2; global_array_size = array_of_sizes[0] * array_of_sizes[1]; array_of_subsizes[0] = YLEN / 2; array_of_subsizes[1] = XLEN * SUB_XLEN / 5; offset = rank_dim[0] * YLEN * array_of_sizes[1] + rank_dim[1] * XLEN; /* define data type for file view */ count = array_of_subsizes[0] * 2; /* 2 is the no. blocks along X */ blocklengths = (int *) malloc(count * sizeof(int)); displacements = (MPI_Aint *) malloc(count * sizeof(MPI_Aint)); for (i = 0; i < count; i++) blocklengths[i] = array_of_subsizes[1] / 2; for (i = 0; i < array_of_subsizes[0]; i++) for (j = 0; j < 2; j++) displacements[i * 2 + j] = offset + i * 2 * array_of_sizes[1] + j * XLEN / 2; MPI_Type_create_hindexed(count, blocklengths, displacements, MPI_CHAR, &ftype); MPI_Type_commit(&ftype); MPI_Type_size_x(ftype, &ftype_size); /* subarray's layout in the global array P0's 's layout P1's layout [ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9] | [ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9] [ 0] 0 1 2 3 4 5 | D E F G H I [ 1] | [ 2] 6 7 8 9 : ; | J K L M N O [ 3] | [ 4] | [ 5] | [ 6] | [ 7] | [ 8] | [ 9] | P2's 's layout P3's layout [ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9] | [ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9] [ 0] | [ 1] | [ 2] | [ 3] | [ 4] | [ 5] X Y Z [ \ ] | l m n o p q [ 6] | [ 7] ^ _ ` a b c | r s t u v w [ 8] | [ 9] | */ /* initialize the write buffer */ buf = (char *) malloc(array_of_subsizes[0] * array_of_subsizes[1]); for (i = 0; i < array_of_subsizes[0] * array_of_subsizes[1]; i++) buf[i] = '0' + rank * 20 + i % 79; /* zero file contents --------------------------------------------------- */ if (rank == 0) { char *wr_buf = (char *) calloc(num_io * global_array_size, 1); MPI_File_open(MPI_COMM_SELF, filename, MPI_MODE_CREATE | MPI_MODE_WRONLY, MPI_INFO_NULL, &fh); MPI_File_write(fh, wr_buf, num_io * global_array_size, MPI_CHAR, &status); MPI_File_close(&fh); free(wr_buf); } /* open the file -------------------------------------------------------- */ err = MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_CREATE | MPI_MODE_WRONLY, MPI_INFO_NULL, &fh); if (err != MPI_SUCCESS) { printf("Error: MPI_File_open() filename %s\n", filename); MPI_Abort(MPI_COMM_WORLD, -1); exit(1); } /* MPI nonblocking collective write */ for (i = 0; i < num_io; i++) { offset = i * global_array_size; /* set the file view */ MPI_File_set_view(fh, offset, MPI_BYTE, ftype, "native", MPI_INFO_NULL); MPI_File_iwrite_all(fh, buf, ftype_size, MPI_CHAR, &request[i]); } MPI_Waitall(num_io, request, statuses); MPI_File_close(&fh); /* read and print file contents ----------------------------------------- */ if (rank == 0) { char *ptr; char *rd_buf = (char *) calloc(num_io * global_array_size, 1); MPI_File_open(MPI_COMM_SELF, filename, MPI_MODE_RDONLY, MPI_INFO_NULL, &fh); MPI_File_read(fh, rd_buf, num_io * global_array_size, MPI_CHAR, &status); MPI_File_close(&fh); #ifdef VERBOSE printf("-------------------------------------------------------\n"); printf(" ["); for (i = 0; i < 2; i++) { for (j = 0; j < XLEN; j++) printf(" %d", j); printf(" "); } printf("]\n\n"); ptr = rd_buf; for (k = 0; k < num_io; k++) { for (i = 0; i < 2 * YLEN; i++) { printf("[%2d]", k * 2 * YLEN + i); for (j = 0; j < 2 * XLEN; j++) { if (j > 0 && j % XLEN == 0) printf(" "); if (*ptr != 0) printf(" %c", *ptr); else printf(" "); ptr++; } printf("\n"); } printf("\n"); } #endif ptr = rd_buf; for (i = 0; i < 2 * YLEN * num_io; i++) { for (j = 0; j < 2 * XLEN; j++) { if (*ptr != compare_buf[i][j]) { fprintf(stderr, "expected %d got %d at [%d][%d]\n", *ptr, compare_buf[i][j], i, j); nr_errors++; } ptr++; } } free(rd_buf); if (nr_errors == 0) fprintf(stdout, " No Errors\n"); else fprintf(stderr, "Found %d errors\n", nr_errors); } free(blocklengths); free(displacements); free(buf); free(request); free(statuses); MPI_Type_free(&ftype); MPI_Finalize(); return 0; } /* command-line outputs are: (the global array is written twice) % mpiexec -n 4 wkl_subarray ------------------------------------------------------- [ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 ] [ 0] 0 1 2 3 4 5 D E F G H I [ 1] [ 2] 6 7 8 9 : ; J K L M N O [ 3] [ 4] [ 5] X Y Z [ \ ] l m n o p q [ 6] [ 7] ^ _ ` a b c r s t u v w [ 8] [ 9] [10] 0 1 2 3 4 5 D E F G H I [11] [12] 6 7 8 9 : ; J K L M N O [13] [14] [15] X Y Z [ \ ] l m n o p q [16] [17] ^ _ ` a b c r s t u v w [18] [19] */ mpi-testsuite-3.2+dfsg/io/i_bigtype.c0000644000175000017500000000727512620254305017121 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include #include #include //#define NUM_X 536870911 #define NUM_X 536870912 #define NUM_Y 1 //#define BIGDT 2147483643 #define BIGDT 2147483647 /* static char MTEST_Descrip[] = "Nonblocking file read/write for bigtype"; */ int main(int argc, char **argv) { MPI_File fh; int i, j; size_t k; MPI_Datatype inner_type, rem_type, mem_type; MPI_Datatype int_type, file_type; int *buf_write, *buf_read; int rc; MPI_Aint disp[2]; int block_len[2]; MPI_Datatype type[2]; MPI_Status status; MPI_Request request; MPI_Init(&argc, &argv); if (sizeof(MPI_Aint) <= sizeof(int)) { /* can't test on this platform... */ goto exit; } k = 0; /* create a large buffer 2 */ buf_write = malloc(NUM_X * NUM_Y * sizeof(int)); buf_read = malloc(NUM_X * NUM_Y * sizeof(int)); if (buf_write == NULL || buf_read == NULL) { fprintf(stderr, "Not enough memory\n"); exit(1); } memset(buf_read, 0, NUM_X * NUM_Y * sizeof(int)); for (i = 0; i < NUM_X; i++) { for (j = 0; j < NUM_Y; j++) { buf_write[k] = k; k++; } } /* Big Datatype (2^31 - 1 bytes) */ MPI_Type_contiguous(BIGDT, MPI_BYTE, &inner_type); /* Small Datatype (1 byte) */ MPI_Type_contiguous(1, MPI_BYTE, &rem_type); type[0] = inner_type; type[1] = rem_type; block_len[0] = 1; block_len[1] = 1; disp[0] = 0; disp[1] = BIGDT; /* combine both types */ MPI_Type_struct(2, block_len, disp, type, &mem_type); MPI_Type_commit(&mem_type); MPI_Type_free(&rem_type); MPI_Type_free(&inner_type); MPI_Type_contiguous(4, MPI_BYTE, &int_type); { /* This creates a big type that is actually contituous, touching an * optimization that was at one point buggy */ MPI_Type_vector(1, NUM_X, 1, int_type, &file_type); } MPI_Type_commit(&file_type); MPI_Type_free(&int_type); rc = MPI_File_open(MPI_COMM_WORLD, "testfile", MPI_MODE_RDWR | MPI_MODE_CREATE, MPI_INFO_NULL, &fh); if (rc != MPI_SUCCESS) { fprintf(stderr, "Can't open file: %s\n", "testfile"); exit(1); } rc = MPI_File_set_view(fh, 2144, MPI_BYTE, file_type, "native", MPI_INFO_NULL); if (rc != MPI_SUCCESS) { fprintf(stderr, "ERROR SET VIEW\n"); exit(1); } /* write everything */ rc = MPI_File_iwrite_at_all(fh, 0, buf_write, 1, mem_type, &request); if (rc != MPI_SUCCESS) { fprintf(stderr, "%d ERROR IWRITE AT ALL\n", rc); exit(1); } MPI_Wait(&request, &status); rc = MPI_File_set_view(fh, 2144, MPI_BYTE, file_type, "native", MPI_INFO_NULL); if (rc != MPI_SUCCESS) { fprintf(stderr, "ERROR SET VIEW\n"); exit(1); } /* read everything */ rc = MPI_File_iread_at_all(fh, 0, buf_read, 1, mem_type, &request); if (rc != MPI_SUCCESS) { fprintf(stderr, "%d ERROR IREAD AT ALL\n", rc); exit(1); } MPI_Wait(&request, &status); for (k = 0; k < NUM_X * NUM_Y; k++) { if (buf_read[k] != buf_write[k]) { fprintf(stderr, "Verfiy Failed index %zu: expected %d found %d\n", k, buf_write[k], buf_read[k]); assert(0); } } free(buf_write); free(buf_read); MPI_File_close(&fh); MPI_Type_free(&mem_type); MPI_Type_free(&file_type); exit: MPI_Finalize(); printf(" No Errors\n"); return 0; } mpi-testsuite-3.2+dfsg/io/i_noncontig.c0000644000175000017500000001557112620254305017452 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include #include "mpitest.h" /* tests noncontiguous reads/writes using nonblocking I/O */ /* static char MTEST_Descrip[] = "Test nonblocking I/O"; */ #define SIZE 5000 #define VERBOSE 0 int main(int argc, char **argv) { int *buf, i, mynod, nprocs, len, b[3]; int errs = 0; MPI_Aint d[3]; MPI_File fh; MPI_Status status; char *filename; MPI_Datatype typevec, newtype, t[3]; MPI_Request req; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &mynod); if (nprocs != 2) { fprintf(stderr, "Run this program on two processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } /* process 0 takes the file name as a command-line argument and broadcasts it to other processes */ if (!mynod) { i = 1; while ((i < argc) && strcmp("-fname", *argv)) { i++; argv++; } if (i >= argc) { len = 8; filename = (char *) malloc(len + 10); strcpy(filename, "testfile"); /* * fprintf(stderr, "\n*# Usage: i_noncontig -fname filename\n\n"); * MPI_Abort(MPI_COMM_WORLD, 1); */ } else { argv++; len = (int) strlen(*argv); filename = (char *) malloc(len + 1); strcpy(filename, *argv); } MPI_Bcast(&len, 1, MPI_INT, 0, MPI_COMM_WORLD); MPI_Bcast(filename, len + 1, MPI_CHAR, 0, MPI_COMM_WORLD); } else { MPI_Bcast(&len, 1, MPI_INT, 0, MPI_COMM_WORLD); filename = (char *) malloc(len + 1); MPI_Bcast(filename, len + 1, MPI_CHAR, 0, MPI_COMM_WORLD); } buf = (int *) malloc(SIZE * sizeof(int)); MPI_Type_vector(SIZE / 2, 1, 2, MPI_INT, &typevec); b[0] = b[1] = b[2] = 1; d[0] = 0; d[1] = mynod * sizeof(int); d[2] = SIZE * sizeof(int); t[0] = MPI_LB; t[1] = typevec; t[2] = MPI_UB; MPI_Type_struct(3, b, d, t, &newtype); MPI_Type_commit(&newtype); MPI_Type_free(&typevec); if (!mynod) { #if VERBOSE fprintf(stderr, "\ntesting noncontiguous in memory, noncontiguous in file using nonblocking I/O\n"); #endif MPI_File_delete(filename, MPI_INFO_NULL); } MPI_Barrier(MPI_COMM_WORLD); MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_CREATE | MPI_MODE_RDWR, MPI_INFO_NULL, &fh); MPI_File_set_view(fh, 0, MPI_INT, newtype, (char *) "native", MPI_INFO_NULL); for (i = 0; i < SIZE; i++) buf[i] = i + mynod * SIZE; MPI_File_iwrite(fh, buf, 1, newtype, &req); MPI_Wait(&req, &status); MPI_Barrier(MPI_COMM_WORLD); for (i = 0; i < SIZE; i++) buf[i] = -1; MPI_File_iread_at(fh, 0, buf, 1, newtype, &req); MPI_Wait(&req, &status); for (i = 0; i < SIZE; i++) { if (!mynod) { if ((i % 2) && (buf[i] != -1)) { errs++; fprintf(stderr, "Process %d: buf %d is %d, should be -1\n", mynod, i, buf[i]); } if (!(i % 2) && (buf[i] != i)) { errs++; fprintf(stderr, "Process %d: buf %d is %d, should be %d\n", mynod, i, buf[i], i); } } else { if ((i % 2) && (buf[i] != i + mynod * SIZE)) { errs++; fprintf(stderr, "Process %d: buf %d is %d, should be %d\n", mynod, i, buf[i], i + mynod * SIZE); } if (!(i % 2) && (buf[i] != -1)) { errs++; fprintf(stderr, "Process %d: buf %d is %d, should be -1\n", mynod, i, buf[i]); } } } MPI_File_close(&fh); MPI_Barrier(MPI_COMM_WORLD); if (!mynod) { #if VERBOSE fprintf(stderr, "\ntesting noncontiguous in memory, contiguous in file using nonblocking I/O\n"); #endif MPI_File_delete(filename, MPI_INFO_NULL); } MPI_Barrier(MPI_COMM_WORLD); MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_CREATE | MPI_MODE_RDWR, MPI_INFO_NULL, &fh); for (i = 0; i < SIZE; i++) buf[i] = i + mynod * SIZE; MPI_File_iwrite_at(fh, mynod * (SIZE / 2) * sizeof(int), buf, 1, newtype, &req); MPI_Wait(&req, &status); MPI_Barrier(MPI_COMM_WORLD); for (i = 0; i < SIZE; i++) buf[i] = -1; MPI_File_iread_at(fh, mynod * (SIZE / 2) * sizeof(int), buf, 1, newtype, &req); MPI_Wait(&req, &status); for (i = 0; i < SIZE; i++) { if (!mynod) { if ((i % 2) && (buf[i] != -1)) { errs++; fprintf(stderr, "Process %d: buf %d is %d, should be -1\n", mynod, i, buf[i]); } if (!(i % 2) && (buf[i] != i)) { errs++; fprintf(stderr, "Process %d: buf %d is %d, should be %d\n", mynod, i, buf[i], i); } } else { if ((i % 2) && (buf[i] != i + mynod * SIZE)) { errs++; fprintf(stderr, "Process %d: buf %d is %d, should be %d\n", mynod, i, buf[i], i + mynod * SIZE); } if (!(i % 2) && (buf[i] != -1)) { errs++; fprintf(stderr, "Process %d: buf %d is %d, should be -1\n", mynod, i, buf[i]); } } } MPI_File_close(&fh); MPI_Barrier(MPI_COMM_WORLD); if (!mynod) { #if VERBOSE fprintf(stderr, "\ntesting contiguous in memory, noncontiguous in file using nonblocking I/O\n"); #endif MPI_File_delete(filename, MPI_INFO_NULL); } MPI_Barrier(MPI_COMM_WORLD); MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_CREATE | MPI_MODE_RDWR, MPI_INFO_NULL, &fh); MPI_File_set_view(fh, 0, MPI_INT, newtype, (char *) "native", MPI_INFO_NULL); for (i = 0; i < SIZE; i++) buf[i] = i + mynod * SIZE; MPI_File_iwrite(fh, buf, SIZE, MPI_INT, &req); MPI_Wait(&req, &status); MPI_Barrier(MPI_COMM_WORLD); for (i = 0; i < SIZE; i++) buf[i] = -1; MPI_File_iread_at(fh, 0, buf, SIZE, MPI_INT, &req); MPI_Wait(&req, &status); for (i = 0; i < SIZE; i++) { if (!mynod) { if (buf[i] != i) { errs++; fprintf(stderr, "Process %d: buf %d is %d, should be %d\n", mynod, i, buf[i], i); } } else { if (buf[i] != i + mynod * SIZE) { errs++; fprintf(stderr, "Process %d: buf %d is %d, should be %d\n", mynod, i, buf[i], i + mynod * SIZE); } } } MPI_File_close(&fh); MPI_Type_free(&newtype); free(buf); free(filename); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/io/i_rdwrord.c0000644000175000017500000000360112620254305017126 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test reading and writing ordered output"; */ int main(int argc, char *argv[]) { int errs = 0; int size, rank, i, *buf, rc; MPI_File fh; MPI_Comm comm; MPI_Status status; MPI_Request request; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_File_open(comm, (char *) "test.ord", MPI_MODE_RDWR | MPI_MODE_CREATE | MPI_MODE_DELETE_ON_CLOSE, MPI_INFO_NULL, &fh); MPI_Comm_size(comm, &size); MPI_Comm_rank(comm, &rank); buf = (int *) malloc(size * sizeof(int)); buf[0] = rank; rc = MPI_File_write_ordered(fh, buf, 1, MPI_INT, &status); if (rc != MPI_SUCCESS) { MTestPrintErrorMsg("File_write_ordered", rc); errs++; } /* make sure all writes finish before we seek/read */ MPI_Barrier(comm); /* Set the individual pointer to 0, since we want to use a iread_all */ MPI_File_seek(fh, 0, MPI_SEEK_SET); rc = MPI_File_iread_all(fh, buf, size, MPI_INT, &request); if (rc != MPI_SUCCESS) { MTestPrintErrorMsg("File_iread_all", rc); errs++; } MPI_Wait(&request, &status); for (i = 0; i < size; i++) { if (buf[i] != i) { errs++; fprintf(stderr, "%d: buf[%d] = %d\n", rank, i, buf[i]); } } MPI_File_seek_shared(fh, 0, MPI_SEEK_SET); for (i = 0; i < size; i++) buf[i] = -1; MPI_File_read_ordered(fh, buf, 1, MPI_INT, &status); if (buf[0] != rank) { errs++; fprintf(stderr, "%d: buf[0] = %d\n", rank, buf[0]); } free(buf); MPI_File_close(&fh); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/io/i_hindexed_io.c0000644000175000017500000000645612620254305017735 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include #include #define DATA_SIZE 324*4 #define PAD 256 #define HEADER 144 #define BLK_COUNT 3 static void handle_error(int errcode, char *str) { char msg[MPI_MAX_ERROR_STRING]; int resultlen; MPI_Error_string(errcode, msg, &resultlen); fprintf(stderr, "%s: %s\n", str, msg); MPI_Abort(MPI_COMM_WORLD, 1); } #define CHECK(fn) { int errcode; errcode = (fn); if (errcode != MPI_SUCCESS) handle_error(errcode, #fn); } int main(int argc, char **argv) { MPI_File fh; MPI_Datatype file_type, mem_type; int *data = NULL; int *verify = NULL; int data_size = DATA_SIZE; int i, j, k, nr_errors = 0; MPI_Aint disp[BLK_COUNT]; int block_lens[BLK_COUNT]; char *filename = "unnamed.dat"; MPI_Status status; MPI_Request request; MPI_Init(&argc, &argv); disp[0] = (MPI_Aint) (PAD); disp[1] = (MPI_Aint) (data_size * 1 + PAD); disp[2] = (MPI_Aint) (data_size * 2 + PAD); block_lens[0] = data_size; block_lens[1] = data_size; block_lens[2] = data_size; data = malloc(data_size); verify = malloc(data_size * BLK_COUNT + HEADER + PAD); for (i = 0; i < data_size / sizeof(int); i++) data[i] = i; MPI_Type_create_hindexed_block(BLK_COUNT, data_size, disp, MPI_BYTE, &file_type); MPI_Type_commit(&file_type); MPI_Type_create_hvector(BLK_COUNT, data_size, 0, MPI_BYTE, &mem_type); MPI_Type_commit(&mem_type); if (1 < argc) filename = argv[1]; CHECK(MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_RDWR | MPI_MODE_CREATE | MPI_MODE_DELETE_ON_CLOSE, MPI_INFO_NULL, &fh) != 0); CHECK(MPI_File_set_view(fh, HEADER, MPI_BYTE, file_type, "native", MPI_INFO_NULL)); /* write everything */ CHECK(MPI_File_iwrite_at_all(fh, 0, data, 1, mem_type, &request)); MPI_Wait(&request, &status); /* verify */ CHECK(MPI_File_set_view(fh, 0, MPI_BYTE, MPI_BYTE, "native", MPI_INFO_NULL)); CHECK(MPI_File_iread_at_all(fh, 0, verify, (HEADER + PAD + BLK_COUNT * DATA_SIZE) / sizeof(int), MPI_INT, &request)); MPI_Wait(&request, &status); /* header and block padding should have no data */ for (i = 0; i < (HEADER + PAD) / sizeof(int); i++) { if (verify[i] != 0) { nr_errors++; fprintf(stderr, "expected 0, read %d\n", verify[i]); } } /* blocks are replicated */ for (j = 0; j < BLK_COUNT; j++) { for (k = 0; k < (DATA_SIZE / sizeof(int)); k++) { if (verify[(HEADER + PAD) / sizeof(int) + k + j * (DATA_SIZE / sizeof(int))] != data[k]) { nr_errors++; fprintf(stderr, "expcted %d, read %d\n", data[k], verify[(HEADER + PAD) / sizeof(int) + k + j * (DATA_SIZE / sizeof(int))]); } i++; } } MPI_File_close(&fh); MPI_Type_free(&mem_type); MPI_Type_free(&file_type); if (nr_errors == 0) printf(" No Errors\n"); MPI_Finalize(); free(data); return 0; } mpi-testsuite-3.2+dfsg/io/i_coll_test.c0000644000175000017500000001507212620254305017440 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include /* A 32^3 array. For other array sizes, change array_of_gsizes below. */ /* Uses nonblocking collective I/O. Writes a 3D block-distributed array to a file corresponding to the global array in row-major (C) order, reads it back, and checks that the data read is correct. */ /* Note that the file access pattern is noncontiguous. */ void handle_error(int errcode, const char *str); void handle_error(int errcode, const char *str) { char msg[MPI_MAX_ERROR_STRING]; int resultlen; MPI_Error_string(errcode, msg, &resultlen); fprintf(stderr, "%s: %s\n", str, msg); MPI_Abort(MPI_COMM_WORLD, 1); } int main(int argc, char **argv) { MPI_Datatype newtype; int i, ndims, array_of_gsizes[3], array_of_distribs[3]; int order, nprocs, j, len; int array_of_dargs[3], array_of_psizes[3]; int *readbuf, *writebuf, mynod, *tmpbuf, array_size; MPI_Count bufcount; char *filename; int errs = 0, toterrs; MPI_File fh; MPI_Status status; MPI_Request request; MPI_Info info = MPI_INFO_NULL; int errcode; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &mynod); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); /* process 0 broadcasts the file name to other processes */ if (!mynod) { filename = "testfile"; len = strlen(filename); MPI_Bcast(&len, 1, MPI_INT, 0, MPI_COMM_WORLD); MPI_Bcast(filename, len + 1, MPI_CHAR, 0, MPI_COMM_WORLD); } else { MPI_Bcast(&len, 1, MPI_INT, 0, MPI_COMM_WORLD); filename = (char *) malloc(len + 1); MPI_Bcast(filename, len + 1, MPI_CHAR, 0, MPI_COMM_WORLD); } /* create the distributed array filetype */ ndims = 3; order = MPI_ORDER_C; array_of_gsizes[0] = 32; array_of_gsizes[1] = 32; array_of_gsizes[2] = 32; array_of_distribs[0] = MPI_DISTRIBUTE_BLOCK; array_of_distribs[1] = MPI_DISTRIBUTE_BLOCK; array_of_distribs[2] = MPI_DISTRIBUTE_BLOCK; array_of_dargs[0] = MPI_DISTRIBUTE_DFLT_DARG; array_of_dargs[1] = MPI_DISTRIBUTE_DFLT_DARG; array_of_dargs[2] = MPI_DISTRIBUTE_DFLT_DARG; for (i = 0; i < ndims; i++) array_of_psizes[i] = 0; MPI_Dims_create(nprocs, ndims, array_of_psizes); MPI_Type_create_darray(nprocs, mynod, ndims, array_of_gsizes, array_of_distribs, array_of_dargs, array_of_psizes, order, MPI_INT, &newtype); MPI_Type_commit(&newtype); /* initialize writebuf */ MPI_Type_size_x(newtype, &bufcount); bufcount = bufcount / sizeof(int); writebuf = (int *) malloc(bufcount * sizeof(int)); for (i = 0; i < bufcount; i++) writebuf[i] = 1; array_size = array_of_gsizes[0] * array_of_gsizes[1] * array_of_gsizes[2]; tmpbuf = (int *) calloc(array_size, sizeof(int)); MPI_Irecv(tmpbuf, 1, newtype, mynod, 10, MPI_COMM_WORLD, &request); MPI_Send(writebuf, bufcount, MPI_INT, mynod, 10, MPI_COMM_WORLD); MPI_Wait(&request, &status); j = 0; for (i = 0; i < array_size; i++) if (tmpbuf[i]) { writebuf[j] = i; j++; } free(tmpbuf); if (j != bufcount) { fprintf(stderr, "Error in initializing writebuf on process %d\n", mynod); MPI_Abort(MPI_COMM_WORLD, 1); } /* end of initialization */ /* write the array to the file */ errcode = MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_CREATE | MPI_MODE_RDWR, info, &fh); if (errcode != MPI_SUCCESS) handle_error(errcode, "MPI_File_open"); errcode = MPI_File_set_view(fh, 0, MPI_INT, newtype, "native", info); if (errcode != MPI_SUCCESS) handle_error(errcode, "MPI_File_set_view"); errcode = MPI_File_iwrite_all(fh, writebuf, bufcount, MPI_INT, &request); if (errcode != MPI_SUCCESS) handle_error(errcode, "MPI_File_iwrite_all"); MPI_Wait(&request, &status); errcode = MPI_File_close(&fh); if (errcode != MPI_SUCCESS) handle_error(errcode, "MPI_File_close"); if (!mynod) { /* wkl suggests potential for false " No Errors" if both read * and write use the same file view */ /* solution: rank 0 reads entire file and checks write values */ errcode = MPI_File_open(MPI_COMM_SELF, filename, MPI_MODE_RDONLY, info, &fh); if (errcode != MPI_SUCCESS) handle_error(errcode, "MPI_File_open"); readbuf = (int *) malloc(array_size * sizeof(int)); errcode = MPI_File_read(fh, readbuf, array_size, MPI_INT, &status); if (errcode != MPI_SUCCESS) handle_error(errcode, "MPI_File_read"); errcode = MPI_File_close(&fh); if (errcode != MPI_SUCCESS) handle_error(errcode, "MPI_File_close"); for (i = 0; i < array_size; i++) if (readbuf[i] != i) { errs++; fprintf(stderr, "Error: write integer %d but read %d\n", i, readbuf[i]); break; } free(readbuf); } MPI_Barrier(MPI_COMM_WORLD); /* now read it back */ readbuf = (int *) malloc(bufcount * sizeof(int)); errcode = MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_CREATE | MPI_MODE_RDWR, info, &fh); if (errcode != MPI_SUCCESS) handle_error(errcode, "MPI_File_open"); errcode = MPI_File_set_view(fh, 0, MPI_INT, newtype, "native", info); if (errcode != MPI_SUCCESS) handle_error(errcode, "MPI_File_set_view"); errcode = MPI_File_iread_all(fh, readbuf, bufcount, MPI_INT, &request); if (errcode != MPI_SUCCESS) handle_error(errcode, "MPI_File_iread_all"); MPI_Wait(&request, &status); errcode = MPI_File_close(&fh); if (errcode != MPI_SUCCESS) handle_error(errcode, "MPI_File_close"); /* check the data read */ for (i = 0; i < bufcount; i++) { if (readbuf[i] != writebuf[i]) { errs++; fprintf(stderr, "Process %d, readbuf %d, writebuf %d, i %d\n", mynod, readbuf[i], writebuf[i], i); } } MPI_Allreduce(&errs, &toterrs, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD); if (mynod == 0) { if (toterrs > 0) { fprintf(stderr, "Found %d errors\n", toterrs); } else { fprintf(stdout, " No Errors\n"); } } MPI_Type_free(&newtype); free(readbuf); free(writebuf); if (mynod) free(filename); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/io/bigtype.c0000644000175000017500000000660412620254305016604 0ustar mbanckmbanck#include #include #include #include #include #include //#define NUM_X 536870911 #define NUM_X 536870912 #define NUM_Y 1 //#define BIGDT 2147483643 #define BIGDT 2147483647 int main(int argc, char **argv) { MPI_File fh; int i, j; size_t k; MPI_Datatype inner_type, rem_type, mem_type; MPI_Datatype int_type, file_type; int *buf_write, *buf_read; int rc; MPI_Aint disp[2]; int block_len[2]; MPI_Datatype type[2]; MPI_Init(&argc, &argv); if (sizeof(MPI_Aint) <= sizeof(int)) { /* can't test on this platform... */ goto exit; } k = 0; /* create a large buffer 2 */ buf_write = malloc(NUM_X * NUM_Y * sizeof(int)); if (buf_write == NULL) { fprintf(stderr, "not enough memory\n"); exit(1); } buf_read = malloc(NUM_X * NUM_Y * sizeof(int)); if (buf_read == NULL) { fprintf(stderr, "not enough memory\n"); exit(1); } memset(buf_read, 0, NUM_X * NUM_Y * sizeof(int)); for (i = 0; i < NUM_X; i++) { for (j = 0; j < NUM_Y; j++) { buf_write[k] = k; k++; } } /* Big Datatype (2^31 - 1 bytes) */ MPI_Type_contiguous(BIGDT, MPI_BYTE, &inner_type); /* Small Datatype (1 byte) */ MPI_Type_contiguous(1, MPI_BYTE, &rem_type); type[0] = inner_type; type[1] = rem_type; block_len[0] = 1; block_len[1] = 1; disp[0] = 0; disp[1] = BIGDT; /* combine both types */ MPI_Type_struct(2, block_len, disp, type, &mem_type); MPI_Type_commit(&mem_type); MPI_Type_free(&rem_type); MPI_Type_free(&inner_type); MPI_Type_contiguous(4, MPI_BYTE, &int_type); { /* This creates a big type that is actually contituous, touching an * optimization that was at one point buggy */ MPI_Type_vector(1, NUM_X, 1, int_type, &file_type); } MPI_Type_commit(&file_type); MPI_Type_free(&int_type); if (MPI_File_open(MPI_COMM_WORLD, "testfile", MPI_MODE_RDWR | MPI_MODE_CREATE, MPI_INFO_NULL, &fh) != 0) { fprintf(stderr, "Can't open file: %s\n", "testfile"); exit(1); } if (MPI_SUCCESS != MPI_File_set_view(fh, 2144, MPI_BYTE, file_type, "native", MPI_INFO_NULL)) { fprintf(stderr, "ERROR SET VIEW\n"); exit(1); } /* write everything */ rc = MPI_File_write_at_all(fh, 0, buf_write, 1, mem_type, MPI_STATUS_IGNORE); if (rc != MPI_SUCCESS) { fprintf(stderr, "%d ERROR WRITE AT ALL\n", rc); exit(1); } if (MPI_SUCCESS != MPI_File_set_view(fh, 2144, MPI_BYTE, file_type, "native", MPI_INFO_NULL)) { fprintf(stderr, "ERROR SET VIEW\n"); exit(1); } /* read everything */ rc = MPI_File_read_at_all(fh, 0, buf_read, 1, mem_type, MPI_STATUS_IGNORE); if (rc != MPI_SUCCESS) { fprintf(stderr, "%d ERROR READ AT ALL\n", rc); exit(1); } for (k = 0; k < NUM_X * NUM_Y; k++) { if (buf_read[k] != buf_write[k]) { fprintf(stderr, "Verfiy Failed index %zu: expected %d found %d\n", k, buf_write[k], buf_read[k]); assert(0); } } free(buf_write); free(buf_read); MPI_File_close(&fh); MPI_Type_free(&mem_type); MPI_Type_free(&file_type); exit: MPI_Finalize(); printf(" No Errors\n"); return 0; } mpi-testsuite-3.2+dfsg/io/rdwrord.c0000644000175000017500000000331612620254305016621 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test reading and writing ordered output"; */ int main(int argc, char *argv[]) { int errs = 0; int size, rank, i, *buf, rc; MPI_File fh; MPI_Comm comm; MPI_Status status; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_File_open(comm, (char *) "test.ord", MPI_MODE_RDWR | MPI_MODE_CREATE | MPI_MODE_DELETE_ON_CLOSE, MPI_INFO_NULL, &fh); MPI_Comm_size(comm, &size); MPI_Comm_rank(comm, &rank); buf = (int *) malloc(size * sizeof(int)); buf[0] = rank; rc = MPI_File_write_ordered(fh, buf, 1, MPI_INT, &status); if (rc) { MTestPrintErrorMsg("File_write_ordered", rc); errs++; } /* make sure all writes finish before we seek/read */ MPI_Barrier(comm); /* Set the individual pointer to 0, since we want to use a read_all */ MPI_File_seek(fh, 0, MPI_SEEK_SET); MPI_File_read_all(fh, buf, size, MPI_INT, &status); for (i = 0; i < size; i++) { if (buf[i] != i) { errs++; fprintf(stderr, "%d: buf[%d] = %d\n", rank, i, buf[i]); } } MPI_File_seek_shared(fh, 0, MPI_SEEK_SET); for (i = 0; i < size; i++) buf[i] = -1; MPI_File_read_ordered(fh, buf, 1, MPI_INT, &status); if (buf[0] != rank) { errs++; fprintf(stderr, "%d: buf[0] = %d\n", rank, buf[0]); } free(buf); MPI_File_close(&fh); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/io/i_aggregation2.c0000644000175000017500000000526612620254305020025 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Look for regressions in aggregator code. A more simple access pattern than * aggregation1 */ /* Uses nonblocking collective I/O.*/ #include #include #include #include #include #include #include #define BUFSIZE 512 static void handle_error(int errcode, const char *str) { char msg[MPI_MAX_ERROR_STRING]; int resultlen; MPI_Error_string(errcode, msg, &resultlen); fprintf(stderr, "%s: %s\n", str, msg); MPI_Abort(MPI_COMM_WORLD, 1); } int main(int argc, char **argv) { MPI_Info info = MPI_INFO_NULL; MPI_File fh; MPI_Offset off = 0; MPI_Status status; int errcode; int i, rank, errs = 0, toterrs, buffer[BUFSIZE], buf2[BUFSIZE]; MPI_Request request; char *filename = NULL; filename = (argc > 1) ? argv[1] : "testfile"; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Info_create(&info); MPI_Info_set(info, "romio_cb_write", "enable"); MPI_Info_set(info, "cb_nodes", "1"); for (i = 0; i < BUFSIZE; i++) { buffer[i] = 10000 + rank; } off = rank * sizeof(buffer); errcode = MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_WRONLY | MPI_MODE_CREATE, info, &fh); if (errcode != MPI_SUCCESS) handle_error(errcode, "MPI_File_open"); errcode = MPI_File_iwrite_at_all(fh, off, buffer, BUFSIZE, MPI_INT, &request); if (errcode != MPI_SUCCESS) handle_error(errcode, "MPI_File_iwrite_at_all"); MPI_Wait(&request, &status); errcode = MPI_File_close(&fh); if (errcode != MPI_SUCCESS) handle_error(errcode, "MPI_File_close"); errcode = MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_RDONLY, info, &fh); if (errcode != MPI_SUCCESS) handle_error(errcode, "MPI_File_open"); errcode = MPI_File_iread_at_all(fh, off, buf2, BUFSIZE, MPI_INT, &request); if (errcode != MPI_SUCCESS) handle_error(errcode, "MPI_File_iread_at_all"); MPI_Wait(&request, &status); errcode = MPI_File_close(&fh); if (errcode != MPI_SUCCESS) handle_error(errcode, "MPI_File_close"); for (i = 0; i < BUFSIZE; i++) { if (buf2[i] != 10000 + rank) errs++; } MPI_Allreduce(&errs, &toterrs, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD); if (rank == 0) { if (toterrs > 0) { fprintf(stderr, "Found %d errors\n", toterrs); } else { fprintf(stdout, " No Errors\n"); } } MPI_Info_free(&info); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/io/setviewcur.c0000644000175000017500000000653312620254305017342 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test set_view with DISPLACEMENT_CURRENT"; */ int main(int argc, char *argv[]) { int errs = 0, err; int size, rank, *buf; MPI_Offset offset; MPI_File fh; MPI_Comm comm; MPI_Status status; MTest_Init(&argc, &argv); /* This test reads a header then sets the view to every "size" int, * using set view and current displacement. The file is first written * using a combination of collective and ordered writes */ comm = MPI_COMM_WORLD; err = MPI_File_open(comm, (char *) "test.ord", MPI_MODE_WRONLY | MPI_MODE_CREATE, MPI_INFO_NULL, &fh); if (err) { errs++; MTestPrintErrorMsg("Open(1)", err); } MPI_Comm_size(comm, &size); MPI_Comm_rank(comm, &rank); buf = (int *) malloc(size * sizeof(int)); buf[0] = size; err = MPI_File_write_all(fh, buf, 1, MPI_INT, &status); if (err) { errs++; MTestPrintErrorMsg("Write_all", err); } err = MPI_File_get_position(fh, &offset); if (err) { errs++; MTestPrintErrorMsg("Get_position", err); } err = MPI_File_seek_shared(fh, offset, MPI_SEEK_SET); if (err) { errs++; MTestPrintErrorMsg("Seek_shared", err); } buf[0] = rank; err = MPI_File_write_ordered(fh, buf, 1, MPI_INT, &status); if (err) { errs++; MTestPrintErrorMsg("Write_ordered", err); } err = MPI_File_close(&fh); if (err) { errs++; MTestPrintErrorMsg("Close(1)", err); } /* Reopen the file as sequential */ err = MPI_File_open(comm, (char *) "test.ord", MPI_MODE_RDONLY | MPI_MODE_SEQUENTIAL | MPI_MODE_DELETE_ON_CLOSE, MPI_INFO_NULL, &fh); if (err) { errs++; MTestPrintErrorMsg("Open(Read)", err); } if (rank == 0) { err = MPI_File_read_shared(fh, buf, 1, MPI_INT, &status); if (err) { errs++; MTestPrintErrorMsg("Read_all", err); } if (buf[0] != size) { errs++; fprintf(stderr, "Unexpected value for the header = %d, should be %d\n", buf[0], size); fflush(stderr); } } MPI_Barrier(comm); /* All processes must provide the same file view for MODE_SEQUENTIAL */ /* See MPI 2.1, 13.3 - DISPLACEMENT_CURRENT is *required* for * MODE_SEQUENTIAL files */ err = MPI_File_set_view(fh, MPI_DISPLACEMENT_CURRENT, MPI_INT, MPI_INT, (char *) "native", MPI_INFO_NULL); if (err) { errs++; MTestPrintErrorMsg("Set_view (DISPLACEMENT_CURRENT)", err); } buf[0] = -1; err = MPI_File_read_ordered(fh, buf, 1, MPI_INT, &status); if (err) { errs++; MTestPrintErrorMsg("Read_all", err); } if (buf[0] != rank) { errs++; fprintf(stderr, "%d: buf[0] = %d\n", rank, buf[0]); fflush(stderr); } free(buf); err = MPI_File_close(&fh); if (err) { errs++; MTestPrintErrorMsg("Close(2)", err); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/io/i_aggregation1.c0000644000175000017500000002034512620254305020017 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Test case from John Bent (ROMIO req #835) * Aggregation code was not handling certain access patterns when collective * buffering forced */ /* Uses nonblocking collective I/O.*/ #include #include #include #include #include #define NUM_OBJS 4 #define OBJ_SIZE 1048576 extern char *optarg; extern int optind, opterr, optopt; char *prog = NULL; int debug = 0; static void Usage(int line) { int rank; MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (rank == 0) { fprintf(stderr, "Usage (line %d): %s [-d] [-h] -f filename\n" "\t-d for debugging\n" "\t-h to turn on the hints to force collective aggregation\n", line, prog); } exit(0); } static void fatal_error(int mpi_ret, MPI_Status * mpi_stat, const char *msg) { fprintf(stderr, "Fatal error %s: %d\n", msg, mpi_ret); MPI_Abort(MPI_COMM_WORLD, -1); } static void print_hints(int rank, MPI_File * mfh) { MPI_Info info; int nkeys; int i, dummy_int; char key[1024]; char value[1024]; MPI_Barrier(MPI_COMM_WORLD); if (rank == 0) { MPI_File_get_info(*mfh, &info); MPI_Info_get_nkeys(info, &nkeys); printf("HINTS:\n"); for (i = 0; i < nkeys; i++) { MPI_Info_get_nthkey(info, i, key); printf("%35s -> ", key); MPI_Info_get(info, key, 1024, value, &dummy_int); printf("%s\n", value); } MPI_Info_free(&info); } MPI_Barrier(MPI_COMM_WORLD); } static void fill_buffer(char *buffer, int bufsize, int rank, MPI_Offset offset) { memset((void *) buffer, 0, bufsize); snprintf(buffer, bufsize, "Hello from %d at %lld\n", rank, offset); } static MPI_Offset get_offset(int rank, int num_objs, int obj_size, int which_obj) { MPI_Offset offset; offset = (MPI_Offset) rank *num_objs * obj_size + which_obj * obj_size; return offset; } static void write_file(char *target, int rank, MPI_Info * info) { MPI_File wfh; MPI_Request *request; MPI_Status *mpi_stat; int mpi_ret; int i; char **buffer; request = (MPI_Request *) malloc(NUM_OBJS * sizeof(MPI_Request)); mpi_stat = (MPI_Status *) malloc(NUM_OBJS * sizeof(MPI_Status)); buffer = (char **) malloc(NUM_OBJS * sizeof(char *)); if (debug) printf("%d writing file %s\n", rank, target); if ((mpi_ret = MPI_File_open(MPI_COMM_WORLD, target, MPI_MODE_WRONLY | MPI_MODE_CREATE, *info, &wfh)) != MPI_SUCCESS) { fatal_error(mpi_ret, NULL, "open for write"); } /* nonblocking collective write */ for (i = 0; i < NUM_OBJS; i++) { MPI_Offset offset = get_offset(rank, NUM_OBJS, OBJ_SIZE, i); buffer[i] = (char *) malloc(OBJ_SIZE); fill_buffer(buffer[i], OBJ_SIZE, rank, offset); if (debug) printf("%s", buffer[i]); if ((mpi_ret = MPI_File_iwrite_at_all(wfh, offset, buffer[i], OBJ_SIZE, MPI_CHAR, &request[i])) != MPI_SUCCESS) { fatal_error(mpi_ret, NULL, "write"); } } if (debug) print_hints(rank, &wfh); MPI_Waitall(NUM_OBJS, request, mpi_stat); if ((mpi_ret = MPI_File_close(&wfh)) != MPI_SUCCESS) { fatal_error(mpi_ret, NULL, "close for write"); } if (debug) printf("%d wrote file %s\n", rank, target); for (i = 0; i < NUM_OBJS; i++) free(buffer[i]); free(buffer); free(mpi_stat); free(request); } static int reduce_corruptions(int corrupt_blocks) { int mpi_ret; int sum; if ((mpi_ret = MPI_Reduce(&corrupt_blocks, &sum, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD)) != MPI_SUCCESS) { fatal_error(mpi_ret, NULL, "MPI_Reduce"); } return sum; } static void read_file(char *target, int rank, MPI_Info * info, int *corrupt_blocks) { MPI_File rfh; MPI_Offset *offset; MPI_Request *request; MPI_Status *mpi_stat; int mpi_ret; int i; char **buffer; char **verify_buf = NULL; offset = (MPI_Offset *) malloc(NUM_OBJS * sizeof(MPI_Offset)); request = (MPI_Request *) malloc(NUM_OBJS * sizeof(MPI_Request)); mpi_stat = (MPI_Status *) malloc(NUM_OBJS * sizeof(MPI_Status)); buffer = (char **) malloc(NUM_OBJS * sizeof(char *)); verify_buf = (char **) malloc(NUM_OBJS * sizeof(char *)); if (debug) printf("%d reading file %s\n", rank, target); if ((mpi_ret = MPI_File_open(MPI_COMM_WORLD, target, MPI_MODE_RDONLY, *info, &rfh)) != MPI_SUCCESS) { fatal_error(mpi_ret, NULL, "open for read"); } /* nonblocking collective read */ for (i = 0; i < NUM_OBJS; i++) { offset[i] = get_offset(rank, NUM_OBJS, OBJ_SIZE, i); buffer[i] = (char *) malloc(OBJ_SIZE); verify_buf[i] = (char *) malloc(OBJ_SIZE); fill_buffer(verify_buf[i], OBJ_SIZE, rank, offset[i]); if (debug) printf("Expecting %s", verify_buf[i]); if ((mpi_ret = MPI_File_iread_at_all(rfh, offset[i], buffer[i], OBJ_SIZE, MPI_CHAR, &request[i])) != MPI_SUCCESS) { fatal_error(mpi_ret, NULL, "read"); } } MPI_Waitall(NUM_OBJS, request, mpi_stat); /* verification */ for (i = 0; i < NUM_OBJS; i++) { if (memcmp(verify_buf[i], buffer[i], OBJ_SIZE) != 0) { (*corrupt_blocks)++; printf("Corruption at %lld\n", offset[i]); if (debug) { printf("\tExpecting %s\n" "\tRecieved %s\n", verify_buf[i], buffer[i]); } } } if ((mpi_ret = MPI_File_close(&rfh)) != MPI_SUCCESS) { fatal_error(mpi_ret, NULL, "close for read"); } for (i = 0; i < NUM_OBJS; i++) { free(verify_buf[i]); free(buffer[i]); } free(verify_buf); free(buffer); free(mpi_stat); free(request); free(offset); } static void set_hints(MPI_Info * info) { MPI_Info_set(*info, "romio_cb_write", "enable"); MPI_Info_set(*info, "romio_no_indep_rw", "1"); MPI_Info_set(*info, "cb_nodes", "1"); MPI_Info_set(*info, "cb_buffer_size", "4194304"); } /* void set_hints(MPI_Info *info, char *hints) { char *delimiter = " "; char *hints_cp = strdup(hints); char *key = strtok(hints_cp, delimiter); char *val; while (key) { val = strtok(NULL, delimiter); if (debug) printf("HINT: %s = %s\n", key, val); if (! val) { Usage(__LINE__); } MPI_Info_set(*info, key, val); key = strtok(NULL, delimiter); } free(hints_cp); } */ int main(int argc, char *argv[]) { int nproc = 1, rank = 0; char *target = NULL; int c; MPI_Info info; int mpi_ret; int corrupt_blocks = 0; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if ((mpi_ret = MPI_Info_create(&info)) != MPI_SUCCESS) { if (rank == 0) fatal_error(mpi_ret, NULL, "MPI_info_create.\n"); } prog = strdup(argv[0]); if (argc > 1) { while ((c = getopt(argc, argv, "df:h")) != EOF) { switch (c) { case 'd': debug = 1; break; case 'f': target = strdup(optarg); break; case 'h': set_hints(&info); break; default: Usage(__LINE__); } } if (!target) { Usage(__LINE__); } } else { target = "testfile"; set_hints(&info); } write_file(target, rank, &info); read_file(target, rank, &info, &corrupt_blocks); corrupt_blocks = reduce_corruptions(corrupt_blocks); if (rank == 0) { if (corrupt_blocks == 0) { fprintf(stdout, " No Errors\n"); } else { fprintf(stdout, "%d/%d blocks corrupt\n", corrupt_blocks, nproc * NUM_OBJS); } } MPI_Info_free(&info); MPI_Finalize(); free(prog); exit(0); } mpi-testsuite-3.2+dfsg/include/0000755000175000017500000000000012621010231015770 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/include/mpitestcxx.h0000644000175000017500000000421512620254305020366 0ustar mbanckmbanck/* -*- Mode: C++; c-basic-offset:4 ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #ifndef MPITESTCONF_H_INCLUDED #error Required mpitestconf.h file not included first! #endif #ifndef MTEST_INCLUDED #define MTEST_INCLUDED /* * Init and finalize test */ void MTest_Init(void); void MTest_Finalize(int); void MTestPrintError(int); void MTestPrintErrorMsg(const char[], int); void MTestPrintfMsg(int, const char[], ...); void MTestError(const char[]); /* * This structure contains the information used to test datatypes */ typedef struct _MTestDatatype { MPI::Datatype datatype; void *buf; /* buffer to use in communication */ int count; /* count to use for this datatype */ int isBasic; /* true if the type is predefined */ int printErrors; /* true if errors should be printed * (used by the CheckBuf routines) */ /* The following is optional data that is used by some of * the derived datatypes */ int stride, nelm, blksize, *index; /* stride, nelm, and blksize are in bytes */ int *displs, basesize; /* displacements are in multiples of base type; basesize is the * size of that type */ void *(*InitBuf) (struct _MTestDatatype *); void *(*FreeBuf) (struct _MTestDatatype *); int (*CheckBuf) (struct _MTestDatatype *); } MTestDatatype; int MTestCheckRecv(MPI::Status &, MTestDatatype *); int MTestGetDatatypes(MTestDatatype *, MTestDatatype *, int); void MTestResetDatatypes(void); void MTestFreeDatatype(MTestDatatype *); const char *MTestGetDatatypeName(MTestDatatype *); int MTestGetIntracomm(MPI::Intracomm &, int); int MTestGetIntracommGeneral(MPI::Intracomm &, int, bool); int MTestGetIntercomm(MPI::Intercomm &, int &, int); int MTestGetComm(MPI::Comm **, int); const char *MTestGetIntracommName(void); const char *MTestGetIntercommName(void); void MTestFreeComm(MPI::Comm & comm); int MTestSpawnPossible(int *); #ifdef HAVE_MPI_WIN_CREATE int MTestGetWin(MPI::Win &, bool); const char *MTestGetWinName(void); void MTestFreeWin(MPI::Win &); #endif #endif mpi-testsuite-3.2+dfsg/include/mpitestconf.h.in0000644000175000017500000002050512621010231021103 0ustar mbanckmbanck/* include/mpitestconf.h.in. Generated from configure.ac by autoheader. */ /* -*- Mode: C; c-basic-offset:4 ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #ifndef MPITESTCONF_H_INCLUDED #define MPITESTCONF_H_INCLUDED /* Fortran names are lowercase with no trailing underscore */ #undef F77_NAME_LOWER /* Fortran names are lowercase with two trailing underscores */ #undef F77_NAME_LOWER_2USCORE /* Fortran names are lowercase with two trailing underscores in stdcall */ #undef F77_NAME_LOWER_2USCORE_STDCALL /* Fortran names are lowercase with no trailing underscore in stdcall */ #undef F77_NAME_LOWER_STDCALL /* Fortran names are lowercase with one trailing underscore */ #undef F77_NAME_LOWER_USCORE /* Fortran names are lowercase with one trailing underscore in stdcall */ #undef F77_NAME_LOWER_USCORE_STDCALL /* Fortran names preserve the original case */ #undef F77_NAME_MIXED /* Fortran names preserve the original case in stdcall */ #undef F77_NAME_MIXED_STDCALL /* Fortran names preserve the original case with one trailing underscore */ #undef F77_NAME_MIXED_USCORE /* Fortran names preserve the original case with one trailing underscore in stdcall */ #undef F77_NAME_MIXED_USCORE_STDCALL /* Fortran names are uppercase */ #undef F77_NAME_UPPER /* Fortran names are uppercase in stdcall */ #undef F77_NAME_UPPER_STDCALL /* Define to 1 if the system has the type `double _Complex'. */ #undef HAVE_DOUBLE__COMPLEX /* Define to 1 if the system has the type `float _Complex'. */ #undef HAVE_FLOAT__COMPLEX /* Define if Fortran is supported */ #undef HAVE_FORTRAN_BINDING /* Define to 1 if you have the `getrusage' function. */ #undef HAVE_GETRUSAGE /* Define if struct hostent contains h_addr_list */ #undef HAVE_H_ADDR_LIST /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define if iostream is available */ #undef HAVE_IOSTREAM /* Define to 1 if you have the header file. */ #undef HAVE_IOSTREAM_H /* Define if long double is supported */ #undef HAVE_LONG_DOUBLE /* Define to 1 if the system has the type `long double _Complex'. */ #undef HAVE_LONG_DOUBLE__COMPLEX /* Define if compiler supports long long */ #undef HAVE_LONG_LONG /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define if MPI_2COMPLEX is available */ #undef HAVE_MPI_2COMPLEX /* Define if MPI_2DOUBLE_COMPLEX is available */ #undef HAVE_MPI_2DOUBLE_COMPLEX /* Define to 1 if you have the `MPI_Init_thread' function. */ #undef HAVE_MPI_INIT_THREAD /* Define if MPI_INTEGER16 is available */ #undef HAVE_MPI_INTEGER16 /* Define if MPI-IO (really ROMIO) is included */ #undef HAVE_MPI_IO /* Define if Dynamic Process functionality is available */ #undef HAVE_MPI_SPAWN /* Define if MPI_Win_create is available */ #undef HAVE_MPI_WIN_CREATE /* define if the compiler implements namespaces */ #undef HAVE_NAMESPACES /* define if the compiler implements namespace std */ #undef HAVE_NAMESPACE_STD /* Define to 1 if you have the `pthread_barrier_init' function. */ #undef HAVE_PTHREAD_BARRIER_INIT /* Define to 1 if you have the `pthread_barrier_wait' function. */ #undef HAVE_PTHREAD_BARRIER_WAIT /* Define to 1 if you have the `pthread_create' function. */ #undef HAVE_PTHREAD_CREATE /* Define to 1 if you have the header file. */ #undef HAVE_PTHREAD_H /* Define to 1 if you have the `pthread_yield' function. */ #undef HAVE_PTHREAD_YIELD /* Define to 1 if you have the header file. */ #undef HAVE_STDARG_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_RESOURCE_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIME_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if the system has the type `_Bool'. */ #undef HAVE__BOOL /* Define if MPI IO uses MPI_Request */ #undef MPIO_USES_MPI_REQUEST /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* POINTERINT_t is a pointer-sized integer */ #undef POINTERINT_t /* The size of `int', as computed by sizeof. */ #undef SIZEOF_INT /* The size of `long', as computed by sizeof. */ #undef SIZEOF_LONG /* The size of `long long', as computed by sizeof. */ #undef SIZEOF_LONG_LONG /* The size of `MPI_Offset', as computed by sizeof. */ #undef SIZEOF_MPI_OFFSET /* The size of `short', as computed by sizeof. */ #undef SIZEOF_SHORT /* The size of `void *', as computed by sizeof. */ #undef SIZEOF_VOID_P /* Define calling convention */ #undef STDCALL /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Define if tests with long double complex should be included */ #undef USE_LONG_DOUBLE_COMPLEX /* Define if only operations defined in MPI should be tested */ #undef USE_STRICT_MPI /* Version number of package */ #undef VERSION /* Define for Solaris 2.5.1 so the uint32_t typedef from , , or is not used. If the typedef were allowed, the #define below would cause a syntax error. */ #undef _UINT32_T /* Define for Solaris 2.5.1 so the uint64_t typedef from , , or is not used. If the typedef were allowed, the #define below would cause a syntax error. */ #undef _UINT64_T /* Define for Solaris 2.5.1 so the uint8_t typedef from , , or is not used. If the typedef were allowed, the #define below would cause a syntax error. */ #undef _UINT8_T /* Define to empty if `const' does not conform to ANSI C. */ #undef const /* Define to the type of a signed integer type of width exactly 16 bits if such a type exists and the standard includes do not define it. */ #undef int16_t /* Define to the type of a signed integer type of width exactly 32 bits if such a type exists and the standard includes do not define it. */ #undef int32_t /* Define to the type of a signed integer type of width exactly 64 bits if such a type exists and the standard includes do not define it. */ #undef int64_t /* Define to the type of a signed integer type of width exactly 8 bits if such a type exists and the standard includes do not define it. */ #undef int8_t /* Define to the equivalent of the C99 'restrict' keyword, or to nothing if this is not supported. Do not define if restrict is supported directly. */ #undef restrict /* Work around a bug in Sun C++: it does not support _Restrict or __restrict__, even though the corresponding Sun C compiler ends up with "#define restrict _Restrict" or "#define restrict __restrict__" in the previous line. Perhaps some future version of Sun C++ will work with restrict; if so, hopefully it defines __RESTRICT like Sun C does. */ #if defined __SUNPRO_CC && !defined __RESTRICT # define _Restrict # define __restrict__ #endif /* Define to the type of an unsigned integer type of width exactly 16 bits if such a type exists and the standard includes do not define it. */ #undef uint16_t /* Define to the type of an unsigned integer type of width exactly 32 bits if such a type exists and the standard includes do not define it. */ #undef uint32_t /* Define to the type of an unsigned integer type of width exactly 64 bits if such a type exists and the standard includes do not define it. */ #undef uint64_t /* Define to the type of an unsigned integer type of width exactly 8 bits if such a type exists and the standard includes do not define it. */ #undef uint8_t #endif mpi-testsuite-3.2+dfsg/include/mpicolltest.h0000644000175000017500000003463412620254305020525 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; -*- */ /* * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #ifndef MPICOLLTEST_H_INCLUDED #define MPICOLLTEST_H_INCLUDED /* This file defines MTest wrapper functions for MPI collectives. * Test uses MTest_Collective calls that are defined as blocking collective by * default, or as non-blocking version by compiling with -DUSE_MTEST_NBC. */ #include "mpi.h" #include "mpitestconf.h" /* Wrap up MTest_Collective calls by non-blocking collectives. * It requires MPI_VERSION >= 3. */ #if defined(USE_MTEST_NBC) && MPI_VERSION >= 3 static inline int MTest_Barrier(MPI_Comm comm) { int mpi_errno; MPI_Request req = MPI_REQUEST_NULL; mpi_errno = MPI_Ibarrier(comm, &req); if (mpi_errno != MPI_SUCCESS) return mpi_errno; mpi_errno = MPI_Wait(&req, MPI_STATUS_IGNORE); return mpi_errno; } static inline int MTest_Bcast(void *buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm) { int mpi_errno; MPI_Request req = MPI_REQUEST_NULL; mpi_errno = MPI_Ibcast(buffer, count, datatype, root, comm, &req); if (mpi_errno != MPI_SUCCESS) return mpi_errno; mpi_errno = MPI_Wait(&req, MPI_STATUS_IGNORE); return mpi_errno; } static inline int MTest_Gather(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm) { int mpi_errno; MPI_Request req = MPI_REQUEST_NULL; mpi_errno = MPI_Igather(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, root, comm, &req); if (mpi_errno != MPI_SUCCESS) return mpi_errno; mpi_errno = MPI_Wait(&req, MPI_STATUS_IGNORE); return mpi_errno; } static inline int MTest_Gatherv(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, const int *recvcounts, const int *displs, MPI_Datatype recvtype, int root, MPI_Comm comm) { int mpi_errno; MPI_Request req = MPI_REQUEST_NULL; mpi_errno = MPI_Igatherv(sendbuf, sendcount, sendtype, recvbuf, recvcounts, displs, recvtype, root, comm, &req); if (mpi_errno != MPI_SUCCESS) return mpi_errno; mpi_errno = MPI_Wait(&req, MPI_STATUS_IGNORE); return mpi_errno; } static inline int MTest_Scatter(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm) { int mpi_errno; MPI_Request req = MPI_REQUEST_NULL; mpi_errno = MPI_Iscatter(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, root, comm, &req); if (mpi_errno != MPI_SUCCESS) return mpi_errno; mpi_errno = MPI_Wait(&req, MPI_STATUS_IGNORE); return mpi_errno; } static inline int MTest_Scatterv(const void *sendbuf, const int *sendcounts, const int *displs, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm) { int mpi_errno; MPI_Request req = MPI_REQUEST_NULL; mpi_errno = MPI_Iscatterv(sendbuf, sendcounts, displs, sendtype, recvbuf, recvcount, recvtype, root, comm, &req); if (mpi_errno != MPI_SUCCESS) return mpi_errno; mpi_errno = MPI_Wait(&req, MPI_STATUS_IGNORE); return mpi_errno; } static inline int MTest_Allgather(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm) { int mpi_errno; MPI_Request req = MPI_REQUEST_NULL; mpi_errno = MPI_Iallgather(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm, &req); if (mpi_errno != MPI_SUCCESS) return mpi_errno; mpi_errno = MPI_Wait(&req, MPI_STATUS_IGNORE); return mpi_errno; } static inline int MTest_Allgatherv(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, const int *recvcounts, const int *displs, MPI_Datatype recvtype, MPI_Comm comm) { int mpi_errno; MPI_Request req = MPI_REQUEST_NULL; mpi_errno = MPI_Iallgatherv(sendbuf, sendcount, sendtype, recvbuf, recvcounts, displs, recvtype, comm, &req); if (mpi_errno != MPI_SUCCESS) return mpi_errno; mpi_errno = MPI_Wait(&req, MPI_STATUS_IGNORE); return mpi_errno; } static inline int MTest_Alltoall(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm) { int mpi_errno; MPI_Request req = MPI_REQUEST_NULL; mpi_errno = MPI_Ialltoall(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm, &req); if (mpi_errno != MPI_SUCCESS) return mpi_errno; mpi_errno = MPI_Wait(&req, MPI_STATUS_IGNORE); return mpi_errno; } static inline int MTest_Alltoallv(const void *sendbuf, const int *sendcounts, const int *sdispls, MPI_Datatype sendtype, void *recvbuf, const int *recvcounts, const int *rdispls, MPI_Datatype recvtype, MPI_Comm comm) { int mpi_errno; MPI_Request req = MPI_REQUEST_NULL; mpi_errno = MPI_Ialltoallv(sendbuf, sendcounts, sdispls, sendtype, recvbuf, recvcounts, rdispls, recvtype, comm, &req); if (mpi_errno != MPI_SUCCESS) return mpi_errno; mpi_errno = MPI_Wait(&req, MPI_STATUS_IGNORE); return mpi_errno; } static inline int MTest_Alltoallw(const void *sendbuf, const int *sendcounts, const int *sdispls, const MPI_Datatype * sendtypes, void *recvbuf, const int *recvcounts, const int *rdispls, const MPI_Datatype * recvtypes, MPI_Comm comm) { int mpi_errno; MPI_Request req = MPI_REQUEST_NULL; mpi_errno = MPI_Ialltoallw(sendbuf, sendcounts, sdispls, sendtypes, recvbuf, recvcounts, rdispls, recvtypes, comm, &req); if (mpi_errno != MPI_SUCCESS) return mpi_errno; mpi_errno = MPI_Wait(&req, MPI_STATUS_IGNORE); return mpi_errno; } static inline int MTest_Reduce(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm) { int mpi_errno; MPI_Request req = MPI_REQUEST_NULL; mpi_errno = MPI_Ireduce(sendbuf, recvbuf, count, datatype, op, root, comm, &req); if (mpi_errno != MPI_SUCCESS) return mpi_errno; mpi_errno = MPI_Wait(&req, MPI_STATUS_IGNORE); return mpi_errno; } static inline int MTest_Allreduce(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) { int mpi_errno; MPI_Request req = MPI_REQUEST_NULL; mpi_errno = MPI_Iallreduce(sendbuf, recvbuf, count, datatype, op, comm, &req); if (mpi_errno != MPI_SUCCESS) return mpi_errno; mpi_errno = MPI_Wait(&req, MPI_STATUS_IGNORE); return mpi_errno; } static inline int MTest_Reduce_scatter(const void *sendbuf, void *recvbuf, const int *recvcounts, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) { int mpi_errno; MPI_Request req = MPI_REQUEST_NULL; mpi_errno = MPI_Ireduce_scatter(sendbuf, recvbuf, recvcounts, datatype, op, comm, &req); if (mpi_errno != MPI_SUCCESS) return mpi_errno; mpi_errno = MPI_Wait(&req, MPI_STATUS_IGNORE); return mpi_errno; } static inline int MTest_Reduce_scatter_block(const void *sendbuf, void *recvbuf, int recvcount, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) { int mpi_errno; MPI_Request req = MPI_REQUEST_NULL; mpi_errno = MPI_Ireduce_scatter_block(sendbuf, recvbuf, recvcount, datatype, op, comm, &req); if (mpi_errno != MPI_SUCCESS) return mpi_errno; mpi_errno = MPI_Wait(&req, MPI_STATUS_IGNORE); return mpi_errno; } static inline int MTest_Scan(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) { int mpi_errno; MPI_Request req = MPI_REQUEST_NULL; mpi_errno = MPI_Iscan(sendbuf, recvbuf, count, datatype, op, comm, &req); if (mpi_errno != MPI_SUCCESS) return mpi_errno; mpi_errno = MPI_Wait(&req, MPI_STATUS_IGNORE); return mpi_errno; } static inline int MTest_Exscan(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) { int mpi_errno; MPI_Request req = MPI_REQUEST_NULL; mpi_errno = MPI_Iexscan(sendbuf, recvbuf, count, datatype, op, comm, &req); if (mpi_errno != MPI_SUCCESS) return mpi_errno; mpi_errno = MPI_Wait(&req, MPI_STATUS_IGNORE); return mpi_errno; } #else /* If USE_MTEST_NBC is not specified, or MPI_VERSION is less than 3, * wrap up MTest_Collective calls by traditional blocking collectives.*/ static inline int MTest_Barrier(MPI_Comm comm) { return MPI_Barrier(comm); } static inline int MTest_Bcast(void *buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm) { return MPI_Bcast(buffer, count, datatype, root, comm); } static inline int MTest_Gather(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm) { return MPI_Gather(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, root, comm); } static inline int MTest_Gatherv(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, const int *recvcounts, const int *displs, MPI_Datatype recvtype, int root, MPI_Comm comm) { return MPI_Gatherv(sendbuf, sendcount, sendtype, recvbuf, recvcounts, displs, recvtype, root, comm); } static inline int MTest_Scatter(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm) { return MPI_Scatter(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, root, comm); } static inline int MTest_Scatterv(const void *sendbuf, const int *sendcounts, const int *displs, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm) { return MPI_Scatterv(sendbuf, sendcounts, displs, sendtype, recvbuf, recvcount, recvtype, root, comm); } static inline int MTest_Allgather(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm) { return MPI_Allgather(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm); } static inline int MTest_Allgatherv(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, const int *recvcounts, const int *displs, MPI_Datatype recvtype, MPI_Comm comm) { return MPI_Allgatherv(sendbuf, sendcount, sendtype, recvbuf, recvcounts, displs, recvtype, comm); } static inline int MTest_Alltoall(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm) { return MPI_Alltoall(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm); } static inline int MTest_Alltoallv(const void *sendbuf, const int *sendcounts, const int *sdispls, MPI_Datatype sendtype, void *recvbuf, const int *recvcounts, const int *rdispls, MPI_Datatype recvtype, MPI_Comm comm) { return MPI_Alltoallv(sendbuf, sendcounts, sdispls, sendtype, recvbuf, recvcounts, rdispls, recvtype, comm); } static inline int MTest_Alltoallw(const void *sendbuf, const int *sendcounts, const int *sdispls, const MPI_Datatype * sendtypes, void *recvbuf, const int *recvcounts, const int *rdispls, const MPI_Datatype * recvtypes, MPI_Comm comm) { return MPI_Alltoallw(sendbuf, sendcounts, sdispls, sendtypes, recvbuf, recvcounts, rdispls, recvtypes, comm); } static inline int MTest_Reduce(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm) { return MPI_Reduce(sendbuf, recvbuf, count, datatype, op, root, comm); } static inline int MTest_Allreduce(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) { return MPI_Allreduce(sendbuf, recvbuf, count, datatype, op, comm); } static inline int MTest_Reduce_scatter(const void *sendbuf, void *recvbuf, const int *recvcounts, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) { return MPI_Reduce_scatter(sendbuf, recvbuf, recvcounts, datatype, op, comm); } static inline int MTest_Reduce_scatter_block(const void *sendbuf, void *recvbuf, int recvcount, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) { return MPI_Reduce_scatter_block(sendbuf, recvbuf, recvcount, datatype, op, comm); } static inline int MTest_Scan(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) { return MPI_Scan(sendbuf, recvbuf, count, datatype, op, comm); } static inline int MTest_Exscan(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) { return MPI_Exscan(sendbuf, recvbuf, count, datatype, op, comm); } #endif /* USE_MTEST_NBC */ #endif /* MPICOLLTEST_H_INCLUDED */ mpi-testsuite-3.2+dfsg/include/dtypes.h0000644000175000017500000000070612620254305017467 0ustar mbanckmbanck#ifndef MPITEST_DTYPES #define MPITEST_DTYPES void MTestDatatype2Generate(MPI_Datatype *, void **, void **, int *, int *, int *); void MTestDatatype2Allocate(MPI_Datatype **, void ***, void ***, int **, int **, int *); int MTestDatatype2Check(void *, void *, int); int MTestDatatype2CheckAndPrint(void *, void *, int, char *, int); void MTestDatatype2Free(MPI_Datatype *, void **, void **, int *, int *, int); void MTestDatatype2BasicOnly(void); #endif mpi-testsuite-3.2+dfsg/include/mpithreadtest.h0000644000175000017500000000252212620254305021032 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #ifndef MPITHREADTEST_H_INCLUDED #define MPITHREADTEST_H_INCLUDED #include "mpitestconf.h" /* Define routines to start a thread for different thread packages. The routine that is started is expected to return data when it exits; the type of this data is MTEST_THREAD_RETURN_TYPE */ #ifdef HAVE_WINDOWS_H #include #define MTEST_THREAD_RETURN_TYPE DWORD #define MTEST_THREAD_HANDLE HANDLE #define MTEST_THREAD_LOCK_TYPE HANDLE #elif defined(HAVE_PTHREAD_H) #define USE_PTHREADS 1 #include #define MTEST_THREAD_RETURN_TYPE void * #define MTEST_THREAD_HANDLE pthread_t #define MTEST_THREAD_LOCK_TYPE pthread_mutex_t #else #error Unknown Thread Package #endif /* A dummy retval that is ignored */ #define MTEST_THREAD_RETVAL_IGN 0 int MTest_Start_thread(MTEST_THREAD_RETURN_TYPE(*fn) (void *p), void *arg); int MTest_Join_threads(void); int MTest_thread_lock_create(MTEST_THREAD_LOCK_TYPE *); int MTest_thread_lock(MTEST_THREAD_LOCK_TYPE *); int MTest_thread_unlock(MTEST_THREAD_LOCK_TYPE *); int MTest_thread_lock_free(MTEST_THREAD_LOCK_TYPE *); int MTest_thread_barrier_init(void); int MTest_thread_barrier(int); int MTest_thread_barrier_free(void); #endif mpi-testsuite-3.2+dfsg/include/mpitest.h0000644000175000017500000001100512620254305017636 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #ifndef MPITEST_H_INCLUDED #define MPITEST_H_INCLUDED #include "mpitestconf.h" /* * Init and finalize test */ void MTest_Init(int *, char ***); void MTest_Init_thread(int *, char ***, int, int *); void MTest_Finalize(int); void MTestPrintError(int); void MTestPrintErrorMsg(const char[], int); void MTestPrintfMsg(int, const char[], ...); void MTestError(const char[]); int MTestReturnValue(int); /* * Utilities */ void MTestSleep(int); void MTestGetDbgInfo(int *dbgflag, int *verbose); /* * This structure contains the information used to test datatypes * buf is set to null when an MTestDatatype is created; the * InitBuf routine will allocate (if necessary) and initialize * the data. InitBuf may be called multiple times (this is particularly * important for recv bufs), in which case the buffer will only * be allocated if it has not already been created. */ typedef struct _MTestDatatype { MPI_Datatype datatype; void *buf; /* buffer to use in communication */ MPI_Aint count; /* count to use for this datatype */ int isBasic; /* true if the type is predefined */ int printErrors; /* true if errors should be printed * (used by the CheckBuf routines) */ /* The following is optional data that is used by some of * the derived datatypes */ int nblock, *index; /* stride, and blksize are in bytes */ MPI_Aint stride, blksize, *displ_in_bytes; int *displs, basesize; MPI_Datatype *old_datatypes; /* used in subarray */ int arr_sizes[2], arr_subsizes[2], arr_starts[2], order; void *(*InitBuf) (struct _MTestDatatype *); void *(*FreeBuf) (struct _MTestDatatype *); int (*CheckBuf) (struct _MTestDatatype *); } MTestDatatype; /* The max value of count must be very large to ensure that we * reach the long message algorithms. (The maximal count or block length * can be generated by 256K count is 4K or 32Kbytes respectively) */ #define MTEST_DATATYPE_FOR_EACH_COUNT(count) \ for (count = 1; count <= 262144; count *= 8) /* Setup the full version of datatype tests. * It generate tests for all basic datatypes and all derived datatypes except darray. */ void MTestInitFullDatatypes(void); /* Setup the minimum version of datatype tests. * It generate tests for all basic datatypes, vector and indexed. */ void MTestInitMinDatatypes(void); /* Setup the basic version of datatype tests. * It generate tests for all basic datatypes. */ void MTestInitBasicDatatypes(void); int MTestCheckRecv(MPI_Status *, MTestDatatype *); int MTestGetDatatypes(MTestDatatype *, MTestDatatype *, MPI_Aint); void MTestResetDatatypes(void); void MTestFreeDatatype(MTestDatatype *); const char *MTestGetDatatypeName(MTestDatatype *); int MTestGetDatatypeIndex(void); int MTestGetIntracomm(MPI_Comm *, int); int MTestGetIntracommGeneral(MPI_Comm *, int, int); int MTestGetIntercomm(MPI_Comm *, int *, int); int MTestGetComm(MPI_Comm *, int); int MTestTestIntercomm(MPI_Comm intercomm); int MTestTestIntracomm(MPI_Comm intracomm); int MTestTestComm(MPI_Comm comm); const char *MTestGetIntracommName(void); const char *MTestGetIntercommName(void); void MTestFreeComm(MPI_Comm *); int MTestSpawnPossible(int *); #ifdef HAVE_MPI_WIN_CREATE int MTestGetWin(MPI_Win *, int); const char *MTestGetWinName(void); void MTestFreeWin(MPI_Win *); #endif /* These macros permit overrides via: * make CPPFLAGS='-DMTEST_MPI_VERSION=X -DMTEST_MPI_SUBVERSION=Y' * where X and Y are the major and minor versions of the MPI standard that is * being tested. The override should work similarly if added to the CPPFLAGS at * configure time. */ #ifndef MTEST_MPI_VERSION #define MTEST_MPI_VERSION MPI_VERSION #endif #ifndef MTEST_MPI_SUBVERSION #define MTEST_MPI_SUBVERSION MPI_SUBVERSION #endif /* Makes it easier to conditionally compile test code for a particular minimum * version of the MPI Standard. Right now there is only a MIN flavor but it * would be easy to add MAX or EXACT flavors if they become necessary at some * point. Example usage: ------8<------- #if MTEST_HAVE_MIN_MPI_VERSION(2,2) ... test for some feature that is only available in MPI-2.2 or later ... #endif ------8<------- */ #define MTEST_HAVE_MIN_MPI_VERSION(major_,minor_) \ ((MTEST_MPI_VERSION == (major_) && MTEST_MPI_SUBVERSION >= (minor_)) || \ (MTEST_MPI_VERSION > (major_))) #endif mpi-testsuite-3.2+dfsg/README0000644000175000017500000002024712620254305015245 0ustar mbanckmbanckMPICH Test Suite This test suite is a *supplement* to other test suites, including the original MPICH testsuite, the Intel testsuite, and the IBM MPI test suite (or test suites derived from that test, including the MPI C++ tests). Building the Test Suite ======================= In many cases, configure will find the MPI implementation automatically. In some cases, it will need some help. For example: For IBM MPI, where the compilation commands are not mpicc and mpif77 etc.: ./configure CC=xlc MPICC=mpcc F77=xlf MPIF77=mpxlf CXX=xlC \ MPICXX="mpCC -cpp" FC=xlf90 MPIFC=mpxlf90 \ --disable-spawn \ --enable-strictmpi (or the _r versions of the compilers) If mpicc and friends are not in your default path (and you do not want to add them), you can specify the path with --with-mpi=. For example, if they are in /usr/local/mympi/bin, use ./configure --with-mpi=/usr/local/mympi (configure will append the bin to the path that you give). You may need to add MPI_SIZEOF_OFFSET=8 . The option "-cpp" is needed for at least some versions of mpCC to define the C++ bindings of the MPI routines. For implementations that do not implement all of MPI-2, there are --disable options, including --disable-spawn and --disable-cxx. To restrict tests to just what is defined in the MPI specification, use --enable-strictmpi . The script that runs the tests assumes that the MPI implementation supports mpiexec; you should consider this the first test of the implementation. Setting Options =============== The following environment variables will modify the behavior of the tests MPITEST_DEBUG - if set, output information for debugging the test suite MPITEST_VERBOSE - if set to an integer value, output messages whose level is at least that value (0 is a good choice here) MPITEST_RETURN_WITH_CODE - Set the return code from the test programs based on success or failure, with a zero for success and one for failure (value must be yes, YES, true, or TRUE to turn this on) MPITEST_THREADLEVEL_DEFAULT - Set the default thread level. Values are multiple, serialized, funneled, and single. Batch Systems ============= For systems that run applications through a batch system, the option "-batch" to the runtests script will create a script file that can be edited and submitted to the batch system. The script checktests can be run to summarize the results. Specifically, (assuming the bash shell, and that the directory "btest", a subdirectory of the test suite directory, is used for running the tests): export MPITEST_BATCHDIR=`pwd`/btest runtests -batch -tests=testlist ... edit btest/runtests.batch to make it a value batch submissions script ... run that script and wait for the batch job to complete cd btest && ../checktests If a program other than mpiexec is used in the batch form to run programs, then specify that to runtests: runtests -batch -mpiexec=aprun -tests=testlist (Here, aprun is the command used on Cray XE6 systems.) Note that some programs that are used to run MPI programs add extra output, which can confuse any tool that depends on clean output in STDOUT. Since such unfortunate behavior is common, the option -ignorebogus can be given to checktests: cd btest && ../checktests --ignorebogus See "More control over running tests" to see how to control how many processes per node on used. For example, on a Cray XE-6, this command line to runtests can be used: runtests -batch -tests=testlist -ppnarg="-N %d" -ppn=2 -showprogress \ -mpiexec=aprun This runs at most 2 processes per node. Note that this can take a long time to execute because it builds all of the executables required for the tests (over 800 of them!). The "-showprogress" flag lets you know that something is happening, but is not necessary. Controlling the Tests that are Run ================================== The tests are actually built and run by the script "runtests". This script can be given a file that contains a list of the tests to run. This file has two primary types of entries: directories: Enter directory and look for the file "testlist". Recursively run the contents of that file program names: Build and run that program Lines may also be commented out with "#". The simplest program line contains the name of the program and the number of MPI processes to use. For example, the following will build the program sendrecv1 and run it with 4 processes: sendrecv1 4 In addition, the program line can contain key=value pairs that provide special information about running the test. For example, sendflood 8 timeLimit=600 says to build and run the program sendflood with 8 MPI processes and permit the test to run for 600 seconds (by default, at least for MPICH, the default timelimit is 180 seconds). Other key=value pairs can be used to select whether a program should be run at all, depending on the abilities of the MPI implementation (this is particularly important for Fortran programs, since preprocessor support for Fortran is a non-standard extension to the Fortran language, and there are some compilers that would not accept Fortran programs that used the preprocessor). The most important key=value pairs are: timeLimit=n : Use a timelimit of n seconds arg=string : Run the program with string as an argument to the program mpiexecarg=string : Run the program with string as an argument to mpiexec env=name=value : Run the program with environment variable "name" given the value "value" mpiversion=x.y : Build and run the program only if the MPI version is at least x.y. For example, distgraph1 4 mpiversion=2.2 will build and run distgraph1 with 4 MPI processes only if the MPI version is at least 2.2. strict=bool : If bool is false, only build and run the program if --enable-strictmpi was not used in configuring the test suite. That is, a line such as neighb_coll 4 strict=false Says that this test is not valid for a strict MPI implementation; it contains extensions to the standard, or in the case of some MPICH development, MPIX routines resultTest=proc : This is used to change the way in which the success or failure of a test is evaluated. proc is one of several Perl subroutines defined within the runtest program. These are primarily used within the testsuite for tests programs exit with expected status values or that timeouts are in fact handled. More control over running tests =============================== You can provide a "processes per node" argument to the run command (typically mpiexec) with either options to "runtests" or environment variables. The two values are -ppnarg=string or MPITEST_PPNARG The string used to specify the number of processes per node. The number of processes to use will be substituted for the %d in the string. For example, export MPITEST_PPNARG="-ppn %d" -ppn=n or MPITEST_PPNMAX The maximum number of processes per node. For example runtests ... -ppn=2 This allows the runtests script to ensure that the value of the processes per node argument does not exceed the total number of processes; some run commands (e.g., aprun on Cray) require that the number of processes per node be no greater than the total number of processes. Note that for most systems it will be important to run the tests multiple times, using this option to ensure that the tests that involve more than one process are run each of the following cases: 1) Multiple MPI processes per chip (likely using shared memory to communicate between processes) 2) MPI processes on separate chips within the same node (also likely using shared memory between processes, but may use a different approach to handle the NUMA nature of this case) 3) MPI processes on separate nodes (likely using the best available interconnect). Note, this depends on the nature of the MPI implementation; these options make it easier to run the necessary cases. If you run only the first case, which is often the default case, you may not effectively test the MPI implementation. mpi-testsuite-3.2+dfsg/confdb/0000755000175000017500000000000012621010236015605 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/confdb/aclocal_cxx.m40000644000175000017500000001360012620254305020335 0ustar mbanckmbanckdnl PAC_CXX_SEARCH_LIST - expands to a whitespace separated list of C++ dnl compilers for use with AC_PROG_CXX that is more suitable for HPC software dnl packages AC_DEFUN([PAC_CXX_SEARCH_LIST],[$CCC icpc pgCC xlC pathCC g++ clang++ c++ cc++ cxx CC cl]) dnl PAC_PROG_CXX - reprioritize the C++ compiler search order dnl NOTE: this macro suffers from a basically intractable "expanded before it dnl was required" problem when libtool is also used AC_DEFUN([PAC_PROG_CXX],[ PAC_PUSH_FLAG([CXXFLAGS]) # This test uses the list from a recent PROG_CXX, but with the # addition of the Portland group, IBM, and Intel C++ compilers # (While the Intel icc compiler will compile C++ programs, it will # not *link* C++ object files unless there is at least one C++ source # file present on the command that performs the linking. icpc is the # Intel C++ compiler that both compiles and links C++ programs) AC_PROG_CXX([PAC_CXX_SEARCH_LIST]) PAC_POP_FLAG([CXXFLAGS]) ]) dnl This is from crypt.to/autoconf-archive, slightly modified. dnl It defines bool as int if it is not availalbe dnl AC_DEFUN([AX_CXX_BOOL], [AC_CACHE_CHECK(whether the compiler recognizes bool as a built-in type, ac_cv_cxx_bool, [AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_COMPILE([ int f(int x){return 1;} int f(char x){return 1;} int f(bool x){return 1;} ],[bool b = true; return f(b);], ac_cv_cxx_bool=yes, ac_cv_cxx_bool=no) AC_LANG_RESTORE ]) if test "$ac_cv_cxx_bool" != yes; then AC_DEFINE(bool,int,[define if bool is a built-in type]) fi ]) dnl This is from crypt.to/autoconf-archive, slightly modified (name defined) dnl AC_DEFUN([AX_CXX_EXCEPTIONS], [AC_CACHE_CHECK(whether the compiler supports exceptions, ac_cv_cxx_exceptions, [AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_COMPILE(,[try { throw 1; } catch (int i) { return i; }], ac_cv_cxx_exceptions=yes, ac_cv_cxx_exceptions=no) AC_LANG_RESTORE ]) if test "$ac_cv_cxx_exceptions" = yes; then AC_DEFINE(HAVE_CXX_EXCEPTIONS,,[define if the compiler supports exceptions]) fi ]) dnl This is from crypt.to/autoconf-archive dnl AC_DEFUN([AX_CXX_NAMESPACES], [AC_CACHE_CHECK(whether the compiler implements namespaces, ac_cv_cxx_namespaces, [AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_COMPILE([namespace Outer { namespace Inner { int i = 0; }}], [using namespace Outer::Inner; return i;], ac_cv_cxx_namespaces=yes, ac_cv_cxx_namespaces=no) AC_LANG_RESTORE ]) if test "$ac_cv_cxx_namespaces" = yes; then AC_DEFINE(HAVE_NAMESPACES,,[define if the compiler implements namespaces]) fi ]) dnl Some compilers support namespaces but don't know about std dnl AC_DEFUN([AX_CXX_NAMESPACE_STD], [AC_REQUIRE([AX_CXX_NAMESPACES]) AC_CACHE_CHECK(whether the compiler implements the namespace std, ac_cv_cxx_namespace_std, [ac_cv_cxx_namespace_std=no if test "$ac_cv_cxx_namespaces" = yes ; then AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_COMPILE([ #include using namespace std;], [cout << "message\n";], ac_cv_cxx_namespace_std=yes, ac_cv_cxx_namespace_std=no) AC_LANG_RESTORE fi ]) if test "$ac_cv_cxx_namespace_std" = yes; then AC_DEFINE(HAVE_NAMESPACE_STD,,[define if the compiler implements namespace std]) fi ]) dnl/*D dnl PAC_CXX_CHECK_COMPILER_OPTION - Check that a C++ compiler option is dnl accepted without warning messages dnl dnl Synopsis: dnl PAC_CXX_CHECK_COMPILER_OPTION(optionname,action-if-ok,action-if-fail) dnl dnl Output Effects: dnl dnl If no actions are specified, a working value is added to 'CXXOPTIONS' dnl dnl Notes: dnl This is now careful to check that the output is different, since dnl some compilers are noisy. dnl dnl We are extra careful to prototype the functions in case compiler options dnl that complain about poor code are in effect. dnl dnl Because this is a long script, we have ensured that you can pass a dnl variable containing the option name as the first argument. dnl D*/ AC_DEFUN([PAC_CXX_CHECK_COMPILER_OPTION],[ AC_MSG_CHECKING([whether C++ compiler accepts option $1]) pac_opt="$1" AC_LANG_PUSH([C++]) CXXFLAGS_orig="$CXXFLAGS" CXXFLAGS_opt="$pac_opt $CXXFLAGS" pac_result="unknown" AC_LANG_CONFTEST([AC_LANG_PROGRAM()]) CXXFLAGS="$CXXFLAGS_orig" rm -f pac_test1.log PAC_LINK_IFELSE_LOG([pac_test1.log], [], [ CXXFLAGS="$CXXFLAGS_opt" rm -f pac_test2.log PAC_LINK_IFELSE_LOG([pac_test2.log], [], [ PAC_RUNLOG_IFELSE([diff -b pac_test1.log pac_test2.log], [pac_result=yes],[pac_result=no]) ],[ pac_result=no ]) ], [ pac_result=no ]) AC_MSG_RESULT([$pac_result]) dnl Delete the conftest created by AC_LANG_CONFTEST. rm -f conftest.$ac_ext if test "$pac_result" = "yes" ; then AC_MSG_CHECKING([whether routines compiled with $pac_opt can be linked with ones compiled without $pac_opt]) pac_result=unknown CXXFLAGS="$CXXFLAGS_orig" rm -f pac_test3.log PAC_COMPILE_IFELSE_LOG([pac_test3.log], [ AC_LANG_SOURCE([ int foo(void); int foo(void){return 0;} ]) ],[ PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT]) saved_LIBS="$LIBS" LIBS="pac_conftest.$OBJEXT $LIBS" CXXFLAGS="$CXXFLAGS_opt" rm -f pac_test4.log PAC_LINK_IFELSE_LOG([pac_test4.log], [AC_LANG_PROGRAM()], [ PAC_RUNLOG_IFELSE([diff -b pac_test2.log pac_test4.log], [pac_result=yes], [pac_result=no]) ],[ pac_result=no ]) LIBS="$saved_LIBS" rm -f pac_conftest.$OBJEXT ],[ pac_result=no ]) AC_MSG_RESULT([$pac_result]) rm -f pac_test3.log pac_test4.log fi rm -f pac_test1.log pac_test2.log dnl Restore CXXFLAGS before 2nd/3rd argument commands are executed, dnl as 2nd/3rd argument command could be modifying CXXFLAGS. CXXFLAGS="$CXXFLAGS_orig" if test "$pac_result" = "yes" ; then ifelse([$2],[],[CXXOPTIONS="$CXXOPTIONS $1"],[$2]) else ifelse([$3],[],[:],[$3]) fi AC_LANG_POP([C++]) ]) mpi-testsuite-3.2+dfsg/confdb/aclocal_attr_alias.m40000644000175000017500000004507112620254305021665 0ustar mbanckmbanckdnl dnl Check for BSD or POSIZ style global symbol lister, nm. dnl If found, pac_path_NM_G contains the absolute athname of nm + options dnl pac_path_NM_G_type will be either POSIX or BSD. NM_G will be dnl pac_path_NM_G without the absolute path. Preference is BSD style. dnl dnl The test checks if nm accepts the known options and also if nm produces dnl the expected BSD or POSIX output format. dnl AC_DEFUN([PAC_PATH_NM_G],[ AC_MSG_CHECKING([for BSD/POSIX style global symbol lister]) AC_LANG_PUSH(C) AC_PATH_PROGS_FEATURE_CHECK(NM_G, nm, [ # Check if nm accepts -g and BSD or POSIX compatible flag. # Use the `sed 1q' to avoid HP-UX's unknown option message: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file # # AIX's sed does not accept \+, 1) instead of doing 's|a\+||', do 's|aa*||' # or 2) instead of 's|A \+B|AB|g', do 's|A *B|AB|g' # Check if nm accepts -g case `${ac_path_NM_G} -g /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) ac_path_NM_G="${ac_path_NM_G} -g" # Check if nm accepts -B case `${ac_path_NM_G} -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) AC_COMPILE_IFELSE([ AC_LANG_SOURCE([int iglobal;]) ],[ changequote(,) case `${ac_path_NM_G} -B conftest.$OBJEXT | sed -e 's|[0-9][0-9]* *[A-Z] *iglobal|XXXX|g'` in *XXXX*) pac_path_NM_G="${ac_path_NM_G} -B" pac_path_NM_G_type="BSD" ;; esac changequote([,]) ]) ;; *) # Check if nm accepts -P case `${ac_path_NM_G} -P /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) AC_COMPILE_IFELSE([ AC_LANG_SOURCE([int iglobal;]) ],[ changequote(,) case `${ac_path_NM_G} -P conftest.$OBJEXT | sed -e 's|iglobal *[A-Z] *[0-9][0-9]*|XXXX|g'` in *XXXX*) pac_path_NM_G="${ac_path_NM_G} -P" pac_path_NM_G_type="POSIX" ;; esac changequote([,]) ]) ;; esac # Endof case `${ac_path_NM_G} -P ;; esac # Endof case `${ac_path_NM_G} -B ;; esac # Endof case `${ac_path_NM_G} -g if test "X$pac_path_NM_G" != "X" ; then AC_MSG_RESULT([$pac_path_NM_G_type style,$pac_path_NM_G]) NM_G="`echo $pac_path_NM_G | sed -e 's|^.*nm |nm |g'`" else AC_MSG_RESULT(no) fi ac_cv_path_NM_G=${ac_path_NM_G} ac_path_NM_G_found=: ], [AC_MSG_RESULT(no)], [$PATH$PATH_SEPARATOR/usr/ccs/bin/elf$PATH_SEPARATOR/usr/ccs/bin$PATH_SEPARATOR/usr/ucb$PATH_SEPARATOR/bin]) AC_LANG_POP(C) ]) dnl Endof AC_DEFUN([PAC_PATH_NM_G] dnl dnl PAC_C_MULTI_ATTR_ALIAS() dnl dnl The checks if multiple __attribute__((alias)) is available dnl If the multiple __attribute((alias)) support is found, dnl pac_c_multi_attr_alias=yes is set. dnl dnl The default is to do a runtime test. When cross_compiling=yes, dnl pac_path_NM_G will be used to determine the test result. dnl If CFLAGS(or CPPFLAGS) contains ATTR_ALIAS_DEBUG, the runtime will print dnl out addresses of struct(s) for debugging purpose. dnl dnl AC_DEFUN([PAC_C_MULTI_ATTR_ALIAS],[ AC_REQUIRE([PAC_PATH_NM_G]) AC_LANG_PUSH(C) AC_CHECK_HEADERS([stdio.h]) AC_MSG_CHECKING([for multiple __attribute__((alias)) support]) #Compile the "other" __attribute__ object file. AC_COMPILE_IFELSE([ AC_LANG_SOURCE([ #if defined(HAVE_STDIO_H) || defined(STDC_HEADERS) #include #endif struct mpif_cmblk_t_ { int imember; }; typedef struct mpif_cmblk_t_ mpif_cmblk_t; /* NOT initialize these structure so it appears in BSS or as COMMON symbols */ mpif_cmblk_t mpifcmb; mpif_cmblk_t MPIFCMB; /* Do the test in this file instead in the file where __attribute__((alias)) is used. This is needed for pgcc since pgcc seems to define aliased symbols if they are in the same file. */ /* We can't do the following comparision in one test: ilogical = (( &mpifcmb == ptr && &MPIFCMB == ptr ) ? TRUE : FALSE) ; because some compiler, like gcc 4.4.2's -O* optimizes the code such that the ilogical expression is FALSE. The likely reason is that mpifcmb and MPIFCMB are defined in the same scope in which C optimizer may have treated them as different objects (with different addresses), &mpifcmb != &MPIFCMB, before actually running the test and hence the illogical expression is assumed to be always FALSE. The solution taken here is to prevent the optimizer the opportunity to equate &mpifcmb and &MPIFCMB (in same scope), e.g. using 2 separate tests and combine the test results in a different scope. */ int same_addrs1( void *ptr ); int same_addrs1( void *ptr ) { #if defined(ATTR_ALIAS_DEBUG) printf( "others: addr(mpifcmb)=%p, addr(input ptr)=%p\n", &mpifcmb, ptr ); #endif return ( &mpifcmb == ptr ? 1 : 0 ); } int same_addrs2( void *ptr ); int same_addrs2( void *ptr ) { #if defined(ATTR_ALIAS_DEBUG) printf( "others: addr(MPIFCMB)=%p, addr(input ptr)=%p\n", &MPIFCMB, ptr ); #endif return ( &MPIFCMB == ptr ? 1 : 0 ); } ]) ],[ rm -f pac_conftest_other.$OBJEXT PAC_RUNLOG([cp conftest.$OBJEXT pac_conftest_other.$OBJEXT]) test -s pac_conftest_other.$OBJEXT && pac_c_attr_alias_other=yes dnl cp conftest.$ac_ext pac_conftest_other.$ac_ext dnl echo dnl echo "pac_conftest_other.$OBJEXT" dnl nm -P -g pac_conftest_other.$OBJEXT | grep -i "mpifcmb" ],[ pac_c_attr_alias_other=no ]) dnl Endof AC_COMPILE_IFELSE pac_c_attr_alias_main=no if test "$pac_c_attr_alias_other" = "yes" ; then # Push LIBS for later restoration. PAC_PUSH_FLAG([LIBS]) LIBS="pac_conftest_other.$OBJEXT $LIBS" # Link the "other" __attribute__ object file. AC_LINK_IFELSE([ AC_LANG_PROGRAM([ #if defined(HAVE_STDIO_H) || defined(STDC_HEADERS) #include #endif struct mpif_cmblk_t_ { int imember; }; typedef struct mpif_cmblk_t_ mpif_cmblk_t; mpif_cmblk_t mpifcmbr = {0}; extern mpif_cmblk_t MPIFCMB __attribute__ ((alias("mpifcmbr"))); extern mpif_cmblk_t mpifcmb __attribute__ ((alias("mpifcmbr"))); extern int same_addrs1( void *ptr ); extern int same_addrs2( void *ptr ); ],[ int iaddr = 0; #if defined(ATTR_ALIAS_DEBUG) printf( "main: addr(mpifcmbr) = %p\n", &mpifcmbr ); printf( "main: addr(mpifcmb) = %p\n", &mpifcmb ); printf( "main: addr(MPIFCMB) = %p\n", &MPIFCMB ); #endif iaddr = same_addrs1( &mpifcmbr ) && same_addrs2( &mpifcmbr ); FILE *file = fopen( "pac_conftestval", "w" ); if (!file) return 1; fprintf( file, "%d\n", iaddr ); ]) ],[ rm -f pac_conftest_main$EXEEXT PAC_RUNLOG([cp conftest$EXEEXT pac_conftest_main$EXEEXT]) test -x pac_conftest_main$EXEEXT && pac_c_attr_alias_main=yes dnl cp conftest.$ac_ext pac_conftest_main.$ac_ext dnl echo dnl echo "pac_conftest_main$EXEEXT" dnl nm -P -g pac_conftest_main$EXEEXT | grep -i "mpifcmb" ],[ pac_c_attr_alias_main=no dnl cp conftest.$ac_ext pac_conftest_main.$ac_ext ]) dnl Endof AC_LINK_IFELSE # Restore the previously pushed LIBS PAC_POP_FLAG([LIBS]) rm -f pac_conftest_other.$OBJEXT fi dnl Endof if test "$pac_c_attr_alias_other" = "yes" if test "$pac_c_attr_alias_main" = "yes" ; then if test "$cross_compiling" = "yes" ; then changequote(,) # echo "PAC CROSS-COMPILING" dnl # POSIX NM = nm -P format dnl if test "$pac_path_NM_G_type" = "POSIX" ; then addrs=`${pac_path_NM_G} ./pac_conftest_main$EXEEXT | grep -i mpifcmb | sed -e 's% *[a-zA-Z][a-zA-Z]* *[a-zA-Z] *\([0-9abcdef][0-9abcdef]*\).*%\1%g'` fi # BSD NM = nm -B format dnl if test "$pac_path_NM_G_type" = "BSD" ; then addrs=`${pac_path_NM_G} -g ./pac_conftest_main$EXEEXT | grep -i mpifcmb | sed -e "s% *\([0-9abcdef][0-9abcdef]*\) *[a-zA-Z] *[a-zA-Z][a-zA-A]*.*%\1%g"` fi changequote([,]) cmp_addr="" diff_addrs=no for addr in ${addrs} ; do if test "X${cmp_addr}" != "X" ; then if test "${cmp_addr}" != "${addr}" ; then diff_addrs=yes break fi else cmp_addr=${addr} fi done if test "$diff_addrs" != "yes" ; then dnl echo "Same addresses. Multiple aliases support" AC_MSG_RESULT([${NM_G} says yes]) pac_c_multi_attr_alias=yes else dnl echo "Different addresses. No multiple aliases support." AC_MSG_RESULT([${NM_G} says no]) pac_c_multi_attr_alias=no fi else # if test "$cross_compiling" != "yes" rm -f pac_conftestval ac_try="./pac_conftest_main$EXEEXT" if AC_TRY_EVAL(ac_try) ; then pac_c_attr_alias_val=0 if test -s pac_conftestval ; then eval pac_c_attr_alias_val=`cat pac_conftestval` fi if test "$pac_c_attr_alias_val" -eq 1 ; then AC_MSG_RESULT(yes) pac_c_multi_attr_alias=yes else AC_MSG_RESULT(no) pac_c_multi_attr_alias=no fi rm -f pac_conftestval fi fi dnl Endof if test "$cross_compiling" = "yes" rm -f pac_conftest_main$EXEEXT else AC_MSG_RESULT(no! link failure) pac_c_multi_attr_alias=no fi dnl Endof if test "$pac_c_attr_alias_main" = "yes" AC_LANG_POP(C) ]) dnl Endof AC_DEFUN([PAC_C_MULTI_ATTR_ALIAS] dnl dnl PAC_C_ATTR_ALIGNED() dnl dnl Check if __attribute__((aligned)) support is there. dnl If so, set pac_c_attr_aligned=yes. dnl dnl Do a link test instead of compile test to check if the linker dnl would emit an error. dnl AC_DEFUN([PAC_C_ATTR_ALIGNED],[ AC_LANG_PUSH(C) AC_MSG_CHECKING([for __attribute__((aligned)) support]) #Link the __attribute__ object file. AC_LINK_IFELSE([ AC_LANG_PROGRAM([ struct mpif_cmblk_t_ { int imembers[5]; }; typedef struct mpif_cmblk_t_ mpif_cmblk_t; mpif_cmblk_t mpifcmbr __attribute__((aligned)) = {0}; ],[]) ],[pac_c_attr_aligned=yes], [pac_c_attr_aligned=no]) AC_MSG_RESULT([$pac_c_attr_aligned]) AC_LANG_POP(C) ]) dnl dnl PAC_F2C_ATTR_ALIGNED_SIZE(ARRAY_SIZE, [OUTPUT_VAR], [MIN_ALIGNMENT]) dnl dnl ARRAY_SIZE : Size of the integer array within the fortran commmon block. dnl OUTPUT_VAR : Optional variable to be set. dnl if test succeeds, set OUTPUT_VAR=$pac_f2c_attr_aligned_str. dnl if test fails, set OUTPUT_VAR="unknown". dnl MIN_ALIGNMENT : Optional value. dnl Minimum alignment size to be used in OUTPUT_VAR. dnl pac_f2c_attr_aligned_str won't be modified. dnl dnl "pac_f2c_attr_aligned_str" will be set with dnl 1) __attribute__((aligned(ALIGNMENT_SIZE))), dnl 2) __attribute__((aligned)). dnl 3) "", i.e. empty string. dnl dnl 2) means the test can't find a good alignment value, but both the Fortran dnl and C compilers are OK with "aligned" which in principle means the C dnl compiler will pick the maximum useful alignment supported by the dnl architecture. dnl 3) means that the test has failed to find the alignment. dnl AC_DEFUN([PAC_F2C_ATTR_ALIGNED_SIZE],[ cmblksize=$1 AC_MSG_CHECKING([the minimum alignment of Fortran common block of $cmblksize integers]) dnl To find the minmium alignment of Fortran common block (of integer array) dnl as seen by C object file, C object files of various (typical) alignments dnl are linked to the Fortran code using the common block of integer array. # dnl Since the incorrect alignment results only a warning messages from the dnl fortran compiler(or linker), so we use "diff" to compare the fortran dnl compiler/linker output. We cannot use AC_LANG_WERROR, dnl i.e. ac_fc_werror_flag=yes, because compiler like pgf77 at version 10.x) dnl has non-zero stderr output if a fortran program is used in the linking. dnl The stderr contains the name of fortran program even if the linking is dnl successful. We could avoid the non-zero stderr output in pgf77 by dnl compiling everthing into object files and linking all the object files dnl with pgf77. Doing that would need us to use AC_TRY_EVAL instead of dnl AC_LINK_IFELSE, so "diff" approach is used instead. # dnl Using diff of compiler(linker) output requires a reference output file dnl as the base of diff. The process of creating this reference output file dnl has to be exactly the same as the testing process, because pgf77 has dnl the following weird behavour dnl pgf77 -o ftest ftest.f => when $?=0 with zero stderr output dnl pgf77 -o ftest ftest.f dummy.o => when $?=0 with non-zero stderr output. dnl stderr has "ftest.f:". dnl # First create a fortran CONFTEST which will be used repeatedly. AC_LANG_PUSH([Fortran]) dnl AC_LANG_PUSH([Fortran 77]) AC_LANG_CONFTEST([ AC_LANG_SOURCE([ program fconftest integer isize parameter (isize=$cmblksize) integer status_array(isize) common /mpifcmb/ status_array save /mpifcmb/ end ]) ]) AC_LANG_POP([Fortran]) dnl AC_LANG_POP([Fortran 77]) dnl dnl dnl # Compile a C dummy.$OBJEXT and link with Fortran test program to create # a reference linker output file, pac_align0.log, as the base of "diff". AC_LANG_PUSH([C]) AC_COMPILE_IFELSE([AC_LANG_SOURCE([])],[ cp conftest.$ac_ext pac_conftest.c PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT]) PAC_PUSH_FLAG([LIBS]) LIBS="pac_conftest.$OBJEXT $LIBS" AC_LANG_PUSH([Fortran]) dnl AC_LANG_PUSH([Fortran 77]) PAC_PUSH_FLAG([ac_link]) ac_link="`echo $ac_link | sed -e 's|>.*$|> $pac_logfile 2>\&1|g'`" pac_logfile="pac_align0.log" rm -f $pac_logfile AC_LINK_IFELSE([],[ pac_f2c_alignedn_diffbase=yes ],[ pac_f2c_alignedn_diffbase=no ]) # Be sure NOT to remove the conftest.f which is still needed for later use. # rm -f conftest.$ac_ext # Restore everything in autoconf that has been overwritten PAC_POP_FLAG([ac_link]) # restore previously pushed LIBS PAC_POP_FLAG([LIBS]) AC_LANG_POP([Fortran]) dnl AC_LANG_POP([Fortran 77]) ],[ pac_f2c_alignedn_diffbase=no ]) AC_LANG_POP([C]) dnl dnl if test "$pac_f2c_alignedn_diffbase" = "yes" ; then # Initialize pac_result_str to empty string since part of the test # depends on pac_result_str is empty or non-empty string. pac_result_str="" # Initialize pac_f2c_attr_aligned_str to empty string and # it will remain as empty string if the following test fails. pac_f2c_attr_aligned_str="" for asize in 4 8 16 32 64 128 max ; do if test "$asize" != "max" ; then pac_attr_aligned_str="__attribute__((aligned($asize)))" else pac_attr_aligned_str="__attribute__((aligned))" fi AC_LANG_PUSH([C]) #Compile the __attribute__ object file. AC_COMPILE_IFELSE([ AC_LANG_SOURCE([ changequote(,) struct mpif_cmblk_t_ { $MPI_FINT imembers[$cmblksize]; }; changequote([,]) typedef struct mpif_cmblk_t_ mpif_cmblk_t; mpif_cmblk_t mpifcmbr $pac_attr_aligned_str = {0}; extern mpif_cmblk_t _CMPIFCMB __attribute__ ((alias("mpifcmbr"))); extern mpif_cmblk_t MPIFCMB __attribute__ ((alias("mpifcmbr"))); extern mpif_cmblk_t MPIFCMB_ __attribute__ ((alias("mpifcmbr"))); extern mpif_cmblk_t _Cmpifcmb __attribute__ ((alias("mpifcmbr"))); extern mpif_cmblk_t mpifcmb __attribute__ ((alias("mpifcmbr"))); extern mpif_cmblk_t mpifcmb_ __attribute__ ((alias("mpifcmbr"))); ]) ],[ cp conftest.$ac_ext pac_conftest.c PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT]) PAC_PUSH_FLAG([LIBS]) LIBS="pac_conftest.$OBJEXT $LIBS" AC_LANG_PUSH([Fortran]) dnl AC_LANG_PUSH([Fortran 77]) PAC_PUSH_FLAG([ac_link]) ac_link="`echo $ac_link | sed -e 's|>.*$|> $pac_logfile 2>\&1|g'`" pac_logfile="pac_align1.log" rm -f $pac_logfile # Use conftest.f created in CONFTEST. AC_LINK_IFELSE([],[ PAC_RUNLOG_IFELSE([diff -b pac_align0.log pac_align1.log],[ pac_attr_alignedn=yes ],[ pac_attr_alignedn=no cat $pac_logfile >&AS_MESSAGE_LOG_FD echo "failed C program was:" >&AS_MESSAGE_LOG_FD cat pac_conftest.c >&AS_MESSAGE_LOG_FD echo "failed Fortran program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&AS_MESSAGE_LOG_FD ]) ],[ pac_attr_alignedn=no ]) # Restore everything in autoconf that has been overwritten PAC_POP_FLAG([ac_link]) # restore previously pushed LIBS PAC_POP_FLAG([LIBS]) AC_LANG_POP([Fortran]) dnl AC_LANG_POP([Fortran 77]) # remove previously generated object file and C file. rm -f pac_conftest.$OBJEXT pac_conftest.c rm -f $pac_logfile if test "$pac_attr_alignedn" = yes ; then ifelse([$3],[],[ pac_result_str="$asize" pac_f2c_attr_aligned_str="$pac_attr_aligned_str" break ],[ if test "$asize" != "max" -a "$asize" -lt "$3" ; then if test "X$pac_result_str" = "X" ; then pac_result_str="$asize" pac_f2c_attr_aligned_str="$pac_attr_aligned_str" fi continue else pac_f2c_attr_aligned_str="$pac_attr_aligned_str" if test "X$pac_result_str" != "X" ; then pac_result_str="$pac_result_str, too small! reset to $asize" else pac_result_str="$asize" fi break fi ]) fi ], [ pac_attr_alignedn=no ]) AC_LANG_POP([C]) done ifelse([$2],[],[],[$2="$pac_f2c_attr_aligned_str"]) else pac_result_str="" # Since the test fails, set pac_f2c_attr_aligned_str to empty string. pac_f2c_attr_aligned_str="" fi if test "X$pac_result_str" != "X" ; then AC_MSG_RESULT([$pac_result_str]) else AC_MSG_RESULT([unknown]) fi rm -f pac_align0.log ]) dnl mpi-testsuite-3.2+dfsg/confdb/aclocal_f77old.m40000644000175000017500000003155212620254305020643 0ustar mbanckmbanckdnl/*D dnl PAC_PROG_F77_CMDARGS - Determine how to access the command line from dnl Fortran 77 dnl dnl Output Effects: dnl The following variables are set: dnl.vb dnl F77_GETARG - Statement to get an argument i into string s dnl F77_IARGC - Routine to return the number of arguments dnl FXX_MODULE - Module command when using Fortran 90 compiler dnl F77_GETARGDECL - Declaration of routine used for F77_GETARG dnl F77_GETARG_FFLAGS - Flags needed when compiling/linking dnl F77_GETARG_LDFLAGS - Flags needed when linking dnl.ve dnl If 'F77_GETARG' has a value, then that value and the values for these dnl other symbols will be used instead. If no approach is found, all of these dnl variables will have empty values. dnl If no other approach works and a file 'f77argdef' is in the directory, dnl that file will be sourced for the values of the above four variables. dnl dnl In most cases, you should add F77_GETARG_FFLAGS to the FFLAGS variable dnl and F77_GETARG_LDFLAGS to the LDFLAGS variable, to ensure that tests are dnl performed on the compiler version that will be used. dnl dnl 'AC_SUBST' is called for all six variables. dnl dnl One complication is that on systems with multiple Fortran compilers, dnl some libraries used by one Fortran compiler may have been (mis)placed dnl in a common location. We have had trouble with libg2c in particular. dnl To work around this, we test whether iargc etc. work first. This dnl will catch most systems and will speed up the tests. dnl dnl Next, the libraries are only added if they are needed to complete a dnl link; they aren''t added just because they exist. dnl dnl f77argdef dnl D*/ dnl dnl Random notes dnl You can export the command line arguments from C to the g77 compiler dnl using dnl extern char **__libc_argv; dnl extern int __libc_argc; dnl f_setarg( __libc_argc, __libc_argv ); dnl AC_DEFUN([PAC_PROG_F77_CMDARGS],[ found_cached="yes" AC_MSG_CHECKING([for routines to access the command line from Fortran 77]) AC_CACHE_VAL(pac_cv_prog_f77_cmdarg, [ AC_MSG_RESULT([searching...]) found_cached="no" # First, we perform a quick check. Does iargc and getarg work? fxx_module="${FXX_MODULE:-}" f77_getargdecl="${F77_GETARGDECL:-external getarg}" f77_getarg="${F77_GETARG:-call GETARG(i,s)}" f77_iargc="${F77_IARGC:-IARGC()}" # # Grumble. The Absoft Fortran compiler computes i - i as 0 and then # 1.0 / 0 at compile time, even though the code may never be executed. # What we need is a way to generate an error, so the second usage of i # was replaced with f77_iargc. cat > conftest.f </dev/null 2>&1 ; then found_answer="yes" FXX_MODULE="$fxx_module" F77_GETARGDECL="$f77_getargdecl" F77_GETARG="$f77_getarg" F77_IARGC="$f77_iargc" AC_MSG_RESULT(yes) fi fi fi if test $found_answer = "no" ; then AC_MSG_RESULT(no) # Grumph. Here are a bunch of different approaches # We have several axes the check: # Library to link with (none, -lU77 (HPUX), -lg2c (LINUX f77)) # PEPCF90 (Intel ifc) # The first line is a dummy # (we experimented with using a , but this caused other # problems because we need in the IFS) trial_LIBS="0 -lU77 -lPEPCF90" if test "$NOG2C" != "1" ; then trial_LIBS="$trial_LIBS -lg2c" fi # Discard libs that are not availble: save_IFS="$IFS" # Make sure that IFS includes a space, or the tests that run programs # may fail IFS=" "" " save_trial_LIBS="$trial_LIBS" trial_LIBS="" cat > conftest.f <, the space is important # To make the Absoft f77 and f90 work together, we need to prefer the # upper case versions of the arguments. They also require libU77. # -YCFRL=1 causes Absoft f90 to work with g77 and similar (f2c-based) # Fortran compilers # # Problem: The Intel efc compiler hangs when presented with -N109 . # The only real fix for this is to detect this compiler and exclude # the test. We may want to reorganize these tests so that if we # can compile code without special options, we never look for them. # using_intel_efc="no" pac_test_msg=`$F77 -V 2>&1 | grep 'Intel(R) Fortran Itanium'` if test "$pac_test_msg" != "" ; then using_intel_efc="yes" fi if test "$using_intel_efc" = "yes" ; then trial_FLAGS="000" else trial_FLAGS="000 -N109 -f -YEXT_NAMES=UCS -YEXT_NAMES=LCS -YCFRL=1 +U77" fi # Discard options that are not available: # (IFS already saved above) IFS=" "" " save_trial_FLAGS="$trial_FLAGS" trial_FLAGS="" for flag in $save_trial_FLAGS ; do if test "$flag" = " " -o "$flag" = "000" ; then opt_ok="yes" else PAC_F77_CHECK_COMPILER_OPTION($flag,opt_ok=yes,opt_ok=no) fi if test "$opt_ok" = "yes" ; then if test "$flag" = " " -o "$flag" = "000" ; then fflag="" else fflag="$flag" fi # discard options that don't allow mixed-case name matching cat > conftest.f < conftest.f </dev/null 2>&1 ; then found_answer="yes" fi else found_answer="yes" fi fi IFS=" "" " if test "$found_answer" = "yes" ; then AC_MSG_RESULT([yes]) pac_cv_prog_f77_cmdarg="$MSG" pac_cv_prog_f77_cmdarg_fflags="$flags" pac_cv_prog_f77_cmdarg_ldflags="$libs" break else AC_MSG_RESULT([no]) echo "configure: failed program was:" >&AC_FD_CC cat conftest.f >&AC_FD_CC fi done done IFS="$save_IFS" rm -f conftest.* trial=`expr $trial + 1` done fi pac_cv_F77_GETARGDECL="$F77_GETARGDECL" pac_cv_F77_IARGC="$F77_IARGC" pac_cv_F77_GETARG="$F77_GETARG" pac_cv_FXX_MODULE="$FXX_MODULE" ]) if test "$found_cached" = "yes" ; then AC_MSG_RESULT([$pac_cv_prog_f77_cmdarg]) elif test -z "$pac_cv_F77_IARGC" ; then AC_MSG_WARN([Could not find a way to access the command line from Fortran 77]) fi # Set the variable values based on pac_cv_prog_xxx F77_GETARGDECL="$pac_cv_F77_GETARGDECL" F77_IARGC="$pac_cv_F77_IARGC" F77_GETARG="$pac_cv_F77_GETARG" FXX_MODULE="$pac_cv_FXX_MODULE" F77_GETARG_FFLAGS="$pac_cv_prog_f77_cmdarg_fflags" F77_GETARG_LDFLAGS="$pac_cv_prog_f77_cmdarg_ldflags" AC_SUBST(F77_GETARGDECL) AC_SUBST(F77_IARGC) AC_SUBST(F77_GETARG) AC_SUBST(FXX_MODULE) AC_SUBST(F77_GETARG_FFLAGS) AC_SUBST(F77_GETARG_LDFLAGS) ]) mpi-testsuite-3.2+dfsg/confdb/ax_prefix_config_h.m40000644000175000017500000002170012620254305021676 0ustar mbanckmbanck# =========================================================================== # http://autoconf-archive.cryp.to/ax_prefix_config_h.html # =========================================================================== # # SYNOPSIS # # AX_PREFIX_CONFIG_H [(OUTPUT-HEADER [,PREFIX [,ORIG-HEADER]])] # # DESCRIPTION # # This is a new variant from ac_prefix_config_ this one will use a # lowercase-prefix if the config-define was starting with a # lowercase-char, e.g. "#define const", "#define restrict", or "#define # off_t", (and this one can live in another directory, e.g. # testpkg/config.h therefore I decided to move the output-header to be the # first arg) # # takes the usual config.h generated header file; looks for each of the # generated "#define SOMEDEF" lines, and prefixes the defined name (ie. # makes it "#define PREFIX_SOMEDEF". The result is written to the output # config.header file. The PREFIX is converted to uppercase for the # conversions. # # Defaults: # # OUTPUT-HEADER = $PACKAGE-config.h # PREFIX = $PACKAGE # ORIG-HEADER, from AM_CONFIG_HEADER(config.h) # # Your configure.ac script should contain both macros in this order, and # unlike the earlier variations of this prefix-macro it is okay to place # the AX_PREFIX_CONFIG_H call before the AC_OUTPUT invokation. # # Example: # # AC_INIT(config.h.in) # config.h.in as created by "autoheader" # AM_INIT_AUTOMAKE(testpkg, 0.1.1) # makes #undef VERSION and PACKAGE # AM_CONFIG_HEADER(config.h) # prep config.h from config.h.in # AX_PREFIX_CONFIG_H(mylib/_config.h) # prep mylib/_config.h from it.. # AC_MEMORY_H # makes "#undef NEED_MEMORY_H" # AC_C_CONST_H # makes "#undef const" # AC_OUTPUT(Makefile) # creates the "config.h" now # # and also mylib/_config.h # # if the argument to AX_PREFIX_CONFIG_H would have been omitted then the # default outputfile would have been called simply "testpkg-config.h", but # even under the name "mylib/_config.h" it contains prefix-defines like # # #ifndef TESTPKG_VERSION # #define TESTPKG_VERSION "0.1.1" # #endif # #ifndef TESTPKG_NEED_MEMORY_H # #define TESTPKG_NEED_MEMORY_H 1 # #endif # #ifndef _testpkg_const # #define _testpkg_const _const # #endif # # and this "mylib/_config.h" can be installed along with other # header-files, which is most convenient when creating a shared library # (that has some headers) where some functionality is dependent on the # OS-features detected at compile-time. No need to invent some # "mylib-confdefs.h.in" manually. :-) # # Note that some AC_DEFINEs that end up in the config.h file are actually # self-referential - e.g. AC_C_INLINE, AC_C_CONST, and the AC_TYPE_OFF_T # say that they "will define inline|const|off_t if the system does not do # it by itself". You might want to clean up about these - consider an # extra mylib/conf.h that reads something like: # # #include # #ifndef _testpkg_const # #define _testpkg_const const # #endif # # and then start using _testpkg_const in the header files. That is also a # good thing to differentiate whether some library-user has starting to # take up with a different compiler, so perhaps it could read something # like this: # # #ifdef _MSC_VER # #include # #else # #include # #endif # #ifndef _testpkg_const # #define _testpkg_const const # #endif # # LAST MODIFICATION # # 2008-04-12 # # COPYLEFT # # Copyright (c) 2008 Guido U. Draheim # Copyright (c) 2008 Marten Svantesson # Copyright (c) 2008 Gerald Point # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation; either version 2 of the License, or (at your # option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General # Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . # # As a special exception, the respective Autoconf Macro's copyright owner # gives unlimited permission to copy, distribute and modify the configure # scripts that are the output of Autoconf when processing the Macro. You # need not follow the terms of the GNU General Public License when using # or distributing such scripts, even though portions of the text of the # Macro appear in them. The GNU General Public License (GPL) does govern # all other use of the material that constitutes the Autoconf Macro. # # This special exception to the GPL applies to versions of the Autoconf # Macro released by the Autoconf Macro Archive. When you make and # distribute a modified version of the Autoconf Macro, you may extend this # special exception to the GPL to apply to your modified version as well. AC_DEFUN([AX_PREFIX_CONFIG_H],[dnl AC_BEFORE([AC_CONFIG_HEADERS],[$0])dnl AC_CONFIG_COMMANDS([ifelse($1,,$PACKAGE-config.h,$1)],[dnl AS_VAR_PUSHDEF([_OUT],[ac_prefix_conf_OUT])dnl AS_VAR_PUSHDEF([_DEF],[ac_prefix_conf_DEF])dnl AS_VAR_PUSHDEF([_PKG],[ac_prefix_conf_PKG])dnl AS_VAR_PUSHDEF([_LOW],[ac_prefix_conf_LOW])dnl AS_VAR_PUSHDEF([_UPP],[ac_prefix_conf_UPP])dnl AS_VAR_PUSHDEF([_INP],[ac_prefix_conf_INP])dnl m4_pushdef([_script],[conftest.prefix])dnl m4_pushdef([_symbol],[m4_cr_Letters[]m4_cr_digits[]_])dnl _OUT=`echo ifelse($1, , $PACKAGE-config.h, $1)` _DEF=`echo _$_OUT | sed -e "y:m4_cr_letters:m4_cr_LETTERS[]:" -e "s/@<:@^m4_cr_Letters@:>@/_/g"` _PKG=`echo ifelse($2, , $PACKAGE, $2)` _LOW=`echo _$_PKG | sed -e "y:m4_cr_LETTERS-:m4_cr_letters[]_:"` _UPP=`echo $_PKG | sed -e "y:m4_cr_letters-:m4_cr_LETTERS[]_:" -e "/^@<:@m4_cr_digits@:>@/s/^/_/"` _INP=`echo "ifelse($3,,,$3)" | sed -e 's/ *//'` if test ".$_INP" = "."; then for ac_file in : $CONFIG_HEADERS; do test "_$ac_file" = _: && continue case "$ac_file" in *.h) _INP=$ac_file ;; *) esac test ".$_INP" != "." && break done fi if test ".$_INP" = "."; then case "$_OUT" in */*) _INP=`basename "$_OUT"` ;; *-*) _INP=`echo "$_OUT" | sed -e "s/@<:@_symbol@:>@*-//"` ;; *) _INP=config.h ;; esac fi if test -z "$_PKG" ; then AC_MSG_ERROR([no prefix for _PREFIX_PKG_CONFIG_H]) else if test ! -f "$_INP" ; then if test -f "$srcdir/$_INP" ; then _INP="$srcdir/$_INP" fi fi AC_MSG_NOTICE(creating $_OUT - prefix $_UPP for $_INP defines) if test -f $_INP ; then echo "s/^@%:@undef *\\(@<:@m4_cr_LETTERS[]_@:>@\\)/@%:@undef $_UPP""_\\1/" > _script echo "s/^@%:@undef *\\(@<:@m4_cr_letters@:>@\\)/@%:@undef $_LOW""_\\1/" >> _script echo "s/^@%:@def[]ine *\\(@<:@m4_cr_LETTERS[]_@:>@@<:@_symbol@:>@*\\)\\(.*\\)/@%:@ifndef $_UPP""_\\1 \\" >> _script echo "@%:@def[]ine $_UPP""_\\1 \\2 \\" >> _script echo "@%:@endif/" >>_script echo "s/^@%:@def[]ine *\\(@<:@m4_cr_letters@:>@@<:@_symbol@:>@*\\)\\(.*\\)/@%:@ifndef $_LOW""_\\1 \\" >> _script echo "@%:@define $_LOW""_\\1 \\2 \\" >> _script echo "@%:@endif/" >> _script # now executing _script on _DEF input to create _OUT output file echo "@%:@ifndef $_DEF" >$tmp/pconfig.h echo "@%:@def[]ine $_DEF 1" >>$tmp/pconfig.h echo ' ' >>$tmp/pconfig.h echo /'*' $_OUT. Generated automatically at end of configure. '*'/ >>$tmp/pconfig.h sed -f _script $_INP >>$tmp/pconfig.h echo ' ' >>$tmp/pconfig.h echo '/* once:' $_DEF '*/' >>$tmp/pconfig.h echo "@%:@endif" >>$tmp/pconfig.h if cmp -s $_OUT $tmp/pconfig.h 2>/dev/null; then AC_MSG_NOTICE([$_OUT is unchanged]) else ac_dir=`AS_DIRNAME(["$_OUT"])` AS_MKDIR_P(["$ac_dir"]) rm -f "$_OUT" mv $tmp/pconfig.h "$_OUT" fi cp _script _configs.sed else AC_MSG_ERROR([input file $_INP does not exist - skip generating $_OUT]) fi rm -f conftest.* fi m4_popdef([_symbol])dnl m4_popdef([_script])dnl AS_VAR_POPDEF([_INP])dnl AS_VAR_POPDEF([_UPP])dnl AS_VAR_POPDEF([_LOW])dnl AS_VAR_POPDEF([_PKG])dnl AS_VAR_POPDEF([_DEF])dnl AS_VAR_POPDEF([_OUT])dnl ],[PACKAGE="$PACKAGE"])]) dnl implementation note: a bug report (31.5.2005) from Marten Svantesson points dnl out a problem where `echo "\1"` results in a Control-A. The unix standard dnl http://www.opengroup.org/onlinepubs/000095399/utilities/echo.html dnl defines all backslash-sequences to be inherently non-portable asking dnl for replacement mit printf. Some old systems had problems with that dnl one either. However, the latest libtool (!) release does export an $ECHO dnl (and $echo) that does the right thing - just one question is left: what dnl was the first version to have it? Is it greater 2.58 ? mpi-testsuite-3.2+dfsg/confdb/ax_tls.m40000644000175000017500000000744312620254305017357 0ustar mbanckmbanck# =========================================================================== # http://www.nongnu.org/autoconf-archive/ax_tls.html # =========================================================================== # # SYNOPSIS # # AX_TLS # # DESCRIPTION # # Provides a test for the compiler support of thread local storage (TLS) # extensions. Defines TLS if it is found. Currently only knows about GCC # and MSVC. I think SunPro uses the same as GCC, and Borland apparently # supports either. # # LICENSE # # Copyright (c) 2008 Alan Woodland # # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation, either version 3 of the License, or (at your # option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General # Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . # # As a special exception, the respective Autoconf Macro's copyright owner # gives unlimited permission to copy, distribute and modify the configure # scripts that are the output of Autoconf when processing the Macro. You # need not follow the terms of the GNU General Public License when using # or distributing such scripts, even though portions of the text of the # Macro appear in them. The GNU General Public License (GPL) does govern # all other use of the material that constitutes the Autoconf Macro. # # This special exception to the GPL applies to versions of the Autoconf # Macro released by the Autoconf Archive. When you make and distribute a # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. AC_DEFUN([AX_TLS], [ AC_MSG_CHECKING(for thread local storage specifier) AC_CACHE_VAL(ac_cv_tls, [ ax_tls_keywords="__thread __declspec(thread) none" for ax_tls_keyword in $ax_tls_keywords; do case $ax_tls_keyword in none) ac_cv_tls=none ; break ;; *) # MPICH modification: This was an AC_TRY_COMPILE before, but # Darwin with non-standard compilers will accept __thread at # compile time but fail to link due to an undefined # "__emutls_get_address" symbol unless -lgcc_eh is added to the # link line. AC_LINK_IFELSE( [AC_LANG_PROGRAM([$ax_tls_keyword int bar = 5;],[++bar;])], [ac_cv_tls=$ax_tls_keyword], [ac_cv_tls=none]) # MPICH modification: Also test with the extern keyword. # The intel compiler on Darwin (at least as of 15.0.1) # seems to break with the above error when the extern # keyword is specified in shared library builds. PAC_PUSH_FLAG([LIBS]) PAC_APPEND_FLAG([-shared],[LIBS]) if test "$ac_cv_tls" != "none" ; then AC_LINK_IFELSE( [AC_LANG_PROGRAM([extern $ax_tls_keyword int bar;],[++bar;])], [ac_cv_tls=$ax_tls_keyword], [ac_cv_tls=none]) fi PAC_POP_FLAG([LIBS]) if test "$ac_cv_tls" != "none" ; then break ; fi esac done ]) if test "$ac_cv_tls" != "none"; then # MPICH modification: this was "TLS" before instead of # "MPICH_TLS_SPECIFIER", but TLS had a reasonably high chance of conflicting # with a system library. AC_DEFINE_UNQUOTED([MPICH_TLS_SPECIFIER], $ac_cv_tls, [If the compiler supports a TLS storage class define it to that here]) fi AC_MSG_RESULT($ac_cv_tls) ]) mpi-testsuite-3.2+dfsg/confdb/aclocal_am.m40000644000175000017500000000054712620254305020136 0ustar mbanckmbanckdnl AM_IGNORE is an extension that tells (a patched) automake not to dnl include the specified AC_SUBST variable in the Makefile.in that dnl automake generates. We don't use AC_DEFUN, since aclocal will dnl then complain that AM_IGNORE is a duplicate (if you are using the dnl patched automake/aclocal). m4_ifdef([AM_IGNORE],[],[m4_define([AM_IGNORE],[])]) mpi-testsuite-3.2+dfsg/confdb/missing0000755000175000017500000001533012621010232017202 0ustar mbanckmbanck#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2013-10-28.13; # UTC # Copyright (C) 1996-2014 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=http://www.perl.org/ flex_URL=http://flex.sourceforge.net/ gnu_software_URL=http://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: mpi-testsuite-3.2+dfsg/confdb/aclocal_fc.m40000644000175000017500000011322112620254305020123 0ustar mbanckmbanckdnl PAC_FC_SEARCH_LIST - expands to a whitespace separated list of modern dnl fortran compilers for use with AC_PROG_FC that is more suitable for HPC dnl software packages AC_DEFUN([PAC_FC_SEARCH_LIST], [ifort pgf90 pathf90 pathf95 xlf90 xlf95 xlf2003 gfortran f90 epcf90 f95 fort lf95 g95 ifc efc gfc]) dnl /*D dnl PAC_PROG_FC([COMPILERS]) dnl dnl COMPILERS is a space separated list of Fortran 77 compilers to search dnl for. Fortran 95 isn't strictly backwards-compatible with Fortran 77, dnl but `f95' is worth trying. dnl dnl Compilers are ordered by dnl 1. F77, F90, F95 dnl 2. Good/tested native compilers, bad/untested native compilers dnl 3. Wrappers around f2c go last. dnl dnl `fort77' is a wrapper around `f2c'. dnl It is believed that under HP-UX `fort77' is the name of the native dnl compiler. On some Cray systems, fort77 is a native compiler. dnl frt is the Fujitsu F77 compiler. dnl pgf77 and pgf90 are the Portland Group F77 and F90 compilers. dnl xlf/xlf90/xlf95/xlf2003 are IBM (AIX) F77/F90/F95/F2003 compilers. dnl lf95 is the Lahey-Fujitsu compiler. dnl fl32 is the Microsoft Fortran "PowerStation" compiler. dnl af77 is the Apogee F77 compiler for Intergraph hardware running CLIX. dnl epcf90 is the "Edinburgh Portable Compiler" F90. dnl fort is the Compaq Fortran 90 (now 95) compiler for Tru64 and Linux/Alpha. dnl pathf90 is the Pathscale Fortran 90 compiler dnl ifort is another name for the Intel f90 compiler dnl efc - An older Intel compiler (?) dnl ifc - An older Intel compiler dnl fc - A compiler on some unknown system. This has been removed because dnl it may also be the name of a command for something other than dnl the Fortran compiler (e.g., fc=file system check!) dnl gfortran - The GNU Fortran compiler (not the same as g95) dnl gfc - An alias for gfortran recommended in cygwin installations dnl NOTE: this macro suffers from a basically intractable "expanded before it dnl was required" problem when libtool is also used dnl D*/ AC_DEFUN([PAC_PROG_FC],[ PAC_PUSH_FLAG([FCFLAGS]) AC_PROG_FC([m4_default([$1],[PAC_FC_SEARCH_LIST])]) PAC_POP_FLAG([FCFLAGS]) ]) dnl dnl PAC_FC_EXT checks for the default Fortran 90 program extension, f90 then f. dnl This could be replaced by AC_FC_SRCEXT but since AC_FC_SRCEXT dnl adds FCFLAGS_ext, which is used to modify FCFLAGS or Makefile.in. dnl So will do this later. dnl AC_DEFUN([PAC_FC_EXT],[ AC_MSG_CHECKING([for extension for Fortran 90 programs]) ac_fc_srcext="f90" AC_LANG_PUSH(Fortran) AC_COMPILE_IFELSE([ AC_LANG_PROGRAM() ],[ AC_MSG_RESULT([f90]) ],[ ac_fc_srcext="f" AC_COMPILE_IFELSE([ AC_LANG_PROGRAM() ],[ AC_MSG_RESULT([f]) ],[ AC_MSG_RESULT([unknown!]) ]) ]) AC_LANG_POP(Fortran) ]) dnl dnl Internal routine for testing F90 dnl PAC_PROG_FC_WORKS() dnl AC_DEFUN([PAC_PROG_FC_WORKS],[ AC_REQUIRE([PAC_FC_EXT]) AC_LANG_PUSH(Fortran) AC_MSG_CHECKING([whether the Fortran 90 compiler ($FC $FCFLAGS $LDFLAGS) works]) AC_LINK_IFELSE([ AC_LANG_SOURCE([ program conftest integer, dimension(10) :: n end ]) ],[ pac_cv_prog_fc_works="yes" AC_MSG_RESULT([$pac_cv_prog_fc_works]) AC_MSG_CHECKING([whether the Fortran 90 compiler ($FC $FCFLAGS $LDFLAGS) is a cross-compiler]) AC_RUN_IFELSE([], [pac_cv_prog_fc_cross="no"], [pac_cv_prog_fc_cross="yes"], [pac_cv_prog_fc_cross="$cross_compiling"] ) AC_MSG_RESULT($pac_cv_prog_fc_cross) ],[ pac_cv_prog_fc_works="no" AC_MSG_WARN([installation or configuration problem: Fortran 90 compiler cannot create executables.]) ]) # The intel compiler sometimes generates these work.pc and .pcl files rm -f work.pc work.pcl AC_LANG_POP(Fortran) dnl cross_compiling no longer maintained by autoconf as part of the dnl AC_LANG changes. If we set it here, a later AC_LANG may not dnl restore it (in the case where one compiler claims to be a cross compiler dnl and another does not) dnl cross_compiling=$pac_cv_prog_f90_cross ]) dnl/*D dnl PAC_PROG_FC_INT_KIND - Determine kind parameter for an integer with dnl the specified number of bytes. dnl dnl Synopsis: dnl PAC_PROG_FC_INT_KIND(variable-to-set,number-of-bytes,[cross-size]) dnl dnl D*/ AC_DEFUN([PAC_PROG_FC_INT_KIND],[ # Set the default $1=-1 if test "$pac_cv_prog_fc_cross" = "yes" ; then AS_IF([test -z "$3"],[AC_MSG_ERROR(['$3' is empty])]) $1="$3" else AC_LANG_PUSH(Fortran) AC_MSG_CHECKING([for Fortran 90 integer kind for $2-byte integers]) # Convert bytes to digits case $2 in 1) sellen=2 ;; 2) sellen=4 ;; 4) sellen=8 ;; 8) sellen=16 ;; 16) sellen=30 ;; *) sellen=8 ;; esac # Check for cached value eval testval=\$"pac_cv_prog_fc_int_kind_$sellen" if test -n "$testval" ; then AC_MSG_RESULT([$testval (cached)]) $1=$testval else KINDVAL="unavailable" eval "pac_cv_prog_fc_int_kind_$sellen"=-1 AC_RUN_IFELSE([ AC_LANG_SOURCE([ program main integer ii ii = selected_int_kind($sellen) open(8, file="conftest1.out", form="formatted") write (8,*) ii close(8) stop end ]) ],[pac_run_ok=yes],[pac_run_ok=no]) if test "$pac_run_ok" = "yes" ; then if test -s conftest1.out ; then # Because of write, there may be a leading blank. KINDVAL=`cat conftest1.out | sed 's/ //g'` eval "pac_cv_prog_fc_int_kind_$sellen"=$KINDVAL $1=$KINDVAL fi fi AC_MSG_RESULT([$KINDVAL]) fi # not cached AC_LANG_POP(Fortran) fi # is not cross compiling ])dnl dnl dnl ------------------------------------------------------------------------ dnl Special characteristics that have no autoconf counterpart but that dnl we need as part of the Fortran 90 support. To distinquish these, they dnl have a [PAC] prefix. dnl dnl At least one version of the Cray compiler needs the option -em to dnl generate a separate module file, rather than including the module dnl information in the object (.o) file. dnl dnl dnl PAC_FC_MODULE_EXT(action if found,action if not found) dnl AC_DEFUN([PAC_FC_MODULE_EXT], [AC_CACHE_CHECK([for Fortran 90 module extension], pac_cv_fc_module_ext,[ pac_cv_fc_module_case="unknown" AC_LANG_PUSH(Fortran) AC_COMPILE_IFELSE([ AC_LANG_SOURCE([ module conftest integer n parameter (n=1) end module conftest ]) ],[ # Look for module name # First, try to find known names. This avoids confusion caused by # additional files (like .stb created by some versions of pgf90) # Early versions of the Intel compiler used d as the module extension; # we include that just to finish the test as early as possible. for name in conftest CONFTEST ; do for ext in mod MOD d ; do if test -s $name.$ext ; then if test $name = conftest ; then pac_cv_fc_module_case=lower else pac_cv_fc_module_case=upper fi pac_cv_fc_module_ext=$ext pac_MOD=$ext break fi done if test -n "$pac_cv_fc_module_ext" ; then break ; fi done if test -z "$pac_MOD" ; then # The test on .err is needed for Cray Fortran. pac_MOD=`ls conftest.* 2>&1 | grep -v conftest.${ac_fc_srcext} | grep -v conftest.o | grep -v conftest.err` pac_MOD=`echo $pac_MOD | sed -e 's/conftest\.//g'` pac_cv_fc_module_case="lower" if test "X$pac_MOD" = "X" ; then pac_MOD=`ls CONFTEST* 2>&1 | grep -v CONFTEST.${ac_fc_srcext} | grep -v CONFTEST.o | grep -v CONFTEST.err` pac_MOD=`echo $pac_MOD | sed -e 's/CONFTEST\.//g'` if test -n "$pac_MOD" -a -s "CONFTEST.$pac_MOD" ; then pac_cv_fc_module_case="upper" else # Clear because we must have gotten an error message pac_MOD="" fi fi if test -z "$pac_MOD" ; then pac_cv_fc_module_ext="unknown" else pac_cv_fc_module_ext=$pac_MOD fi fi ],[ pac_cv_fc_module_ext="unknown" ]) if test "$pac_cv_fc_module_ext" = "unknown" ; then # Try again, but with an -em option. Abbreviated, because we're # just looking for the Cray option saveFCFLAGS=$FCFLAGS FCFLAGS="$FCFLAGS -em" AC_COMPILE_IFELSE([ AC_LANG_SOURCE([ module conftest integer n parameter (n=1) end module conftest ]) ],[ if test -s conftest.mod ; then pac_cv_fc_module_ext="mod" pac_cv_fc_module_case="lower" elif test -s CONFTEST.mod ; then pac_cv_fc_module_ext="mod" pac_cv_fc_module_case="upper" fi ],[ : # do nothing - already have the unknown default value ]) if test "$pac_cv_fc_module_ext" = "unknown" ; then # The additional command line option did not help - restore # the original flags. FCFLAGS=$saveFCFLAGS fi fi AC_LANG_POP(Fortran) ]) # AC_SUBST(FCMODEXT) if test "$pac_cv_fc_module_ext" = "unknown" ; then ifelse($2,,:,[$2]) else ifelse($1,,FCMODEXT=$pac_MOD,[$1]) fi ]) dnl dnl dnl PAC_FC_MODULE_INCFLAG AC_DEFUN([PAC_FC_MODULE_INCFLAG],[ AC_REQUIRE([PAC_FC_MODULE_EXT]) AC_CACHE_CHECK([for Fortran 90 module include flag], pac_cv_fc_module_incflag,[ AC_LANG_PUSH(Fortran) AC_LANG_CONFTEST([ AC_LANG_SOURCE([ module conf integer n parameter (n=1) end module conf ]) ]) pac_madedir="no" if test ! -d conf ; then mkdir conftestdir ; pac_madedir="yes"; fi if test "$pac_cv_fc_module_case" = "upper" ; then pac_module="CONF.$pac_cv_fc_module_ext" else pac_module="conf.$pac_cv_fc_module_ext" fi AC_COMPILE_IFELSE([],[ if test -s "$pac_module" ; then mv $pac_module conftestdir # Remove any temporary files, and hide the work.pc file # (if the compiler generates them) if test -f work.pc ; then mv -f work.pc conftest.pc fi rm -f work.pcl else AC_MSG_WARN([Unable to build a simple Fortran 90 module]) # echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD # cat conftest.$ac_ext >&AS_MESSAGE_LOG_FD _AC_MSG_LOG_CONFTEST fi ],[]) # Remove the conftest* after AC_LANG_CONFTEST rm -rf conftest.dSYM rm -f conftest.$ac_ext dnl Create the conftest here so the test isn't created everytime inside loop. AC_LANG_CONFTEST([AC_LANG_PROGRAM([],[use conf])]) # Save the original FCFLAGS saved_FCFLAGS="$FCFLAGS" pac_cv_fc_module_incflag="" for inchdr in '-I' '-M' '-p' ; do FCFLAGS="$saved_FCFLAGS ${inchdr}conftestdir" AC_COMPILE_IFELSE([],[pac_cv_fc_module_incflag="$inchdr" ; break]) done if test "X$pac_cv_fc_module_incflag" = "X" ; then if test -s conftest.pc ; then mv conftest.pc conftestdir/mpimod.pc echo "mpimod.pc" > conftestdir/mpimod.pcl echo "`pwd`/conftestdir/mpimod.pc" >> conftestdir/mpimod.pcl inchdr='-cl,' FCFLAGS="$save_FCFLAGS ${inchdr}conftestdir" AC_COMPILE_IFELSE([], [pac_fcompile_ok=yes], [pac_fcompile_ok=no]) if test "$pac_fcompile_ok" = "yes" ; then pac_cv_fc_module_incflag="$inchdr" # Not quite right; see the comments that follow AC_MSG_RESULT([-cl,filename where filename contains a list of files and directories]) FC_WORK_FILES_ARG="-cl,mpimod.pcl" FCMODINCSPEC="-cl,/mod.pcl" else # The version of the Intel compiler that I have refuses to let # you put the "work catalog" list anywhere but the current directory. pac_cv_fc_module_incflag="Unavailable!" fi else # Early versions of the Intel ifc compiler required a *file* # containing the names of files that contained the names of the # # -cl,filename.pcl # filename.pcl contains # fullpathname.pc # The "fullpathname.pc" is generated, I believe, when a module is # compiled. # Intel compilers use a wierd system: -cl,filename.pcl . If no file is # specified, work.pcl and work.pc are created. However, if you specify # a file, it must contain the name of a file ending in .pc . Ugh! pac_cv_fc_module_incflag="unknown" fi fi # Restore the original FCFLAGS FCFLAGS="$saved_FCFLAGS" if test "$pac_madedir" = "yes" ; then rm -rf conftestdir ; fi # Remove the conftest* after AC_LANG_CONFTEST # This is needed for Mac OSX 10.5 rm -rf conftest.dSYM rm -f conftest* AC_LANG_POP(Fortran) ]) AC_SUBST(FC_WORK_FILES_ARG) AC_SUBST(FCMODINCFLAG) FCMODINCFLAG=$pac_cv_fc_module_incflag ]) dnl dnl dnl AC_DEFUN([PAC_FC_MODULE],[ PAC_FC_MODULE_EXT PAC_FC_MODULE_INCFLAG PAC_FC_MODULE_OUTFLAG ]) dnl dnl PAC_FC_MODULE_OUTFLAG AC_DEFUN([PAC_FC_MODULE_OUTFLAG],[ AC_REQUIRE([PAC_FC_MODULE_EXT]) AC_CACHE_CHECK([for Fortran 90 module output directory flag], [pac_cv_fc_module_outflag], [ AC_LANG_PUSH([Fortran]) AC_LANG_CONFTEST([ AC_LANG_SOURCE([ module conf integer n parameter (n=1) end module conf ]) ]) pac_madedir="no" if test ! -d conf ; then mkdir conftestdir ; pac_madedir="yes"; fi if test "$pac_cv_fc_module_case" = "upper" ; then pac_module="CONF.$pac_cv_fc_module_ext" else pac_module="conf.$pac_cv_fc_module_ext" fi # check base case that the compiler can create modules and that they endup in # the current directory AC_COMPILE_IFELSE([],[ if test -s "$pac_module" ; then rm -f "$pac_module" # Remove any temporary files, and hide the work.pc file # (if the compiler generates them) if test -f work.pc ; then mv -f work.pc conftest.pc fi rm -f work.pcl else AC_MSG_WARN([Unable to build a simple Fortran 90 module]) # echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD # cat conftest.$ac_ext >&AS_MESSAGE_LOG_FD _AC_MSG_LOG_CONFTEST fi ],[]) # known flags for reasonably recent versions of various f90 compilers: # gfortran -J${dir} # xlf -qmoddir=${dir} # pgf90 -module ${dir} # ifort -module ${dir} # nagfor -mdir ${dir} # ftn -J ${dir} ## the Cray fortran compiler # ftn -em -J${dir} ## the Cray fortran compiler (crayftn, in 2013) # For this above case, we must have added -em to FCFLAGS, since other # module tests do not always use the module output flag. See # FC_MODULE_EXT , where this is determined. # f95 -YMOD_OUT_DIR=${dir} ## the Absoft fortran compiler # lf95 -Am -mod ${dir} ## the Lahey/Fujitsu fortran compiler # f90 -moddir=${dir} ## the Sun f90 compiler # g95 -fmod=${dir} # # If there are any compilers still out there that are totally brain-dead and # don't support an output directory flag, we can write a wrapper script to tell # users to use. Alternatively they can use an older version of MPICH. pac_cv_fc_module_outflag= for mod_flag in '-J' '-J ' '-qmoddir=' '-module ' '-YMOD_OUT_DIR=' '-mdir ' '-moddir=' '-fmod=' ; do rm -f conftestdir/NONEXISTENT conftestdir/* PAC_PUSH_FLAG([FCFLAGS]) FCFLAGS="$FCFLAGS ${mod_flag}conftestdir" AC_COMPILE_IFELSE([],[pac_build_success=yes],[pac_build_success=no]) AS_IF([test "X$pac_build_success" = Xyes], [AS_IF([test -s "conftestdir/${pac_module}"], [pac_cv_fc_module_outflag="$mod_flag"])]) PAC_POP_FLAG([FCFLAGS]) AS_IF([test "X$pac_cv_fc_module_outflag" = X],[:],[break]) done # Remove the conftest* after AC_LANG_CONFTEST rm -rf conftest.dSYM rm -f conftest.$ac_ext if test "$pac_madedir" = "yes" ; then rm -rf conftestdir ; fi AS_UNSET([pac_madedir]) # Remove the conftest* after AC_LANG_CONFTEST # This is needed for Mac OSX 10.5 rm -rf conftest.dSYM rm -f conftest* AC_LANG_POP(Fortran) ])dnl end AC_CACHE_CHECK AC_SUBST([FCMODOUTFLAG],[$pac_cv_fc_module_outflag]) ])dnl end AC_DEFUN([PAC_FC_MODULE_OUTFLAG]) dnl dnl PAC_FC_AND_F77_COMPATIBLE([action-if-true],[action-if-false]) dnl dnl Determine whether object files compiled with Fortran 77 can be dnl linked to Fortran 90 main programs. dnl dnl The test uses a name that includes an underscore unless the 3rd dnl argument provides another routine name. dnl AC_DEFUN([PAC_FC_AND_F77_COMPATIBLE],[ AC_REQUIRE([PAC_PROG_FC_WORKS]) AC_CACHE_CHECK([whether Fortran 90 compiler works with Fortran 77 compiler], pac_cv_fc_and_f77,[ pacTestRoutine=foo_abc ifelse([$3],,,[eval pacTestRoutine=$3]) pac_cv_fc_and_f77="unknown" # compile the f77 program and link with the f90 program # The reverse may not work because the Fortran 90 environment may # expect to be in control (and to provide library files unknown to any other # environment, even Fortran 77!) AC_LANG_PUSH(Fortran 77) AC_COMPILE_IFELSE([ AC_LANG_SOURCE([ subroutine ${pacTestRoutine}(b) integer b b = b + 1 end ]) ],[ # pac_f77compile_ok=yes PAC_RUNLOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT]) # Save original LIBS, prepend previously generated object file to LIBS saved_LIBS="$LIBS" LIBS="pac_f77conftest.$OBJEXT $LIBS" AC_LANG_PUSH(Fortran) AC_LINK_IFELSE([ AC_LANG_SOURCE([ program main integer a a = 1 call ${pacTestRoutine}(a) end ]) ],[pac_cv_fc_and_f77=yes],[pac_cv_fc_and_f77=no]) # Some versions of the Intel compiler produce these two files rm -f work.pc work.pcl # Restore LIBS LIBS="$saved_LIBS" AC_LANG_POP(Fortran) # remove previously generated object file. rm -f pac_f77conftest.$OBJEXT ], [ # pac_f77compile_ok=no pac_cv_fc_and_f77=no ]) AC_LANG_POP(Fortran 77) # Perform the requested action based on whether the test succeeded if test "$pac_cv_fc_and_f77" = yes ; then ifelse($1,,:,[$1]) else ifelse($2,,:,[$2]) AC_MSG_WARN([See config.log for the failed test program and its output.]) fi ]) dnl ]) dnl dnl dnl /*D dnl PAC_PROG_FC_CRAY_POINTER - Check if Fortran supports Cray-style pointer. dnl If so, set pac_cv_prog_fc_has_pointer to yes dnl and find out if any extra compiler flag is dnl needed and set it as CRAYPTR_FCFLAGS. dnl i.e. CRAYPTR_FCFLAGS is meaningful only if dnl pac_cv_prog_fc_has_pointer = yes. dnl dnl Synopsis: dnl PAC_PROG_FC_CRAY_POINTER([action-if-true],[action-if-false]) dnl D*/ AC_DEFUN([PAC_PROG_FC_CRAY_POINTER],[ AC_CACHE_CHECK([whether Fortran 90 supports Cray-style pointer], pac_cv_prog_fc_has_pointer,[ AC_LANG_PUSH([Fortran]) AC_LANG_CONFTEST([ AC_LANG_PROGRAM([],[ integer M pointer (MPTR,M) data MPTR/0/ ]) ]) saved_FCFLAGS="$FCFLAGS" pac_cv_prog_fc_has_pointer=no CRAYPTR_FCFLAGS="" for ptrflag in '' '-fcray-pointer' ; do FCFLAGS="$saved_FCFLAGS $ptrflag" AC_COMPILE_IFELSE([],[ pac_cv_prog_fc_has_pointer=yes CRAYPTR_FCFLAGS="$ptrflag" break ]) done dnl Restore FCFLAGS first, since user may not want to modify FCFLAGS FCFLAGS="$saved_FCFLAGS" dnl remove conftest after ac_lang_conftest rm -f conftest.$ac_ext AC_LANG_POP([Fortran]) ]) if test "$pac_cv_prog_fc_has_pointer" = "yes" ; then AC_MSG_CHECKING([for Fortran 90 compiler flag for Cray-style pointer]) if test "X$CRAYPTR_FCFLAGS" != "X" ; then AC_MSG_RESULT([$CRAYPTR_FCFLAGS]) else AC_MSG_RESULT([none]) fi ifelse([$1],[],[:],[$1]) else ifelse([$2],[],[:],[$2]) fi ]) dnl dnl dnl AC_DEFUN([PAC_PROG_FC_AND_C_STDIO_LIBS],[ AC_REQUIRE([AC_HEADER_STDC]) # To simply the code in the cache_check macro, chose the routine name # first, in case we need it confname=conf1_ case "$pac_cv_prog_f77_name_mangle" in "lower underscore") confname=conf1_ ;; "upper stdcall") confname=CONF1 ;; upper) confname=CONF1 ;; "lower doubleunderscore") confname=conf1_ ;; lower) confname=conf1 ;; "mixed underscore") confname=conf1_ ;; mixed) confname=conf1 ;; esac AC_CACHE_CHECK([what libraries are needed to link Fortran90 programs with C routines that use stdio],pac_cv_prog_fc_and_c_stdio_libs,[ pac_cv_prog_fc_and_c_stdio_libs=unknown AC_LANG_PUSH(C) AC_COMPILE_IFELSE([ AC_LANG_SOURCE([ #if defined(HAVE_STDIO_H) || defined(STDC_HEADERS) #include #endif int $confname( int a ) { printf( "The answer is %d\n", a ); fflush(stdout); return 0; } ]) ],[ pac_compile_ok=yes PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT]) # Save LIBS and prepend object file to LIBS saved_LIBS="$LIBS" LIBS="pac_conftest.$OBJEXT $LIBS" AC_LANG_PUSH(Fortran) AC_LINK_IFELSE([ AC_LANG_PROGRAM([],[call conf1(0)]) ],[ pac_cv_prog_fc_and_c_stdio_libs=none ],[ # Try again with -lSystemStubs LIBS="$LIBS -lSystemStubs" AC_LINK_IFELSE([],[ pac_cv_prog_fc_and_c_stdio_libs="-lSystemStubs" ],[]) ]) LIBS="$saved_LIBS" AC_LANG_POP(Fortran) rm -f pac_conftest.$OBJEXT ]) AC_LANG_POP(C) dnl if test "$pac_cv_prog_fc_and_c_stdio_libs" != none -a \ "$pac_cv_prog_fc_and_c_stdio_libs" != unknown ; then FC_OTHER_LIBS="$FC_OTHER_LIBS $pac_cv_prog_fc_and_c_stdio_libs" fi ]) dnl ]) dnl dnl/*D dnl PAC_FC_CHECK_COMPILER_OPTION - Check that a FC compiler option is dnl accepted without warning messages dnl dnl Synopsis: dnl PAC_FC_CHECK_COMPILER_OPTION(optionname,action-if-ok,action-if-fail) dnl dnl Output Effects: dnl dnl If no actions are specified, a working value is added to 'FCOPTIONS' dnl dnl Notes: dnl This is now careful to check that the output is different, since dnl some compilers are noisy. dnl dnl We are extra careful to prototype the functions in case compiler options dnl that complain about poor code are in effect. dnl dnl Because this is a long script, we have ensured that you can pass a dnl variable containing the option name as the first argument. dnl D*/ AC_DEFUN([PAC_FC_CHECK_COMPILER_OPTION],[ AC_MSG_CHECKING([whether Fortran 90 compiler accepts option $1]) pac_opt="$1" AC_LANG_PUSH(Fortran) FCFLAGS_orig="$FCFLAGS" FCFLAGS_opt="$pac_opt $FCFLAGS" pac_result="unknown" AC_LANG_CONFTEST([AC_LANG_PROGRAM()]) FCFLAGS="$FCFLAGS_orig" rm -f pac_test1.log PAC_LINK_IFELSE_LOG([pac_test1.log], [], [ FCFLAGS="$FCFLAGS_opt" rm -f pac_test2.log PAC_LINK_IFELSE_LOG([pac_test2.log], [], [ PAC_RUNLOG_IFELSE([diff -b pac_test1.log pac_test2.log], [pac_result=yes], [pac_result=no]) ],[ pac_result=no ]) ], [ pac_result=no ]) AC_MSG_RESULT([$pac_result]) dnl Delete the conftest created by AC_LANG_CONFTEST. rm -f conftest.$ac_ext # if test "$pac_result" = "yes" ; then AC_MSG_CHECKING([whether routines compiled with $pac_opt can be linked with ones compiled without $pac_opt]) pac_result=unknown FCFLAGS="$FCFLAGS_orig" rm -f pac_test3.log PAC_COMPILE_IFELSE_LOG([pac_test3.log], [ AC_LANG_SOURCE([ subroutine try() end ]) ],[ PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT]) saved_LIBS="$LIBS" LIBS="pac_conftest.$OBJEXT $LIBS" FCFLAGS="$FCFLAGS_opt" rm -f pac_test4.log PAC_LINK_IFELSE_LOG([pac_test4.log], [AC_LANG_PROGRAM()], [ PAC_RUNLOG_IFELSE([diff -b pac_test2.log pac_test4.log], [pac_result=yes], [pac_result=no]) ],[ pac_result=no ]) LIBS="$saved_LIBS" rm -f pac_conftest.$OBJEXT ],[ pac_result=no ]) AC_MSG_RESULT([$pac_result]) rm -f pac_test3.log pac_test4.log fi rm -f pac_test1.log pac_test2.log dnl Restore FCFLAGS before 2nd/3rd argument commands are executed, dnl as 2nd/3rd argument command could be modifying FCFLAGS. FCFLAGS="$FCFLAGS_orig" if test "$pac_result" = "yes" ; then ifelse([$2],[],[FCOPTIONS="$FCOPTIONS $1"],[$2]) else ifelse([$3],[],[:],[$3]) fi AC_LANG_POP(Fortran) ]) dnl /*D dnl PAC_FC_WORKS_WITH_CPP dnl dnl Checks if Fortran 90 compiler works with C preprocessor dnl dnl Most systems allow the Fortran compiler to process .F and .F90 files dnl using the C preprocessor. However, some systems either do not dnl allow this or have serious bugs (OSF Fortran compilers have a bug dnl that generates an error message from cpp). The following test dnl checks to see if .F works, and if not, whether "cpp -P -C" can be used dnl D*/ AC_DEFUN([PAC_FC_WORKS_WITH_CPP],[ AC_REQUIRE([AC_PROG_CPP]) AC_MSG_CHECKING([whether Fortran 90 compiler processes .F90 files with C preprocessor]) AC_LANG_PUSH([Fortran]) saved_fc_ext=${ac_ext} ac_ext="F90" saved_FCFLAGS="$FCFLAGS" FCFLAGS="$FCFLAGS $CPPFLAGS" AC_LANG_CONFTEST([ AC_LANG_SOURCE([ program main #define ASIZE 10 integer a(ASIZE) end ]) ]) AC_COMPILE_IFELSE([],[ pac_cv_fc_accepts_F90=yes ifelse([$1],[],[],[$1=""]) ],[ pac_cv_fc_accepts_F90=no ifelse([$1],[],[:],[$1="false"]) ]) # Restore Fortran's ac_ext but not FCFLAGS ac_ext="$saved_fc_ext" if test "$pac_cv_fc_accepts_F90" != "yes" ; then pac_cpp_fc="$ac_cpp -C -P conftest.F90 > conftest.$ac_ext" PAC_RUNLOG_IFELSE([$pac_cpp_fc],[ if test -s conftest.${ac_ext} ; then AC_COMPILE_IFELSE([],[ pac_cv_fc_accepts_F90="no, use cpp" ifelse([$1],[],[],[$1="$CPP -C -P"]) ],[]) rm -f conftest.${ac_ext} fi ],[]) fi FCFLAGS="$saved_FCFLAGS" rm -f conftest.F90 AC_LANG_POP([Fortran]) AC_MSG_RESULT([$pac_cv_fc_accepts_F90]) ]) dnl dnl PAC_FC_VENDOR: dnl Try to get a version string for the F90 compiler. We may dnl need this to find likely command-line arguments for accessing dnl shared libraries dnl AC_DEFUN([PAC_FC_VENDOR],[ AC_MSG_CHECKING([for Fortran 90 compiler vendor]) # This is complicated by some compilers (such as the Intel 8.1 ifort) # that return a non-zero status even when they accept the -V option # (a zero status is returned only if there is a file). pac_cv_fc_vendor="unknown" for arg in --version -V -v ; do rm -f conftest.txt PAC_RUNLOG([$FC $arg conftest.txt 2>&1]) # Ignore the return code, because some compilers set the # return code to zero on invalid arguments and some to # non-zero on success (with no files to compile) if test -f conftest.txt ; then if grep 'Portland Group' conftest.txt >/dev/null 2>&1 ; then pac_cv_fc_vendor=pgi elif grep 'Sun Workshop' conftest.txt >/dev/null 2>&1 ; then pac_cv_fc_vendor=sun elif grep 'Sun Fortran 9' conftest.txt >/dev/null 2>&1 ; then pac_cv_fc_vendor=sun elif grep 'Absoft' conftest.txt >/dev/null 2>&1 ; then pac_cv_fc_vendor=absoft elif grep 'G95' conftest.txt >/dev/null 2>&1 ; then pac_cv_fc_vendor=gnu elif grep 'GNU Fortran' conftest.txt >/dev/null 2>&1 ; then # This is gfortran pac_cv_fc_vendor=gnu elif grep Intel conftest.txt >/dev/null 2>&1 ; then pac_cv_fc_vendor=intel fi fi if test "$pac_cv_fc_vendor" != "unknown" ; then break ; fi done if test "$pac_cv_fc_vendor" = "unknown" ; then # Try to use the compiler name if test "$FC" = "ifort" -o "$FC" = "ifc" ; then pac_cv_fc_vendor=intel elif test "$FC" = "pgf90" ; then pac_cv_fc_vendor=pgi elif test "$FC" = "xlf90" -o "$FC" = "xlf90_r" ; then pac_cv_fc_vendor=ibm elif test "$FC" = "xlf95" -o "$FC" = "xlf95_r" ; then pac_cv_fc_vendor=ibm fi fi AC_MSG_RESULT([$pac_cv_fc_vendor]) rm -f conftest.txt # End of checking for F90 compiler vendor ]) dnl dnl PAC_F77_IS_FC([ACTION_IF_TRUE],[ACTION_IF_FALSE]) dnl Check if F77 is a Fortran 90 compiler. dnl AC_DEFUN([PAC_F77_IS_FC],[ AC_MSG_CHECKING([whether $F77 is a Fortran 90 compiler]) AC_LANG_PUSH([Fortran 77]) saved_ac_ext=$ac_ext ac_ext="f90" AC_LINK_IFELSE([ AC_LANG_SOURCE([ program main integer, dimension(10) :: n integer k print *, range(k) end ]) ],[ pac_cv_prog_f77_is_fc=yes ifelse([$1],[],[],[$1]) ],[ pac_cv_prog_f77_is_fc=no ifelse([$2],[],[],[$2]) ]) AC_MSG_RESULT([$pac_cv_prog_f77_is_fc]) AC_LANG_POP([Fortran 77]) ]) dnl dnl PAC_FC_FLOAT_MODEL(float_type, [variable-set-if-successful-test]) dnl variable-set-if-successful-test is optional variable. dnl dnl This is a runtime test. dnl AC_DEFUN([PAC_FC_FLOAT_MODEL],[ type="$1" AC_MSG_CHECKING([for precision and range of $type]) AC_LANG_PUSH([Fortran]) rm -f pac_fconftest.out AC_RUN_IFELSE([ AC_LANG_SOURCE([ program main $type aa open(8, file="pac_fconftest.out", form="formatted") write(8,*) precision(aa), ",", range(aa) close(8) end ]) ],[ if test -s pac_fconftest.out ; then pac_fc_num_model="`sed -e 's/ */ /g' pac_fconftest.out`" AC_MSG_RESULT([$pac_fc_num_model]) ifelse([$2],[],[],[$2=$pac_fc_num_model]) else AC_MSG_RESULT([Error]) AC_MSG_WARN([No output from test program!]) fi rm -f pac_fconftest.out ],[ AC_MSG_RESULT([Error]) AC_MSG_WARN([Failed to run program to determine the precision and range of $type]) ]) AC_LANG_POP([Fortran]) ]) dnl dnl PAC_FC_SIMPLE_NUMBER_MODEL(message, Fortran-type, Fortran-write, dnl [variable-set-if-successful-test], dnl [cross-value]) dnl dnl message : message of what test-fc-code is checking dnl Fortran-type : Fortran90 type's data model to be examined. dnl Fortran-write : Fortran90 type's write statement used with write(N,*). dnl variable-set-if-successful-test : dnl The optional variable to be set if the codelet: dnl "Fortran-type" + "write(N,*) Fortran-write" dnl is successful in returning the simple data model. dnl cross-value : value to be used for above variable when dnl cross_compiling=yes dnl dnl This is a runtime test. dnl AC_DEFUN([PAC_FC_SIMPLE_NUMBER_MODEL],[ pac_msg="$1" AC_MSG_CHECKING([for $pac_msg]) AC_LANG_PUSH([Fortran]) rm -f pac_fconftest.out AC_RUN_IFELSE([ AC_LANG_SOURCE([ program main $2 open(8, file="pac_fconftest.out", form="formatted") write(8,*) $3 close(8) end ]) ],[ if test -s pac_fconftest.out ; then pac_fc_num_model="`sed -e 's/ */ /g' pac_fconftest.out`" AC_MSG_RESULT([$pac_fc_num_model]) ifelse([$4],[],[],[$4=$pac_fc_num_model]) else AC_MSG_RESULT([Error]) AC_MSG_WARN([No output from test program!]) fi rm -f pac_fconftest.out ],[ AC_MSG_RESULT([Error]) AC_MSG_WARN([Failed to run program to determine $pac_msg]) ],[ AC_MSG_RESULT([$5]) ifelse([$4],[],[],[$4=$5]) ]) AC_LANG_POP([Fortran]) ]) dnl dnl PAC_FC_AVAIL_INTEGER_MODELS([INTEGER-MODELS-FLAG],[CROSS-VARIABLE]) dnl dnl INTEGER-MODELS-FLAG : an optional variable to be set if provided. dnl If it isn't provided, PAC_FC_ALL_INTEGER_MODELS dnl will be set. dnl CROSS-VALUE : value will be used to set INTEGER-MODELS-FLAG dnl or PAC_FC_ALL_INTEGER_MODELS if cross_compiling=yes. dnl dnl This is a runtime test. dnl AC_DEFUN([PAC_FC_AVAIL_INTEGER_MODELS],[ AC_MSG_CHECKING([for available integer kinds]) AC_LANG_PUSH([Fortran]) rm -f pac_fconftest.out AC_RUN_IFELSE([ AC_LANG_SOURCE([ program main integer r, lastkind lastkind=selected_int_kind(1) open(8, file="pac_fconftest.out", form="formatted") do r=2,30 k = selected_int_kind(r) if (k .ne. lastkind) then write(8,*) r-1, ",", lastkind lastkind = k endif if (k .le. 0) then exit endif enddo if (k.ne.lastkind) then write(8,*) 31, ",", k endif close(8) end ]) ],[ if test -s pac_fconftest.out ; then pac_flag="`sed -e 's/ */ /g' pac_fconftest.out | tr '\012' ','`" AC_MSG_RESULT([$pac_flag]) pac_validKinds="`sed -e 's/ */ /g' pac_fconftest.out | tr '\012' ':'`" ifelse([$1],[],[PAC_FC_ALL_INTEGER_MODELS=$pac_flag],[$1=$pac_flag]) else AC_MSG_RESULT([Error]) AC_MSG_WARN([No output from test program!]) fi rm -f pac_fconftest.out ],[ AC_MSG_RESULT([Error]) AC_MSG_WARN([Failed to run program to determine available integer models]) ],[ dnl Even when cross_compiling=yes, dnl pac_validKinds needs to be set for PAC_FC_INTEGER_MODEL_MAP() pac_validKinds="`echo \"$2\" | tr ',' ':'`" AC_MSG_RESULT([$2]) ifelse([$1],[],[PAC_FC_ALL_INTEGER_MODELS=$2],[$1=$2]) ]) AC_LANG_POP([Fortran]) ]) dnl dnl PAC_FC_INTEGER_MODEL_MAP([INTEGER-MODEL-MAP-FLAG],[CROSS-VALUE])) dnl dnl INTEGER-MODEL-MAP-FLAG : an optional variable to be set if provided. dnl If it isn't provided, PAC_FC_INTEGER_MODEL_MAP dnl will be set. dnl CROSS-VALUE : value will be used to set INTEGER-MODEL-MAP-FLAG dnl or PAC_FC_INTEGER_MODEL_MAP if cross_compiling=yes. dnl dnl This test requires $pac_validKinds set by PAC_FC_ALL_INTEGER_MODELS(). dnl dnl This is a runtime test. dnl dnl Compile the C subroutine as pac_conftest.o and Link it with a Fortran main. AC_DEFUN([PAC_FC_INTEGER_MODEL_MAP],[ AC_REQUIRE([PAC_FC_AVAIL_INTEGER_MODELS]) AC_MSG_CHECKING([for available integer ranges]) AC_LANG_PUSH([C]) AC_COMPILE_IFELSE([ AC_LANG_SOURCE([ #ifdef F77_NAME_UPPER #define cisize_ CISIZE #define isize_ ISIZE #elif defined(F77_NAME_LOWER) || defined(F77_NAME_MIXED) #define cisize_ cisize #define isize_ isize #endif int cisize_(char *,char*); int cisize_(char *i1p, char *i2p) { int isize_val=0; isize_val = (int)(i2p - i1p); return isize_val; } ]) ],[ PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT]) pac_ccompile_ok=yes ],[ pac_ccompile_ok=no ]) AC_LANG_POP([C]) dnl if test "$pac_ccompile_ok" = "yes" ; then saved_LIBS="$LIBS" LIBS="pac_conftest.$OBJEXT $LIBS" saved_IFS=$IFS IFS=: AC_LANG_PUSH([Fortran]) pac_flag="" for rangekind in $pac_validKinds ; do kind="`echo $rangekind | sed -e 's/.*,//'`" range="`echo $rangekind | sed -e 's/,.*//'`" AC_LANG_CONFTEST([ AC_LANG_SOURCE([ program main integer (kind=$kind) a(2) integer cisize open(8, file="pac_fconftest.out", form="formatted") write(8,*) $range, ",", $kind, ",", cisize( a(1), a(2) ) close(8) end ]) ]) IFS=$saved_IFS rm -f pac_fconftest.out AC_RUN_IFELSE([],[ if test -s pac_fconftest.out ; then sizes="`sed -e 's/ */ /g' pac_fconftest.out`" pac_flag="$pac_flag { $sizes }," else AC_MSG_WARN([No output from test program!]) fi rm -f pac_fconftest.out ],[ AC_MSG_WARN([Fortran program fails to build or run!]) ],[ pac_flag="$2" ]) IFS=: done IFS=$saved_IFS AC_MSG_RESULT([$pac_flag]) ifelse([$1],[],[PAC_FC_INTEGER_MODEL_MAP=$pac_flag],[$1=$pac_flag]) AC_LANG_POP([Fortran]) LIBS="$saved_LIBS" rm -f pac_conftest.$OBJEXT fi ]) AC_DEFUN([PAC_FC_2008_SUPPORT],[ AC_MSG_CHECKING([for Fortran 2008 support]) AC_LANG_PUSH([C]) f08_works=yes AC_COMPILE_IFELSE([ AC_LANG_SOURCE( [[ #include int foo_c(CFI_cdesc_t * a_desc, CFI_cdesc_t * b_desc) { char * a_row = (char*) a_desc->base_addr; if (a_desc->type != CFI_type_int) { return 1; } if (a_desc->rank != 2) { return 2; } if (a_desc->dim[1].extent != b_desc->dim[0].extent) { return 3; } return 0; } ]])],[mv conftest.$OBJEXT conftest1.$OBJEXT],[f08_works=no]) AC_LANG_POP([C]) AC_LANG_PUSH([Fortran]) PAC_PUSH_FLAG([LIBS]) LIBS="conftest1.$OBJEXT $LIBS" AC_LINK_IFELSE([ AC_LANG_SOURCE([ MODULE F08TS_MODULE IMPLICIT NONE ! Test public, private, protected REAL, PUBLIC :: x REAL, PRIVATE :: y LOGICAL, PROTECTED :: z ! Test abstract ABSTRACT INTERFACE SUBROUTINE user_func(x, y) INTEGER :: x(*) REAL :: y END SUBROUTINE END INTERFACE ! Test TS 29113 assumed type , assumed rank and bind(C) INTERFACE FUNCTION FOO(A, B, C) & BIND(C,name="foo_c") RESULT(err) USE, intrinsic :: iso_c_binding, ONLY : c_int TYPE(*), DIMENSION(..) :: A, B, C INTEGER(c_int) :: err END FUNCTION FOO END INTERFACE CONTAINS ! Test TS 29113 asychronous attribute and optional SUBROUTINE test1(buf, count, ierr) INTEGER, ASYNCHRONOUS :: buf(*) INTEGER :: count INTEGER, OPTIONAL :: ierr END SUBROUTINE ! Test procedure type and non-bind(c) x in C_FUNCLOC(x) SUBROUTINE test2(func) USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_FUNLOC, C_FUNPTR PROCEDURE(user_func) :: func TYPE(C_FUNPTR) :: errhandler_fn errhandler_fn = C_FUNLOC(func) END SUBROUTINE ! Test intrinsic storage_size SUBROUTINE test3(x, size) CHARACTER, DIMENSION(..) :: x INTEGER, INTENT(OUT) :: size size = storage_size(x)/8 END SUBROUTINE test3 END MODULE !============================================== PROGRAM MAIN USE :: F08TS_MODULE, ONLY : FOO IMPLICIT NONE INTEGER, DIMENSION(4,4) :: A, B INTEGER, DIMENSION(2,2) :: C INTEGER :: ERRCODE ! Test contiguous and non-contiguous array section passing ! and linkage with C code ERRCODE = FOO(A(1:4:2, :), B(:, 2:4:2), C) END PROGRAM ])],[],[f08_works=no]) PAC_POP_FLAG([LIBS]) AC_LANG_POP([Fortran]) if test "$f08_works" = "yes" ; then $1 else $2 fi rm -f conftest1.$OBJEXT F08TS_MODULE.* f08ts_module.* AC_MSG_RESULT([$f08_works]) ]) mpi-testsuite-3.2+dfsg/confdb/aclocal_cc.m40000644000175000017500000015332612620254305020132 0ustar mbanckmbanckdnl AC_PROG_CC_GNU ifdef([AC_PROG_CC_GNU],,[AC_DEFUN([AC_PROG_CC_GNU],)]) dnl PAC_PROG_CC - reprioritize the C compiler search order AC_DEFUN([PAC_PROG_CC],[ dnl Many standard autoconf/automake/libtool macros, such as LT_INIT, dnl perform an AC_REQUIRE([AC_PROG_CC]). If this macro (PAC_PROG_CC) dnl comes after LT_INIT (or similar) then the default compiler search dnl path will be used instead. This AC_BEFORE macro ensures that a dnl warning will be emitted at autoconf-time (autogen.sh-time) to help dnl developers notice this case. AC_BEFORE([$0],[AC_PROG_CC]) PAC_PUSH_FLAG([CFLAGS]) AC_PROG_CC([icc pgcc xlc xlC pathcc gcc clang cc]) PAC_POP_FLAG([CFLAGS]) ]) dnl dnl/*D dnl PAC_C_CHECK_COMPILER_OPTION - Check that a compiler option is accepted dnl without warning messages dnl dnl Synopsis: dnl PAC_C_CHECK_COMPILER_OPTION(optionname,action-if-ok,action-if-fail) dnl dnl Output Effects: dnl dnl If no actions are specified, a working value is added to 'COPTIONS' dnl dnl Notes: dnl This is now careful to check that the output is different, since dnl some compilers are noisy. dnl dnl We are extra careful to prototype the functions in case compiler options dnl that complain about poor code are in effect. dnl dnl Because this is a long script, we have ensured that you can pass a dnl variable containing the option name as the first argument. dnl dnl D*/ AC_DEFUN([PAC_C_CHECK_COMPILER_OPTION],[ AC_MSG_CHECKING([whether C compiler accepts option $1]) pac_opt="$1" AC_LANG_PUSH([C]) CFLAGS_orig="$CFLAGS" CFLAGS_opt="$pac_opt $CFLAGS" pac_result="unknown" AC_LANG_CONFTEST([ AC_LANG_PROGRAM([[#include const char hw[] = "Hello, World\n";]], [[fputs (hw, stdout);]]) ]) CFLAGS="$CFLAGS_orig" rm -f pac_test1.log PAC_LINK_IFELSE_LOG([pac_test1.log], [], [ CFLAGS="$CFLAGS_opt" rm -f pac_test2.log PAC_LINK_IFELSE_LOG([pac_test2.log], [], [ PAC_RUNLOG_IFELSE([diff -b pac_test1.log pac_test2.log], [pac_result=yes],[pac_result=no]) ],[ pac_result=no ]) ], [ pac_result=no ]) AC_MSG_RESULT([$pac_result]) dnl Delete the conftest created by AC_LANG_CONFTEST. rm -f conftest.$ac_ext # gcc 4.2.4 on 32-bit does not complain about the -Wno-type-limits option # even though it doesn't support it. However, when another warning is # triggered, it gives an error that the option is not recognized. So we # need to test with a conftest file that will generate warnings. # # add an extra switch, pac_c_check_compiler_option_prototest, to # disable this test just in case some new compiler does not like it. # # Linking with a program with an invalid prototype to ensure a compiler warning. if test "$pac_result" = "yes" \ -a "$pac_c_check_compiler_option_prototest" != "no" ; then AC_MSG_CHECKING([whether C compiler option $1 works with an invalid prototype program]) AC_LINK_IFELSE([ dnl We want a warning, but we don't want to inadvertently disable dnl special warnings like -Werror-implicit-function-declaration (e.g., dnl in PAC_CC_STRICT) by compiling something that might actually be dnl treated as an error by the compiler. So we try to elicit an dnl "unused variable" warning and/or an "uninitialized" warning with the dnl test program below. dnl dnl The old sanity program was: dnl void main() {return 0;} dnl which clang (but not GCC) would treat as an *error*, invalidating dnl the test for any given parameter. AC_LANG_SOURCE([int main(int argc, char **argv){ int foo, bar = 0; foo += 1; return foo; }]) ],[pac_result=yes],[pac_result=no]) AC_MSG_RESULT([$pac_result]) fi # if test "$pac_result" = "yes" ; then AC_MSG_CHECKING([whether routines compiled with $pac_opt can be linked with ones compiled without $pac_opt]) pac_result=unknown CFLAGS="$CFLAGS_orig" rm -f pac_test3.log PAC_COMPILE_IFELSE_LOG([pac_test3.log], [ AC_LANG_SOURCE([ int foo(void); int foo(void){return 0;} ]) ],[ PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT]) saved_LIBS="$LIBS" LIBS="pac_conftest.$OBJEXT $LIBS" rm -f pac_test4.log PAC_LINK_IFELSE_LOG([pac_test4.log], [AC_LANG_PROGRAM()], [ CFLAGS="$CFLAGS_opt" rm -f pac_test5.log PAC_LINK_IFELSE_LOG([pac_test5.log], [AC_LANG_PROGRAM()], [ PAC_RUNLOG_IFELSE([diff -b pac_test4.log pac_test5.log], [pac_result=yes], [pac_result=no]) ],[ pac_result=no ]) ],[ pac_result=no ]) LIBS="$saved_LIBS" rm -f pac_conftest.$OBJEXT ],[ pac_result=no ]) AC_MSG_RESULT([$pac_result]) rm -f pac_test3.log pac_test4.log pac_test5.log fi rm -f pac_test1.log pac_test2.log dnl Restore CFLAGS before 2nd/3rd argument commands are executed, dnl as 2nd/3rd argument command could be modifying CFLAGS. CFLAGS="$CFLAGS_orig" if test "$pac_result" = "yes" ; then ifelse([$2],[],[COPTIONS="$COPTIONS $1"],[$2]) else ifelse([$3],[],[:],[$3]) fi AC_LANG_POP([C]) ]) dnl dnl/*D dnl PAC_C_OPTIMIZATION - Determine C options for producing optimized code dnl dnl Synopsis dnl PAC_C_OPTIMIZATION([action if found]) dnl dnl Output Effect: dnl Adds options to 'COPTIONS' if no other action is specified dnl dnl Notes: dnl This is a temporary standin for compiler optimization. dnl It should try to match known systems to known compilers (checking, of dnl course), and then falling back to some common defaults. dnl Note that many compilers will complain about -g and aggressive dnl optimization. dnl D*/ AC_DEFUN([PAC_C_OPTIMIZATION],[ for copt in "-O4 -Ofast" "-Ofast" "-fast" "-O3" "-xO3" "-O" ; do PAC_C_CHECK_COMPILER_OPTION($copt,found_opt=yes,found_opt=no) if test "$found_opt" = "yes" ; then ifelse($1,,COPTIONS="$COPTIONS $copt",$1) break fi done if test "$ac_cv_prog_gcc" = "yes" ; then for copt in "-fomit-frame-pointer" "-finline-functions" \ "-funroll-loops" ; do PAC_C_CHECK_COMPILER_OPTION($copt,found_opt=yes,found_opt=no) if test "$found_opt" = "yes" ; then ifelse($1,,COPTIONS="$COPTIONS $copt",$1) # no break because we're trying to add them all fi done # We could also look for architecture-specific gcc options fi ]) dnl/*D dnl PAC_PROG_C_UNALIGNED_DOUBLES - Check that the C compiler allows unaligned dnl doubles dnl dnl Synopsis: dnl PAC_PROG_C_UNALIGNED_DOUBLES(action-if-true,action-if-false, dnl action-if-unknown) dnl dnl Notes: dnl 'action-if-unknown' is used in the case of cross-compilation. dnl D*/ AC_DEFUN([PAC_PROG_C_UNALIGNED_DOUBLES],[ AC_CACHE_CHECK([whether C compiler allows unaligned doubles], pac_cv_prog_c_unaligned_doubles,[ AC_TRY_RUN([ void fetch_double( v ) double *v; { *v = 1.0; } int main( argc, argv ) int argc; char **argv; { int p[4]; double *p_val; fetch_double( (double *)&(p[0]) ); p_val = (double *)&(p[0]); if (*p_val != 1.0) return 1; fetch_double( (double *)&(p[1]) ); p_val = (double *)&(p[1]); if (*p_val != 1.0) return 1; return 0; } ],pac_cv_prog_c_unaligned_doubles="yes",pac_cv_prog_c_unaligned_doubles="no", pac_cv_prog_c_unaligned_doubles="unknown")]) ifelse($1,,,if test "X$pac_cv_prog_c_unaligned_doubles" = "yes" ; then $1 fi) ifelse($2,,,if test "X$pac_cv_prog_c_unaligned_doubles" = "no" ; then $2 fi) ifelse($3,,,if test "X$pac_cv_prog_c_unaligned_doubles" = "unknown" ; then $3 fi) ]) dnl/*D dnl PAC_PROG_C_WEAK_SYMBOLS - Test whether C supports weak alias symbols. dnl dnl Synopsis dnl PAC_PROG_C_WEAK_SYMBOLS(action-if-true,action-if-false) dnl dnl Output Effect: dnl Defines one of the following if a weak symbol pragma is found: dnl.vb dnl HAVE_PRAGMA_WEAK - #pragma weak dnl HAVE_PRAGMA_HP_SEC_DEF - #pragma _HP_SECONDARY_DEF dnl HAVE_PRAGMA_CRI_DUP - #pragma _CRI duplicate x as y dnl.ve dnl May also define dnl.vb dnl HAVE_WEAK_ATTRIBUTE dnl.ve dnl if functions can be declared as 'int foo(...) __attribute__ ((weak));' dnl sets the shell variable pac_cv_attr_weak to yes. dnl Also checks for __attribute__((weak_import)) which is supported by dnl Apple in Mac OSX (at least in Darwin). Note that this provides only dnl weak symbols, not weak aliases dnl dnl D*/ AC_DEFUN([PAC_PROG_C_WEAK_SYMBOLS],[ pragma_extra_message="" AC_CACHE_CHECK([for type of weak symbol alias support], pac_cv_prog_c_weak_symbols,[ # Test for weak symbol support... # We can't put # in the message because it causes autoconf to generate # incorrect code AC_TRY_LINK([ extern int PFoo(int); #pragma weak PFoo = Foo int Foo(int a) { return a; } ],[return PFoo(1);],has_pragma_weak=yes) # # Some systems (Linux ia64 and ecc, for example), support weak symbols # only within a single object file! This tests that case. # Note that there is an extern int PFoo declaration before the # pragma. Some compilers require this in order to make the weak symbol # externally visible. if test "$has_pragma_weak" = yes ; then PAC_COMPLINK_IFELSE([ AC_LANG_SOURCE([ extern int PFoo(int); #pragma weak PFoo = Foo int Foo(int); int Foo(int a) { return a; } ]) ],[ AC_LANG_SOURCE([ extern int PFoo(int); int main(int argc, char **argv) { return PFoo(0);} ]) ],[ PAC_COMPLINK_IFELSE([ AC_LANG_SOURCE([ extern int PFoo(int); #pragma weak PFoo = Foo int Foo(int); int Foo(int a) { return a; } ]) ],[ AC_LANG_SOURCE([ extern int Foo(int); int PFoo(int a) { return a+1;} int main(int argc, char **argv) { return Foo(0);} ]) ],[ pac_cv_prog_c_weak_symbols="pragma weak" ],[ has_pragma_weak=0 pragma_extra_message="pragma weak accepted but does not work (probably creates two non-weak entries)" ]) ],[ has_pragma_weak=0 pragma_extra_message="pragma weak accepted but does not work (probably creates two non-weak entries)" ]) fi dnl if test -z "$pac_cv_prog_c_weak_symbols" ; then AC_TRY_LINK([ extern int PFoo(int); #pragma _HP_SECONDARY_DEF Foo PFoo int Foo(int a) { return a; } ],[return PFoo(1);],pac_cv_prog_c_weak_symbols="pragma _HP_SECONDARY_DEF") fi dnl if test -z "$pac_cv_prog_c_weak_symbols" ; then AC_TRY_LINK([ extern int PFoo(int); #pragma _CRI duplicate PFoo as Foo int Foo(int a) { return a; } ],[return PFoo(1);],pac_cv_prog_c_weak_symbols="pragma _CRI duplicate x as y") fi dnl if test -z "$pac_cv_prog_c_weak_symbols" ; then pac_cv_prog_c_weak_symbols="no" fi dnl dnl If there is an extra explanatory message, echo it now so that it dnl doesn't interfere with the cache result value if test -n "$pragma_extra_message" ; then echo $pragma_extra_message fi dnl ]) if test "$pac_cv_prog_c_weak_symbols" != "no" ; then case "$pac_cv_prog_c_weak_symbols" in "pragma weak") AC_DEFINE(HAVE_PRAGMA_WEAK,1,[Supports weak pragma]) ;; "pragma _HP") AC_DEFINE(HAVE_PRAGMA_HP_SEC_DEF,1,[HP style weak pragma]) ;; "pragma _CRI") AC_DEFINE(HAVE_PRAGMA_CRI_DUP,1,[Cray style weak pragma]) ;; esac fi AC_CACHE_CHECK([whether __attribute__ ((weak)) allowed], pac_cv_attr_weak,[ AC_TRY_COMPILE([int foo(int) __attribute__ ((weak));],[int a;], pac_cv_attr_weak=yes,pac_cv_attr_weak=no)]) # Note that being able to compile with weak_import doesn't mean that # it works. AC_CACHE_CHECK([whether __attribute__ ((weak_import)) allowed], pac_cv_attr_weak_import,[ AC_TRY_COMPILE([int foo(int) __attribute__ ((weak_import));],[int a;], pac_cv_attr_weak_import=yes,pac_cv_attr_weak_import=no)]) # Check if the alias option for weak attributes is allowed AC_CACHE_CHECK([whether __attribute__((weak,alias(...))) allowed], pac_cv_attr_weak_alias,[ PAC_PUSH_FLAG([CFLAGS]) # force an error exit if the weak attribute isn't understood CFLAGS=-Werror AC_TRY_COMPILE([int __foo(int a){return 0;} int foo(int) __attribute__((weak,alias("__foo")));],[int a;], pac_cv_attr_weak_alias=yes,pac_cv_attr_weak_alias=no) # Restore original CFLAGS PAC_POP_FLAG([CFLAGS])]) if test "$pac_cv_attr_weak_alias" = "yes" ; then AC_DEFINE(HAVE_WEAK_ATTRIBUTE,1,[Attribute style weak pragma]) fi if test "$pac_cv_prog_c_weak_symbols" = "no" -a "$pac_cv_attr_weak_alias" = "no" ; then ifelse([$2],,:,[$2]) else ifelse([$1],,:,[$1]) fi ]) # # This is a replacement that checks that FAILURES are signaled as well # (later configure macros look for the .o file, not just success from the # compiler, but they should not HAVE to # dnl --- insert 2.52 compatibility here --- dnl 2.52 does not have AC_PROG_CC_WORKS ifdef([AC_PROG_CC_WORKS],,[AC_DEFUN([AC_PROG_CC_WORKS],)]) dnl AC_DEFUN([PAC_PROG_CC_WORKS], [AC_PROG_CC_WORKS AC_MSG_CHECKING([whether the C compiler sets its return status correctly]) AC_LANG_SAVE AC_LANG_C AC_TRY_COMPILE(,[int a = bzzzt;],notbroken=no,notbroken=yes) AC_MSG_RESULT($notbroken) if test "$notbroken" = "no" ; then AC_MSG_ERROR([installation or configuration problem: C compiler does not correctly set error code when a fatal error occurs]) fi ]) dnl/*D dnl PAC_PROG_C_MULTIPLE_WEAK_SYMBOLS - Test whether C and the dnl linker allow multiple weak symbols. dnl dnl Synopsis dnl PAC_PROG_C_MULTIPLE_WEAK_SYMBOLS(action-if-true,action-if-false) dnl dnl dnl D*/ AC_DEFUN([PAC_PROG_C_MULTIPLE_WEAK_SYMBOLS],[ AC_CACHE_CHECK([for multiple weak symbol support], pac_cv_prog_c_multiple_weak_symbols,[ # Test for multiple weak symbol support... PAC_COMPLINK_IFELSE([ AC_LANG_SOURCE([ extern int PFoo(int); extern int PFoo_(int); extern int pfoo_(int); #pragma weak PFoo = Foo #pragma weak PFoo_ = Foo #pragma weak pfoo_ = Foo int Foo(int); int Foo(a) { return a; } ]) ],[ AC_LANG_SOURCE([ extern int PFoo(int), PFoo_(int), pfoo_(int); int main() { return PFoo(0) + PFoo_(1) + pfoo_(2);} ]) ],[ pac_cv_prog_c_multiple_weak_symbols="yes" ]) dnl ]) if test "$pac_cv_prog_c_multiple_weak_symbols" = "yes" ; then ifelse([$1],,:,[$1]) else ifelse([$2],,:,[$2]) fi ]) dnl Use the value of enable-strict to update CFLAGS dnl pac_cc_strict_flags contains the strict flags. dnl dnl -std=c89 is used to select the C89 version of the ANSI/ISO C standard. dnl As of this writing, many C compilers still accepted only this version, dnl not the later C99 version. When all compilers accept C99, this dnl should be changed to the appropriate standard level. Note that we've dnl had trouble with gcc 2.95.3 accepting -std=c89 but then trying to dnl compile program with a invalid set of options dnl (-D __STRICT_ANSI__-trigraphs) AC_DEFUN([PAC_CC_STRICT],[ export enable_strict_done if test "$enable_strict_done" != "yes" ; then # Some comments on strict warning options. # These were added to improve portability # -Wstack-usage=262144 -- 32 bit FreeBSD did not like the mprobe test # allocating a big variable on the stack. (See tt#2160). The "right" # value requires further investigation; 1 MiB would have at least # caught #2160 at compile-time, and only two other tests show a # warning at 256k. # # These were added to reduce warnings: # -Wno-missing-field-initializers -- We want to allow a struct to be # initialized to zero using "struct x y = {0};" and not require # each field to be initialized individually. # -Wno-unused-parameter -- For portability, some parameters go unused # when we have different implementations of functions for # different platforms # -Wno-unused-label -- We add fn_exit: and fn_fail: on all functions, # but fn_fail may not be used if the function doesn't return an # error. # -Wno-sign-compare -- read() and write() return bytes read/written # as a signed value, but we often compare this to size_t (or # msg_sz_t) variables. # -Wno-format-zero-length -- this warning is irritating and useless, since # a zero-length format string is very well defined # These were removed to reduce warnings: # -Wcast-qual -- Sometimes we need to cast "volatile char*" to # "char*", e.g., for memcpy. # -Wpadded -- We catch struct padding with asserts when we need to # -Wredundant-decls -- Having redundant declarations is benign and the # code already has some. # -Waggregate-return -- This seems to be a performance-related warning # aggregate return values are legal in ANSI C, but they may be returned # in memory rather than through a register. We do use aggregate return # values, but they are structs of a single basic type (used to enforce # type checking for relative vs. absolute ptrs), and with optimization # the aggregate value is converted to a scalar. # -Wdeclaration-after-statement -- This is a C89 # requirement. When compiling with C99, this should be # disabled. # -Wfloat-equal -- There are places in hwloc that set a float var to 0, then # compare it to 0 later to see if it was updated. Also when using strtod() # one needs to compare the return value with 0 to see whether a conversion # was performed. # -Werror-implicit-function-declaration -- implicit function declarations # should never be tolerated. This also ensures that we get quick # compilation failures rather than later link failures that usually # come from a function name typo. # -Wcast-align -- Casting alignment warnings. This is an # important check, but is temporarily disabled, since it is # throwing too many (correct) warnings currently, causing us # to miss other warnings. # -Wshorten-64-to-32 -- Bad type-casting warnings. This is an # important check, but is temporarily disabled, since it is # throwing too many (correct) warnings currently, causing us # to miss other warnings. # # This was removed because it masks important failures (see ticket #2094). # However, since Intel compiler currently does not include -Wtype-limits # in -Wextra, -Wtype-limits was added to handle warnings with the Intel # compiler. # -Wno-type-limits -- There are places where we compare an unsigned to # a constant that happens to be zero e.g., if x is unsigned and # MIN_VAL is zero, we'd like to do "MPIU_Assert(x >= MIN_VAL);". # Note this option is not supported by gcc 4.2. This needs to be added # after most other warning flags, so that we catch a gcc bug on 32-bit # that doesn't give a warning that this is unsupported, unless another # warning is triggered, and then if gives an error. # the embedded newlines in this string are safe because we evaluate each # argument in the for-loop below and append them to the CFLAGS with a space # as the separator instead pac_common_strict_flags=" -Wall -Wextra -Wno-missing-field-initializers -Wstrict-prototypes -Wmissing-prototypes -DGCC_WALL -Wno-unused-parameter -Wno-unused-label -Wshadow -Wmissing-declarations -Wno-long-long -Wundef -Wno-endif-labels -Wpointer-arith -Wbad-function-cast -Wwrite-strings -Wno-sign-compare -Wold-style-definition -Wno-multichar -Wno-deprecated-declarations -Wpacked -Wnested-externs -Winvalid-pch -Wno-pointer-sign -Wvariadic-macros -Wno-format-zero-length -Wtype-limits -Werror-implicit-function-declaration -Wstack-usage=262144 " enable_c89=no enable_c99=yes enable_posix=2001 enable_opt=yes flags="`echo $1 | sed -e 's/:/ /g' -e 's/,/ /g'`" for flag in ${flags}; do case "$flag" in c89) enable_strict_done="yes" enable_c89=yes enable_c99=no ;; c99) enable_strict_done="yes" enable_c89=no enable_c99=yes ;; posix1995) enable_strict_done="yes" enable_posix=1995 ;; posix|posix2001) enable_strict_done="yes" enable_posix=2001 ;; posix2008) enable_strict_done="yes" enable_posix=2008 ;; noposix) enable_strict_done="yes" enable_posix=no ;; opt) enable_strict_done="yes" enable_opt=yes ;; noopt) enable_strict_done="yes" enable_opt=no ;; all|yes) enable_strict_done="yes" enable_c99=yes enable_posix=2001 enable_opt=yes ;; no) # Accept and ignore this value : ;; *) if test -n "$flag" ; then AC_MSG_WARN([Unrecognized value for enable-strict:$flag]) fi ;; esac done pac_cc_strict_flags="" if test "${enable_strict_done}" = "yes" ; then if test "${enable_opt}" = "yes" ; then pac_cc_strict_flags="-O2" fi pac_cc_strict_flags="$pac_cc_strict_flags $pac_common_strict_flags" case "$enable_posix" in no) : ;; 1995) PAC_APPEND_FLAG([-D_POSIX_C_SOURCE=199506L],[pac_cc_strict_flags]) ;; 2001) PAC_APPEND_FLAG([-D_POSIX_C_SOURCE=200112L],[pac_cc_strict_flags]) ;; 2008) PAC_APPEND_FLAG([-D_POSIX_C_SOURCE=200809L],[pac_cc_strict_flags]) ;; *) AC_MSG_ERROR([internal error, unexpected POSIX version: '$enable_posix']) ;; esac # We only allow one of strict-C99 or strict-C89 to be # enabled. If C99 is enabled, we automatically disable C89. if test "${enable_c99}" = "yes" ; then PAC_APPEND_FLAG([-std=c99],[pac_cc_strict_flags]) # Use -D_STDC_C99= for Solaris compilers. See # http://lists.gnu.org/archive/html/autoconf/2010-12/msg00059.html # for discussion on why not to use -xc99 PAC_APPEND_FLAG([-D_STDC_C99=],[pac_cc_strict_flags]) elif test "${enable_c89}" = "yes" ; then PAC_APPEND_FLAG([-std=c89],[pac_cc_strict_flags]) PAC_APPEND_FLAG([-Wdeclaration-after-statement],[pac_cc_strict_flags]) fi fi # See if the above options work with the compiler accepted_flags="" for flag in $pac_cc_strict_flags ; do PAC_PUSH_FLAG([CFLAGS]) CFLAGS="$CFLAGS $accepted_flags" PAC_C_CHECK_COMPILER_OPTION([$flag],[accepted_flags="$accepted_flags $flag"],) PAC_POP_FLAG([CFLAGS]) done pac_cc_strict_flags=$accepted_flags fi ]) dnl/*D dnl PAC_ARG_STRICT - Add --enable-strict to configure. dnl dnl Synopsis: dnl PAC_ARG_STRICT dnl dnl Output effects: dnl Adds '--enable-strict' to the command line. dnl dnl D*/ AC_DEFUN([PAC_ARG_STRICT],[ AC_ARG_ENABLE(strict, AC_HELP_STRING([--enable-strict], [Turn on strict compilation testing])) PAC_CC_STRICT($enable_strict) CFLAGS="$CFLAGS $pac_cc_strict_flags" export CFLAGS ]) dnl Return the integer structure alignment in pac_cv_c_max_integer_align dnl Possible values include dnl packed dnl two dnl four dnl eight dnl dnl In addition, a "Could not determine alignment" and a "error!" dnl return is possible. AC_DEFUN([PAC_C_MAX_INTEGER_ALIGN],[ AC_CACHE_CHECK([for max C struct integer alignment], pac_cv_c_max_integer_align,[ AC_TRY_RUN([ #include #define DBG(a,b,c) int main( int argc, char *argv[] ) { FILE *cf; int is_packed = 1; int is_two = 1; int is_four = 1; int is_eight = 1; struct { char a; int b; } char_int; struct { char a; short b; } char_short; struct { char a; long b; } char_long; struct { char a; int b; char c; } char_int_char; struct { char a; short b; char c; } char_short_char; #ifdef HAVE_LONG_LONG_INT struct { long long int a; char b; } lli_c; struct { char a; long long int b; } c_lli; #endif int size, extent, extent2; /* assume max integer alignment isn't 8 if we don't have * an eight-byte value :) */ #ifdef HAVE_LONG_LONG_INT if (sizeof(int) < 8 && sizeof(long) < 8 && sizeof(long long int) < 8) is_eight = 0; #else if (sizeof(int) < 8 && sizeof(long) < 8) is_eight = 0; #endif size = sizeof(char) + sizeof(int); extent = sizeof(char_int); if (size != extent) is_packed = 0; if ( (extent % 2) != 0) is_two = 0; if ( (extent % 4) != 0) is_four = 0; if (sizeof(int) == 8 && (extent % 8) != 0) is_eight = 0; DBG("char_int",size,extent); size = sizeof(char) + sizeof(short); extent = sizeof(char_short); if (size != extent) is_packed = 0; if ( (extent % 2) != 0) is_two = 0; if (sizeof(short) == 4 && (extent % 4) != 0) is_four = 0; if (sizeof(short) == 8 && (extent % 8) != 0) is_eight = 0; DBG("char_short",size,extent); size = sizeof(char) + sizeof(long); extent = sizeof(char_long); if (size != extent) is_packed = 0; if ( (extent % 2) != 0) is_two = 0; if ( (extent % 4) != 0) is_four = 0; if (sizeof(long) == 8 && (extent % 8) != 0) is_eight = 0; DBG("char_long",size,extent); #ifdef HAVE_LONG_LONG_INT size = sizeof(char) + sizeof(long long int); extent = sizeof(lli_c); extent2 = sizeof(c_lli); if (size != extent) is_packed = 0; if ( (extent % 2) != 0 && (extent2 % 2) != 0) is_two = 0; if ( (extent % 4) != 0 && (extent2 % 4) != 0) is_four = 0; if (sizeof(long long int) >= 8 && (extent % 8) != 0 && (extent2 % 8) != 0) is_eight = 0; #endif size = sizeof(char) + sizeof(int) + sizeof(char); extent = sizeof(char_int_char); if (size != extent) is_packed = 0; if ( (extent % 2) != 0) is_two = 0; if ( (extent % 4) != 0) is_four = 0; if (sizeof(int) == 8 && (extent % 8) != 0) is_eight = 0; DBG("char_int_char",size,extent); size = sizeof(char) + sizeof(short) + sizeof(char); extent = sizeof(char_short_char); if (size != extent) is_packed = 0; if ( (extent % 2) != 0) is_two = 0; if (sizeof(short) == 4 && (extent % 4) != 0) is_four = 0; if (sizeof(short) == 8 && (extent % 8) != 0) is_eight = 0; DBG("char_short_char",size,extent); /* If aligned mod 8, it will be aligned mod 4 */ if (is_eight) { is_four = 0; is_two = 0; } if (is_four) is_two = 0; /* Tabulate the results */ cf = fopen( "ctest.out", "w" ); if (is_packed + is_two + is_four + is_eight == 0) { fprintf( cf, "Could not determine alignment\n" ); } else { if (is_packed + is_two + is_four + is_eight != 1) { fprintf( cf, "error!\n" ); } else { if (is_packed) fprintf( cf, "packed\n" ); if (is_two) fprintf( cf, "two\n" ); if (is_four) fprintf( cf, "four\n" ); if (is_eight) fprintf( cf, "eight\n" ); } } fclose( cf ); return 0; }], pac_cv_c_max_integer_align=`cat ctest.out`, pac_cv_c_max_integer_align="unknown", pac_cv_c_max_integer_align="$CROSS_ALIGN_STRUCT_INT") rm -f ctest.out ]) if test -z "$pac_cv_c_max_integer_align" ; then pac_cv_c_max_integer_align="unknown" fi ]) dnl Return the floating point structure alignment in dnl pac_cv_c_max_fp_align. dnl dnl Possible values include: dnl packed dnl two dnl four dnl eight dnl sixteen dnl dnl In addition, a "Could not determine alignment" and a "error!" dnl return is possible. AC_DEFUN([PAC_C_MAX_FP_ALIGN],[ AC_CACHE_CHECK([for max C struct floating point alignment], pac_cv_c_max_fp_align,[ AC_TRY_RUN([ #include #define DBG(a,b,c) int main( int argc, char *argv[] ) { FILE *cf; int is_packed = 1; int is_two = 1; int is_four = 1; int is_eight = 1; int is_sixteen = 1; struct { char a; float b; } char_float; struct { float b; char a; } float_char; struct { char a; double b; } char_double; struct { double b; char a; } double_char; #ifdef HAVE_LONG_DOUBLE struct { char a; long double b; } char_long_double; struct { long double b; char a; } long_double_char; struct { long double a; int b; char c; } long_double_int_char; #endif int size, extent1, extent2; size = sizeof(char) + sizeof(float); extent1 = sizeof(char_float); extent2 = sizeof(float_char); if (size != extent1) is_packed = 0; if ( (extent1 % 2) != 0 && (extent2 % 2) != 0) is_two = 0; if ( (extent1 % 4) != 0 && (extent2 % 4) != 0) is_four = 0; if (sizeof(float) == 8 && (extent1 % 8) != 0 && (extent2 % 8) != 0) is_eight = 0; DBG("char_float",size,extent1); size = sizeof(char) + sizeof(double); extent1 = sizeof(char_double); extent2 = sizeof(double_char); if (size != extent1) is_packed = 0; if ( (extent1 % 2) != 0 && (extent2 % 2) != 0) is_two = 0; if ( (extent1 % 4) != 0 && (extent2 % 4) != 0) is_four = 0; if (sizeof(double) == 8 && (extent1 % 8) != 0 && (extent2 % 8) != 0) is_eight = 0; DBG("char_double",size,extent1); #ifdef HAVE_LONG_DOUBLE size = sizeof(char) + sizeof(long double); extent1 = sizeof(char_long_double); extent2 = sizeof(long_double_char); if (size != extent1) is_packed = 0; if ( (extent1 % 2) != 0 && (extent2 % 2) != 0) is_two = 0; if ( (extent1 % 4) != 0 && (extent2 % 4) != 0) is_four = 0; if (sizeof(long double) >= 8 && (extent1 % 8) != 0 && (extent2 % 8) != 0) is_eight = 0; if (sizeof(long double) > 8 && (extent1 % 16) != 0 && (extent2 % 16) != 0) is_sixteen = 0; DBG("char_long-double",size,extent1); extent1 = sizeof(long_double_int_char); if ( (extent1 % 2) != 0) is_two = 0; if ( (extent1 % 4) != 0) is_four = 0; if (sizeof(long double) >= 8 && (extent1 % 8) != 0) is_eight = 0; if (sizeof(long double) > 8 && (extent1 % 16) != 0) is_sixteen = 0; #else is_sixteen = 0; #endif if (is_sixteen) { is_eight = 0; is_four = 0; is_two = 0; } if (is_eight) { is_four = 0; is_two = 0; } if (is_four) is_two = 0; /* Tabulate the results */ cf = fopen( "ctest.out", "w" ); if (is_packed + is_two + is_four + is_eight + is_sixteen == 0) { fprintf( cf, "Could not determine alignment\n" ); } else { if (is_packed + is_two + is_four + is_eight + is_sixteen != 1) { fprintf( cf, "error!\n" ); } else { if (is_packed) fprintf( cf, "packed\n" ); if (is_two) fprintf( cf, "two\n" ); if (is_four) fprintf( cf, "four\n" ); if (is_eight) fprintf( cf, "eight\n" ); if (is_sixteen) fprintf( cf, "sixteen\n" ); } } fclose( cf ); return 0; }], pac_cv_c_max_fp_align=`cat ctest.out`, pac_cv_c_max_fp_align="unknown", pac_cv_c_max_fp_align="$CROSS_ALIGN_STRUCT_FP") rm -f ctest.out ]) if test -z "$pac_cv_c_max_fp_align" ; then pac_cv_c_max_fp_align="unknown" fi ]) dnl Return the floating point structure alignment in dnl pac_cv_c_max_double_fp_align. dnl dnl Possible values include: dnl packed dnl two dnl four dnl eight dnl dnl In addition, a "Could not determine alignment" and a "error!" dnl return is possible. AC_DEFUN([PAC_C_MAX_DOUBLE_FP_ALIGN],[ AC_CACHE_CHECK([for max C struct alignment of structs with doubles], pac_cv_c_max_double_fp_align,[ AC_TRY_RUN([ #include #define DBG(a,b,c) int main( int argc, char *argv[] ) { FILE *cf; int is_packed = 1; int is_two = 1; int is_four = 1; int is_eight = 1; struct { char a; float b; } char_float; struct { float b; char a; } float_char; struct { char a; double b; } char_double; struct { double b; char a; } double_char; int size, extent1, extent2; size = sizeof(char) + sizeof(float); extent1 = sizeof(char_float); extent2 = sizeof(float_char); if (size != extent1) is_packed = 0; if ( (extent1 % 2) != 0 && (extent2 % 2) != 0) is_two = 0; if ( (extent1 % 4) != 0 && (extent2 % 4) != 0) is_four = 0; if (sizeof(float) == 8 && (extent1 % 8) != 0 && (extent2 % 8) != 0) is_eight = 0; DBG("char_float",size,extent1); size = sizeof(char) + sizeof(double); extent1 = sizeof(char_double); extent2 = sizeof(double_char); if (size != extent1) is_packed = 0; if ( (extent1 % 2) != 0 && (extent2 % 2) != 0) is_two = 0; if ( (extent1 % 4) != 0 && (extent2 % 4) != 0) is_four = 0; if (sizeof(double) == 8 && (extent1 % 8) != 0 && (extent2 % 8) != 0) is_eight = 0; DBG("char_double",size,extent1); if (is_eight) { is_four = 0; is_two = 0; } if (is_four) is_two = 0; /* Tabulate the results */ cf = fopen( "ctest.out", "w" ); if (is_packed + is_two + is_four + is_eight == 0) { fprintf( cf, "Could not determine alignment\n" ); } else { if (is_packed + is_two + is_four + is_eight != 1) { fprintf( cf, "error!\n" ); } else { if (is_packed) fprintf( cf, "packed\n" ); if (is_two) fprintf( cf, "two\n" ); if (is_four) fprintf( cf, "four\n" ); if (is_eight) fprintf( cf, "eight\n" ); } } fclose( cf ); return 0; }], pac_cv_c_max_double_fp_align=`cat ctest.out`, pac_cv_c_max_double_fp_align="unknown", pac_cv_c_max_double_fp_align="$CROSS_ALIGN_STRUCT_DOUBLE_FP") rm -f ctest.out ]) if test -z "$pac_cv_c_max_double_fp_align" ; then pac_cv_c_max_double_fp_align="unknown" fi ]) AC_DEFUN([PAC_C_MAX_LONGDOUBLE_FP_ALIGN],[ AC_CACHE_CHECK([for max C struct floating point alignment with long doubles], pac_cv_c_max_longdouble_fp_align,[ AC_TRY_RUN([ #include #define DBG(a,b,c) int main( int argc, char *argv[] ) { FILE *cf; int is_packed = 1; int is_two = 1; int is_four = 1; int is_eight = 1; int is_sixteen = 1; struct { char a; long double b; } char_long_double; struct { long double b; char a; } long_double_char; struct { long double a; int b; char c; } long_double_int_char; int size, extent1, extent2; size = sizeof(char) + sizeof(long double); extent1 = sizeof(char_long_double); extent2 = sizeof(long_double_char); if (size != extent1) is_packed = 0; if ( (extent1 % 2) != 0 && (extent2 % 2) != 0) is_two = 0; if ( (extent1 % 4) != 0 && (extent2 % 4) != 0) is_four = 0; if (sizeof(long double) >= 8 && (extent1 % 8) != 0 && (extent2 % 8) != 0) is_eight = 0; if (sizeof(long double) > 8 && (extent1 % 16) != 0 && (extent2 % 16) != 0) is_sixteen = 0; DBG("char_long-double",size,extent1); extent1 = sizeof(long_double_int_char); if ( (extent1 % 2) != 0) is_two = 0; if ( (extent1 % 4) != 0) is_four = 0; if (sizeof(long double) >= 8 && (extent1 % 8) != 0) is_eight = 0; if (sizeof(long double) > 8 && (extent1 % 16) != 0) is_sixteen = 0; if (is_sixteen) { is_eight = 0; is_four = 0; is_two = 0; } if (is_eight) { is_four = 0; is_two = 0; } if (is_four) is_two = 0; /* Tabulate the results */ cf = fopen( "ctest.out", "w" ); if (is_packed + is_two + is_four + is_eight + is_sixteen == 0) { fprintf( cf, "Could not determine alignment\n" ); } else { if (is_packed + is_two + is_four + is_eight + is_sixteen != 1) { fprintf( cf, "error!\n" ); } else { if (is_packed) fprintf( cf, "packed\n" ); if (is_two) fprintf( cf, "two\n" ); if (is_four) fprintf( cf, "four\n" ); if (is_eight) fprintf( cf, "eight\n" ); if (is_sixteen) fprintf( cf, "sixteen\n" ); } } fclose( cf ); return 0; }], pac_cv_c_max_longdouble_fp_align=`cat ctest.out`, pac_cv_c_max_longdouble_fp_align="unknown", pac_cv_c_max_longdouble_fp_align="$CROSS_ALIGN_STRUCT_LONGDOUBLE_FP") rm -f ctest.out ]) if test -z "$pac_cv_c_max_longdouble_fp_align" ; then pac_cv_c_max_longdouble_fp_align="unknown" fi ]) dnl Other tests assume that there is potentially a maximum alignment dnl and that if there is no maximum alignment, or a type is smaller than dnl that value, then we align on the size of the value, with the exception dnl of the "position-based alignment" rules we test for separately. dnl dnl It turns out that these assumptions have fallen short in at least one dnl case, on MacBook Pros, where doubles are aligned on 4-byte boundaries dnl even when long doubles are aligned on 16-byte boundaries. So this test dnl is here specifically to handle this case. dnl dnl Puts result in pac_cv_c_double_alignment_exception. dnl dnl Possible values currently include no and four. dnl AC_DEFUN([PAC_C_DOUBLE_ALIGNMENT_EXCEPTION],[ AC_CACHE_CHECK([if double alignment breaks rules, find actual alignment], pac_cv_c_double_alignment_exception,[ AC_TRY_RUN([ #include #define DBG(a,b,c) int main( int argc, char *argv[] ) { FILE *cf; struct { char a; double b; } char_double; struct { double b; char a; } double_char; int extent1, extent2, align_4 = 0; extent1 = sizeof(char_double); extent2 = sizeof(double_char); /* we're interested in the largest value, will let separate test * deal with position-based issues. */ if (extent1 < extent2) extent1 = extent2; if ((sizeof(double) == 8) && (extent1 % 8) != 0) { if (extent1 % 4 == 0) { #ifdef HAVE_MAX_FP_ALIGNMENT if (HAVE_MAX_FP_ALIGNMENT >= 8) align_4 = 1; #else align_4 = 1; #endif } } cf = fopen( "ctest.out", "w" ); if (align_4) fprintf( cf, "four\n" ); else fprintf( cf, "no\n" ); fclose( cf ); return 0; }], pac_cv_c_double_alignment_exception=`cat ctest.out`, pac_cv_c_double_alignment_exception="unknown", pac_cv_c_double_alignment_exception="$CROSS_ALIGN_DOUBLE_EXCEPTION") rm -f ctest.out ]) if test -z "$pac_cv_c_double_alignment_exception" ; then pac_cv_c_double_alignment_exception="unknown" fi ]) dnl Test for odd struct alignment rule that only applies max. dnl padding when double value is at front of type. dnl Puts result in pac_cv_c_double_pos_align. dnl dnl Search for "Power alignment mode" for more details. dnl dnl Possible values include yes, no, and unknown. dnl AC_DEFUN([PAC_C_DOUBLE_POS_ALIGN],[ AC_CACHE_CHECK([if alignment of structs with doubles is based on position], pac_cv_c_double_pos_align,[ AC_TRY_RUN([ #include #define DBG(a,b,c) int main( int argc, char *argv[] ) { FILE *cf; int padding_varies_by_pos = 0; struct { char a; double b; } char_double; struct { double b; char a; } double_char; int extent1, extent2; extent1 = sizeof(char_double); extent2 = sizeof(double_char); if (extent1 != extent2) padding_varies_by_pos = 1; cf = fopen( "ctest.out", "w" ); if (padding_varies_by_pos) fprintf( cf, "yes\n" ); else fprintf( cf, "no\n" ); fclose( cf ); return 0; }], pac_cv_c_double_pos_align=`cat ctest.out`, pac_cv_c_double_pos_align="unknown", pac_cv_c_double_pos_align="$CROSS_ALIGN_DOUBLE_POS") rm -f ctest.out ]) if test -z "$pac_cv_c_double_pos_align" ; then pac_cv_c_double_pos_align="unknown" fi ]) dnl Test for odd struct alignment rule that only applies max. dnl padding when long long int value is at front of type. dnl Puts result in pac_cv_c_llint_pos_align. dnl dnl Search for "Power alignment mode" for more details. dnl dnl Possible values include yes, no, and unknown. dnl AC_DEFUN([PAC_C_LLINT_POS_ALIGN],[ AC_CACHE_CHECK([if alignment of structs with long long ints is based on position], pac_cv_c_llint_pos_align,[ AC_TRY_RUN([ #include #define DBG(a,b,c) int main( int argc, char *argv[] ) { FILE *cf; int padding_varies_by_pos = 0; #ifdef HAVE_LONG_LONG_INT struct { char a; long long int b; } char_llint; struct { long long int b; char a; } llint_char; int extent1, extent2; extent1 = sizeof(char_llint); extent2 = sizeof(llint_char); if (extent1 != extent2) padding_varies_by_pos = 1; #endif cf = fopen( "ctest.out", "w" ); if (padding_varies_by_pos) fprintf( cf, "yes\n" ); else fprintf( cf, "no\n" ); fclose( cf ); return 0; }], pac_cv_c_llint_pos_align=`cat ctest.out`, pac_cv_c_llint_pos_align="unknown", pac_cv_c_llint_pos_align="$CROSS_ALIGN_LLINT_POS") rm -f ctest.out ]) if test -z "$pac_cv_c_llint_pos_align" ; then pac_cv_c_llint_pos_align="unknown" fi ]) dnl/*D dnl PAC_FUNC_NEEDS_DECL - Set NEEDS__DECL if a declaration is needed dnl dnl Synopsis: dnl PAC_FUNC_NEEDS_DECL(headerfiles,funcname) dnl dnl Output Effect: dnl Sets 'NEEDS__DECL' if 'funcname' is not declared by the dnl headerfiles. dnl dnl Approach: dnl Attempt to assign library function to function pointer. If the function dnl is not declared in a header, this will fail. Use a non-static global so dnl the compiler does not warn about an unused variable. dnl dnl Simply calling the function is not enough because C89 compilers allow dnl calls to implicitly-defined functions. Re-declaring a library function dnl with an incompatible prototype is also not sufficient because some dnl compilers (notably clang-3.2) only produce a warning in this case. dnl dnl D*/ AC_DEFUN([PAC_FUNC_NEEDS_DECL],[ AC_CACHE_CHECK([whether $2 needs a declaration], pac_cv_func_decl_$2,[ AC_TRY_COMPILE([$1 void (*fptr)(void) = (void(*)(void))$2;],[], pac_cv_func_decl_$2=no,pac_cv_func_decl_$2=yes)]) if test "$pac_cv_func_decl_$2" = "yes" ; then changequote(<<,>>)dnl define(<>, translit(NEEDS_$2_DECL, [a-z *], [A-Z__]))dnl changequote([, ])dnl AC_DEFINE_UNQUOTED(PAC_FUNC_NAME,1,[Define if $2 needs a declaration]) undefine([PAC_FUNC_NAME]) fi ]) dnl PAC_C_GNU_ATTRIBUTE - See if the GCC __attribute__ specifier is allow. dnl Use the following dnl #ifndef HAVE_GCC_ATTRIBUTE dnl #define __attribute__(a) dnl #endif dnl If *not*, define __attribute__(a) as null dnl dnl We start by requiring Gcc. Some other compilers accept __attribute__ dnl but generate warning messages, or have different interpretations dnl (which seems to make __attribute__ just as bad as #pragma) dnl For example, the Intel icc compiler accepts __attribute__ and dnl __attribute__((pure)) but generates warnings for __attribute__((format...)) dnl AC_DEFUN([PAC_C_GNU_ATTRIBUTE],[ AC_REQUIRE([AC_PROG_CC_GNU]) if test "$ac_cv_prog_gcc" = "yes" ; then AC_CACHE_CHECK([whether __attribute__ allowed], pac_cv_gnu_attr_pure,[ AC_TRY_COMPILE([int foo(int) __attribute__ ((pure));],[int a;], pac_cv_gnu_attr_pure=yes,pac_cv_gnu_attr_pure=no)]) AC_CACHE_CHECK([whether __attribute__((format)) allowed], pac_cv_gnu_attr_format,[ AC_TRY_COMPILE([int foo(char *,...) __attribute__ ((format(printf,1,2)));],[int a;], pac_cv_gnu_attr_format=yes,pac_cv_gnu_attr_format=no)]) if test "$pac_cv_gnu_attr_pure" = "yes" -a "$pac_cv_gnu_attr_format" = "yes" ; then AC_DEFINE(HAVE_GCC_ATTRIBUTE,1,[Define if GNU __attribute__ is supported]) fi fi ]) dnl dnl Check for a broken install (fails to preserve file modification times, dnl thus breaking libraries. dnl dnl Create a library, install it, and then try to link against it. AC_DEFUN([PAC_PROG_INSTALL_BREAKS_LIBS],[ AC_CACHE_CHECK([whether install breaks libraries], ac_cv_prog_install_breaks_libs,[ AC_REQUIRE([AC_PROG_RANLIB]) AC_REQUIRE([AC_PROG_INSTALL]) AC_REQUIRE([AC_PROG_CC]) ac_cv_prog_install_breaks_libs=yes AC_COMPILE_IFELSE([ AC_LANG_SOURCE([ int foo(int); int foo(int a){return a;} ]) ],[ if ${AR-ar} ${AR_FLAGS-cr} libconftest.a conftest.$OBJEXT >/dev/null 2>&1 ; then if ${RANLIB-:} libconftest.a >/dev/null 2>&1 ; then # Anything less than sleep 10, and Mac OS/X (Darwin) # will claim that install works because ranlib won't complain sleep 10 libinstall="$INSTALL_DATA" eval "libinstall=\"$libinstall\"" if ${libinstall} libconftest.a libconftest1.a >/dev/null 2>&1 ; then saved_LIBS="$LIBS" LIBS="libconftest1.a" AC_LINK_IFELSE([ AC_LANG_SOURCE([ extern int foo(int); int main(int argc, char **argv){ return foo(0); } ]) ],[ # Success! Install works ac_cv_prog_install_breaks_libs=no ],[ # Failure! Does install -p work? rm -f libconftest1.a if ${libinstall} -p libconftest.a libconftest1.a >/dev/null 2>&1 ; then AC_LINK_IFELSE([],[ # Success! Install works ac_cv_prog_install_breaks_libs="no, with -p" ]) fi ]) LIBS="$saved_LIBS" fi fi fi ]) rm -f libconftest*.a ]) dnl Endof ac_cache_check if test -z "$RANLIB_AFTER_INSTALL" ; then RANLIB_AFTER_INSTALL=no fi case "$ac_cv_prog_install_breaks_libs" in yes) RANLIB_AFTER_INSTALL=yes ;; "no, with -p") INSTALL_DATA="$INSTALL_DATA -p" ;; *) # Do nothing : ;; esac AC_SUBST(RANLIB_AFTER_INSTALL) ]) # # determine if the compiler defines a symbol containing the function name # # These tests check not only that the compiler defines some symbol, such # as __FUNCTION__, but that the symbol correctly names the function. # # Defines # HAVE__FUNC__ (if __func__ defined) # HAVE_CAP__FUNC__ (if __FUNC__ defined) # HAVE__FUNCTION__ (if __FUNCTION__ defined) # AC_DEFUN([PAC_CC_FUNCTION_NAME_SYMBOL],[ AC_CACHE_CHECK([whether the compiler defines __func__], pac_cv_have__func__,[ tmp_am_cross=no AC_RUN_IFELSE([ AC_LANG_SOURCE([ #include int foo(void); int foo(void) { return (strcmp(__func__, "foo") == 0); } int main(int argc, char ** argv) { return (foo() ? 0 : 1); } ]) ], pac_cv_have__func__=yes, pac_cv_have__func__=no,tmp_am_cross=yes) if test "$tmp_am_cross" = yes ; then AC_LINK_IFELSE([ AC_LANG_SOURCE([ #include int foo(void); int foo(void) { return (strcmp(__func__, "foo") == 0); } int main(int argc, char ** argv) { return (foo() ? 0 : 1); } ]) ], pac_cv_have__func__=yes, pac_cv_have__func__=no) fi ]) if test "$pac_cv_have__func__" = "yes" ; then AC_DEFINE(HAVE__FUNC__,,[define if the compiler defines __func__]) fi AC_CACHE_CHECK([whether the compiler defines __FUNC__], pac_cv_have_cap__func__,[ tmp_am_cross=no AC_RUN_IFELSE([ AC_LANG_SOURCE([ #include int foo(void); int foo(void) { return (strcmp(__FUNC__, "foo") == 0); } int main(int argc, char ** argv) { return (foo() ? 0 : 1); } ]) ], pac_cv_have_cap__func__=yes, pac_cv_have_cap__func__=no,tmp_am_cross=yes) if test "$tmp_am_cross" = yes ; then AC_LINK_IFELSE([ AC_LANG_SOURCE([ #include int foo(void); int foo(void) { return (strcmp(__FUNC__, "foo") == 0); } int main(int argc, char ** argv) { return (foo() ? 0 : 1); } ]) ], pac_cv_have__func__=yes, pac_cv_have__func__=no) fi ]) if test "$pac_cv_have_cap__func__" = "yes" ; then AC_DEFINE(HAVE_CAP__FUNC__,,[define if the compiler defines __FUNC__]) fi AC_CACHE_CHECK([whether the compiler sets __FUNCTION__], pac_cv_have__function__,[ tmp_am_cross=no AC_RUN_IFELSE([ AC_LANG_SOURCE([ #include int foo(void); int foo(void) { return (strcmp(__FUNCTION__, "foo") == 0); } int main(int argc, char ** argv) { return (foo() ? 0 : 1); } ]) ], pac_cv_have__function__=yes, pac_cv_have__function__=no,tmp_am_cross=yes) if test "$tmp_am_cross" = yes ; then AC_LINK_IFELSE([ AC_LANG_SOURCE([ #include int foo(void); int foo(void) { return (strcmp(__FUNCTION__, "foo") == 0); } int main(int argc, char ** argv) { return (foo() ? 0 : 1); } ]) ], pac_cv_have__func__=yes, pac_cv_have__func__=no) fi ]) if test "$pac_cv_have__function__" = "yes" ; then AC_DEFINE(HAVE__FUNCTION__,,[define if the compiler defines __FUNCTION__]) fi ]) dnl Check structure alignment AC_DEFUN([PAC_STRUCT_ALIGNMENT],[ # Initialize alignment checks is_packed=1 is_two=1 is_four=1 is_eight=1 is_largest=1 # See if long double exists AC_TRY_COMPILE(,[long double a;],have_long_double=yes,have_long_double=no) # Get sizes of regular types AC_CHECK_SIZEOF(char) AC_CHECK_SIZEOF(int) AC_CHECK_SIZEOF(short) AC_CHECK_SIZEOF(long) AC_CHECK_SIZEOF(float) AC_CHECK_SIZEOF(double) AC_CHECK_SIZEOF(long double) # char_int comparison AC_CHECK_SIZEOF(char_int, 0, [typedef struct { char a; int b; } char_int; ]) size=`expr $ac_cv_sizeof_char + $ac_cv_sizeof_int` extent=$ac_cv_sizeof_char_int if test "$size" != "$extent" ; then is_packed=0 ; fi if test "`expr $extent % $ac_cv_sizeof_int`" != "0" ; then is_largest=0 ; fi if test "`expr $extent % 2`" != "0" ; then is_two=0 ; fi if test "`expr $extent % 4`" != "0" ; then is_four=0 ; fi if test "$ac_cv_sizeof_int" = "8" -a "`expr $extent % 8`" != "0" ; then is_eight=0 fi # char_short comparison AC_CHECK_SIZEOF(char_short, 0, [typedef struct { char a; short b; } char_short; ]) size=`expr $ac_cv_sizeof_char + $ac_cv_sizeof_short` extent=$ac_cv_sizeof_char_short if test "$size" != "$extent" ; then is_packed=0 ; fi if test "`expr $extent % $ac_cv_sizeof_short`" != "0" ; then is_largest=0 ; fi if test "`expr $extent % 2`" != "0" ; then is_two=0 ; fi if test "$ac_cv_sizeof_short" = "4" -a "`expr $extent % 4`" != "0" ; then is_four=0 fi if test "$ac_cv_sizeof_short" = "8" -a "`expr $extent % 8`" != "0" ; then is_eight=0 fi # char_long comparison AC_CHECK_SIZEOF(char_long, 0, [typedef struct { char a; long b; } char_long; ]) size=`expr $ac_cv_sizeof_char + $ac_cv_sizeof_long` extent=$ac_cv_sizeof_char_long if test "$size" != "$extent" ; then is_packed=0 ; fi if test "`expr $extent % $ac_cv_sizeof_long`" != "0" ; then is_largest=0 ; fi if test "`expr $extent % 2`" != "0" ; then is_two=0 ; fi if test "`expr $extent % 4`" != "0" ; then is_four=0 ; fi if test "$ac_cv_sizeof_long" = "8" -a "`expr $extent % 8`" != "0" ; then is_eight=0 fi # char_float comparison AC_CHECK_SIZEOF(char_float, 0, [typedef struct { char a; float b; } char_float; ]) size=`expr $ac_cv_sizeof_char + $ac_cv_sizeof_float` extent=$ac_cv_sizeof_char_float if test "$size" != "$extent" ; then is_packed=0 ; fi if test "`expr $extent % $ac_cv_sizeof_float`" != "0" ; then is_largest=0 ; fi if test "`expr $extent % 2`" != "0" ; then is_two=0 ; fi if test "`expr $extent % 4`" != "0" ; then is_four=0 ; fi if test "$ac_cv_sizeof_float" = "8" -a "`expr $extent % 8`" != "0" ; then is_eight=0 fi # char_double comparison AC_CHECK_SIZEOF(char_double, 0, [typedef struct { char a; double b; } char_double; ]) size=`expr $ac_cv_sizeof_char + $ac_cv_sizeof_double` extent=$ac_cv_sizeof_char_double if test "$size" != "$extent" ; then is_packed=0 ; fi if test "`expr $extent % $ac_cv_sizeof_double`" != "0" ; then is_largest=0 ; fi if test "`expr $extent % 2`" != "0" ; then is_two=0 ; fi if test "`expr $extent % 4`" != "0" ; then is_four=0 ; fi if test "$ac_cv_sizeof_double" = "8" -a "`expr $extent % 8`" != "0" ; then is_eight=0 fi # char_long_double comparison if test "$have_long_double" = "yes"; then AC_CHECK_SIZEOF(char_long_double, 0, [ typedef struct { char a; long double b; } char_long_double; ]) size=`expr $ac_cv_sizeof_char + $ac_cv_sizeof_long_double` extent=$ac_cv_sizeof_char_long_double if test "$size" != "$extent" ; then is_packed=0 ; fi if test "`expr $extent % $ac_cv_sizeof_long_double`" != "0" ; then is_largest=0 ; fi if test "`expr $extent % 2`" != "0" ; then is_two=0 ; fi if test "`expr $extent % 4`" != "0" ; then is_four=0 ; fi if test "$ac_cv_sizeof_long_double" = "8" -a "`expr $extent % 8`" != "0" ; then is_eight=0 fi fi # char_int_char comparison AC_CHECK_SIZEOF(char_int_char, 0, [ typedef struct { char a; int b; char c; } char_int_char; ]) size=`expr $ac_cv_sizeof_char + $ac_cv_sizeof_int + $ac_cv_sizeof_char` extent=$ac_cv_sizeof_char_int_char if test "$size" != "$extent" ; then is_packed=0 ; fi if test "`expr $extent % $ac_cv_sizeof_int`" != "0" ; then is_largest=0 ; fi if test "`expr $extent % 2`" != "0" ; then is_two=0 ; fi if test "`expr $extent % 4`" != "0" ; then is_four=0 ; fi if test "$ac_cv_sizeof_int" = "8" -a "`expr $extent % 8`" != "0" ; then is_eight=0 fi # char_short_char comparison AC_CHECK_SIZEOF(char_short_char, 0, [ typedef struct { char a; short b; char c; } char_short_char; ]) size=`expr $ac_cv_sizeof_char + $ac_cv_sizeof_short + $ac_cv_sizeof_char` extent=$ac_cv_sizeof_char_short_char if test "$size" != "$extent" ; then is_packed=0 ; fi if test "`expr $extent % $ac_cv_sizeof_short`" != "0" ; then is_largest=0 ; fi if test "`expr $extent % 2`" != "0" ; then is_two=0 ; fi if test "$ac_cv_sizeof_short" = "4" -a "`expr $extent % 4`" != "0" ; then is_four=0 fi if test "$ac_cv_sizeof_short" = "8" -a "`expr $extent % 8`" != "0" ; then is_eight=0 fi # If aligned mod 8, it will be aligned mod 4 if test $is_eight = 1 ; then is_four=0 ; is_two=0 ; fi if test $is_four = 1 ; then is_two=0 ; fi # Largest supersedes 8 if test $is_largest = 1 ; then is_eight=0 ; fi # Find the alignment if test "`expr $is_packed + $is_largest + $is_two + $is_four + $is_eight`" = "0" ; then pac_cv_struct_alignment="unknown" elif test "`expr $is_packed + $is_largest + $is_two + $is_four + $is_eight`" != "1" ; then pac_cv_struct_alignment="unknown" elif test $is_packed = 1 ; then pac_cv_struct_alignment="packed" elif test $is_largest = 1 ; then pac_cv_struct_alignment="largest" elif test $is_two = 1 ; then pac_cv_struct_alignment="two" elif test $is_four = 1 ; then pac_cv_struct_alignment="four" elif test $is_eight = 1 ; then pac_cv_struct_alignment="eight" fi ]) dnl dnl PAC_C_MACRO_VA_ARGS dnl dnl will AC_DEFINE([HAVE_MACRO_VA_ARGS]) if the compiler supports C99 variable dnl length argument lists in macros (#define foo(...) bar(__VA_ARGS__)) AC_DEFUN([PAC_C_MACRO_VA_ARGS],[ AC_MSG_CHECKING([for variable argument list macro functionality]) AC_LINK_IFELSE([AC_LANG_PROGRAM([ #include #define conftest_va_arg_macro(...) printf(__VA_ARGS__) ], [conftest_va_arg_macro("a test %d", 3);])], [AC_DEFINE([HAVE_MACRO_VA_ARGS],[1],[Define if C99-style variable argument list macro functionality]) AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no])]) ])dnl # Will AC_DEFINE([HAVE_BUILTIN_EXPECT]) if the compiler supports __builtin_expect. AC_DEFUN([PAC_C_BUILTIN_EXPECT],[ AC_MSG_CHECKING([if C compiler supports __builtin_expect]) AC_TRY_LINK(, [ return __builtin_expect(1, 1) ? 1 : 0 ], [ have_builtin_expect=yes AC_MSG_RESULT([yes]) ], [ have_builtin_expect=no AC_MSG_RESULT([no]) ]) if test x$have_builtin_expect = xyes ; then AC_DEFINE([HAVE_BUILTIN_EXPECT], [1], [Define to 1 if the compiler supports __builtin_expect.]) fi ]) mpi-testsuite-3.2+dfsg/confdb/aclocal_atomic.m40000644000175000017500000001660712620254305021021 0ustar mbanckmbanckdnl /*D PAC_C_MEMATOMIC - Try and determine how to implement memory-atomic dnl operations with the selected C compiler dnl dnl Synopsis: dnl PAC_C_MEMATOMIC dnl dnl Notes: dnl Defines names of the following form dnl + HAVE_GCC_ASM_AND_X86_{MFENCE,LFENCE,SFENCE} - gcc __asm__ will issue dnl mfence, lfence, or sfence dnl . HAVE___ASM_AND_X86_{MFENCE,LFENCE,SFENCE} - __asm _emit will issue dnl mfence, lfence, or sfence dnl . HAVE_ASM_AND_X86_{MFENCE,LFENCE,SFENCE} - asm("...") will issue dnl mfence, lfence, or sfence dnl . HAVE__INTERLOCKEDEXCHANGE - _InterlockedExchange intrinsic is available dnl (IA64) dnl . HAVE_GCC_ASM_SPARC_MEMBAR - gcc __asm__ will issue SPARC architecture dnl memory barrier instruction dnl . HAVE_SOLARIS_ASM_SPARC_MEMBAR - Solaris asm() will issue SPARC dnl architecture memory barrier instruction dnl . HAVE_GCC_ASM_SPARC_STBAR - gcc __asm__ will issue stbar dnl - HAVE_SOLARIS_ASM_SPARC_STBAR - Solaris __asm() will issue stbar dnl dnl D*/ AC_DEFUN([PAC_C_MEMATOMIC],[ AC_CACHE_CHECK([for x86 mfence instruction using __asm__], pac_cv_have_gcc_asm_and_x86_mfence,[ AC_TRY_RUN([ int main(int argc, char **argv) { __asm__ __volatile__ ( ".byte 0x0f, 0xae, 0xf0" ::: "memory" ); exit(0); } ], pac_cv_have_gcc_asm_and_x86_mfence=yes,pac_cv_have_gcc_asm_and_x86_mfence=no)]) if test "$pac_cv_have_gcc_asm_and_x86_mfence" = "yes" ; then AC_DEFINE(HAVE_GCC_ASM_AND_X86_MFENCE, 1, [Define if using gcc on a x86 system with the mfence instruction]) fi AC_CACHE_CHECK([for x86 sfence instruction using __asm__], pac_cv_have_gcc_asm_and_x86_sfence,[ AC_TRY_RUN([ int main(int argc, char **argv) { __asm__ __volatile__ ( ".byte 0x0f, 0xae, 0xf8" ::: "memory" ); exit(0); } ], pac_cv_have_gcc_asm_and_x86_sfence=yes,pac_cv_have_gcc_asm_and_x86_sfence=no)]) if test "$pac_cv_have_gcc_asm_and_x86_sfence" = "yes" ; then AC_DEFINE(HAVE_GCC_ASM_AND_X86_SFENCE, 1, [Define if using gcc on a x86 system with the sfence instruction]) fi AC_CACHE_CHECK([for x86 lfence instruction using __asm__], pac_cv_have_gcc_asm_and_x86_lfence,[ AC_TRY_RUN([ int main(int argc, char **argv) { __asm__ __volatile__ ( ".byte 0x0f, 0xae, 0xe8" ::: "memory" ); exit(0); } ], pac_cv_have_gcc_asm_and_x86_lfence=yes,pac_cv_have_gcc_asm_and_x86_lfence=no)]) if test "$pac_cv_have_gcc_asm_and_x86_lfence" = "yes" ; then AC_DEFINE(HAVE_GCC_ASM_AND_X86_LFENCE, 1, [Define if using gcc on a x86 system with the lfence instruction]) fi dnl Some compilers, like icc, may want __asm _emit AC_CACHE_CHECK([for x86 mfence instruction using __asm], pac_cv_have___asm_and_x86_mfence,[ AC_TRY_RUN([ int main(int argc, char **argv) { __asm _emit 0x0f __asm _emit 0xae __asm _emit 0xf0 ; exit(0); } ], pac_cv_have___asm_and_x86_mfence=yes,pac_cv_have___asm_and_x86_mfence=no)]) if test "$pac_cv_have___asm_and_x86_mfence" = "yes" ; then AC_DEFINE(HAVE___ASM_AND_X86_MFENCE, 1, [Define if using __asm on a x86 system with the mfence instruction]) fi AC_CACHE_CHECK([for x86 sfence instruction using __asm], pac_cv_have___asm_and_x86_sfence,[ AC_TRY_RUN([ int main(int argc, char **argv) { __asm sfence ; exit(0); } ], pac_cv_have___asm_and_x86_sfence=yes,pac_cv_have___asm_and_x86_sfence=no)]) if test "$pac_cv_have___asm_and_x86_sfence" = "yes" ; then AC_DEFINE(HAVE___ASM_AND_X86_SFENCE, 1, [Define if using __asm on a x86 system with the sfence instruction]) fi AC_CACHE_CHECK([for x86 lfence instruction using __asm], pac_cv_have___asm_and_x86_lfence,[ AC_TRY_RUN([ int main(int argc, char **argv) { __asm _emit 0x0f __asm _emit 0xae __asm _emit 0xe8 ; exit(0); } ], pac_cv_have___asm_and_x86_lfence=yes,pac_cv_have___asm_and_x86_lfence=no)]) if test "$lac_cv_have___asm_and_x86_lfence" = "yes" ; then AC_DEFINE(HAVE___ASM_AND_X86_LFENCE, 1, [Define if using __asm on a x86 system with the lfence instruction]) fi dnl dnl Some compilers, such as pgcc, may require additional arguments. dnl pgcc may need -Masmkeyword flag. We may want to try this with and dnl without adding -Masmkeyword to CFLAGS AC_CACHE_CHECK([for x86 mfence instruction using asm()], pac_cv_have_asm_and_x86_mfence,[ AC_TRY_RUN([ int main(int argc, char **argv) { asm("_emit 0x0f __asm _emit 0xae __asm _emit 0xf0"); exit(0); } ], pac_cv_have_asm_and_x86_mfence=yes,pac_cv_have_asm_and_x86_mfence=no)]) if test "$pac_cv_have_asm_and_x86_mfence" = "yes" ; then AC_DEFINE(HAVE_ASM_AND_X86_MFENCE, 1, [Define if using asm() on a x86 system with the mfence instruction]) fi AC_CACHE_CHECK([for x86 sfence instruction using asm()], pac_cv_have_asm_and_x86_sfence,[ AC_TRY_RUN([ int main(int argc, char **argv) { asm("sfence"); exit(0); } ], pac_cv_have_asm_and_x86_sfence=yes,pac_cv_have_asm_and_x86_sfence=no)]) if test "$pac_cv_have_asm_and_x86_sfence" = "yes" ; then AC_DEFINE(HAVE_ASM_AND_X86_SFENCE, 1, [Define if using asm() on a x86 system with the sfence instruction]) fi AC_CACHE_CHECK([for x86 lfence instruction using asm()], pac_cv_have_asm_and_x86_lfence,[ AC_TRY_RUN([ int main(int argc, char **argv) { asm("_emit 0x0f __asm _emit 0xae __asm _emit 0xe8"); exit(0); } ], pac_cv_have_asm_and_x86_lfence=yes,pac_cv_have_asm_and_x86_lfence=no)]) if test "$pac_cv_have_asm_and_x86_lfence" = "yes" ; then AC_DEFINE(HAVE_ASM_AND_X86_LFENCE, 1, [Define if using asm() on a x86 system with the lfence instruction]) fi AC_CACHE_CHECK([for _InterlockedExchange intrinsic], pac_cv_have__InterlockedExchange,[ AC_TRY_RUN([ int main(int argc, char **argv) { unsigned long lock, *lock_ptr; lock_ptr = &lock; _InterlockedExchange(lock_ptr, 1); exit(0); } ], pac_cv_have__InterlockedExchange=yes,pac_cv_have__InterlockedExchange=no)]) if test "$pac_cv_have__InterlockedExchange" = "yes" ; then AC_DEFINE(HAVE__INTERLOCKEDEXCHANGE, 1, [Define if _InterlockedExchange intrinsic is available]) fi AC_CACHE_CHECK([for SPARC membar instruction with gcc], pac_cv_gcc_sparc_membar,[ AC_TRY_RUN([ int main(int argc, char **argv){ __asm__ __volatile__ ( "membar #StoreLoad | #StoreStore" : : : "memory" ); exit(0); }],pac_cv_gcc_sparc_membar=yes,pac_cv_gcc_sparc_membar=no)]) if test "$pac_cv_gcc_sparc_membar" = yes ; then AC_DEFINE(HAVE_GCC_ASM_SPARC_MEMBAR,1,[Define if gcc asm membar supported]) fi AC_CACHE_CHECK([for SPARC membar instruction with Solaris C], pac_cv_solaris_sparc_membar,[ AC_TRY_RUN([ int main(int argc, char **argv){ __asm ( "membar #StoreLoad | #StoreStore"); exit(0); }],pac_cv_solaris_sparc_membar=yes,pac_cv_solaris_sparc_membar=no)]) if test "$pac_cv_solaris_sparc_membar" = yes ; then AC_DEFINE(HAVE_SOLARIS_ASM_SPARC_MEMBAR,1,[Define if solaris asm membar supported]) fi AC_CACHE_CHECK([for SPARC stbar instruction with gcc], pac_cv_gcc_sparc_stbar,[ AC_TRY_RUN([ int main(int argc, char **argv){ __asm__ __volatile__ ( "stbar" : : : "memory" ); exit(0); }],pac_cv_gcc_sparc_stbar=yes,pac_cv_gcc_sparc_stbar=no)]) if test "$pac_cv_gcc_sparc_stbar" = yes ; then AC_DEFINE(HAVE_GCC_ASM_SPARC_STBAR,1,[Define if gcc asm stbar supported]) fi AC_CACHE_CHECK([for SPARC stbar instruction with Solaris C], pac_cv_solaris_sparc_stbar,[ AC_TRY_RUN([ int main(int argc, char **argv){ __asm ( "stbar" ); exit(0); }],pac_cv_solaris_sparc_stbar=yes,pac_cv_solaris_sparc_stbar=no)]) if test "$pac_cv_solaris_sparc_stbar" = yes ; then AC_DEFINE(HAVE_SOLARIS_ASM_SPARC_STBAR,1,[Define if solaris asm stbar supported]) fi ])mpi-testsuite-3.2+dfsg/confdb/aclocal_mpi.m40000644000175000017500000003774312620254305020336 0ustar mbanckmbanckdnl dnl/*D dnl PAC_LIB_MPI - Check for MPI library dnl dnl Synopsis: dnl PAC_LIB_MPI([action if found],[action if not found]) dnl dnl Output Effect: dnl dnl Notes: dnl Currently, only checks for lib mpi and mpi.h. Later, we will add dnl MPI_Pcontrol prototype (const int or not?). dnl dnl Prerequisites: dnl autoconf version 2.13 (for AC_SEARCH_LIBS) dnl D*/ dnl Other tests to add: dnl Version of MPI dnl MPI-2 I/O? dnl MPI-2 Spawn? dnl MPI-2 RMA? dnl PAC_LIB_MPI([found text],[not found text]) AC_DEFUN([PAC_LIB_MPI],[ dnl Set the prereq to 2.50 to avoid having AC_PREREQ(2.50) if test "X$pac_lib_mpi_is_building" != "Xyes" ; then # Use CC if TESTCC is defined if test "X$pac_save_level" != "X" ; then pac_save_TESTCC="${TESTCC}" pac_save_TESTCPP="${TESTCPP}" CC="$pac_save_CC" if test "X$pac_save_CPP" != "X" ; then CPP="$pac_save_CPP" fi fi # Look for MPILIB first if it is defined AC_SEARCH_LIBS(MPI_Init,$MPILIB mpi mpich) if test "$ac_cv_search_MPI_Init" = "no" ; then ifelse($2,, AC_MSG_ERROR([Could not find MPI library]),[$2]) fi AC_CHECK_HEADER(mpi.h,pac_have_mpi_h="yes",pac_have_mpi_h="no") if test $pac_have_mpi_h = "no" ; then ifelse($2,, AC_MSG_ERROR([Could not find mpi.h include file]),[$2]) fi if test "X$pac_save_level" != "X" ; then CC="$pac_save_TESTCC" CPP="$pac_save_TESTCPP" fi fi ifelse($1,,,[$1]) ]) dnl This should also set MPIRUN. dnl dnl/*D dnl PAC_ARG_MPI_TYPES - Add command-line switches for different MPI dnl environments dnl dnl Synopsis: dnl PAC_ARG_MPI_TYPES([default]) dnl dnl Output Effects: dnl Adds the following command line options to configure dnl+ \-\-with\-mpich[=path] - MPICH. 'path' is the location of MPICH commands dnl. \-\-with\-ibmmpi - IBM MPI dnl. \-\-with\-lammpi[=path] - LAM/MPI dnl. \-\-with\-mpichnt - MPICH NT dnl- \-\-with\-sgimpi - SGI MPI dnl If no type is selected, and a default ("mpich", "ibmmpi", or "sgimpi") dnl is given, that type is used as if '--with-' was given. dnl dnl Sets 'CC', 'F77', 'TESTCC', 'TESTF77', and 'MPILIBNAME'. Does `not` dnl perform an AC_SUBST for these values. dnl Also sets 'MPIBOOT' and 'MPIUNBOOT'. These are used to specify dnl programs that may need to be run before and after running MPI programs. dnl For example, 'MPIBOOT' may start demons necessary to run MPI programs and dnl 'MPIUNBOOT' will stop those demons. dnl dnl The two forms of the compilers are to allow for tests of the compiler dnl when the MPI version of the compiler creates executables that cannot dnl be run on the local system (for example, the IBM SP, where executables dnl created with mpcc will not run locally, but executables created dnl with xlc may be used to discover properties of the compiler, such as dnl the size of data types). dnl dnl Historical note: dnl Some common autoconf tests, such as AC_CHECK_SIZEOF, used to require dnl running a program. But some MPI compilers (often really compilation dnl scripts) produced programs that could only be run with special commands, dnl such as a batch submission system. To allow these test programs to be dnl run, a separate set of compiler variables, TESTCC, TESTF77, etc., dnl were defined. However, in later versions of autoconf, it both became dnl unnecessary to run programs for tests such as AC_CHECK_SIZEOF and dnl it became necessary to define CC etc. before invoking AC_PROG_CC (and dnl the othe language compilers), because those commands now do much, much dnl more than just determining the compiler. dnl dnl To address the change, we still define the TESTCC etc. compilers where dnl possible to allow the use of AC_TRY_RUN when required, but we define dnl the CC etc variables and do not define ac_cv_prog_CC etc., as these dnl cause autoconf to skip all of the other initialization code that dnl AC_PROG_CC etc. runs. Note also that this command must occur before dnl AC_PROG_CC (or anything that might cause AC_PROG_CC to be invoked). dnl dnl See also: dnl PAC_LANG_PUSH_COMPILERS, PAC_LIB_MPI dnl D*/ AC_DEFUN([PAC_ARG_MPI_TYPES],[ # known types PAC_ARG_MPI_KNOWN_TYPES # find compilers PAC_MPI_FIND_COMPILER_SCRIPTS PAC_MPI_FIND_COMPILERS # check for MPI library PAC_MPI_CHECK_MPI_LIB ]) dnl dnl To keep autoconf from prematurely invoking the compiler check scripts, dnl we need a command that first sets the compilers and a separate one dnl that makes any necessary checks for libraries dnl AC_DEFUN([PAC_ARG_MPI_KNOWN_TYPES],[ AC_ARG_WITH(mpich, [--with-mpich=path - Assume that we are building with MPICH], ac_mpi_type=mpich) # Allow MPICH as well as MPICH AC_ARG_WITH(mpich, [--with-mpich=path - Assume that we are building with MPICH], ac_mpi_type=mpich) AC_ARG_WITH(lammpi, [--with-lammpi=path - Assume that we are building with LAM/MPI], ac_mpi_type=lammpi) AC_ARG_WITH(ibmmpi, [--with-ibmmpi - Use the IBM SP implementation of MPI], ac_mpi_type=ibmmpi) AC_ARG_WITH(sgimpi, [--with-sgimpi - Use the SGI implementation of MPI], ac_mpi_type=sgimpi) AC_ARG_WITH(mpichnt, [--with-mpichnt - Use MPICH for Windows NT ], ac_mpi_type=mpichnt) AC_ARG_WITH(mpi, [--with-mpi=path - Use an MPI implementation with compile scripts mpicc and mpif77 in path/bin],ac_mpi_type=generic) if test "X$ac_mpi_type" = "X" ; then if test "X$1" != "X" ; then ac_mpi_type=$1 else ac_mpi_type=unknown fi fi if test "$ac_mpi_type" = "unknown" -a "$pac_lib_mpi_is_building" = "yes" ; then ac_mpi_type="mpich" fi ]) dnl dnl Because autoconf insists on moving code to the beginning of dnl certain definitions, it is *not possible* to define a single command dnl that selects compilation scripts and also check for other options. dnl Thus, this needs to be divided into dnl MPI_FIND_COMPILER_SCRIPTS dnl which can fail (i.e., not find a script), and dnl MPI_FIND_COMPILERS dnl which runs the various PROC_xx for the compilers. dnl WARNING: this function ignores --program-suffix and --program-prefix. dnl However, this function is not currently used at all. AC_DEFUN([PAC_MPI_FIND_COMPILER_SCRIPTS],[ # Set defaults MPIRUN_NP="-np " MPIEXEC_N="-n " AC_SUBST(MPIRUN_NP) AC_SUBST(MPIEXEC_N) dnl AC_ARG_VAR([MPIEXEC],[Name and path of mpiexec program]) AC_ARG_VAR([MPIRUN],[Name and path of mpirun program]) AC_ARG_VAR([MPIBOOT],[Name and path of program to run before mpirun]) AC_ARG_VAR([MPIUNBOOT],[Name and path of program to run after all mpirun]) AC_ARG_VAR([MPICC],[Name and absolute path of program used to compile MPI programs in C]) AC_ARG_VAR([MPIF77],[Name and absolute path of program used to compile MPI programs in F77]) AC_ARG_VAR([MPICXX],[Name and absolute path of program used to compile MPI programs in C++]) AC_ARG_VAR([MPIF90],[Name and absolute path of program used to compile MPI programs in F90]) # # Check for things that will cause trouble. For example, # if MPICC is defined but does not contain a / or \, then PATH_PROG will # ignore the value if test -n "$MPICC" ; then case $MPICC in changequote(<<,>>) [\\/]* | ?:[\\/]*) changequote([,]) # Ok, PATH_PROG will figure it out ;; *) AC_MSG_ERROR([MPICC must be set to an absolute path if it is set]) esac fi if test -n "$MPICXX" ; then case $MPICXX in changequote(<<,>>) [\\/]* | ?:[\\/]*) changequote([,]) # Ok, PATH_PROG will figure it out ;; *) AC_MSG_ERROR([MPICXX must be set to an absolute path if it is set]) esac fi if test -n "$MPIF77" ; then case $MPIF77 in changequote(<<,>>) [\\/]* | ?:[\\/]*) changequote([,]) # Ok, PATH_PROG will figure it out ;; *) AC_MSG_ERROR([MPIF77 must be set to an absolute path if it is set]) esac fi if test -n "$MPIF90" ; then case $MPIF90 in changequote(<<,>>) [\\/]* | ?:[\\/]*) changequote([,]) # Ok, PATH_PROG will figure it out ;; *) AC_MSG_ERROR([MPIF90 must be set to an absolute path if it is set]) esac fi case $ac_mpi_type in mpich) dnl dnl This isn't correct. It should try to get the underlying compiler dnl from the mpicc and mpif77 scripts or mpireconfig if test "X$pac_lib_mpi_is_building" != "Xyes" ; then PAC_PUSH_FLAG([PATH]) if test "$with_mpich" != "yes" -a "$with_mpich" != "no" ; then # Look for commands; if not found, try adding bin to the # path if test ! -x $with_mpich/mpicc -a -x $with_mpich/bin/mpicc ; then with_mpich="$with_mpich/bin" fi PATH=$with_mpich:${PATH} fi AC_PATH_PROG(MPICC,mpicc) if test -z "$TESTCC" ; then TESTCC=${CC-cc} ; fi CC="$MPICC" # Note that autoconf may unconditionally change the value of # CC (!) in some other command. Thus, we define CCMASTER CCMASTER=$CC # Force autoconf to respect this choice ac_ct_CC=$CC # to permit configure codes to recover the correct CC. This # is an ugly not-quite-correct workaround for the fact that # does not want you to change the C compiler once you have set it # (But since it does so unconditionally, it silently creates # bogus output files.) AC_PATH_PROG(MPIF77,mpif77) if test -z "$TESTF77" ; then TESTF77=${F77-f77} ; fi F77="$MPIF77" AC_PATH_PROG(MPIFC,mpif90) if test -z "$TESTFC" ; then TESTFC=${FC-f90} ; fi FC="$MPIFC" AC_PATH_PROG(MPICXX,mpiCC) if test -z "$TESTCXX" ; then TESTCXX=${CXX-CC} ; fi CXX="$MPICXX" # We may want to restrict this to the path containing mpirun AC_PATH_PROG(MPIEXEC,mpiexec) AC_PATH_PROG(MPIRUN,mpirun) AC_PATH_PROG(MPIBOOT,mpichboot) AC_PATH_PROG(MPIUNBOOT,mpichstop) PAC_POP_FLAG([PATH]) MPILIBNAME="mpich" else # All of the above should have been passed in the environment! : fi ;; mpichnt) ;; lammpi) dnl dnl This isn't correct. It should try to get the underlying compiler dnl from the mpicc and mpif77 scripts or mpireconfig PAC_PUSH_FLAG([PATH]) if test "$with_mpich" != "yes" -a "$with_mpich" != "no" ; then # Look for commands; if not found, try adding bin to the path if test ! -x $with_lammpi/mpicc -a -x $with_lammpi/bin/mpicc ; then with_lammpi="$with_lammpi/bin" fi PATH=$with_lammpi:${PATH} fi AC_PATH_PROG(MPICC,mpicc) if test -z "$TESTCC" ; then TESTCC=${CC-cc} ; fi CC="$MPICC" AC_PATH_PROG(MPIF77,mpif77) if test -z "$TESTCC" ; then TESTF77=${F77-f77} ; fi F77="$MPIF77" AC_PATH_PROG(MPIFC,mpif90) TESTFC=${FC-f90} if test -z "$TESTFC" ; then TESTFC=${FC-f90} ; fi FC="$MPIFC" AC_PATH_PROG(MPICXX,mpiCC) if test -z "$TESTCXX" ; then TESTCXX=${CXX-CC} ; fi CXX="$MPICXX" PAC_POP_FLAG([PATH]) MPILIBNAME="lammpi" MPIBOOT="lamboot" MPIUNBOOT="wipe" MPIRUN="mpirun" ;; ibmmpi) AC_CHECK_PROGS(MPCC,mpcc) AC_CHECK_PROGS(MPXLF,mpxlf mpfort) if test -z "$MPCC" -o -z "$MPXLF" ; then AC_MSG_ERROR([Could not find IBM MPI compilation scripts. Either mpcc or mpxlf/mpfort is missing]) fi if test -z "$TESTCC" ; then TESTCC=${CC-xlC} ; fi if test -z "$TESTF77" ; then TESTF77=${F77-xlf}; fi CC=mpcc; F77=$MPXLF # There is no mpxlf90, but the options langlvl and free can # select the Fortran 90 version of xlf if test "$enable_f90" != no ; then AC_CHECK_PROGS(MPIXLF90,mpxlf90 mpfort) if test -z "$TESTFC" ; then TESTFC=${FC-xlf90}; fi if test "X$MPIXLF90" != "X" ; then FC="$MPIXLF90" else FC="$MPXLF -qlanglvl=90ext -qfree=f90" fi fi MPILIBNAME="" cross_compiling=yes # Turn off the autoconf version 3 warning message ac_tool_warned=yes ;; sgimpi) if test -z "$TESTCC" ; then TESTCC=${CC:=cc} ; fi if test -z "$TESTF77" ; then TESTF77=${F77:=f77} ; fi if test -z "$TESTCXX" ; then TESTCXX=${CXX:=CC} ; fi if test -z "$TESTFC" ; then TESTFC=${FC:=f90} ; fi # Must check for the MPI library in a separate macro - adding # a test here will cause autoconf to prematurely define the # C compiler MPIRUN=mpirun MPIBOOT="" MPIUNBOOT="" ;; generic) # in $with_mpi/bin or $with_mpi if test "X$MPICC" = "X" ; then if test -x "$with_mpi/bin/mpicc" ; then MPICC=$with_mpi/bin/mpicc elif test -x "$with_mpi/mpicc" ; then MPICC=$with_mpi/mpicc fi fi if test "X$MPICXX" = "X" ; then if test -x "$with_mpi/bin/mpicxx" ; then MPICXX=$with_mpi/bin/mpicxx elif test -x "$with_mpi/mpicxx" ; then MPICXX=$with_mpi/mpicxx fi fi if test "X$MPIF77" = "X" ; then if test -x "$with_mpi/bin/mpif77" ; then MPIF77=$with_mpi/bin/mpif77 elif test -x "$with_mpi/mpif77" ; then MPIF77=$with_mpi/mpif77 fi fi if test "X$MPIF90" = "X" ; then if test -x "$with_mpi/bin/mpif90" ; then MPIF90=$with_mpi/bin/mpif90 elif test -x "$with_mpi/mpif90" ; then MPIF90=$with_mpi/mpif90 fi fi if test "X$MPIEXEC" = "X" ; then if test -x "$with_mpi/bin/mpiexec" ; then MPIEXEC=$with_mpi/bin/mpiexec elif test -x "$with_mpi/mpiexec" ; then MPIEXEC=$with_mpi/mpiexec fi fi CC=$MPICC F77=$MPIF77 if test "X$MPICXX" != "X" ; then CXX=$MPICXX ; fi if test "X$MPIF90" != "X" ; then F90=$MPIF90 ; fi ;; *) # Use the default choices for the compilers ;; esac ]) AC_DEFUN([PAC_MPI_FIND_COMPILERS],[ # Tell autoconf to determine properties of the compilers (these are the # compilers for MPI programs) PAC_PROG_CC if test "$enable_f77" != no -a "$enable_fortran" != no ; then AC_PROG_F77 fi if test "$enable_cxx" != no ; then AC_PROG_CXX fi if test "$enable_f90" != no ; then PAC_PROG_FC fi ]) dnl dnl This uses the selected CC etc to check for include paths and libraries AC_DEFUN([PAC_MPI_CHECK_MPI_LIB],[ AC_REQUIRE([AC_PROG_CC]) case $ac_mpi_type in mpich) ;; mpichnt) dnl dnl This isn't adequate, but it helps with using MPICH-NT/SDK.gcc PAC_PUSH_FLAG([CFLAGS]) CFLAGS="$CFLAGS -I$with_mpichnt/include" PAC_PUSH_FLAG([CPPFLAGS]) CPPFLAGS="$CPPFLAGS -I$with_mpichnt/include" PAC_PUSH_FLAG([LDFLAGS]) LDFLAGS="$LDFLAGS -L$with_mpichnt/lib" AC_CHECK_LIB(mpich,MPI_Init,found="yes",found="no") if test "$found" = "no" ; then AC_CHECK_LIB(mpich,MPI_Init,found="yes",found="no") fi if test "$enable_cxx" != no ; then AC_PROG_CXX fi if test "$enable_f90" != no ; then PAC_PROG_FC fi # Set defaults for the TEST versions if not already set if test -z "$TESTCC" ; then TESTCC=${CC:=cc} ; fi if test -z "$TESTF77" ; then TESTF77=${F77:=f77} ; fi if test -z "$TESTCXX" ; then TESTCXX=${CXX:=CC} ; fi if test -z "$TESTFC" ; then TESTFC=${FC:=f90} ; fi if test "$found" = "no" ; then PAC_POP_FLAG([CFLAGS]) PAC_POP_FLAG([CPPFLAGS]) PAC_POP_FLAG([LDFLAGS]) fi ;; lammpi) ;; ibmmpi) ;; sgimpi) AC_CHECK_LIB(mpi,MPI_Init) if test "$ac_cv_lib_mpi_MPI_Init" = "yes" ; then MPILIBNAME="mpi" fi ;; generic) AC_SEARCH_LIBS(MPI_Init,mpi mpich mpich) if test "$ac_cv_lib_mpi_MPI_Init" = "yes" ; then MPILIBNAME="mpi" fi ;; *) ;; esac ]) dnl dnl/*D dnl PAC_MPI_F2C - Determine if MPI has the MPI-2 functions MPI_xxx_f2c and dnl MPI_xxx_c2f dnl dnl Output Effect: dnl Define 'HAVE_MPI_F2C' if the routines are found. dnl dnl Notes: dnl Looks only for 'MPI_Request_c2f'. dnl D*/ AC_DEFUN([PAC_MPI_F2C],[ AC_CACHE_CHECK([for MPI F2C and C2F routines], pac_cv_mpi_f2c, [ AC_TRY_LINK([#include "mpi.h"], [MPI_Request request;MPI_Fint a;a = MPI_Request_c2f(request);], pac_cv_mpi_f2c="yes",pac_cv_mpi_f2c="no") ]) if test "$pac_cv_mpi_f2c" = "yes" ; then AC_DEFINE(HAVE_MPI_F2C,1,[Define if MPI has F2C]) fi ]) dnl dnl/*D dnl PAC_HAVE_ROMIO - make mpi.h include mpio.h if romio enabled dnl dnl Output Effect: dnl expands @HAVE_ROMIO@ in mpi.h into #include "mpio.h" dnl D*/ AC_DEFUN([PAC_HAVE_ROMIO],[ if test "$enable_romio" = "yes" ; then HAVE_ROMIO='#include "mpio.h"'; fi AC_SUBST(HAVE_ROMIO) ]) mpi-testsuite-3.2+dfsg/confdb/aclocal_libs.m40000644000175000017500000001067612620254305020476 0ustar mbanckmbanck dnl PAC_SET_HEADER_LIB_PATH(with_option,[default_path]) dnl This macro looks for the --with-xxx=, --with-xxx-include and --with-xxx-lib= dnl options and sets the library and include paths. dnl dnl TODO as written, this macro cannot handle a "with_option" arg that has "-" dnl characters in it. Use AS_TR_SH (and possibly AS_VAR_* macros) to handle dnl this case if it ever arises. AC_DEFUN([PAC_SET_HEADER_LIB_PATH],[ AC_ARG_WITH([$1], [AC_HELP_STRING([--with-$1=PATH], [specify path where $1 include directory and lib directory can be found])], [AS_CASE(["$withval"], [yes|no|''], [AC_MSG_WARN([--with[out]-$1=PATH expects a valid PATH]) with_$1=""])], [with_$1=$2]) AC_ARG_WITH([$1-include], [AC_HELP_STRING([--with-$1-include=PATH], [specify path where $1 include directory can be found])], [AS_CASE(["$withval"], [yes|no|''], [AC_MSG_WARN([--with[out]-$1-include=PATH expects a valid PATH]) with_$1_include=""])], []) AC_ARG_WITH([$1-lib], [AC_HELP_STRING([--with-$1-lib=PATH], [specify path where $1 lib directory can be found])], [AS_CASE(["$withval"], [yes|no|''], [AC_MSG_WARN([--with[out]-$1-lib=PATH expects a valid PATH]) with_$1_lib=""])], []) # The args have been sanitized into empty/non-empty values above. # Now append -I/-L args to CPPFLAGS/LDFLAGS, with more specific options # taking priority AS_IF([test -n "${with_$1_include}"], [PAC_APPEND_FLAG([-I${with_$1_include}],[CPPFLAGS])], [AS_IF([test -n "${with_$1}"], [PAC_APPEND_FLAG([-I${with_$1}/include],[CPPFLAGS])])]) AS_IF([test -n "${with_$1_lib}"], [PAC_APPEND_FLAG([-L${with_$1_lib}],[LDFLAGS])], [AS_IF([test -n "${with_$1}"], dnl is adding lib64 by default really the right thing to do? What if dnl we are on a 32-bit host that happens to have both lib dirs available? [PAC_APPEND_FLAG([-L${with_$1}/lib],[LDFLAGS]) AS_IF([test -d "${with_$1}/lib64}"], [PAC_APPEND_FLAG([-L${with_$1}/lib64],[LDFLAGS])]) ]) ]) ]) dnl PAC_CHECK_HEADER_LIB(header.h, libname, function, action-if-yes, action-if-no) dnl This macro checks for a header and lib. It is assumed that the dnl user can specify a path to the includes and libs using --with-xxx=. dnl The xxx is specified in the "with_option" parameter. dnl dnl NOTE: This macro expects a corresponding PAC_SET_HEADER_LIB_PATH dnl macro (or equivalent logic) to be used before this macro is used. AC_DEFUN([PAC_CHECK_HEADER_LIB],[ failure=no AC_CHECK_HEADER([$1],,failure=yes) AC_CHECK_LIB($2,$3,,failure=yes) if test "$failure" = "no" ; then $4 else $5 fi ]) dnl PAC_CHECK_HEADER_LIB_FATAL(with_option, header.h, libname, function) dnl Similar to PAC_CHECK_HEADER_LIB, but errors out on failure AC_DEFUN([PAC_CHECK_HEADER_LIB_FATAL],[ PAC_CHECK_HEADER_LIB($2,$3,$4,success=yes,success=no) if test "$success" = "no" ; then AC_MSG_ERROR(['$2 or lib$3 library not found. Did you specify --with-$1= or --with-$1-include= or --with-$1-lib=?']) fi ]) dnl PAC_CHECK_PREFIX(with_option,prefixvar) AC_DEFUN([PAC_CHECK_PREFIX],[ AC_ARG_WITH([$1-prefix], [AS_HELP_STRING([[--with-$1-prefix[=DIR]]], [use the $1 library installed in DIR, rather than the one included in the distribution. Pass "embedded" to force usage of the included $1 source.])], [if test "$withval" = "system" ; then : elif test "$withval" = "embedded" ; then : else PAC_APPEND_FLAG([-I${with_$1_prefix}/include],[CPPFLAGS]) if test -d "${with_$1_prefix}/lib64" ; then PAC_APPEND_FLAG([-L${with_$1_prefix}/lib64],[LDFLAGS]) fi PAC_APPEND_FLAG([-L${with_$1_prefix}/lib],[LDFLAGS]) fi ], [with_$1_prefix="embedded"]) ] ) mpi-testsuite-3.2+dfsg/confdb/compile0000755000175000017500000001624512621010232017167 0ustar mbanckmbanck#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2012-10-14.11; # UTC # Copyright (C) 1999-2014 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: mpi-testsuite-3.2+dfsg/confdb/install-sh0000755000175000017500000003452312621010232017614 0ustar mbanckmbanck#!/bin/sh # install - install a program, script, or datafile scriptversion=2013-12-25.23; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. tab=' ' nl=' ' IFS=" $tab$nl" # Set DOITPROG to "echo" to test this script. doit=${DOITPROG-} doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) is_target_a_directory=always dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done # We allow the use of options -d and -T together, by making -d # take the precedence; this is for compatibility with GNU install. if test -n "$dir_arg"; then if test -n "$dst_arg"; then echo "$0: target directory not allowed when installing a directory." >&2 exit 1 fi fi if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then if test $# -gt 1 || test "$is_target_a_directory" = always; then if test ! -d "$dst_arg"; then echo "$0: $dst_arg: Is not a directory." >&2 exit 1 fi fi fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac oIFS=$IFS IFS=/ set -f set fnord $dstdir shift set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: mpi-testsuite-3.2+dfsg/confdb/depcomp0000755000175000017500000005601612621010236017172 0ustar mbanckmbanck#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2013-05-30.07; # UTC # Copyright (C) 1999-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz digits=0123456789 alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interferences from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: mpi-testsuite-3.2+dfsg/confdb/aclocal_runlog.m40000644000175000017500000001645712620254305021056 0ustar mbanckmbanckdnl dnl PAC_RUN_LOG mimics _AC_RUN_LOG which is autoconf internal routine. dnl We also make sure PAC_RUN_LOG can be used in AS_IF, so the last dnl test command should have terminating ]), i.e. without newline before ]). dnl AC_DEFUN([PAC_RUNLOG],[ { AS_ECHO(["$as_me:$LINENO: $1"]) >&AS_MESSAGE_LOG_FD (eval $1) 2>&AS_MESSAGE_LOG_FD ac_status=$? AS_ECHO(["$as_me:$LINENO: \$? = $ac_status"]) >&AS_MESSAGE_LOG_FD test $ac_status = 0; }]) dnl dnl PAC_COMMAND_IFELSE is written to replace AC_TRY_EVAL with added logging dnl to config.log, i.e. AC_TRY_EVAL does not log anything to config.log. dnl If autoconf provides AC_COMMAND_IFELSE or AC_EVAL_IFELSE, dnl AC_COMMAND_IFELSE dnl should be replaced by the official autoconf macros. dnl dnl PAC_COMMAND_IFELSE(COMMMAND,[ACTION-IF-RUN-OK],[ACTION-IF-RUN-FAIL]) dnl AC_DEFUN([PAC_COMMAND_IFELSE],[ AS_IF([PAC_RUNLOG([$1])],[ $2 ],[ AS_ECHO(["$as_me: program exited with status $ac_status"]) >&AS_MESSAGE_LOG_FD m4_ifvaln([$3],[ (exit $ac_status) $3 ]) ]) ]) AC_DEFUN([PAC_RUNLOG_IFELSE],[ dnl pac_TESTLOG is the internal temporary logfile for this macro. pac_TESTLOG="pac_test.log" rm -f $pac_TESTLOG PAC_COMMAND_IFELSE([$1 > $pac_TESTLOG],[ ifelse([$2],[],[],[$2]) ],[ AS_ECHO(["*** $1 :"]) >&AS_MESSAGE_LOG_FD cat $pac_TESTLOG >&AS_MESSAGE_LOG_FD ifelse([$3],[],[],[$3]) ]) rm -f $pac_TESTLOG ]) dnl PAC_VAR_PUSHVAL(VARNAME, [LastSavedValue])) dnl dnl Save the content of the shell variable, VARNAME, onto a stack. dnl The saved value of VARNAME is restorable with respect to the nesting dnl of the macro. dnl dnl The Last saved value of VARNAME on the stack is stored in shell variable dnl pac_LastSavedValueOf_$VARNAME if the 2nd argument is NOT supplied. dnl If the 2nd argument is present, the last saved value will be stored dnl in the 2nd argument instead. dnl dnl The First saved value of VARNAME on the stack is stored in shell variable dnl dnl pac_FirstSavedValueOf_$VARNAME. dnl AC_DEFUN([PAC_VAR_PUSHVAL],[ # START of PUSHVAL dnl define local m4-name pac_stk_level. AS_VAR_PUSHDEF([pac_stk_level], [pac_stk_$1_level]) AS_VAR_SET_IF([pac_stk_level],[ AS_VAR_ARITH([pac_stk_level], [$pac_stk_level + 1]) ],[ AS_VAR_SET([pac_stk_level], [0]) ]) dnl AS_ECHO_N(["PUSHVAL: pac_stk_level = $pac_stk_level, "]) dnl Save the content of VARNAME, i.e. $VARNAME, onto the stack. AS_VAR_SET([pac_stk_$1_$pac_stk_level],[$$1]) AS_VAR_IF([pac_stk_level], [0], [ dnl Save the 1st pushed value of VARNAME as pac_FirstSavedValueOf_$VARNAME AS_VAR_COPY([pac_FirstSavedValueOf_$1],[pac_stk_$1_$pac_stk_level]) ]) ifelse([$2],[],[ dnl Save the last pushed value of VARNAME as pac_LastSavedValueOf_$VARNAME AS_VAR_COPY([pac_LastSavedValueOf_$1],[pac_stk_$1_$pac_stk_level]) dnl AS_ECHO(["pac_LastSavedValueOf_$1 = $pac_LastSavedValueOf_$1"]) ],[ dnl Save the last pushed value of VARNAME as $2 AS_VAR_COPY([$2],[pac_stk_$1_$pac_stk_level]) dnl AS_ECHO(["$2 = $$2"]) ]) AS_VAR_POPDEF([pac_stk_level]) # END of PUSHVAL ]) dnl dnl dnl dnl PAC_VAR_POPVAL(VARNAME) dnl dnl Restore variable, VARNAME, from the stack. dnl This macro is safe with respect to the nesting. dnl Some minimal checking of nesting balance of PAC_VAR_PUSH[POP]VAL() dnl is done here. dnl AC_DEFUN([PAC_VAR_POPVAL],[ # START of POPVAL dnl define local m4-name pac_stk_level. AS_VAR_PUSHDEF([pac_stk_level], [pac_stk_$1_level]) AS_VAR_SET_IF([pac_stk_level],[ AS_VAR_IF([pac_stk_level],[-1],[ AC_MSG_WARN(["Imbalance of PUSHVAL/POPVAL of $1"]) ],[ dnl AS_ECHO_N(["POPVAL: pac_stk_level = $pac_stk_level, "]) AS_VAR_COPY([$1],[pac_stk_$1_$pac_stk_level]) dnl AS_ECHO(["popped_val = $$1"]) AS_VAR_ARITH([pac_stk_level], [ $pac_stk_level - 1 ]) ]) ],[ AC_MSG_WARN(["Uninitialized PUSHVAL/POPVAL of $1"]) ]) AS_VAR_POPDEF([pac_stk_level]) # END of POPVAL ]) dnl dnl dnl dnl PAC_COMPILE_IFELSE_LOG is a wrapper around AC_COMPILE_IFELSE with the dnl output of ac_compile to a specified logfile instead of AS_MESSAGE_LOG_FD dnl dnl PAC_COMPILE_IFELSE_LOG(logfilename, input, dnl [action-if-true], [action-if-false]) dnl dnl where input, [action-if-true] and [action-if-false] are used dnl in AC_COMPILE_IFELSE(input, [action-if-true], [action-if-false]). dnl This macro is nesting safe. dnl AC_DEFUN([PAC_COMPILE_IFELSE_LOG],[ dnl dnl Instead of defining our own ac_compile and do AC_TRY_EVAL dnl on these variables. We modify ac_compile used by AC_*_IFELSE dnl by piping the output of the command to a logfile. The reason is that dnl 1) AC_TRY_EVAL is discouraged by Autoconf. 2) defining our ac_compile dnl could mess up the usage and order of *CFLAGS, LDFLAGS and LIBS in dnl these commands, i.e. deviate from how GNU standard uses these variables. dnl dnl Replace ">&AS_MESSAGE_LOG_FD" by "> FILE 2>&1" in ac_compile. dnl Save a copy of ac_compile on a stack dnl which is safe through nested invocations of this macro. PAC_VAR_PUSHVAL([ac_compile]) dnl Modify ac_compile based on the unmodified ac_compile. ac_compile="`echo $pac_FirstSavedValueOf_ac_compile | sed -e 's|>.*$|> $1 2>\&1|g'`" AC_COMPILE_IFELSE([$2],[ ifelse([$3],[],[:],[$3]) ],[ ifelse([$4],[],[:],[$4]) ]) dnl Restore the original ac_compile from the stack. PAC_VAR_POPVAL([ac_compile]) ]) dnl dnl dnl dnl PAC_LINK_IFELSE_LOG is a wrapper around AC_LINK_IFELSE with the dnl output of ac_link to a specified logfile instead of AS_MESSAGE_LOG_FD dnl dnl PAC_LINK_IFELSE_LOG(logfilename, input, dnl [action-if-true], [action-if-false]) dnl dnl where input, [action-if-true] and [action-if-false] are used dnl in AC_LINK_IFELSE(input, [action-if-true], [action-if-false]). dnl This macro is nesting safe. dnl AC_DEFUN([PAC_LINK_IFELSE_LOG],[ dnl dnl Instead of defining our own ac_link and do AC_TRY_EVAL dnl on these variables. We modify ac_link used by AC_*_IFELSE dnl by piping the output of the command to a logfile. The reason is that dnl 1) AC_TRY_EVAL is discouraged by Autoconf. 2) defining our ac_link dnl could mess up the usage and order of *CFLAGS, LDFLAGS and LIBS in dnl these commands, i.e. deviate from how GNU standard uses these variables. dnl dnl Replace ">&AS_MESSAGE_LOG_FD" by "> FILE 2>&1" in ac_link. dnl Save a copy of ac_link on a stack dnl which is safe through nested invocations of this macro. PAC_VAR_PUSHVAL([ac_link]) dnl Modify ac_link based on the unmodified ac_link. ac_link="`echo $pac_FirstSavedValueOf_ac_link | sed -e 's|>.*$|> $1 2>\&1|g'`" dnl AC_LINK_IFELSE([$2],[ ifelse([$3],[],[:],[$3]) ],[ ifelse([$4],[],[:],[$4]) ]) dnl Restore the original ac_link from the stack. PAC_VAR_POPVAL([ac_link]) ]) dnl dnl dnl dnl PAC_COMPLINK_IFELSE (input1, input2, [action-if-true], [action-if-false]) dnl dnl where input1 and input2 are either AC_LANG_SOURCE or AC_LANG_PROGRAM dnl enclosed input programs. dnl dnl The macro first compiles input1 and uses the object file created dnl as part of LIBS during linking. This macro is nesting safe. dnl AC_DEFUN([PAC_COMPLINK_IFELSE],[ AC_COMPILE_IFELSE([$1],[ PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT]) PAC_VAR_PUSHVAL([LIBS]) LIBS="pac_conftest.$OBJEXT $pac_FirstSavedValueOf_LIBS" AC_LINK_IFELSE([$2],[ ifelse([$3],[],[:],[$3]) ],[ ifelse([$4],[],[:],[$4]) ]) PAC_VAR_POPVAL([LIBS]) rm -f pac_conftest.$OBJEXT ],[ ifelse([$4],[],[:],[$4]) ]) ]) mpi-testsuite-3.2+dfsg/confdb/aclocal_util.m40000644000175000017500000001464412620254305020521 0ustar mbanckmbanckdnl Nesting safe macros for saving variables dnl Usage: PAC_PUSH_FLAG(CFLAGS) AC_DEFUN([PAC_PUSH_FLAG],[ if test -z "${pac_save_$1_nesting}" ; then pac_save_$1_nesting=0 fi eval pac_save_$1_${pac_save_$1_nesting}='"$$1"' pac_save_$1_nesting=`expr ${pac_save_$1_nesting} + 1` ]) dnl Usage: PAC_POP_FLAG(CFLAGS) AC_DEFUN([PAC_POP_FLAG],[ pac_save_$1_nesting=`expr ${pac_save_$1_nesting} - 1` eval $1="\$pac_save_$1_${pac_save_$1_nesting}" eval pac_save_$1_${pac_save_$1_nesting}="" ]) dnl Usage: PAC_PUSH_ALL_FLAGS AC_DEFUN([PAC_PUSH_ALL_FLAGS],[ PAC_PUSH_FLAG(CFLAGS) PAC_PUSH_FLAG(CPPFLAGS) PAC_PUSH_FLAG(CXXFLAGS) PAC_PUSH_FLAG(FFLAGS) PAC_PUSH_FLAG(FCFLAGS) PAC_PUSH_FLAG(LDFLAGS) PAC_PUSH_FLAG(LIBS) ]) dnl Usage: PAC_POP_ALL_FLAGS AC_DEFUN([PAC_POP_ALL_FLAGS],[ PAC_POP_FLAG(CFLAGS) PAC_POP_FLAG(CPPFLAGS) PAC_POP_FLAG(CXXFLAGS) PAC_POP_FLAG(FFLAGS) PAC_POP_FLAG(FCFLAGS) PAC_POP_FLAG(LDFLAGS) PAC_POP_FLAG(LIBS) ]) dnl PAC_PREFIX_FLAG - Save flag with a prefix dnl Usage: PAC_PREFIX_FLAG(PREFIX, FLAG) AC_DEFUN([PAC_PREFIX_FLAG],[ $1_$2=$$2 export $1_$2 AC_SUBST($1_$2) ]) dnl PAC_PREFIX_ALL_FLAGS - Save flags with a prefix dnl Usage: PAC_PREFIX_ALL_FLAGS(PREFIX) AC_DEFUN([PAC_PREFIX_ALL_FLAGS],[ PAC_PREFIX_FLAG($1, CFLAGS) PAC_PREFIX_FLAG($1, CPPFLAGS) PAC_PREFIX_FLAG($1, CXXFLAGS) PAC_PREFIX_FLAG($1, FFLAGS) PAC_PREFIX_FLAG($1, FCFLAGS) PAC_PREFIX_FLAG($1, LDFLAGS) PAC_PREFIX_FLAG($1, LIBS) PAC_PREFIX_FLAG($1, EXTRA_LIBS) ]) dnl Usage: PAC_APPEND_FLAG([-02], [CFLAGS]) dnl appends the given argument to the specified shell variable unless the dnl argument is already present in the variable AC_DEFUN([PAC_APPEND_FLAG],[ AC_REQUIRE([AC_PROG_FGREP]) AS_IF( [echo "$$2" | $FGREP -e "\<$1\>" >/dev/null 2>&1], [echo "$2(='$$2') contains '$1', not appending" >&AS_MESSAGE_LOG_FD], [echo "$2(='$$2') does not contain '$1', appending" >&AS_MESSAGE_LOG_FD $2="$$2 $1"] ) ]) dnl Usage: PAC_PREPEND_FLAG([-lpthread], [LIBS]) dnl Prepends the given argument to the specified shell variable unless the dnl argument is already present in the variable. dnl dnl This is typically used for LIBS and similar variables because libraries dnl should be added in reverse order. AC_DEFUN([PAC_PREPEND_FLAG],[ AC_REQUIRE([AC_PROG_FGREP]) AS_IF( [echo "$$2" | $FGREP -e "\<$1\>" >/dev/null 2>&1], [echo "$2(='$$2') contains '$1', not prepending" >&AS_MESSAGE_LOG_FD], [echo "$2(='$$2') does not contain '$1', prepending" >&AS_MESSAGE_LOG_FD $2="$1 $$2"] ) ]) dnl PAC_MKDIRS(path) dnl Create any missing directories in the path AC_DEFUN([PAC_MKDIRS],[ # Build any intermediate directories for dir in $1 ; do PAC_PUSH_FLAG([IFS]) IFS="/" tmp_curdir="" for tmp_subdir in $dir ; do tmp_curdir="${tmp_curdir}$tmp_subdir" if test ! -d "$tmp_curdir" ; then mkdir "$tmp_curdir" ; fi tmp_curdir="${tmp_curdir}/" done PAC_POP_FLAG([IFS]) done ]) # Find something to use for mkdir -p. Eventually, this will have a # script for backup. As of autoconf-2.63, AC_PROG_MKDIR_P was broken; # it was checking to see if it recognized the "version" of mkdir and # was deciding based on that. This should always be a feature test. AC_DEFUN([PAC_PROG_MKDIR_P],[ AC_CACHE_CHECK([whether mkdir -p works], pac_cv_mkdir_p,[ pac_cv_mkdir_p=no rm -rf .tmp if mkdir -p .tmp/.foo 1>/dev/null 2>&1 ; then if test -d .tmp/.foo ; then pac_cv_mkdir_p=yes fi fi rm -rf .tmp ]) if test "$pac_cv_mkdir_p" = "yes" ; then MKDIR_P="mkdir -p" export MKDIR_P else AC_MSG_WARN([mkdir -p does not work; the install step may fail]) fi AC_SUBST(MKDIR_P) ]) dnl Test for a clean VPATH directory. Provide this command with the names dnl of all of the generated files that might cause problems dnl (Makefiles won't cause problems because there's no VPATH usage for them) dnl dnl Synopsis dnl PAC_VPATH_CHECK([file-names],[directory-names]) dnl file-names should be files other than config.status and any header (e.g., dnl fooconf.h) file that should be removed. It is optional AC_DEFUN([PAC_VPATH_CHECK],[ # This is needed for Mac OSX 10.5 rm -rf conftest.dSYM rm -f conftest* date >conftest$$ # If creating a file in the current directory does not show up in the srcdir # then we're doing a VPATH build (or something is very wrong) if test ! -s $srcdir/conftest$$ ; then pac_dirtyfiles="" pac_dirtydirs="" pac_header="" ifdef([AC_LIST_HEADER],[pac_header=AC_LIST_HEADER]) for file in config.status $pac_header $1 ; do if test -f $srcdir/$file ; then pac_dirtyfiles="$pac_dirtyfiles $file" fi done ifelse($2,,,[ for dir in $2 ; do if test -d $srcdir/$dir ; then pac_dirtydirs="$pac_dirtydirs $dir" fi done ]) if test -n "$pac_dirtyfiles" -o -n "$pac_dirtydirs" ; then # Create a nice message about what to remove rmmsg="" if test -n "$pac_dirtyfiles" ; then rmmsg="files $pac_dirtyfiles" fi if test -n "$pac_dirtydirs" ; then if test -n "$rmmsg" ; then rmmsg="$rmmsg and directories $pac_dirtydirs" else rmmsg="directories $pac_dirtydirs" fi fi if test -f $srcdir/Makefile ; then AC_MSG_ERROR([You cannot do a VPATH build if the source directory has been configured. Run "make distclean" in $srcdir first and make sure that the $rmmsg have been removed.]) else AC_MSG_ERROR([You cannot do a VPATH build if the source directory has been configured. Remove the $rmmsg in $srcdir.]) fi fi fi # This is needed for Mac OSX 10.5 rm -rf conftest.dSYM rm -f conftest* ]) dnl PAC_CONF_HEX_TO_DEC(value,out_var) dnl dnl Converts the given hexadecimal integer constant to an integer constant and dnl stores the result in the shell variable given by 'out_var'. dnl dnl I think that printf like this will be sufficiently portable, but I don't dnl have any guarantee of it. If not, we can fall back to AS_VAR_ARITH dnl and/or AC_COMPUTE_INT (the latter will probably be slow) AC_DEFUN([PAC_CONV_HEX_TO_DEC],[AS_VAR_SET([$2],[`printf "%d" $1`])]) dnl PAC_GET_EXENAME(exe_name, out_exe_name) dnl dnl Prepends and appends program prefix and suffix as supplied by --program_prefix dnl and --program-sufix AC_DEFUN([PAC_GET_EXENAME],[ $2=$1 if test "$program_prefix" != "NONE" ; then $2="${program_prefix}$$2" fi if test "$program_suffix" != "NONE" ; then $2="$$2$program_suffix" fi ]) mpi-testsuite-3.2+dfsg/confdb/aclocal_f77.m40000644000175000017500000013316712620254305020151 0ustar mbanckmbanckdnl PAC_F77_SEARCH_LIST - expands to a whitespace separated list of fortran 77 dnl compilers for use with AC_PROG_F77 that is more suitable for HPC software dnl packages AC_DEFUN([PAC_F77_SEARCH_LIST],[ifort pgf77 af77 xlf frt cf77 fort77 fl32 fort ifc efc ftn gfortran f77 g77]) dnl PAC_PROG_F77 - reprioritize the F77 compiler search order dnl NOTE: this macro suffers from a basically intractable "expanded before it dnl was required" problem when libtool is also used AC_DEFUN([PAC_PROG_F77],[ PAC_PUSH_FLAG([FFLAGS]) AC_PROG_F77([PAC_F77_SEARCH_LIST]) PAC_POP_FLAG([FFLAGS]) ]) dnl dnl/*D dnl PAC_PROG_F77_NAME_MANGLE - Determine how the Fortran compiler mangles dnl names dnl dnl Synopsis: dnl PAC_PROG_F77_NAME_MANGLE([action]) dnl dnl Output Effect: dnl If no action is specified, one of the following names is defined: dnl.vb dnl If fortran names are mapped: dnl lower -> lower F77_NAME_LOWER dnl lower -> lower_ F77_NAME_LOWER_USCORE dnl lower -> UPPER F77_NAME_UPPER dnl lower_lower -> lower__ F77_NAME_LOWER_2USCORE dnl mixed -> mixed F77_NAME_MIXED dnl mixed -> mixed_ F77_NAME_MIXED_USCORE dnl mixed -> UPPER@STACK_SIZE F77_NAME_UPPER_STDCALL dnl.ve dnl If an action is specified, it is executed instead. dnl dnl Notes: dnl We assume that if lower -> lower (any underscore), upper -> upper with the dnl same underscore behavior. Previous versions did this by dnl compiling a Fortran program and running strings -a over it. Depending on dnl strings is a bad idea, so instead we try compiling and linking with a dnl C program, since that is why we are doing this anyway. A similar approach dnl is used by FFTW, though without some of the cases we check (specifically, dnl mixed name mangling). STD_CALL not only specifies a particular name dnl mangling convention (adding the size of the calling stack into the function dnl name, but also the stack management convention (callee cleans the stack, dnl and arguments are pushed onto the stack from right to left) dnl dnl One additional problem is that some Fortran implementations include dnl references to the runtime (like pgf90_compiled for the pgf90 compiler dnl used as the "Fortran 77" compiler). This is not yet solved. dnl dnl D*/ dnl AC_DEFUN([PAC_PROG_F77_NAME_MANGLE],[ AC_REQUIRE([AC_F77_LIBRARY_LDFLAGS]) AC_CACHE_CHECK([for Fortran 77 name mangling], pac_cv_prog_f77_name_mangle,[ # Initialize pac_found to indicate if name mangling scheme has been found pac_found=no AC_LANG_PUSH([Fortran 77]) AC_COMPILE_IFELSE([ AC_LANG_SOURCE([ subroutine MY_name( ii ) return end ]) ],[ PAC_RUNLOG([mv conftest.$OBJEXT f77conftest.$OBJEXT]) saved_LIBS="$LIBS" dnl FLIBS is set by AC_F77_LIBRARY_LDFLAGS LIBS="f77conftest.$OBJEXT $FLIBS $LIBS" AC_LANG_PUSH([C]) for call in "" __stdcall ; do for sym in my_name_ my_name__ my_name MY_NAME MY_name MY_name_ NONE ; do AC_LINK_IFELSE([ AC_LANG_PROGRAM([extern void ${call} ${sym}(int);],[${sym}(0);]) ],[ pac_found=yes break ]) done test "$pac_found" = "yes" && break done AC_LANG_POP([C]) LIBS="$saved_LIBS" rm -f f77conftest.$OBJEXT ]) AC_LANG_POP([Fortran 77]) dnl # If we got to here and pac_cv_prog_f77_name_mangle is still NOT definable, # it may be that the programs have to be linked with the Fortran compiler, # not the C compiler. Try reversing the language used for the test if test "$pac_found" != "yes" ; then AC_LANG_PUSH([C]) for call in "" __stdcall ; do for sym in my_name_ my_name__ my_name MY_NAME MY_name MY_name_ NONE ; do AC_COMPILE_IFELSE([ AC_LANG_SOURCE([void ${call} ${sym}(int a) {}]) ],[ PAC_RUNLOG([mv conftest.$OBJEXT cconftest.$OBJEXT]) saved_LIBS="$LIBS" LIBS="cconftest.$OBJEXT $LIBS" AC_LANG_PUSH([Fortran 77]) AC_LINK_IFELSE([ AC_LANG_PROGRAM([],[ call my_name(0)]) ],[ pac_found=yes ]) AC_LANG_POP([Fortran 77]) LIBS="$saved_LIBS" rm -f cconftest.$OBJEXT test "$pac_found" = "yes" && break ]) done test "$pac_found" = "yes" && break done AC_LANG_POP([C]) fi if test "$pac_found" = "yes" ; then case ${sym} in my_name_) pac_cv_prog_f77_name_mangle="lower uscore" ;; my_name__) pac_cv_prog_f77_name_mangle="lower 2uscore" ;; my_name) pac_cv_prog_f77_name_mangle="lower" ;; MY_NAME) pac_cv_prog_f77_name_mangle="upper" ;; MY_name) pac_cv_prog_f77_name_mangle="mixed" ;; MY_name_) pac_cv_prog_f77_name_mangle="mixed uscore" ;; *) pac_cv_prog_f77_name_mangle="" pac_found=no; ;; esac if test "X$pac_cv_prog_f77_name_mangle" != "X" ; then if test "$call" = "__stdcall" ; then pac_cv_prog_f77_name_mangle="$pac_cv_prog_f77_name_mangle stdcall" fi fi fi ]) dnl Endof ac_cache_check case $pac_cv_prog_f77_name_mangle in *stdcall) F77_STDCALL="__stdcall" ;; *) F77_STDCALL="" ;; esac # Get the standard call definition # FIXME: This should use F77_STDCALL, not STDCALL (non-conforming name) F77_STDCALL="$call" AC_DEFINE_UNQUOTED(STDCALL,[$F77_STDCALL],[Define calling convention]) # new_name="`echo $name | tr ' ' '_' | tr [a-z] [A-Z]`" # We could have done the character conversion with 'tr' # which may not be portable, e.g. solaris's /usr/ucb/bin/tr. # So use a conservative approach. # Replace blank with underscore name_scheme="`echo $pac_cv_prog_f77_name_mangle | sed 's% %_%g'`" # Turn lowercase into uppercase. name_scheme="`echo $name_scheme | sed -e 'y%abcdefghijklmnopqrstuvwxyz%ABCDEFGHIJKLMNOPQRSTUVWXYZ%'`" F77_NAME_MANGLE="F77_NAME_${name_scheme}" AC_DEFINE_UNQUOTED([$F77_NAME_MANGLE]) AC_SUBST(F77_NAME_MANGLE) if test "X$pac_cv_prog_f77_name_mangle" = "X" ; then AC_MSG_WARN([Unknown Fortran naming scheme]) fi dnl dnl Define the macros that is needed by AC_DEFINE_UNQUOTED([$F77_NAME_MANGLE]) AH_TEMPLATE([F77_NAME_LOWER], [Fortran names are lowercase with no trailing underscore]) AH_TEMPLATE([F77_NAME_LOWER_USCORE], [Fortran names are lowercase with one trailing underscore]) AH_TEMPLATE([F77_NAME_LOWER_2USCORE], [Fortran names are lowercase with two trailing underscores]) AH_TEMPLATE([F77_NAME_MIXED], [Fortran names preserve the original case]) AH_TEMPLATE([F77_NAME_MIXED_USCORE], [Fortran names preserve the original case with one trailing underscore]) AH_TEMPLATE([F77_NAME_UPPER], [Fortran names are uppercase]) AH_TEMPLATE([F77_NAME_LOWER_STDCALL], [Fortran names are lowercase with no trailing underscore in stdcall]) AH_TEMPLATE([F77_NAME_LOWER_USCORE_STDCALL], [Fortran names are lowercase with one trailing underscore in stdcall]) AH_TEMPLATE([F77_NAME_LOWER_2USCORE_STDCALL], [Fortran names are lowercase with two trailing underscores in stdcall]) AH_TEMPLATE([F77_NAME_MIXED_STDCALL], [Fortran names preserve the original case in stdcall]) AH_TEMPLATE([F77_NAME_MIXED_USCORE_STDCALL], [Fortran names preserve the original case with one trailing underscore in stdcall]) AH_TEMPLATE([F77_NAME_UPPER_STDCALL], [Fortran names are uppercase in stdcall]) ]) dnl dnl/*D dnl PAC_PROG_F77_CHECK_SIZEOF - Determine the size in bytes of a Fortran dnl type dnl dnl Synopsis: dnl PAC_PROG_F77_CHECK_SIZEOF(type,[cross-size]) dnl dnl Output Effect: dnl Sets SIZEOF_F77_uctype to the size if bytes of type. dnl If type is unknown, the size is set to 0. dnl If cross-compiling, the value cross-size is used (it may be a variable) dnl For example 'PAC_PROG_F77_CHECK_SIZEOF(real)' defines dnl 'SIZEOF_F77_REAL' to 4 on most systems. The variable dnl 'pac_cv_sizeof_f77_' (e.g., 'pac_cv_sizeof_f77_real') is also set to dnl the size of the type. dnl If the corresponding variable is already set, that value is used. dnl If the name has an '*' in it (e.g., 'integer*4'), the defined name dnl replaces that with an underscore (e.g., 'SIZEOF_F77_INTEGER_4'). dnl dnl Notes: dnl If the 'cross-size' argument is not given, 'autoconf' will issue an error dnl message. You can use '0' to specify undetermined. dnl dnl D*/ AC_DEFUN([PAC_PROG_F77_CHECK_SIZEOF],[ AC_REQUIRE([AC_HEADER_STDC]) AC_REQUIRE([AC_F77_LIBRARY_LDFLAGS]) changequote(<<, >>)dnl dnl The name to #define. dnl dnl If the arg value contains a variable, we need to update that define(<>, translit(sizeof_f77_$1, [a-z *], [A-Z__]))dnl dnl The cache variable name. define(<>, translit(pac_cv_f77_sizeof_$1, [ *], [__]))dnl changequote([, ])dnl AC_CACHE_CHECK([for size of Fortran type $1],PAC_CV_NAME,[ AC_REQUIRE([PAC_PROG_F77_NAME_MANGLE]) AC_LANG_PUSH([Fortran 77]) AC_COMPILE_IFELSE([ AC_LANG_SOURCE([ subroutine isize() $1 i(2) call cisize( i(1), i(2) ) end ]) ],[ # pac_f77compile_ok=yes PAC_RUNLOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT]) # Save original LIBS, prepend previously generated object file to LIBS saved_LIBS="$LIBS" LIBS="pac_f77conftest.$OBJEXT $FLIBS $LIBS" AC_LANG_PUSH([C]) AC_RUN_IFELSE([ AC_LANG_PROGRAM([ #if defined(HAVE_STDIO_H) || defined(STDC_HEADERS) #include #endif #ifdef F77_NAME_UPPER #define cisize_ CISIZE #define isize_ ISIZE #elif defined(F77_NAME_LOWER) || defined(F77_NAME_MIXED) #define cisize_ cisize #define isize_ isize #endif static int isize_val=0; void cisize_(char *,char*); void isize_(void); void cisize_(char *i1p, char *i2p) { isize_val = (int)(i2p - i1p); } ],[ FILE *f = fopen("conftestval", "w"); if (!f) return 1; isize_(); fprintf(f,"%d\n", isize_val); ]) dnl Endof ac_lang_program ],[ eval PAC_CV_NAME=`cat conftestval` ],[ eval PAC_CV_NAME=0 ],[ # Use -9999 as value to emit a warning message after the cache_check. ifelse([$2],[],[eval PAC_CV_NAME=-9999],[eval PAC_CV_NAME=$2]) ]) dnl Endof ac_run_ifelse AC_LANG_POP([C]) LIBS="$saved_LIBS" # remove previously generated object file. rm -f pac_f77conftest.$OBJEXT ],[ # pac_f77compile_ok=no ifelse([$2],,eval PAC_CV_NAME=0,eval PAC_CV_NAME=$2) ]) Endof ac_compile_ifelse AC_LANG_POP([Fortran 77]) ]) dnl Endof ac_cache_check if test "$PAC_CV_NAME" = "-9999" ; then AC_MSG_WARN([No value provided for size of $1 when cross-compiling]) fi AC_DEFINE_UNQUOTED(PAC_TYPE_NAME,$PAC_CV_NAME,[Define size of PAC_TYPE_NAME]) undefine([PAC_TYPE_NAME]) undefine([PAC_CV_NAME]) ]) dnl dnl This version uses a Fortran program to link programs. dnl This is necessary because some compilers provide shared libraries dnl that are not within the default linker paths (e.g., our installation dnl of the Portland Group compilers) dnl AC_DEFUN([PAC_PROG_F77_CHECK_SIZEOF_EXT],[ changequote(<<,>>)dnl dnl The name to #define. dnl If the arg value contains a variable, we need to update that define(<>, translit(sizeof_f77_$1, [a-z *], [A-Z__]))dnl dnl The cache variable name. define(<>, translit(pac_cv_f77_sizeof_$1, [ *], [__]))dnl changequote([,])dnl AC_CACHE_CHECK([for size of Fortran type $1],PAC_CV_NAME,[ AC_REQUIRE([AC_HEADER_STDC]) AC_REQUIRE([PAC_PROG_F77_NAME_MANGLE]) dnl if test "$cross_compiling" = yes ; then dnl ifelse([$2],[], dnl [AC_MSG_WARN([No value provided for size of $1 when cross-compiling])], dnl [eval PAC_CV_NAME=$2]) dnl fi AC_LANG_PUSH([C]) AC_COMPILE_IFELSE([ AC_LANG_SOURCE([ #if defined(HAVE_STDIO_H) || defined(STDC_HEADERS) #include #endif #ifdef F77_NAME_UPPER #define cisize_ CISIZE #define isize_ ISIZE #elif defined(F77_NAME_LOWER) || defined(F77_NAME_MIXED) #define cisize_ cisize #define isize_ isize #endif int cisize_(char *,char*); int cisize_(char *i1p, char *i2p) { int isize_val=0; FILE *f = fopen("conftestval", "w"); if (!f) return 1; isize_val = (int)(i2p - i1p); fprintf(f,"%d\n", isize_val); fclose(f); return 0; } ]) dnl Endof ac_lang_source ],[ # pac_compile_ok=yes PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT]) # Save LIBS and prepend object file to LIBS saved_LIBS="$LIBS" LIBS="pac_conftest.$OBJEXT $LIBS" AC_LANG_PUSH([Fortran 77]) AC_RUN_IFELSE([ AC_LANG_SOURCE([ program main $1 a(2) integer irc, cisize irc = cisize(a(1),a(2)) end ]) ],[ eval PAC_CV_NAME=`cat conftestval` ],[ eval PAC_CV_NAME=0 ],[ # Use -9999 as value to emit a warning message after the cache_check. ifelse([$2],[],[eval PAC_CV_NAME=-9999],[eval PAC_CV_NAME=$2]) ]) AC_LANG_POP([Fortran 77]) LIBS="$saved_LIBS" # remove previously generated object file. rm -f pac_conftest.$OBJEXT ],[ AC_MSG_WARN([Unable to compile the C routine for finding the size of a $1]) ]) AC_LANG_POP([C]) ]) dnl Endof ac_cache_check if test "$PAC_CV_NAME" = "-9999" ; then AC_MSG_WARN([No value provided for size of $1 when cross-compiling]) fi AC_DEFINE_UNQUOTED(PAC_TYPE_NAME,$PAC_CV_NAME,[Define size of PAC_TYPE_NAME]) undefine([PAC_TYPE_NAME]) undefine([PAC_CV_NAME]) ]) dnl dnl/*D dnl PAC_PROG_F77_EXCLAIM_COMMENTS dnl dnl Synopsis: dnl PAC_PROG_F77_EXCLAIM_COMMENTS([action-if-true],[action-if-false]) dnl dnl Notes: dnl Check whether '!' may be used to begin comments in Fortran. dnl dnl This macro requires a version of autoconf `after` 2.13; the 'acgeneral.m4' dnl file contains an error in the handling of Fortran programs in dnl 'AC_TRY_COMPILE' (fixed in our local version). dnl dnl D*/ AC_DEFUN([PAC_PROG_F77_EXCLAIM_COMMENTS],[ AC_CACHE_CHECK([whether Fortran 77 accepts ! for comments], pac_cv_prog_f77_exclaim_comments,[ AC_LANG_PUSH([Fortran 77]) AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([],[! This is a comment]) ],[ pac_cv_prog_f77_exclaim_comments="yes" ],[ pac_cv_prog_f77_exclaim_comments="no" ]) AC_LANG_POP([Fortran 77]) ]) if test "$pac_cv_prog_f77_exclaim_comments" = "yes" ; then ifelse([$1],[],[:],[$1]) else ifelse([$2],[],[:],[$2]) fi ])dnl dnl dnl/*D dnl PAC_F77_CHECK_COMPILER_OPTION - Check that a F77 compiler option is dnl accepted without warning messages dnl dnl Synopsis: dnl PAC_F77_CHECK_COMPILER_OPTION(optionname,action-if-ok,action-if-fail) dnl dnl Output Effects: dnl dnl If no actions are specified, a working value is added to 'FOPTIONS' dnl dnl Notes: dnl This is now careful to check that the output is different, since dnl some compilers are noisy. dnl dnl We are extra careful to prototype the functions in case compiler options dnl that complain about poor code are in effect. dnl dnl Because this is a long script, we have ensured that you can pass a dnl variable containing the option name as the first argument. dnl D*/ AC_DEFUN([PAC_F77_CHECK_COMPILER_OPTION],[ AC_MSG_CHECKING([whether Fortran 77 compiler accepts option $1]) pac_opt="$1" AC_LANG_PUSH([Fortran 77]) FFLAGS_orig="$FFLAGS" FFLAGS_opt="$pac_opt $FFLAGS" pac_result="unknown" AC_LANG_CONFTEST([AC_LANG_PROGRAM()]) FFLAGS="$FFLAGS_orig" rm -f pac_test1.log PAC_LINK_IFELSE_LOG([pac_test1.log], [], [ FFLAGS="$FFLAGS_opt" rm -f pac_test2.log PAC_LINK_IFELSE_LOG([pac_test2.log], [], [ PAC_RUNLOG_IFELSE([diff -b pac_test1.log pac_test2.log], [pac_result=yes], [pac_result=no]) ],[ pac_result=no ]) ], [ pac_result=no ]) AC_MSG_RESULT([$pac_result]) dnl Delete the conftest created by AC_LANG_CONFTEST. rm -f conftest.$ac_ext # if test "$pac_result" = "yes" ; then AC_MSG_CHECKING([whether routines compiled with $pac_opt can be linked with ones compiled without $pac_opt]) pac_result=unknown FFLAGS="$FFLAGS_orig" rm -f pac_test3.log PAC_COMPILE_IFELSE_LOG([pac_test3.log], [ AC_LANG_SOURCE([ subroutine try() end ]) ],[ PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT]) saved_LIBS="$LIBS" LIBS="pac_conftest.$OBJEXT $LIBS" FFLAGS="$FFLAGS_opt" rm -f pac_test4.log PAC_LINK_IFELSE_LOG([pac_test4.log], [AC_LANG_PROGRAM()], [ PAC_RUNLOG_IFELSE([diff -b pac_test2.log pac_test4.log], [pac_result=yes], [pac_result=no]) ],[ pac_result=no ]) LIBS="$saved_LIBS" rm -f pac_conftest.$OBJEXT ],[ pac_result=no ]) AC_MSG_RESULT([$pac_result]) rm -f pac_test3.log pac_test4.log fi rm -f pac_test1.log pac_test2.log dnl Restore FFLAGS before 2nd/3rd argument commands are executed, dnl as 2nd/3rd argument command could be modifying FFLAGS. FFLAGS="$FFLAGS_orig" if test "$pac_result" = "yes" ; then ifelse([$2],[],[FOPTIONS="$FOPTIONS $1"],[$2]) else ifelse([$3],[],[:],[$3]) fi AC_LANG_POP([Fortran 77]) ]) dnl dnl/*D dnl PAC_PROG_F77_LIBRARY_DIR_FLAG - Determine the flag used to indicate dnl the directories to find libraries in dnl dnl Notes: dnl Many compilers accept '-Ldir' just like most C compilers. dnl Unfortunately, some (such as some HPUX Fortran compilers) do not, dnl and require instead either '-Wl,-L,dir' or something else. This dnl command attempts to determine what is accepted. The flag is dnl placed into 'F77_LIBDIR_LEADER'. dnl dnl D*/ dnl dnl An earlier version of this only tried the arguments without using dnl a library. This failed when the HP compiler complained about the dnl arguments, but produced an executable anyway. AC_DEFUN([PAC_PROG_F77_LIBRARY_DIR_FLAG],[ AC_CACHE_CHECK([for Fortran 77 flag for library directories], pac_cv_prog_f77_library_dir_flag,[ AC_LANG_PUSH([Fortran 77]) AC_COMPILE_IFELSE([ AC_LANG_SOURCE([ subroutine f1conf end ]) ],[ # pac_f77compile_ok=yes PAC_RUNLOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT]) PAC_RUNLOG([test -d conftestdir || mkdir conftestdir]) PAC_RUNLOG([${AR-ar} ${AR_FLAGS-cr} conftestdir/libf77conftest.a pac_f77conftest.$OBJEXT]) PAC_RUNLOG([${RANLIB-ranlib} conftestdir/libf77conftest.a]) # Save original LIBS, prepend previously generated object file to LIBS saved_LIBS="$LIBS" LIBS="-lf77conftest $LIBS" saved_LDFLAGS="$LDFLAGS" pac_cv_prog_f77_library_dir_flag="none" for ldir in "-L" "-Wl,-L," ; do LDFLAGS="${ldir}conftestdir $saved_LDFLAGS" AC_LINK_IFELSE([ AC_LANG_SOURCE([ program main call f1conf end ]) ],[pac_cv_prog_f77_library_dir_flag="$ldir";break]) done LDFLAGS="$saved_LDFLAGS" LIBS="$saved_LIBS" rm -rf conftestdir rm -f pac_f77conftest.$OBJEXT ],[]) AC_LANG_POP([Fortran 77]) ]) dnl Endof ac_cache_check if test "X$pac_cv_prog_f77_library_dir_flag" != "Xnone" ; then F77_LIBDIR_LEADER="$pac_cv_prog_f77_library_dir_flag" AC_SUBST(F77_LIBDIR_LEADER) fi ]) dnl dnl/*D dnl PAC_PROG_F77_HAS_INCDIR - Check whether Fortran accepts -Idir flag dnl dnl Syntax: dnl PAC_PROG_F77_HAS_INCDIR(directory,action-if-true,action-if-false) dnl dnl Output Effect: dnl Sets 'F77_INCDIR' to the flag used to choose the directory. dnl dnl Notes: dnl This refers to the handling of the common Fortran include extension, dnl not to the use of '#include' with the C preprocessor. dnl If directory does not exist, it will be created. In that case, the dnl directory should be a direct descendant of the current directory. dnl dnl D*/ AC_DEFUN([PAC_PROG_F77_HAS_INCDIR],[ ifelse([$1],[],[checkdir=f77tmpdir],[checkdir=$1;checkdir_is_given=yes]) AC_CACHE_CHECK([for include directory flag for Fortran], pac_cv_prog_f77_has_incdir,[ test -d $checkdir || mkdir $checkdir dnl PAC_RUNLOG([echo ' call sub()' > $checkdir/conftestf.h]) echo ' call sub()' > $checkdir/conftestf.h AC_LANG_PUSH([Fortran 77]) saved_FFLAGS="$FFLAGS" pac_cv_prog_f77_has_incdir="none" # SGI wants -Wf,-I for idir in "-I" "-Wf,-I" ; do FFLAGS="${idir} $checkdir $saved_FFLAGS" AC_COMPILE_IFELSE([ AC_LANG_SOURCE([ program main include 'conftestf.h' end ]) ],[pac_cv_prog_f77_has_incdir="$idir"; break]) done FFLAGS="$saved_FFLAGS" AC_LANG_POP([Fortran 77]) if test "$checkdir_is_given" = "yes" ; then rm -f $checkdir/conftestf.h else rm -rf $checkdir fi ]) dnl Endof ac_cache_check if test "X$pac_cv_prog_f77_has_incdir" != "Xnone" ; then F77_INCDIR="$pac_cv_prog_f77_has_incdir" AC_SUBST(F77_INCDIR) fi ]) dnl dnl/*D dnl PAC_PROG_F77_ALLOWS_UNUSED_EXTERNALS - Check whether the Fortran compiler dnl allows unused and undefined functions to be listed in an external dnl statement dnl dnl Syntax: dnl PAC_PROG_F77_ALLOWS_UNUSED_EXTERNALS(action-if-true,action-if-false) dnl dnl D*/ AC_DEFUN([PAC_PROG_F77_ALLOWS_UNUSED_EXTERNALS],[ AC_CACHE_CHECK([whether Fortran allows unused externals], pac_cv_prog_f77_allows_unused_externals,[ AC_LANG_PUSH([Fortran 77]) AC_LINK_IFELSE([ AC_LANG_SOURCE([ program main external bar end ]) ],[ pac_cv_prog_f77_allows_unused_externals="yes" ],[ pac_cv_prog_f77_allows_unused_externals="no" ]) AC_LANG_POP([Fortran 77]) ]) dnl Endof ac_cache_check if test "X$pac_cv_prog_f77_allows_unused_externals" = "Xyes" ; then ifelse([$1],[],[:],[$1]) else ifelse([$2],[],[:],[$2]) fi ]) dnl PAC_PROG_F77_RUN_PROC_FROM_C( c main program, fortran routine, dnl [action-if-works], [action-if-fails], dnl [cross-action] ) dnl Fortran routine MUST be named ftest unless you include code dnl to select the appropriate Fortran name. dnl AC_DEFUN([PAC_PROG_F77_RUN_PROC_FROM_C],[ AC_REQUIRE([AC_HEADER_STDC]) AC_REQUIRE([AC_F77_LIBRARY_LDFLAGS]) AC_LANG_PUSH([Fortran 77]) AC_COMPILE_IFELSE([ AC_LANG_SOURCE([$2]) ],[ # pac_f77compile_ok=yes PAC_RUNLOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT]) # Save original LIBS, prepend previously generated object file to LIBS saved_LIBS="$LIBS" LIBS="pac_f77conftest.$OBJEXT $FLIBS $LIBS" AC_LANG_PUSH([C]) AC_RUN_IFELSE([ AC_LANG_SOURCE([ #if defined(HAVE_STDIO_H) || defined(STDC_HEADERS) #include #endif #ifdef F77_NAME_UPPER #define ftest_ FTEST #elif defined(F77_NAME_LOWER) || defined(F77_NAME_MIXED) #define ftest_ ftest #endif $1 ]) ],[ ifelse([$3],[],[:],[$3]) ],[ ifelse([$4],[],[:],[$4]) ],[ ifelse([$5],[],[:],[$5]) ]) AC_LANG_POP([C]) LIBS="$saved_LIBS" rm -f pac_f77conftest.$OBJEXT ],[ ]) AC_LANG_POP([Fortran 77]) ]) dnl PAC_PROG_F77_IN_C_LIBS dnl dnl Find the essential libraries that are needed to use the C linker to dnl create a program that includes a trival Fortran code. dnl dnl For example, all pgf90 compiled objects include a reference to the dnl symbol pgf90_compiled, found in libpgf90 . dnl dnl There is an additional problem. To *run* programs, we may need dnl additional arguments; e.g., if shared libraries are used. Even dnl with autoconf 2.52, the autoconf macro to find the library arguments dnl doesn't handle this, either by detecting the use of -rpath or dnl by trying to *run* a trivial program. It only checks for *linking*. dnl dnl AC_DEFUN([PAC_PROG_F77_IN_C_LIBS],[ AC_REQUIRE([AC_HEADER_STDC]) AC_REQUIRE([AC_F77_LIBRARY_LDFLAGS]) AC_MSG_CHECKING([for which Fortran libraries are needed to link C with Fortran]) F77_IN_C_LIBS="invalid" AC_LANG_PUSH([Fortran 77]) AC_COMPILE_IFELSE([ AC_LANG_SOURCE([ subroutine ftest end ]) ],[ # pac_f77compile_ok=yes PAC_RUNLOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT]) # Save original LIBS, prepend previously generated object file to LIBS saved_LIBS="$LIBS" LIBS="pac_f77conftest.$OBJEXT $FLIBS $saved_LIBS" AC_LANG_PUSH([C]) # Create conftest for all link tests. AC_LANG_CONFTEST([ AC_LANG_PROGRAM([ #if defined(HAVE_STDIO_H) || defined(STDC_HEADERS) #include #endif ],[ #ifdef F77_NAME_UPPER #define ftest_ FTEST #elif defined(F77_NAME_LOWER) || defined(F77_NAME_MIXED) #define ftest_ ftest #endif extern void ftest_(void); ftest_(); ]) ]) F77_IN_C_LIBS="" AC_LINK_IFELSE([],[:],[ flibdirs=`echo $FLIBS | tr ' ' '\012' | grep '\-L' | tr '\012' ' '` fliblibs=`echo $FLIBS | tr ' ' '\012' | grep -v '\-L' | tr '\012' ' '` for flibs in $fliblibs ; do LIBS="pac_f77conftest.$OBJEXT $flibdirs $flibs $saved_LIBS" AC_LINK_IFELSE([],[F77_IN_C_LIBS="$flibdirs $flibs"; break]) done if test "X$F77_IN_C_LIBS" = "X" ; then flibscat="" for flibs in $fliblibs ; do flibscat="$flibscat $flibs" LIBS="pac_f77conftest.$OBJEXT $flibdirs $flibscat $saved_LIBS" AC_LINK_IFELSE([],[F77_IN_C_LIBS="$flibdirs $flibscat";break]) done fi ]) # remove conftest created by ac_lang_conftest rm -f conftest.$ac_ext AC_LANG_POP([C]) LIBS="$saved_LIBS" rm -f pac_f77conftest.$OBJEXT ]) AC_LANG_POP([Fortran 77]) if test "X$F77_IN_C_LIBS" = "X" ; then AC_MSG_RESULT(none) else AC_MSG_RESULT($F77_IN_C_LIBS) fi ]) dnl dnl Test to see if we should use C or Fortran to link programs whose dnl main program is in Fortran. We may find that neither work because dnl we need special libraries in each case. dnl AC_DEFUN([PAC_PROG_F77_LINKER_WITH_C],[ AC_REQUIRE([AC_F77_LIBRARY_LDFLAGS]) AC_MSG_CHECKING([for linker for Fortran main program]) dnl Create a C program that uses multiplication and division dnl in case that requires special libraries AC_LANG_PUSH([C]) AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([],[long long a;]) ],[ AC_DEFINE(HAVE_LONG_LONG,1,[Define if long long allowed]) ]) AC_LANG_CONFTEST([ AC_LANG_SOURCE([ #ifdef HAVE_LONG_LONG int f(int a, long long b) { int c; c = a * ( b / 3 ) / (b-1); return c ; } #else int f(int a, long b) { int c; c = a * b / (b-1); return c ; } #endif ]) ]) AC_LANG_POP([C]) dnl Create a Fortran program for test AC_LANG_PUSH([Fortran 77]) AC_LANG_CONFTEST([ AC_LANG_SOURCE([ program main double precision d print *, "hi" end ]) ]) AC_LANG_POP([Fortran 77]) dnl Initialize flags pac_linkwithf77=no pac_linkwithC=no dnl Use F77 as a linker to compile a Fortran main and C subprogram. if test "$pac_linkwithC" != "yes" ; then AC_LANG_PUSH([C]) AC_COMPILE_IFELSE([],[ PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT]) saved_LIBS="$LIBS" LIBS="pac_conftest.$OBJEXT $saved_LIBS" AC_LANG_PUSH([Fortran 77]) AC_LINK_IFELSE([],[ AC_MSG_RESULT([Use Fortran to link programs]) pac_linkwithf77=yes ]) AC_LANG_POP([Fortran 77]) LIBS="$saved_LIBS" rm -f pac_conftest.$OBJEXT ]) AC_LANG_POP([C]) fi dnl Use C as a linker and FLIBS to compile a Fortran main and C subprogram. if test "$pac_linkwithf77" != "yes" ; then AC_LANG_PUSH([Fortran 77]) AC_COMPILE_IFELSE([],[ PAC_RUNLOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT]) saved_LIBS="$LIBS" LIBS="pac_f77conftest.$OBJEXT $FLIBS $saved_LIBS" AC_LANG_PUSH([C]) AC_LINK_IFELSE([],[ pac_linkwithC=yes AC_MSG_RESULT([Use C with FLIBS to link programs]) F77LINKER="$CC" F77_LDFLAGS="$F77_LDFLAGS $FLIBS" ]) AC_LANG_POP([C]) LIBS="$saved_LIBS" rm -f pac_f77conftest.$OBJEXT ]) AC_LANG_POP([Fortran 77]) fi AC_LANG_PUSH([Fortran 77]) rm -f conftest.$ac_ext AC_LANG_POP([Fortran 77]) AC_LANG_PUSH([C]) rm -f conftest.$ac_ext AC_LANG_POP([C]) if test "$pac_linkwithf77" != "yes" -a "$pac_linkwithC" != "yes" ; then AC_MSG_ERROR([Could not determine a way to link a Fortran test program!]) fi ]) dnl dnl Check to see if a C program can be linked when using the libraries dnl needed by C programs dnl AC_DEFUN([PAC_PROG_F77_CHECK_FLIBS],[ AC_REQUIRE([AC_F77_LIBRARY_LDFLAGS]) AC_MSG_CHECKING([whether $CC links with FLIBS found by autoconf]) AC_LANG_PUSH([C]) # Create a simple C program for the tests. AC_LANG_CONFTEST([ AC_LANG_PROGRAM([],[int a;]) ]) # Try to link a C program with all of these libraries saved_LIBS="$LIBS" LIBS="$FLIBS $saved_LIBS" AC_LINK_IFELSE([],[ AC_MSG_RESULT([yes]) ],[ AC_MSG_RESULT([no]) AC_MSG_CHECKING([for which libraries can be used]) pac_ldirs="" pac_libs="" pac_other="" for name in $FLIBS ; do case $name in -l*) pac_libs="$pac_libs $name" ;; -L*) pac_ldirs="$pac_ldirs $name" ;; *) pac_other="$pac_other $name" ;; esac done keep_libs="" for name in $pac_libs ; do LIBS="$saved_LIBS $pac_ldirs $pac_other $name" AC_LINK_IFELSE([],[ keep_libs="$keep_libs $name" ]) done AC_MSG_RESULT($keep_libs) FLIBS="$pac_ldirs $pac_other $keep_libs" ]) LIBS="$saved_LIBS" rm -f conftest.$ac_ext AC_LANG_PUSH([C]) ]) dnl dnl Test for extra libraries needed when linking C routines that use dnl stdio with Fortran. This test was created for OSX, which dnl sometimes requires -lSystemStubs. If another library is needed, dnl add it to F77_OTHER_LIBS dnl AC_DEFUN([PAC_PROG_F77_AND_C_STDIO_LIBS],[ AC_REQUIRE([AC_HEADER_STDC]) AC_REQUIRE([PAC_PROG_F77_NAME_MANGLE]) # To simply the code in the cache_check macro, chose the routine name # first, in case we need it confname=conf1_ case "$pac_cv_prog_f77_name_mangle" in "lower underscore") confname=conf1_ ;; "upper stdcall") confname=CONF1 ;; "upper") confname=CONF1 ;; "lower doubleunderscore") confname=conf1_ ;; "lower") confname=conf1 ;; "mixed underscore") confname=conf1_ ;; "mixed") confname=conf1 ;; esac AC_CACHE_CHECK([for libraries to link Fortran main with C stdio routines], pac_cv_prog_f77_and_c_stdio_libs,[ pac_cv_prog_f77_and_c_stdio_libs=unknown AC_LANG_PUSH([C]) AC_COMPILE_IFELSE([ AC_LANG_SOURCE([ #if defined(HAVE_STDIO_H) || defined(STDC_HEADERS) #include #endif int $confname(int a) { printf( "The answer is %d\n", a ); fflush(stdout); return 0; } ]) ],[ PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT]) saved_LIBS="$LIBS" AC_LANG_PUSH([Fortran 77]) AC_LANG_CONFTEST([ AC_LANG_SOURCE([ program main call conf1(0) end ]) ]) for extralib in "" "-lSystemStubs" ; do LIBS="pac_conftest.$OBJEXT $saved_LIBS $extralib" AC_LINK_IFELSE([],[ pac_cv_prog_f77_and_c_stdio_libs="$extralib"; break ]) done if test "X$pac_cv_prog_f77_and_c_stdio_libs" = "X" ; then pac_cv_prog_f77_and_c_stdio_libs=none fi rm -f conftest.$ac_ext AC_LANG_POP([Fortran 77]) LIBS="$saved_LIBS" rm -f pac_conftest.$OBJEXT ]) AC_LANG_POP([C]) ]) dnl Endof ac_cache_check if test "$pac_cv_prog_f77_and_c_stdio_libs" != "none" \ -a "$pac_cv_prog_f77_and_c_stdio_libs" != "unknown" ; then F77_OTHER_LIBS="$F77_OTHER_LIBS $pac_cv_prog_f77_and_c_stdio_libs" fi ]) dnl dnl Check that the FLIBS determined by AC_F77_LIBRARY_LDFLAGS is valid. dnl That macro (at least as of autoconf 2.59) attempted to parse the output dnl of the compiler when asked to be verbose; in the case of the Fujitsu dnl frt Fortran compiler, it included files that frt looked for and then dnl discarded because they did not exist. dnl AC_DEFUN([PAC_PROG_F77_FLIBS_VALID],[ AC_REQUIRE([AC_F77_LIBRARY_LDFLAGS]) AC_MSG_CHECKING([whether $F77 accepts the FLIBS found by autoconf]) pac_cv_f77_flibs_valid=unknown AC_LANG_PUSH([Fortran 77]) AC_LANG_CONFTEST([ AC_LANG_SOURCE([ program main end ]) ]) AC_LINK_IFELSE([],[ AC_MSG_RESULT([yes]) ],[ AC_MSG_RESULT([no]) AC_MSG_CHECKING([for valid entries in FLIBS]) goodFLIBS="" saveFLIBS=$FLIBS FLIBS="" for arg in $saveFLIBS ; do FLIBS="$goodFLIBS $arg" AC_LINK_IFELSE([],[goodFLIBS=$FLIBS]) done FLIBS=$goodFLIBS AC_MSG_RESULT($FLIBS) ]) rm -f conftest.$ac_ext AC_LANG_POP([Fortran 77]) ]) dnl dnl Check if the Fortran 77 and C objects are compatible in linking. dnl e.g. On some intel x86_64 Mac, Fortran compiler's default binary format dnl is different from C, so either -m64 or -m32 is needed in either CFLAGS dnl or FFLAGS. dnl AC_DEFUN([PAC_PROG_F77_OBJ_LINKS_WITH_C],[ AC_REQUIRE([AC_F77_LIBRARY_LDFLAGS]) AC_MSG_CHECKING([whether Fortran 77 and C objects are compatible]) AC_LANG_PUSH([C]) AC_LANG_CONFTEST([ AC_LANG_SOURCE([ /* lower */ void c_subpgm( int *rc ); void c_subpgm( int *rc ) { *rc = 1; } /* lower underscore */ void c_subpgm_( int *rc ); void c_subpgm_( int *rc ) { *rc = 2; } /* upper */ void C_SUBPGM( int *rc ); void C_SUBPGM( int *rc ) { *rc = 3; } /* lower doubleunderscore */ void c_subpgm__( int *rc ); void c_subpgm__( int *rc ) { *rc = 4; } /* mixed */ void C_subpgm( int *rc ); void C_subpgm( int *rc ) { *rc = 5; } /* mixed underscore */ void C_subpgm_( int *rc ); void C_subpgm_( int *rc ) { *rc = 6; } ]) ]) AC_LANG_POP([C]) AC_LANG_PUSH([Fortran 77]) AC_LANG_CONFTEST([ AC_LANG_SOURCE([ program test integer rc rc = -1 call c_subpgm( rc ) write(6,*) "rc=", rc end ]) ]) AC_LANG_POP([Fortran 77]) dnl Initialize flags pac_linkwithf77=no pac_linkwithC=no dnl Use F77 as a linker to compile a Fortran main and C subprogram. if test "$pac_linkwithC" != "yes" ; then AC_LANG_PUSH([C]) AC_COMPILE_IFELSE([],[ PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT]) saved_LIBS="$LIBS" LIBS="pac_conftest.$OBJEXT $saved_LIBS" AC_LANG_PUSH([Fortran 77]) AC_LINK_IFELSE([],[ pac_linkwithf77=yes AC_MSG_RESULT([yes]) ]) AC_LANG_POP([Fortran 77]) LIBS="$saved_LIBS" if test "$pac_linkwithf77" = "yes" ; then rm -f pac_conftest.$OBJEXT fi ]) AC_LANG_POP([C]) fi dnl Use C as a linker and FLIBS to compile a Fortran main and C subprogram. if test "$pac_linkwithf77" != "yes" ; then AC_LANG_PUSH([Fortran 77]) AC_COMPILE_IFELSE([],[ PAC_RUNLOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT]) saved_LIBS="$LIBS" LIBS="pac_f77conftest.$OBJEXT $FLIBS $saved_LIBS" AC_LANG_PUSH([C]) AC_LINK_IFELSE([],[ pac_linkwithC=yes AC_MSG_RESULT([yes]) ]) AC_LANG_POP([C]) LIBS="$saved_LIBS" if test "$pac_linkwithC" = "yes" ; then rm -f pac_f77conftest.$OBJEXT fi ]) AC_LANG_POP([Fortran 77]) fi AC_LANG_PUSH([Fortran 77]) rm -f conftest.$ac_ext AC_LANG_POP([Fortran 77]) AC_LANG_PUSH([C]) rm -f conftest.$ac_ext AC_LANG_POP([C]) if test "$pac_linkwithf77" != "yes" -a "$pac_linkwithC" != "yes" ; then AC_MSG_RESULT(no) AC_CHECK_PROG(FILE, file, file, []) if test "X$FILE" != "X" ; then fobjtype="`${FILE} pac_f77conftest.$OBJEXT | sed -e \"s|pac_f77conftest\.$OBJEXT||g\"`" cobjtype="`${FILE} pac_conftest.$OBJEXT | sed -e \"s|pac_conftest\.$OBJEXT||g\"`" if test "$fobjtype" != "$cobjtype" ; then AC_MSG_ERROR([**** Incompatible Fortran and C Object File Types! **** F77 Object File Type produced by \"${F77} ${FFLAGS}\" is : ${fobjtype}. C Object File Type produced by \"${CC} ${CFLAGS}\" is : ${cobjtype}.]) fi fi fi ]) dnl dnl /*D dnl PAC_F77_WORKS_WITH_CPP dnl dnl Checks if Fortran 77 compiler works with C preprocessor dnl dnl Most systems allow the Fortran compiler to process .F and .F90 files dnl using the C preprocessor. However, some systems either do not dnl allow this or have serious bugs (OSF Fortran compilers have a bug dnl that generates an error message from cpp). The following test dnl checks to see if .F works, and if not, whether "cpp -P -C" can be used dnl D*/ AC_DEFUN([PAC_F77_WORKS_WITH_CPP],[ AC_REQUIRE([AC_PROG_CPP]) AC_MSG_CHECKING([whether Fortran 77 compiler processes .F files with C preprocessor]) AC_LANG_PUSH([Fortran 77]) saved_f77_ext=${ac_ext} ac_ext="F" saved_FFLAGS="$FFLAGS" FFLAGS="$FFLAGS $CPPFLAGS" AC_LANG_CONFTEST([ AC_LANG_SOURCE([ program main #define ASIZE 10 integer a(ASIZE) end ]) ]) AC_COMPILE_IFELSE([],[ pac_cv_f77_accepts_F=yes ifelse([$1],[],[],[$1=""]) ],[ pac_cv_f77_accepts_F=no ifelse([$1],[],[:],[$1="false"]) ]) # Restore Fortran 77's ac_ext but not FFLAGS ac_ext="$saved_f77_ext" if test "$pac_cv_f77_accepts_F" != "yes" ; then pac_cpp_f77="$ac_cpp -C -P conftest.F > conftest.$ac_ext" PAC_RUNLOG_IFELSE([$pac_cpp_f77],[ if test -s conftest.${ac_ext} ; then AC_COMPILE_IFELSE([],[ pac_cv_f77_accepts_F="no, use cpp" ifelse([$1],[],[],[$1="$CPP -C -P"]) ],[]) rm -f conftest.${ac_ext} fi ],[]) fi FFLAGS="$saved_FFLAGS" rm -f conftest.F AC_LANG_POP([Fortran 77]) AC_MSG_RESULT([$pac_cv_f77_accepts_F]) ]) dnl dnl /*D dnl PAC_PROG_F77_CRAY_POINTER - Check if Fortran 77 supports Cray-style pointer. dnl If so, set pac_cv_prog_f77_has_pointer to yes dnl and find out if any extra compiler flag is dnl needed and set it as CRAYPTR_FFLAGS. dnl i.e. CRAYPTR_FFLAGS is meaningful only if dnl pac_cv_prog_f77_has_pointer = yes. dnl dnl Synopsis: dnl PAC_PROG_F77_CRAY_POINTER([action-if-true],[action-if-false]) dnl D*/ AC_DEFUN([PAC_PROG_F77_CRAY_POINTER],[ AC_CACHE_CHECK([whether Fortran 77 supports Cray-style pointer], pac_cv_prog_f77_has_pointer,[ AC_LANG_PUSH([Fortran 77]) AC_LANG_CONFTEST([ AC_LANG_PROGRAM([],[ integer M pointer (MPTR,M) data MPTR/0/ ]) ]) saved_FFLAGS="$FFLAGS" pac_cv_prog_f77_has_pointer=no CRAYPTR_FFLAGS="" for ptrflag in '' '-fcray-pointer' ; do FFLAGS="$saved_FFLAGS $ptrflag" AC_COMPILE_IFELSE([], [ pac_cv_prog_f77_has_pointer=yes CRAYPTR_FFLAGS="$ptrflag" break ]) done dnl Restore FFLAGS first, since user may not want to modify FFLAGS FFLAGS="$saved_FFLAGS" dnl remove conftest after ac_lang_conftest rm -f conftest.$ac_ext AC_LANG_POP([Fortran 77]) ]) if test "$pac_cv_prog_f77_has_pointer" = "yes" ; then AC_MSG_CHECKING([for Fortran 77 compiler flag for Cray-style pointer]) if test "X$CRAYPTR_FFLAGS" != "X" ; then AC_MSG_RESULT([$CRAYPTR_FFLAGS]) else AC_MSG_RESULT([none]) fi ifelse([$1],[],[:],[$1]) else ifelse([$2],[],[:],[$2]) fi ]) dnl dnl dnl PAC_F77_INIT_WORKS_WITH_C dnl AC_DEFUN([PAC_F77_INIT_WORKS_WITH_C],[ AC_REQUIRE([AC_HEADER_STDC]) AC_MSG_CHECKING([whether Fortran init will work with C]) pac_f_init_works_with_c=unknown AC_LANG_PUSH([Fortran 77]) AC_COMPILE_IFELSE([ AC_LANG_SOURCE([ subroutine minit() common /m1/ vc, vc2 character*1 vc(1,1), vc2(1) common /m2/ vd integer vd save /m1/, /m2/ call minitc( vc, vc2, vd ) end ]) ],[ PAC_RUNLOG([mv conftest.$OBJEXT pac_f77conftest.$OBJEXT]) saved_LIBS="$LIBS" # This test checks if Fortran init can be done in pure C environment, # i.e. no FLIBS in linking, so don't put FLIBS in LIBS below dnl LIBS="pac_f77conftest.$OBJEXT $FLIBS $LIBS" LIBS="pac_f77conftest.$OBJEXT $LIBS" AC_LANG_PUSH([C]) AC_LINK_IFELSE([ AC_LANG_SOURCE([ #if defined(HAVE_STDIO_H) || defined(STDC_HEADERS) #include #endif #ifdef F77_NAME_UPPER #define minit_ MINIT #elif defined(F77_NAME_LOWER) || defined(F77_NAME_MIXED) #define minit_ minit #endif extern void minit_(void); int main( int argc, char **argv ) { minit_(); return 0; } char *v1 = 0; char *vc2 = 0; int v2 = 0; void minitc_( char *dv1, int d, char *dv2, int d2, int dv3 ); void minitc_( char *dv1, int d, char *dv2, int d2, int dv3 ) { v1 = dv1; v2 = dv3; vc2 = dv2; *vc2 = ' '; } ]) ],[pac_f_init_works_with_c=yes],[pac_f_init_works_with_c=no]) AC_LANG_POP([C]) LIBS="$saved_LIBS" rm -f pac_f77conftest.$OBJEXT ]) AC_LANG_POP([Fortran 77]) AC_MSG_RESULT([$pac_f_init_works_with_c]) ]) dnl dnl PAC_F77_LOGICALS_IN_C(MPI_FINT) dnl dnl where MPI_FINT is the C type for Fortran integer. dnl dnl Use a Fortran main program. This simplifies some steps, dnl since getting all of the Fortran libraries (including shared dnl libraries that are not in the default library search path) can dnl be tricky. Specifically, The PROG_F77_RUN_PROC_FROM_C failed with dnl some installations of the Portland group compiler. dnl dnl We'd also like to check other values for .TRUE. and .FALSE. to see dnl if the compiler allows (or uses) more than one value (some DEC compilers, dnl for example, used the high (sign) bit to indicate true and false; the dnl rest of the bits were ignored. For now, we'll assume that there are dnl unique true and false values. dnl AC_DEFUN([PAC_F77_LOGICALS_IN_C],[ AC_REQUIRE([AC_HEADER_STDC]) AC_REQUIRE([PAC_PROG_F77_NAME_MANGLE]) pac_mpi_fint="$1" AC_MSG_CHECKING([for values of Fortran logicals]) AC_CACHE_VAL(pac_cv_prog_f77_true_false_value,[ pac_cv_prog_f77_true_false_value="" AC_LANG_PUSH([C]) AC_COMPILE_IFELSE([ AC_LANG_SOURCE([ #if defined(HAVE_STDIO_H) || defined(STDC_HEADERS) #include #endif #if defined(HAVE_STDLIB_H) || defined(STDC_HEADERS) #include #endif #ifdef F77_NAME_UPPER #define ftest_ FTEST #elif defined(F77_NAME_LOWER) || defined(F77_NAME_MIXED) #define ftest_ ftest #endif void ftest_( $pac_mpi_fint *, $pac_mpi_fint *); void ftest_( $pac_mpi_fint *itrue, $pac_mpi_fint *ifalse ) { FILE *f = fopen("conftestval","w"); if (!f) exit(1); fprintf( f, "%d %d\n", *itrue, *ifalse ); fclose(f); } ]) ],[ PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT]) saved_LIBS="$LIBS" LIBS="pac_conftest.$OBJEXT $saved_LIBS" AC_LANG_PUSH([Fortran 77]) AC_RUN_IFELSE([ AC_LANG_SOURCE([ program main logical itrue, ifalse itrue = .TRUE. ifalse = .FALSE. call ftest( itrue, ifalse ) end ]) ],[ pac_cv_prog_f77_true_false_value="`cat conftestval`" ],[ AC_MSG_WARN([Failed to build/run program to determine Fortran logical values.]) ],[ # Cross-Compiling. Allow the user to set the values if test -n "$CROSS_F77_TRUE_VALUE" -a -n "$CROSS_F77_FALSE_VALUE" ; then pac_cv_prog_f77_true_false_value="$CROSS_F77_TRUE_VALUE $CROSS_F77_FALSE_VALUE" else AC_MSG_WARN([Either CROSS_F77_TRUE_VALUE="$CROSS_F77_TRUE_VALUE" or CROSS_F77_FALSE_VALUE="$CROSS_F77_FALSE_VALUE" is not set.]) fi ]) AC_LANG_POP([Fortran 77]) LIBS="$saved_LIBS" rm -f pac_conftest.$OBJEXT ]) AC_LANG_POP([C]) ]) dnl Endof ac_cache_val if test "X$pac_cv_prog_f77_true_false_value" != "X" ; then true_val="`echo $pac_cv_prog_f77_true_false_value | sed -e 's/ .*//g'`" false_val="`echo $pac_cv_prog_f77_true_false_value | sed -e 's/.* *//g'`" if test -n "$true_val" -a -n "$false_val" ; then AC_MSG_RESULT([True is $true_val and False is $false_val]) else AC_MSG_RESULT([could not determine]) fi fi if test -n "$true_val" -a -n "$false_val" ; then AC_DEFINE(F77_TRUE_VALUE_SET,1,[Define if we know the value of Fortran true and false]) AC_DEFINE_UNQUOTED(F77_TRUE_VALUE,$true_val,[The value of true in Fortran]) AC_DEFINE_UNQUOTED(F77_FALSE_VALUE,$false_val,[The value of false in Fortran]) fi ]) dnl/*D dnl PAC_PROG_F77_MISMATCHED_ARGS([option],[AllOnly]) - Determine whether the dnl Fortran compiler allows routines to be called with different dnl argument types. If not, attempts to determine a command-line argument dnl that permits such use dnl (The Fortran standard prohibits this usage) dnl dnl option is set to the compiler option to use. dnl if AllOnly is yes (literal, not variable with value), then only consider dnl options that turn off checking dnl for all routines dnl dnl The NAG Fortran compiler, nagfor, is known to enforce this part of the dnl Fortran standard. dnl D*/ AC_DEFUN([PAC_PROG_F77_MISMATCHED_ARGS],[ AC_MSG_CHECKING([whether $F77 allows mismatched arguments]) if test "X$pac_cv_prog_f77_mismatched_args" = X ; then pac_cv_prog_f77_mismatched_args_parm="" pac_cv_prog_f77_mismatched_args=no AC_LANG_PUSH([Fortran 77]) AC_COMPILE_IFELSE([ AC_LANG_SOURCE([ program main integer a real b character c call foo1(a) call foo1(b) call foo1(c) end ])],[pac_cv_prog_f77_mismatched_args=yes]) if test "$pac_cv_prog_f77_mismatched_args" != "yes" ; then # try again with -wmismatch=foo1 save_FFLAGS="$FFLAGS" # The best solution is to turn off errors on particular routines # if that isn't possible (e.g., too many of them), then # just try arguments that turn off all checking for flags in ifelse($2,yes,,"-wmismatch=foo1") "-mismatch" ; do testok=no FFLAGS="$FFLAGS $flags" AC_COMPILE_IFELSE([ AC_LANG_SOURCE([ program main integer a real b character c call foo1(a) call foo1(b) call foo1(c) end ])],[testok=yes]) FFLAGS="$save_FFLAGS" if test "$testok" = yes ; then break ; fi done if test "$testok" = yes ; then pac_cv_prog_f77_mismatched_args_parm="$flags" pac_cv_prog_f77_mismatched_args="yes, with $pac_cv_prog_f77_mismatched_args_parm" fi fi AC_LANG_POP([Fortran 77]) fi AC_MSG_RESULT($pac_cv_prog_f77_mismatched_args) if test "$pac_cv_prog_f77_mismatched_args" = no ; then AC_MSG_ERROR([The Fortran compiler $F77 will not compile files that call the same routine with arguments of different types.]) fi ifelse($1,,,[$1=$pac_cv_prog_f77_mismatched_args_parm]) ]) mpi-testsuite-3.2+dfsg/confdb/config.guess0000755000175000017500000012367212621010232020134 0ustar mbanckmbanck#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2014 Free Software Foundation, Inc. timestamp='2014-11-04' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD # # Please send patches to . me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "${UNAME_SYSTEM}" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu eval $set_cc_for_build cat <<-EOF > $dummy.c #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #else LIBC=gnu #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` ;; esac # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/lslpp ] ; then IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW64*:*) echo ${UNAME_MACHINE}-pc-mingw64 exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; *:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="gnulibc1" ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-${LIBC} else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi else echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; openrisc*:Linux:*:*) echo or1k-unknown-linux-${LIBC} exit ;; or32:Linux:*:* | or1k*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) echo sparc-unknown-linux-${LIBC} exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; *) echo hppa-unknown-linux-${LIBC} ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-${LIBC} exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-${LIBC} exit ;; ppc64le:Linux:*:*) echo powerpc64le-unknown-linux-${LIBC} exit ;; ppcle:Linux:*:*) echo powerpcle-unknown-linux-${LIBC} exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-unknown-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown eval $set_cc_for_build if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi fi elif test "$UNAME_PROCESSOR" = i386 ; then # Avoid executing cc on OS X 10.9, as it ships with a stub # that puts up a graphical alert prompting to install # developer tools. Any system running Mac OS X 10.7 or # later (Darwin 11 and later) is required to have a 64-bit # processor. This is not true of the ARM version of Darwin # that Apple uses in portable devices. UNAME_PROCESSOR=x86_64 fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; esac cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: mpi-testsuite-3.2+dfsg/confdb/ar-lib0000755000175000017500000001330212621010232016674 0ustar mbanckmbanck#! /bin/sh # Wrapper for Microsoft lib.exe me=ar-lib scriptversion=2012-03-01.08; # UTC # Copyright (C) 2010-2014 Free Software Foundation, Inc. # Written by Peter Rosin . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . # func_error message func_error () { echo "$me: $1" 1>&2 exit 1 } file_conv= # func_file_conv build_file # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv in mingw) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin) file=`cygpath -m "$file" || echo "$file"` ;; wine) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_at_file at_file operation archive # Iterate over all members in AT_FILE performing OPERATION on ARCHIVE # for each of them. # When interpreting the content of the @FILE, do NOT use func_file_conv, # since the user would need to supply preconverted file names to # binutils ar, at least for MinGW. func_at_file () { operation=$2 archive=$3 at_file_contents=`cat "$1"` eval set x "$at_file_contents" shift for member do $AR -NOLOGO $operation:"$member" "$archive" || exit $? done } case $1 in '') func_error "no command. Try '$0 --help' for more information." ;; -h | --h*) cat <. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ | epiphany \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ | open8 | or1k | or1knd | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ | riscv32 | riscv64 \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | visium \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; leon|leon[3-9]) basic_machine=sparc-$basic_machine ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | or1k*-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | visium-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; leon-*|leon[3-9]-*) basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze*) basic_machine=microblaze-xilinx ;; mingw64) basic_machine=x86_64-pc os=-mingw64 ;; mingw32) basic_machine=i686-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; moxiebox) basic_machine=moxie-unknown os=-moxiebox ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i686-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos | rdos64) basic_machine=x86_64-pc os=-rdos ;; rdos32) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -bitrig* | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; c8051-*) os=-elf ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: mpi-testsuite-3.2+dfsg/confdb/aclocal_shl.m40000644000175000017500000004323412620254305020327 0ustar mbanckmbanckdnl dnl Definitions for creating shared libraries dnl dnl The purpose of these definitions is to provide common support for dnl shared libraries, with *or without* the use of the GNU Libtool package. dnl For many of our important platforms, the Libtool approach is overkill, dnl and can be particularly painful for developers. dnl dnl To use libtool, you need macros that are defined by libtool for libtool dnl Don't even think about the consequences of this for updating and for dnl using user-versions of libtool :( dnl dnl !!!!!!!!!!!!!!!!!!!!! dnl libtool requires ac 2.50 !!!!!!!!!!!!!!!!! dnl dnl builtin(include,libtool.m4) dnl dnl/*D dnl PAC_ARG_SHAREDLIBS - Add --enable-sharedlibs=kind to configure. dnl dnl Synopsis: dnl PAC_ARG_SHAREDLIBS dnl dnl Output effects: dnl Adds '--enable-sharedlibs=kind' to the command line. If this is enabled, dnl then based on the value of 'kind', programs are selected for the dnl names 'CC_SHL' and 'CC_LINK_SHL' that configure will substitute for in dnl 'Makefile.in's. These symbols are generated by 'simplemake' when dnl shared library support is selected. dnl The variable 'C_LINKPATH_SHL' is set to the option to specify the dnl path to search at runtime for libraries (-rpath in gcc/GNU ld). dnl This can be turned off with --disable-rpath , which is appropriate dnl for libraries and for executables that may be installed in different dnl locations. dnl The variable 'SHLIB_EXT' is set to the extension used by shared dnl libraries; under most forms of Unix, this is 'so'; under Mac OS/X, this dnl is 'dylib', and under Windows (including cygwin), this is 'dll'. dnl dnl Supported values of 'kind' include \: dnl+ gcc - Use gcc to create both shared objects and libraries dnl. osx-gcc - Use gcc on Mac OS/X to create both shared objects and dnl libraries dnl. solaris-cc - Use native Solaris cc to create shared objects and dnl libraries dnl. cygwin-gcc - Use gcc on Cygwin to create shared objects and libraries dnl- none - The same as '--disable-sharedlibs' dnl dnl Others will be added as experience dictates. Likely names are dnl + libtool - For general GNU libtool dnl - linux-pgcc - For Portland group under Linux dnl dnl Notes: dnl Shared libraries are only partially implemented. Additional symbols dnl will probably be defined, including symbols to specify how shared library dnl search paths are specified and how shared library names are set. dnl D*/ AC_DEFUN([PAC_ARG_SHAREDLIBS],[ AC_ARG_ENABLE(shared, AC_HELP_STRING([--enable-shared], [Enable shared library builds]),, enable_shared=no) AC_ARG_ENABLE(rpath, AC_HELP_STRING([--enable-rpath], [Determine whether the rpath is set when programs are compiled and linked when shared libraries are built. The default is yes; use --disable-rpath to turn this feature off; in that case, shared libraries will be found according to the rules for your system (e.g., in LD_LIBRARY_PATH)]),,enable_rpath=yes) AC_ARG_ENABLE(sharedlibs, [ --enable-sharedlibs=kind - Enable shared libraries. kind may be gcc - Standard gcc and GNU ld options for creating shared libraries osx-gcc - Special options for gcc needed only on OS/X solaris-cc - Solaris native (SPARC) compilers for 32 bit systems cygwin-gcc - Special options for gcc needed only for cygwin none - same as --disable-sharedlibs Only gcc, osx-gcc, and solaris-cc are currently supported ],,enable_sharedlibs=default) if test "$enable_sharedlibs" = "default" ; then if test "$enable_shared" = "yes" ; then AS_CASE([$host], [*-*-darwin*], [enable_sharedlibs=gcc-osx], [*-*-cygwin*|*-*-mingw*|*-*-pw32*|*-*-cegcc*], [enable_sharedlibs=cygwin-gcc], [*-*-sunos*], [enable_sharedlibs=solaris-gcc], [enable_sharedlibs=gcc]) else enable_sharedlibs=none fi fi # If --enable-sharedlibs is given, but --enable-shared is not, throw # an error if test "$enable_sharedlibs" != "no" -a "$enable_sharedlibs" != "none" ; then if test "$enable_shared" = "no" ; then AC_MSG_ERROR([--enable-sharedlibs cannot be used without --enable-shared]) fi fi CC_SHL=true C_LINK_SHL=true C_LINKPATH_SHL="" SHLIB_EXT=unknown SHLIB_FROM_LO=no SHLIB_INSTALL='$(INSTALL_PROGRAM)' case "$enable_sharedlibs" in no|none) ;; gcc-osx|osx-gcc) AC_MSG_RESULT([Creating shared libraries using GNU for Mac OSX]) C_LINK_SHL='${CC} -dynamiclib -undefined suppress -single_module -flat_namespace' CC_SHL='${CC} -fPIC' # No way in osx to specify the location of the shared libraries at link # time (see the code in createshlib in mpich/src/util) # As of 10.5, -Wl,-rpath,dirname should work . The dirname # must be a single directory, not a colon-separated list (use multiple # -Wl,-rpath,path for each of the paths in the list). However, os x # apparently records the library full path, so rpath isn't as useful # as it is on other systems C_LINKPATH_SHL="" SHLIB_EXT="dylib" enable_sharedlibs="osx-gcc" ;; gcc) AC_MSG_RESULT([Creating shared libraries using GNU]) # Not quite right yet. See mpich/util/makesharedlib # Use syntax that works in both Make and the shell #C_LINK_SHL='${CC} -shared -Wl,-r' C_LINK_SHL='${CC} -shared' # For example, include the libname as ${LIBNAME_SHL} #C_LINK_SHL='${CC} -shared -Wl,-h,' # May need -fPIC . Test to see which one works. for sh_arg in "-fPIC" "-fpic" "-KPIC" ; do PAC_C_CHECK_COMPILER_OPTION($sh_arg,works=yes,works=no) if test "$works" = "yes" ; then CC_SHL="${CC} ${sh_arg}" break fi done if test "$works" != "yes"; then AC_MSG_ERROR([Cannot build shared libraries with this compiler]) fi # This used to have -Wl,-rpath earlier, but that causes problems # on many systems. if test $enable_rpath = "yes" ; then C_LINKPATH_SHL="-Wl,-rpath," fi SHLIB_EXT=so # We need to test that this isn't osx. The following is a # simple hack osname=`uname -s` case $osname in *Darwin*|*darwin*) AC_MSG_ERROR([You must specify --enable-sharedlibs=osx-gcc for Mac OS/X]) ;; *CYGWIN*|*cygwin*) AC_MSG_ERROR([You must specify --enable-sharedlibs=cygwin-gcc for Cygwin]) ;; *SunOS*) AC_MSG_ERROR([You must specify --enable-sharedlibs=solaris-gcc for Solaris with gcc]) ;; esac ;; cygwin|cygwin-gcc|gcc-cygwin) AC_MSG_RESULT([Creating shared libraries using GNU under CYGWIN]) C_LINK_SHL='${CC} -shared' CC_SHL='${CC}' # DLL Libraries need to be in the user's path (!) C_LINKPATH_SHL="" SHLIB_EXT="dll" enable_sharedlibs="cygwin-gcc" ;; libtool) # set TRY_LIBTOOL to yes to experiment with libtool. You are on your # own - only send fixes, not bug reports. if test "$TRY_LIBTOOL" != yes ; then AC_MSG_ERROR([Creating shared libraries using libtool not yet supported]) else # Using libtool requires a heavy-weight process to test for # various stuff that libtool needs. Without this, you'll get a # bizarre error message about libtool being unable to find # configure.in or configure.ac (!) # Libtool expects to see at least enable-shared. if test "X$enable_shared" = "X" ; then enable_shared=yes ; fi # Initialize libtool # This works, but libtool version 2 places the object files # in a different place, making it harder to integrate with # our base approach. Disabling for now dnl LT_PREREQ([2.2.6]) dnl LT_INIT([disable-shared]) AC_MSG_ERROR([To use this test verison, edit aclocal_shl.m4]) # Likely to be # either CC or CC_SHL is libtool $cc CC_SHL='${LIBTOOL} --mode=compile ${CC}' # CC_LINK_SHL includes the final installation path # For many systems, the link may need to include *all* libraries # (since many systems don't allow any unsatisfied dependencies) # We need to give libtool the .lo file, not the .o files SHLIB_FROM_LO=yes # We also need to add -no-undefined when the compiler is gcc and # we are building under cygwin sysname=`uname -s | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ` isCygwin=no case "$sysname" in *CYGWIN*) isCygwin=yes ;; esac if test "$isCygwin" = yes ; then C_LINK_SHL='${LIBTOOL} --mode=link ${CC} -no-undefined -rpath ${libdir}' else C_LINK_SHL='${LIBTOOL} --mode=link ${CC} -rpath ${libdir}' fi if test $enable_rpath = "yes" ; then C_LINKPATH_SHL="-rpath " fi # We also need a special install process with libtool. Note that this # will also install the static libraries SHLIB_INSTALL='$(LIBTOOL) --mode=install $(INSTALL_PROGRAM)' # Note we may still need to add #'$(LIBTOOL) --mode=finish $(libdir)' fi ;; dnl dnl Other, such as solaris-cc solaris|solaris-cc) AC_MSG_RESULT([Creating shared libraries using Solaris]) # pic32 is appropriate for both 32 and 64 bit Solaris C_LINK_SHL='${CC} -G -xcode=pic32' CC_SHL='${CC} -xcode=pic32' if test $enable_rpath = "yes" ; then C_LINKPATH_SHL="-R" fi SHLIB_EXT=so enable_sharedlibs="solaris-cc" ;; solaris-gcc) # This is the same as gcc, except for the C_LINKPATH_SHL AC_MSG_RESULT([Creating shared libraries using Solaris with gcc]) C_LINK_SHL='${CC} -shared' CC_SHL='${CC} -fPIC' if test $enable_rpath = "yes" ; then C_LINKPATH_SHL="-R" fi SHLIB_EXT=so enable_sharedlibs="solaris-gcc" ;; linuxppc-xlc) # This is only the beginning of xlc support, thanks to andy@vpac.org CC_SHL='${CC} -qmkshrobj' # More recent versions allow multiple args, separated by commas if test $enable_rpath = "yes" ; then C_LINKPATH_SHL="-Wl,-rpath," fi #C_LINKPATH_SHL="-Wl,-rpath -Wl," C_LINK_SHL='${CC} -shared -qmkshrobj' SHLIB_EXT=so # Note that the full line should be more like # $CLINKER -shared -qmkshrobj -Wl,-h,$libbase.$slsuffix -o ../shared/$libbase.$slsuffix *.o $OtherLibs # for the appropriate values of $libbase and $slsuffix # The -h name sets the name of the object; this is necessary to # ensure that the dynamic linker can find the proper shared library. ;; *) AC_MSG_ERROR([Unknown value $enable_sharedlibs for enable-sharedlibs. Values should be gcc or osx-gcc]) enable_sharedlibs=no ;; esac # Check for the shared-library extension PAC_CC_SHLIB_EXT dnl AC_SUBST(CC_SHL) AC_SUBST(C_LINK_SHL) AC_SUBST(C_LINKPATH_SHL) AC_SUBST(SHLIB_EXT) AC_SUBST(SHLIB_FROM_LO) AC_SUBST(SHLIB_INSTALL) ]) dnl /*D dnl PAC_xx_SHAREDLIBS - Get compiler and linker for shared libraries dnl These routines may be used to determine the compiler and the dnl linker to be used in creating shared libraries dnl Rather than set predefined variable names, they set an argument dnl (if provided) dnl dnl Synopsis dnl PAC_CC_SHAREDLIBS(type,CCvar,CLINKvar) dnl D*/ AC_DEFUN([PAC_CC_SHAREDLIBS], [ pac_kinds=$1 ifelse($1,,[ pac_prog="" AC_CHECK_PROG(pac_prog,gcc,yes,no) # If we are gcc but OS X, set the special type # We need a similar setting for cygwin if test "$pac_prog" = yes ; then osname=`uname -s` case $osname in *Darwin*|*darwin*) pac_kinds=gcc-osx ;; *) pac_kinds=gcc ;; esac fi pac_prog="" AC_CHECK_PROG(pac_prog,libtool,yes,no) if test "$pac_prog" = yes ; then pac_kinds="$pac_kinds libtool" ; fi ]) for pac_arg in $pac_kinds ; do case $pac_arg in gcc) # For example, include the libname as ${LIBNAME_SHL} #C_LINK_SHL='${CC} -shared -Wl,-h,' pac_cc_sharedlibs='gcc -shared' # Make sure we select the correct fpic option PAC_C_CHECK_COMPILER_OPTION(-fPIC,fPIC_OK=yes,fPIC_OK=no) if test "$fPIC_OK" != yes ; then PAC_C_CHECK_COMPILER_OPTION(-fpic,fpic_ok=yes,fpic_ok=no) if test "$fpic_ok" != yes ; then AC_MSG_ERROR([Neither -fpic nor -fPIC accepted by $CC]) else pac_cc_sharedlibs="$pac_cc_sharedlibs -fpic" fi else pac_cc_sharedlibs="$pac_cc_sharedlibs -fPIC" fi pac_clink_sharedlibs='gcc -shared' pac_type_sharedlibs=gcc ;; gcc-osx|osx-gcc) pac_clink_sharedlibs='${CC} -dynamiclib -undefined suppress -single_module -flat_namespace' pac_cc_sharedlibs='${CC} -fPIC' pac_type_sharedlibs=gcc-osx ;; libtool) AC_CHECK_PROGS(LIBTOOL,libtool,false) if test "$LIBTOOL" = "false" ; then AC_MSG_WARN([Could not find libtool]) else # Likely to be # either CC or CC_SHL is libtool $cc pac_cc_sharedlibs'${LIBTOOL} -mode=compile ${CC}' pac_clink_sharedlibs='${LIBTOOL} -mode=link ${CC} -rpath ${libdir}' pac_type_sharedlibs=libtool fi ;; *) ;; esac if test -n "$pac_cc_sharedlibs" ; then break ; fi done if test -z "$pac_cc_sharedlibs" ; then pac_cc_sharedlibs=true ; fi if test -z "$pac_clink_sharedlibs" ; then pac_clink_sharedlibs=true ; fi ifelse($2,,CC_SHL=$pac_cc_sharedlibs,$2=$pac_cc_sharedlibs) ifelse($3,,C_LINK_SHL=$pac_clink_sharedlibs,$3=$pac_clink_sharedlibs) ifelse($4,,SHAREDLIB_TYPE=$pac_type_sharedlibs,$4=$pac_type_sharedlibs) ]) dnl This macro ensures that all of the necessary substitutions are dnl made by any subdirectory configure (which may simply SUBST the dnl necessary values rather than trying to determine them from scratch) dnl This is a more robust (and, in the case of libtool, only dnl managable) method. AC_DEFUN([PAC_CC_SUBDIR_SHLIBS],[ AC_SUBST(CC_SHL) AC_SUBST(C_LINK_SHL) AC_SUBST(LIBTOOL) AC_SUBST(ENABLE_SHLIB) AC_SUBST(SHLIB_EXT) if test "$ENABLE_SHLIB" = "libtool" ; then if test -z "$LIBTOOL" ; then AC_MSG_WARN([libtool selected for shared library support but LIBTOOL is not defined]) fi # Libtool needs master_top_builddir if test "X$master_top_builddir" = "X" ; then AC_MSG_ERROR([Libtool requires master_top_builddir - check configure.ac sources]) fi AC_SUBST(master_top_builddir) fi ]) dnl PAC_CC_SHLIB_EXT - get the extension for shared libraries dnl Set the variable SHLIB_EXT if it is other than unknown. AC_DEFUN([PAC_CC_SHLIB_EXT],[ # Not all systems use .so as the extension for shared libraries (cygwin # and OSX are two important examples). If we did not set the SHLIB_EXT, # then try and determine it. We need this to properly implement # clean steps that look for libfoo.$SHLIB_EXT . if test "$SHLIB_EXT" = "unknown" ; then osname=`uname -s` case $osname in *Darwin*|*darwin*) SHLIB_EXT=dylib ;; *CYGWIN*|*cygwin*) SHLIB_EXT=dll ;; *Linux*|*LINUX*|*SunOS*) SHLIB_EXT=so ;; esac fi ]) dnl PAC_COMPILER_SHLIB_FLAGS(compiler-var,output-file) dnl dnl Uses confdb/config.rpath to determine important linking flags and dnl information. This is mainly intended to support the compiler wrapper dnl scripts in MPICH ("mpicc" and friends) which cannot directly use libtool to dnl handle linking. MPICH's compiler wrappers attempt to link executables with dnl an rpath by default. The resulting variable assignment statements will be dnl placed into "output-file", which is then suitable for AC_SUBST_FILE or dnl sourcing in a shell script (including configure itself). dnl dnl This macro assumes that the basic tests associated with "compiler-var" have dnl been run already, but does not AC_REQUIRE them in order to prevent problems dnl with "expanded before required" when requiring the AC_PROG_{CC,F77,FC,CXX} dnl macros. dnl dnl Example usage: dnl dnl ----8<---- dnl # compute flags for linking executables against shared libraries when using dnl # the modern Fortran compiler ($FC). dnl PAC_COMPILER_SHLIB_FLAGS([FC],[src/env/fc_shlib.conf]) dnl ----8<---- AC_DEFUN([PAC_COMPILER_SHLIB_FLAGS],[ AC_REQUIRE_AUX_FILE([config.rpath]) AC_REQUIRE([AC_CANONICAL_HOST]) # It appears that the libtool dynamic linking strategy on Darwin is this: # 1. Link all shared libs with "-install_name /full/path/to/libfoo.dylib" # 2. Don't do anything special when linking programs, since it seems that the # darwin dynamic linker will always use the "install_name" field from the lib # that was found at program link-time. (CONFIRMED) This is in opposition to # the way that Linux does it, where specifying a "-rpath" argument at program # link-time is important. # # There is an alternative darwin strategy for versions # >= 10.5, see this: http://www.cmake.org/pipermail/cmake/2010-August/038970.html # (goodell@ 2011-06-17) AC_MSG_CHECKING([for shared library (esp. rpath) characteristics of $1]) # unfortunately, config.rpath expects the compiler in question is always CC and # uses several other environment variables as input PAC_PUSH_FLAG([CC]) PAC_PUSH_FLAG([GCC]) PAC_PUSH_FLAG([LD]) # these two don't currently get overridden, but we push/pop them for safety in # case they do in the future PAC_PUSH_FLAG([LDFLAGS]) PAC_PUSH_FLAG([with_gnu_ld]) # set the temporary override values (if any) m4_case([$1], [CC], [:], dnl do nothing special for CC, values are already correct [F77], [CC="$$1" GCC="$G77" LD="$LD_F77"], [FC], [CC="$$1" GCC="$GCC_FC" LD="$LD_FC"], [CXX], [CC="$$1" GCC="$GXX" LD="$LD_CXX"], [m4_fatal([unknown compiler argument "$1"])]) # ensure the values are available to the script export CC export GCC export LDFLAGS export LD export with_gnu_ld AS_IF([$ac_aux_dir/config.rpath "$host" > $2],[:],[AC_MSG_ERROR([unable to execute $ac_aux_dir/config.rpath])]) C_LINKPATH_SHL="" AC_SUBST([C_LINKPATH_SHL]) rm -f conftest.out # restore the old values PAC_POP_FLAG([with_gnu_ld]) PAC_POP_FLAG([LD]) PAC_POP_FLAG([LDFLAGS]) PAC_POP_FLAG([GCC]) PAC_POP_FLAG([CC]) AC_MSG_RESULT([done (results in $2)]) ]) mpi-testsuite-3.2+dfsg/confdb/aclocal_bugfix.m40000644000175000017500000000515312620254305021023 0ustar mbanckmbanckdnl This internal macro fails to work properly with OTHER internal macros. dnl Basically, if the prologue is [], then no message should be generated. dnl This macro is in autoconf 2.52 m4_define([AC_LANG_PROGRAM(Fortran 77)], [m4_if([$1],[[[]]],,[m4_ifval([$1], [m4_warn([syntax], [$0: ignoring PROLOGUE: $1])])])dnl program main $2 end]) dnl/*D dnl PAC_PROG_CHECK_INSTALL_WORKS - Check whether the install program in INSTALL dnl works. dnl dnl Synopsis: dnl PAC_PROG_CHECK_INSTALL_WORKS dnl dnl Output Effect: dnl Sets the variable 'INSTALL' to the value of 'ac_sh_install' if dnl a file cannot be installed into a local directory with the 'INSTALL' dnl program dnl dnl Notes: dnl The 'AC_PROG_INSTALL' scripts tries to avoid broken versions of dnl install by avoiding directories such as '/usr/sbin' where some dnl systems are known to have bad versions of 'install'. Unfortunately, dnl this is exactly the sort of test-on-name instead of test-on-capability dnl that 'autoconf' is meant to eliminate. The test in this script dnl is very simple but has been adequate for working around problems dnl on Solaris, where the '/usr/sbin/install' program (known by dnl autoconf to be bad because it is in /usr/sbin) is also reached by a dnl soft link through /bin, which autoconf believes is good. dnl dnl No variables are cached to ensure that we do not make a mistake in dnl our choice of install program. dnl dnl The Solaris configure requires the directory name to immediately dnl follow the '-c' argument, rather than the more common dnl.vb dnl args sourcefiles destination-dir dnl.ve dnl D*/ AC_DEFUN([PAC_PROG_CHECK_INSTALL_WORKS],[ if test -z "$INSTALL" ; then AC_MSG_RESULT([No install program available]) else # first make any "confdb/install-sh -c" into an absolute path # this is a hack, but it's still much cleaner than anything else I could # come up with (see tt#1007) [goodell@] AS_CASE(["$INSTALL"], [/*],[:], [*install-sh*],[INSTALL="$master_top_srcdir/$INSTALL"]) # Check that this install really works rm -f conftest echo "Test file" > conftest if test ! -d .conftest ; then mkdir .conftest ; fi AC_MSG_CHECKING([whether install works]) if $INSTALL conftest .conftest >/dev/null 2>&1 ; then installOk=yes else installOk=no fi rm -rf .conftest conftest AC_MSG_RESULT($installOk) if test "$installOk" = no ; then if test -n "$ac_install_sh" ; then INSTALL=$ac_install_sh else AC_MSG_ERROR([Unable to find working install]) fi fi fi ]) mpi-testsuite-3.2+dfsg/confdb/config.rpath0000755000175000017500000004605512620254305020135 0ustar mbanckmbanck#! /bin/sh # # Output a system dependent set of variables, describing how to set the # run time search path of shared libraries in an executable. # # Copyright 1996-2011 Free Software Foundation, Inc. # Taken from GNU libtool, 2001 # Originally by Gordon Matzigkeit , 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # The first argument passed to this file is the canonical host specification, # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld # should be set by the caller. # # The set of defined variables is at the end of this script. # Known limitations: # - On IRIX 6.5 with CC="cc", the run time search patch must not be longer # than 256 bytes, otherwise the compiler driver will dump core. The only # known workaround is to choose shorter directory names for the build # directory and/or the installation directory. # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a shrext=.so host="$1" host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` # Code taken from libtool.m4's _LT_CC_BASENAME. for cc_temp in $CC""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'` # Code taken from libtool.m4's _LT_COMPILER_PIC. wl= if test "$GCC" = yes; then wl='-Wl,' else case "$host_os" in aix*) wl='-Wl,' ;; mingw* | cygwin* | pw32* | os2* | cegcc*) ;; hpux9* | hpux10* | hpux11*) wl='-Wl,' ;; irix5* | irix6* | nonstopux*) wl='-Wl,' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in ecc*) wl='-Wl,' ;; icc* | ifort*) wl='-Wl,' ;; lf95*) wl='-Wl,' ;; nagfor*) wl='-Wl,-Wl,,' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) wl='-Wl,' ;; ccc*) wl='-Wl,' ;; xl* | bgxl* | bgf* | mpixl* | *bgq-linux-xl* ) wl='-Wl,' ;; como) wl='-lopt=' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-4]]*) wl= ;; *Sun\ F* | *Sun*Fortran*) wl='-Wl,' ;; *Sun\ C*) wl='-Wl,' ;; esac ;; esac ;; newsos6) ;; *nto* | *qnx*) ;; osf3* | osf4* | osf5*) wl='-Wl,' ;; rdos*) ;; solaris*) case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) wl='-Qoption ld ' ;; *) wl='-Wl,' ;; esac ;; sunos4*) wl='-Qoption ld ' ;; sysv4 | sysv4.2uw2* | sysv4.3*) wl='-Wl,' ;; sysv4*MP*) ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) wl='-Wl,' ;; unicos*) wl='-Wl,' ;; uts4*) ;; esac fi # Code taken from libtool.m4's _LT_LINKER_SHLIBS. hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no case "$host_os" in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. # Unlike libtool, we use -rpath here, not --rpath, since the documented # option of GNU ld is called -rpath, not --rpath. hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' case "$host_os" in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no fi ;; amigaos*) case "$host_cpu" in powerpc) ;; m68k) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then : else ld_shlibs=no fi ;; haiku*) ;; interix[3-9]*) hardcode_direct=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then # use --enable-new-dtags for RUNPATH support, which is required for # switching between ABI compatible libraries at runtime. if test "$GCC" = yes; then hardcode_libdir_flag_spec="${hardcode_libdir_flag_spec} ${wl}--enable-new-dtags" else case $cc_basename in ifort*) hardcode_libdir_flag_spec="${hardcode_libdir_flag_spec} ${wl}--enable-new-dtags" ;; esac fi else ld_shlibs=no fi ;; netbsd*) ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs=no elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' else ld_shlibs=no fi ;; esac ;; sunos4*) hardcode_direct=yes ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then hardcode_libdir_flag_spec= fi else case "$host_os" in aix3*) # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac fi hardcode_direct=yes hardcode_libdir_separator=':' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac fi # Begin _LT_AC_SYS_LIBPATH_AIX. echo 'int main () { return 0; }' > conftest.c ${CC} ${LDFLAGS} conftest.c -o conftest aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` fi if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib" fi rm -f conftest.c conftest # End _LT_AC_SYS_LIBPATH_AIX. if test "$aix_use_runtimelinking" = yes; then hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' else hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" fi fi ;; amigaos*) case "$host_cpu" in powerpc) ;; m68k) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' libext=lib ;; darwin* | rhapsody*) hardcode_direct=no if { case $cc_basename in ifort*) true;; *) test "$GCC" = yes;; esac; }; then : else ld_shlibs=no fi ;; dgux*) hardcode_libdir_flag_spec='-L$libdir' ;; freebsd2.2*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; freebsd2*) hardcode_direct=yes hardcode_minus_L=yes ;; freebsd* | dragonfly*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; hpux9*) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; hpux10*) if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no ;; *) hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; netbsd*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; newsos6) hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then hardcode_libdir_flag_spec='${wl}-rpath,$libdir' else case "$host_os" in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) hardcode_libdir_flag_spec='-R$libdir' ;; *) hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; osf3*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) if test "$GCC" = yes; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else # Both cc and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; solaris*) hardcode_libdir_flag_spec='-R$libdir' ;; sunos4*) hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes ;; sysv4) case $host_vendor in sni) hardcode_direct=yes # is this really true??? ;; siemens) hardcode_direct=no ;; motorola) hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac ;; sysv4.3*) ;; sysv4*MP*) if test -d /usr/nec; then ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) ;; sysv5* | sco3.2v5* | sco5v6*) hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator=':' ;; uts4*) hardcode_libdir_flag_spec='-L$libdir' ;; *) ld_shlibs=no ;; esac fi # Check dynamic linker characteristics # Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER. # Unlike libtool.m4, here we don't care about _all_ names of the library, but # only about the one the linker finds when passed -lNAME. This is the last # element of library_names_spec in libtool.m4, or possibly two of them if the # linker has special search rules. library_names_spec= # the last element of library_names_spec in libtool.m4 libname_spec='lib$name' case "$host_os" in aix3*) library_names_spec='$libname.a' ;; aix[4-9]*) library_names_spec='$libname$shrext' ;; amigaos*) case "$host_cpu" in powerpc*) library_names_spec='$libname$shrext' ;; m68k) library_names_spec='$libname.a' ;; esac ;; beos*) library_names_spec='$libname$shrext' ;; bsdi[45]*) library_names_spec='$libname$shrext' ;; cygwin* | mingw* | pw32* | cegcc*) shrext=.dll library_names_spec='$libname.dll.a $libname.lib' ;; darwin* | rhapsody*) shrext=.dylib library_names_spec='$libname$shrext' ;; dgux*) library_names_spec='$libname$shrext' ;; freebsd* | dragonfly*) case "$host_os" in freebsd[123]*) library_names_spec='$libname$shrext$versuffix' ;; *) library_names_spec='$libname$shrext' ;; esac ;; gnu*) library_names_spec='$libname$shrext' ;; haiku*) library_names_spec='$libname$shrext' ;; hpux9* | hpux10* | hpux11*) case $host_cpu in ia64*) shrext=.so ;; hppa*64*) shrext=.sl ;; *) shrext=.sl ;; esac library_names_spec='$libname$shrext' ;; interix[3-9]*) library_names_spec='$libname$shrext' ;; irix5* | irix6* | nonstopux*) library_names_spec='$libname$shrext' case "$host_os" in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; *) libsuff= shlibsuff= ;; esac ;; esac ;; linux*oldld* | linux*aout* | linux*coff*) ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) library_names_spec='$libname$shrext' ;; knetbsd*-gnu) library_names_spec='$libname$shrext' ;; netbsd*) library_names_spec='$libname$shrext' ;; newsos6) library_names_spec='$libname$shrext' ;; *nto* | *qnx*) library_names_spec='$libname$shrext' ;; openbsd*) library_names_spec='$libname$shrext$versuffix' ;; os2*) libname_spec='$name' shrext=.dll library_names_spec='$libname.a' ;; osf3* | osf4* | osf5*) library_names_spec='$libname$shrext' ;; rdos*) ;; solaris*) library_names_spec='$libname$shrext' ;; sunos4*) library_names_spec='$libname$shrext$versuffix' ;; sysv4 | sysv4.3*) library_names_spec='$libname$shrext' ;; sysv4*MP*) library_names_spec='$libname$shrext' ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) library_names_spec='$libname$shrext' ;; tpf*) library_names_spec='$libname$shrext' ;; uts4*) library_names_spec='$libname$shrext' ;; esac sed_quote_subst='s/\(["`$\\]\)/\\\1/g' escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` shlibext=`echo "$shrext" | sed -e 's,^\.,,'` escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` # MPICH modification: we don't prefix with acl_cv_ by default. This # is causing problems in the stock version of config.rpath as well. # LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' < conftest <<. ALL: @echo "success" . cat > conftest1 <<. include conftest . pac_str=`$MAKE -f conftest1 2>&1` # This is needed for Mac OSX 10.5 rm -rf conftest.dSYM rm -f conftest conftest1 if test "$pac_str" != "success" ; then pac_cv_prog_make_include="no" else pac_cv_prog_make_include="yes" fi ]) if test "$pac_cv_prog_make_include" = "no" ; then ifelse([$2],,:,[$2]) else ifelse([$1],,:,[$1]) fi ])dnl dnl/*D dnl PAC_PROG_MAKE_ALLOWS_COMMENTS - Check whether comments are allowed in dnl shell commands in a makefile dnl dnl Synopsis: dnl PAC_PROG_MAKE_ALLOWS_COMMENTS([false text]) dnl dnl Output Effect: dnl Issues a warning message if comments are not allowed in a makefile. dnl Executes the argument if one is given. dnl dnl Notes: dnl Some versions of OSF V3 make do not all comments in action commands. dnl dnl See Also: dnl PAC_PROG_MAKE dnl D*/ dnl AC_DEFUN([PAC_PROG_MAKE_ALLOWS_COMMENTS],[ AC_CACHE_CHECK([whether make allows comments in actions], pac_cv_prog_make_allows_comments,[ AC_REQUIRE([PAC_PROG_MAKE_PROGRAM]) # This is needed for Mac OSX 10.5 rm -rf conftest.dSYM rm -f conftest cat > conftest <<. SHELL=/bin/sh ALL: @# This is a valid comment! @echo "success" . pac_str=`$MAKE -f conftest 2>&1` # This is needed for Mac OSX 10.5 rm -rf conftest.dSYM rm -f conftest if test "$pac_str" != "success" ; then pac_cv_prog_make_allows_comments="no" else pac_cv_prog_make_allows_comments="yes" fi ]) if test "$pac_cv_prog_make_allows_comments" = "no" ; then AC_MSG_WARN([Your make does not allow comments in target code. Using this make may cause problems when building programs. You should consider using gnumake instead.]) ifelse([$1],,[$1]) fi ])dnl dnl/*D dnl PAC_PROG_MAKE_VPATH - Check whether make supports source-code paths. dnl dnl Synopsis: dnl PAC_PROG_MAKE_VPATH dnl dnl Output Effect: dnl Sets the variable 'VPATH' to either dnl.vb dnl VPATH = .:${srcdir} dnl.ve dnl or dnl.vb dnl .PATH: . ${srcdir} dnl.ve dnl dnl Notes: dnl The test checks that the path works with implicit targets (some makes dnl support only explicit targets with 'VPATH' or 'PATH'). dnl dnl NEED TO DO: Check that $< works on explicit targets. dnl dnl See Also: dnl PAC_PROG_MAKE dnl dnl D*/ AC_DEFUN([PAC_PROG_MAKE_VPATH],[ AC_SUBST(VPATH) dnl AM_IGNORE(VPATH) AC_CACHE_CHECK([for virtual path format], pac_cv_prog_make_vpath,[ AC_REQUIRE([PAC_PROG_MAKE_PROGRAM]) # This is needed for Mac OSX 10.5 rm -rf conftest.dSYM rm -rf conftest* mkdir conftestdir cat >conftestdir/a.c < conftest <&1 | grep 'conftestdir/a.c'` if test -n "$ac_out" ; then pac_cv_prog_make_vpath="VPATH" else rm -f conftest cat > conftest <&1 | grep 'conftestdir/a.c'` if test -n "$ac_out" ; then pac_cv_prog_make_vpath=".PATH" else pac_cv_prog_make_vpath="neither VPATH nor .PATH works" fi fi # This is needed for Mac OSX 10.5 rm -rf conftest.dSYM rm -rf conftest* ]) if test "$pac_cv_prog_make_vpath" = "VPATH" ; then VPATH='VPATH=.:${srcdir}' elif test "$pac_cv_prog_make_vpath" = ".PATH" ; then VPATH='.PATH: . ${srcdir}' fi ])dnl dnl/*D dnl PAC_PROG_MAKE_SET_CFLAGS - Check whether make sets CFLAGS dnl dnl Synopsis: dnl PAC_PROG_MAKE_SET_CFLAGS([action if true],[action if false]) dnl dnl Output Effects: dnl Executes the first argument if 'CFLAGS' is set by 'make'; executes dnl the second argument if 'CFLAGS' is not set by 'make'. dnl dnl Notes: dnl If 'CFLAGS' is set by make, you may wish to override that choice in your dnl makefile. dnl dnl See Also: dnl PAC_PROG_MAKE dnl D*/ AC_DEFUN([PAC_PROG_MAKE_SET_CFLAGS],[ AC_CACHE_CHECK([whether make sets CFLAGS], pac_cv_prog_make_set_cflags,[ AC_REQUIRE([PAC_PROG_MAKE_PROGRAM]) # This is needed for Mac OSX 10.5 rm -rf conftest.dSYM rm -f conftest cat > conftest <&1` # This is needed for Mac OSX 10.5 rm -rf conftest.dSYM rm -f conftest if test "$pac_str" = "XX" ; then pac_cv_prog_make_set_cflags="no" else pac_cv_prog_make_set_cflags="yes" fi ]) if test "$pac_cv_prog_make_set_cflags" = "no" ; then ifelse([$2],,:,[$2]) else ifelse([$1],,:,[$1]) fi ])dnl dnl/*D dnl PAC_PROG_MAKE_CLOCK_SKEW - Check whether there is a problem with dnl clock skew in suing make. dnl dnl Effect: dnl Sets the cache variable 'pac_cv_prog_make_found_clock_skew' to yes or no dnl D*/ AC_DEFUN([PAC_PROG_MAKE_CLOCK_SKEW],[ AC_CACHE_CHECK([whether clock skew breaks make], pac_cv_prog_make_found_clock_skew,[ AC_REQUIRE([PAC_PROG_MAKE_PROGRAM]) # This is needed for Mac OSX 10.5 rm -rf conftest.dSYM rm -f conftest* cat > conftest < conftest.out 2>&1 if grep -i skew conftest >/dev/null 2>&1 ; then pac_cv_prog_make_found_clock_skew=yes else pac_cv_prog_make_found_clock_skew=no fi # This is needed for Mac OSX 10.5 rm -rf conftest.dSYM rm -f conftest* ]) dnl We should really do something if we detect clock skew. The question is, dnl what? if test "$pac_cv_prog_make_found_clock_skew" = "yes" ; then AC_MSG_WARN([Clock skew found by make. The configure and build may fail. Consider building in a local instead of NFS filesystem.]) fi ]) dnl/*D dnl PAC_PROG_MAKE - Checks for the varieties of MAKE, including support for dnl VPATH dnl dnl Synopsis: dnl PAC_PROG_MAKE dnl dnl Output Effect: dnl Sets 'MAKE' to the make program to use if 'MAKE' is not already set. dnl Sets the variable 'SET_CFLAGS' to 'CFLAGS =' if make sets 'CFLAGS'. dnl dnl Notes: dnl This macro uses 'PAC_PROG_MAKE_INCLUDE', dnl 'PAC_PROG_MAKE_ALLOWS_COMMENTS', 'PAC_PROG_MAKE_VPATH', and dnl 'PAC_PROG_MAKE_SET_CFLAGS'. See those commands for details about their dnl actions. dnl dnl It may call 'AC_PROG_MAKE_SET', which sets 'SET_MAKE' to 'MAKE = @MAKE@' dnl if the make program does not set the value of make, otherwise 'SET_MAKE' dnl is set to empty; if the make program echos the directory name, then dnl 'SET_MAKE' is set to 'MAKE = $MAKE'. dnl D*/ AC_DEFUN([PAC_PROG_MAKE],[ PAC_PROG_MAKE_PROGRAM PAC_PROG_MAKE_CLOCK_SKEW PAC_PROG_MAKE_INCLUDE PAC_PROG_MAKE_ALLOWS_COMMENTS PAC_PROG_MAKE_VPATH AC_SUBST(SET_CFLAGS) dnl AM_IGNORE(SET_CFLAGS) PAC_PROG_MAKE_SET_CFLAGS([SET_CFLAGS='CFLAGS=']) if test "$pac_cv_prog_make_echos_dir" = "no" ; then AC_PROG_MAKE_SET else SET_MAKE="MAKE=${MAKE-make}" fi ]) mpi-testsuite-3.2+dfsg/confdb/aclocal_cache.m40000644000175000017500000003134712620254305020606 0ustar mbanckmbanckdnl dnl/*D dnl AC_CACHE_LOAD - Replacement for autoconf cache load dnl dnl Notes: dnl Caching in autoconf is broken (at least through version 2.13). dnl The problem is that the cache is read dnl without any check for whether it makes any sense to read it. dnl A common problem is a build on a shared file system; connecting to dnl a different computer and then building within the same directory will dnl lead to at best error messages from configure and at worse a build that dnl is wrong but fails only at run time (e.g., wrong datatype sizes used). dnl Later versions of autoconf do include some checks for changes in the dnl environment that impact the choices, but still misses problems with dnl multiple different systems. dnl dnl This fixes that by requiring the user to explicitly enable caching dnl before the cache file will be loaded. dnl dnl To use this version of 'AC_CACHE_LOAD', you need to include dnl 'aclocal_cache.m4' in your 'aclocal.m4' file. The sowing 'aclocal.m4' dnl file includes this file. dnl dnl If no --enable-cache or --disable-cache option is selected, the dnl command causes configure to keep track of the system being configured dnl in a config.system file; if the current system matches the value stored dnl in that file (or there is neither a config.cache nor config.system file), dnl configure will enable caching. In order to ensure that the configure dnl tests make sense, the values of CC, F77, F90, and CXX are also included dnl in the config.system file. In addition, the value of PATH is included dnl to ensure that changes in the PATH that might select a different version dnl of a program with the same name (such as a native make versus gnumake) dnl are detected. dnl dnl Bugs: dnl This does not work with the Cygnus configure because the enable arguments dnl are processed *after* AC_CACHE_LOAD (!). To address this, we avoid dnl changing the value of enable_cache, and use real_enable_cache, duplicating dnl the "notgiven" value. dnl dnl The environment variable CONFIGURE_DEBUG_CACHE, if set to yes, dnl will cause additional data to be written out during the configure process. dnl This can be helpful in debugging the cache file process. dnl dnl See Also: dnl PAC_ARG_CACHING dnl D*/ define([AC_CACHE_LOAD], [if test "$CONFIGURE_DEBUG_CACHE" = yes ; then oldopts="$-" clearMinusX=no set -x if test "$oldopts" != "$-" ; then clearMinusX=yes fi fi if test "X$cache_system" = "X" ; then # A default file name, just in case cache_system="config.system" if test "$cache_file" != "/dev/null" ; then # Get the directory for the cache file, if any changequote(,) dnl Be careful to ensure that there is no doubled slash cache_system=`echo $cache_file | sed -e 's%^\(.*/\)[^/]*%\1config.system%'` changequote([,]) test "x$cache_system" = "x$cache_file" && cache_system="config.system" # else # We must *not* set enable_cache to no because we need to know if # enable_cache was not set. # enable_cache=no fi fi dnl dnl The "action-if-not-given" part of AC_ARG_ENABLE is not executed until dnl after the AC_CACHE_LOAD is executed (!). Thus, the value of dnl enable_cache if neither --enable-cache or --disable-cache is selected dnl is null. Just in case autoconf ever fixes this, we test both cases. dnl dnl Include PATH in the cache.system file since changing the path can dnl change which versions of programs are found (such as vendor make dnl or GNU make). dnl # # Get a test value and flag whether we should remove/replace the # cache_system file (do so unless cache_system_ok is yes) # FC and F77 should be synonyms. Save both in case # We include the xxxFLAGS in case the user is using the flags to change # the language (either input or output) of the compiler. E.g., # using -xarch=v9 on Solaris to select 64 bit output or using -D_BSD_SOURCE # with gcc to get different header files on input. cleanargs=`echo "$CC $F77 $FC $CXX $F90 $CFLAGS $FFLAGS $CXXFLAGS $F90FLAGS $PATH" | tr '"' ' '` if uname -srm >/dev/null 2>&1 ; then cache_system_text="`uname -srm` $cleanargs" else cache_system_text="-no-uname- $cleanargs" fi cache_system_ok=no # if test -z "$real_enable_cache" ; then real_enable_cache=$enable_cache if test -z "$real_enable_cache" ; then real_enable_cache="notgiven" ; fi fi if test "X$real_enable_cache" = "Xnotgiven" ; then # check for valid cache file if test -z "$cache_system" ; then cache_system="config.system" ; fi if uname -srm >/dev/null 2>&1 ; then if test -f "$cache_system" -a -n "$cache_system_text" ; then if test "$cache_system_text" = "`cat $cache_system`" ; then real_enable_cache="yes" cache_system_ok=yes fi elif test ! -f "$cache_system" -a -n "$cache_system_text" ; then # remove the cache file because it may not correspond to our # system if test "$cache_file" != "/dev/null" ; then rm -f $cache_file fi real_enable_cache="yes" fi fi fi if test "X$real_enable_cache" = "Xyes" -a "$cache_file" = "/dev/null" ; then real_enable_cache=no fi if test "X$real_enable_cache" = "Xyes" ; then if test -r "$cache_file" ; then echo "loading cache $cache_file" if test -w "$cache_file" ; then # Clean the cache file (ergh) PAC_CACHE_CLEAN fi . $cache_file else echo "Configure in `pwd` creating cache $cache_file" > $cache_file rm -f $cache_system fi else cache_file="/dev/null" fi # Remember our location and the name of the cachefile pac_cv_my_conf_dir=`pwd` dnl do not include the cachefile name, since this may contain the process dnl number and cause comparisons looking for changes to the cache file dnl to detect a change that isn't real. dnl pac_cv_my_cachefile=$cachefile # # Update the cache_system file if necessary if test "$cache_system_ok" != yes ; then if test -n "$cache_system" ; then rm -f $cache_system echo $cache_system_text > $cache_system fi fi if test "$clearMinusX" = yes ; then set +x fi ]) dnl dnl/*D dnl PAC_ARG_CACHING - Enable caching of results from a configure execution dnl dnl Synopsis: dnl PAC_ARG_CACHING dnl dnl Output Effects: dnl Adds '--enable-cache' and '--disable-cache' to the command line arguments dnl accepted by 'configure'. dnl dnl See Also: dnl AC_CACHE_LOAD dnl D*/ dnl Add this call to the other ARG_ENABLE calls. Note that the values dnl set here are redundant; the LOAD_CACHE call relies on the way autoconf dnl initially processes ARG_ENABLE commands. AC_DEFUN([PAC_ARG_CACHING],[ AC_ARG_ENABLE(cache, AC_HELP_STRING([--enable-cache], [Turn on configure caching]),, [enable_cache="notgiven"]) ]) dnl Clean the cache of extraneous quotes that AC_CACHE_SAVE may add dnl AC_DEFUN([PAC_CACHE_CLEAN],[ rm -f confcache sed -e "s/'\\\\''//g" -e "s/'\\\\/'/" -e "s/\\\\'/'/" \ -e "s/'\\\\''//g" $cache_file > confcache if cmp -s $cache_file confcache ; then : else if test -w $cache_file ; then echo "updating cache $cache_file" cat confcache > $cache_file else echo "not updating unwritable cache $cache_file" fi fi rm -f confcache if test "$DEBUG_AUTOCONF_CACHE" = "yes" ; then echo "Results of cleaned cache file:" echo "--------------------------------------------------------" cat $cache_file echo "--------------------------------------------------------" fi ]) dnl/*D dnl PAC_SUBDIR_CACHE - Create a cache file before ac_output for subdirectory dnl configures. dnl dnl Synopsis: dnl PAC_SUBDIR_CACHE(when) dnl dnl Input Parameter: dnl . when - Indicates when the cache should be created (optional) dnl If 'always', create a new cache file. This option dnl should be used if any of the cache parameters (such as dnl CFLAGS or LDFLAGS) may have changed. dnl dnl Output Effects: dnl dnl Create a cache file before ac_output so that subdir configures don't dnl make mistakes. dnl We can't use OUTPUT_COMMANDS to remove the cache file, because those dnl commands are executed *before* the subdir configures. dnl dnl D*/ AC_DEFUN([PAC_SUBDIR_CACHE],[]) AC_DEFUN([PAC_SUBDIR_CACHE_OLD],[ if test "x$1" = "xalways" -o \( "$cache_file" = "/dev/null" -a "X$real_enable_cache" = "Xnotgiven" \) ; then # Use an absolute directory to help keep the subdir configures from getting # lost cache_file=`pwd`/$$conf.cache touch $cache_file dnl dnl For Autoconf 2.52+, we should ensure that the environment is set dnl for the cache. Make sure that we get the values and set the dnl xxx_set variables properly ac_cv_env_CC_set=set ac_cv_env_CC_value=$CC ac_cv_env_CFLAGS_set=${CFLAGS+set} ac_cv_env_CFLAGS_value=$CFLAGS ac_cv_env_CPP_set=set ac_cv_env_CPP_value=$CPP ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} ac_cv_env_CPPFLAGS_value=$CPPFLAGS ac_cv_env_LDFLAGS_set=${LDFLAGS+set} ac_cv_env_LDFLAGS_value=$LDFLAGS ac_cv_env_LIBS_set=${LIBS+set} ac_cv_env_LIBS_value=$LIBS ac_cv_env_FC_set=${FC+set} ac_cv_env_FC_value=$FC ac_cv_env_F77_set=${F77+set} ac_cv_env_F77_value=$F77 ac_cv_env_F90_set=${F90+set} ac_cv_env_F90_value=$F90 ac_cv_env_FFLAGS_set=${FFLAGS+set} ac_cv_env_FFLAGS_value=$FFLAGS ac_cv_env_CXX_set=${CXX+set} ac_cv_env_CXX_value=$CXX ac_env_CC_set=set ac_env_CC_value=$CC ac_env_CFLAGS_set=${CFLAGS+set} ac_env_CFLAGS_value=$CFLAGS ac_env_CPP_set=set ac_env_CPP_value=$CPP ac_env_CPPFLAGS_set=${CPPFLAGS+set} ac_env_CPPFLAGS_value=$CPPFLAGS ac_env_LDFLAGS_set=${LDFLAGS+set} ac_env_LDFLAGS_value=$LDFLAGS ac_env_LIBS_set=${LIBS+set} ac_env_LIBS_value=$LIBS ac_env_FC_set=${FC+set} ac_env_FC_value=$FC ac_env_F77_set=${F77+set} ac_env_F77_value=$F77 ac_env_F90_set=${F90+set} ac_env_F90_value=$F90 ac_env_FFLAGS_set=${FFLAGS+set} ac_env_FFLAGS_value=$FFLAGS ac_env_CXX_set=${CXX+set} ac_env_CXX_value=$CXX dnl other parameters are dnl build_alias, host_alias, target_alias # It turns out that A C CACHE_SAVE can't be invoked more than once # with data that contains blanks. What happens is that the quotes # that it adds get quoted and then added again. To avoid this, # we strip off the outer quotes for all cached variables dnl We add pac_cv_my_conf_dir to give the source of this cachefile, dnl and pac_cv_my_cachefile to indicate how it chose the cachefile. pac_cv_my_conf_dir=`pwd` pac_cv_my_cachefile=$cachefile AC_CACHE_SAVE PAC_CACHE_CLEAN ac_configure_args="$ac_configure_args -enable-cache" fi dnl Unconditionally export these values. Subdir configures break otherwise export CC export CFLAGS export LDFLAGS export LIBS export CPPFLAGS export CPP export FC export F77 export F90 export CXX export FFLAGS export CCFLAGS ]) AC_DEFUN([PAC_SUBDIR_CACHE_CLEANUP],[]) AC_DEFUN([PAC_SUBDIR_CACHE_CLEANUP_OLD],[ if test "$cache_file" != "/dev/null" -a "X$real_enable_cache" = "Xnotgiven" ; then rm -f $cache_file cache_file=/dev/null fi ]) dnl dnl The following three macros support the sharing of configure results dnl by configure scripts, including ones that are not run with dnl AC_CONFIG_SUBDIRS (the cachefiles managed by --enable-cache can dnl only be used with AC_CONFIG_SUBDIRS; creating a autoconf-style dnl cachefile before the the end of the autoconf process will often dnl cause problems. dnl AC_DEFUN([PAC_CREATE_BASE_CACHE],[ AC_ARG_ENABLE(base-cache, AC_HELP_STRING([--enable-base-cache], [Enable the use of a simple cache for the subsidiary configure scripts]),,enable_base_cache=default) # The default case is controlled by the environment variable CONF_USE_CACHEFILE if test "$enable_base_cache" = "default" ; then if test "$CONF_USE_CACHEFILE" = yes ; then enable_base_cache=yes else enable_base_cache=no fi fi if test "$enable_base_cache" != no ; then if test "$enable_base_cache" = yes ; then basecachefile=`pwd`/cache.base else basecachefile=`pwd`/$enable_base_cache fi set | grep ac_cv > $basecachefile # Tell other configures to load this file echo "Creating and exporting the base cache file $basecachefile" CONF_BASE_CACHEFILE=$basecachefile export CONF_BASE_CACHEFILE fi ]) AC_DEFUN([PAC_LOAD_BASE_CACHE],[ if test -n "$CONF_BASE_CACHEFILE" -a -s "$CONF_BASE_CACHEFILE" ; then echo "Loading base cachefile $CONF_BASE_CACHEFILE" . $CONF_BASE_CACHEFILE export CONF_BASE_CACHEFILE fi ]) AC_DEFUN([PAC_UPDATE_BASE_CACHE],[ if test -n "$CONF_BASE_CACHEFILE" -a -s "$CONF_BASE_CACHEFILE" ; then set | grep ac_cv > $CONF_BASE_CACHEFILE.new if cmp -s $CONF_BASE_CACHEFILE.new $CONF_BASE_CACHEFILE ; then : else echo "Replacing $CONF_BASE_CACHEFILE" mv $CONF_BASE_CACHEFILE.new $CONF_BASE_CACHEFILE fi fi ]) mpi-testsuite-3.2+dfsg/confdb/aclocal_romio.m40000644000175000017500000006133212620254305020665 0ustar mbanckmbanckdnl dnl This files contains additional macros for using autoconf to dnl build configure scripts. dnl dnl Almost all of this file is taken from the aclocal.m4 of MPICH dnl dnl Get the format of Fortran names. Uses F77, FFLAGS, and sets WDEF. dnl If the test fails, sets NOF77 to 1, HAVE_FORTRAN to 0. dnl dnl AC_DEFUN([PAC_GET_FORTNAMES],[ rm -f confftest.f confftest.$OBJEXT cat > confftest.f < /dev/null 2>&1 if test ! -s confftest.$OBJEXT ; then AC_MSG_WARN([Unable to test Fortran compiler. Compiling a test program failed to produce an object file]) NOF77=1 elif test -z "$FORTRANNAMES" ; then # MAC OS X (and probably FreeBSD need strings - (not strings -a) # Cray doesn't accept -a ... allstrings="-a" if test $arch_CRAY ; then allstrings="" elif strings - confftest.$OBJEXT < /dev/null >/dev/null 2>&1 ; then allstrings="-" elif strings -a confftest.$OBJEXT < /dev/null >/dev/null 2>&1 ; then allstrings="-a" fi nameform1=`strings $allstrings confftest.$OBJEXT | grep mpir_init_fop_ | head -1` nameform2=`strings $allstrings confftest.$OBJEXT | grep MPIR_INIT_FOP | head -1` nameform3=`strings $allstrings confftest.$OBJEXT | grep mpir_init_fop | head -1` nameform4=`strings $allstrings confftest.$OBJEXT | grep mpir_init_fop__ | head -1` rm -f confftest.f confftest.$OBJEXT if test -n "$nameform4" ; then echo "Fortran externals are lower case and have two trailing underscores" FORTRANNAMES="FORTRANDOUBLEUNDERSCORE" elif test -n "$nameform1" ; then # We don't set this in CFLAGS; it is a default case echo "Fortran externals have a trailing underscore and are lowercase" FORTRANNAMES="FORTRANUNDERSCORE" elif test -n "$nameform2" ; then echo "Fortran externals are uppercase" FORTRANNAMES="FORTRANCAPS" elif test -n "$nameform3" ; then echo "Fortran externals are lower case" FORTRANNAMES="FORTRANNOUNDERSCORE" else AC_MSG_WARN([Unable to determine the form of Fortran external names. Make sure that the compiler $F77 can be run on this system. Turning off Fortran (-nof77 being assumed)]) NOF77=1 fi fi if test -n "$FORTRANNAMES" ; then WDEF="-D$FORTRANNAMES" fi # Delete confftest files with any extension. This catches the case # where auxillary files, such as coverage files, are removed. rm -f confftest.* ])dnl dnl define(PAC_GET_SPECIAL_SYSTEM_INFO,[ # if test -n "$arch_IRIX"; then AC_MSG_CHECKING(for IRIX OS version) dnl This block of code replaces a generic "IRIX" arch value with dnl IRIX__ dnl For example dnl IRIX_5_4400 (IRIX 5.x, using MIPS 4400) osversion=`uname -r | sed 's/\..*//'` dnl Note that we need to allow brackets here, so we briefly turn off dnl the macro quotes changequote(,)dnl dnl Get the second field (looking for 6.1) osvminor=`uname -r | sed 's/[0-9]\.\([0-9]*\)\..*/\1/'` changequote([,])dnl AC_MSG_RESULT($osversion) dnl Get SGI processor count by quick hack AC_MSG_CHECKING(for IRIX cpucount) changequote(,)dnl cpucount=`hinv | grep '[0-9]* [0-9]* MHZ IP[0-9]* Proc' | cut -f 1 -d' '` if test "$cpucount" = "" ; then cpucount=`hinv | grep 'Processor [0-9]*:' | wc -l | sed -e 's/ //g'` fi changequote([,])dnl if test "$cpucount" = "" ; then AC_MSG_RESULT([Could not determine cpucount. Please send]) hinv AC_MSG_ERROR([to romio-maint@mcs.anl.gov]) fi AC_MSG_RESULT($cpucount) dnl AC_MSG_CHECKING(for IRIX cpumodel) dnl The tail -1 is necessary for multiple processor SGI boxes dnl We might use this to detect SGI multiprocessors and recommend dnl -comm=shared cputype=`hinv -t cpu | tail -1 | cut -f 3 -d' '` if test -z "$cputype" ; then AC_MSG_RESULT([Could not get cputype from hinv -t cpu command. Please send]) hinv -t cpu 2>&1 hinv -t cpu | cut -f 3 -d' ' 2>&1 AC_MSG_ERROR([to romio-maint@mcs.anl.gov]) fi AC_MSG_RESULT($cputype) dnl echo "checking for osversion and cputype" dnl cputype may contain R4400, R2000A/R3000, or something else. dnl We may eventually need to look at it. if test -z "$osversion" ; then AC_MSG_RESULT([Could not determine OS version. Please send]) uname -a AC_MSG_ERROR([to romio-maint@mcs.anl.gov]) elif test $osversion = 4 ; then true elif test $osversion = 5 ; then true elif test $osversion = 6 ; then true else AC_MSG_RESULT([Could not recognize the version of IRIX (got $osversion). ROMIO knows about versions 4, 5 and 6; the version being returned from uname -r is $osversion. Please send]) uname -a 2>&1 hinv 2>&1 AC_MSG_ERROR([to romio-maint@mcs.anl.gov]) fi AC_MSG_CHECKING(for cputype) OLD_ARCH=IRIX IRIXARCH="$ARCH_$osversion" dnl Now, handle the chip set changequote(,)dnl cputype=`echo $cputype | sed -e 's%.*/%%' -e 's/R//' | tr -d "[A-Z]"` changequote([,])dnl case $cputype in 3000) ;; 4000) ;; 4400) ;; 4600) ;; 5000) ;; 8000) ;; 10000);; 12000);; *) AC_MSG_WARN([Unexpected IRIX/MIPS chipset $cputype. Please send the output]) uname -a 2>&1 hinv 2>&1 AC_MSG_WARN([to romio-maint@mcs.anl.gov ROMIO will continue and assume that the cputype is compatible with a MIPS 4400 processor.]) cputype=4400 ;; esac AC_MSG_RESULT($cputype) IRIXARCH="$IRIXARCH_$cputype" echo "IRIX-specific architecture is $IRIXARCH" fi ])dnl dnl dnl define(PAC_TEST_MPI,[ AC_MSG_CHECKING(if a simple MPI program compiles and links) rm -f mpitest.c cat > mpitest.c <&5 $cmd >&5 2>&5 if test ! -x conftest$EXEEXT ; then echo "$as_me:$LINENO: failed program was:" >&5 sed 's/^/| /' mpitest.c >&5 rm -f conftest$EXEEXT mpitest.c AC_MSG_ERROR([Unable to compile a simple MPI program. Use environment variables to provide the location of MPI libraries and include directories]) else rm -f conftest$EXEEXT mpitest.c fi AC_MSG_RESULT(yes) ])dnl dnl dnl dnl define(PAC_NEEDS_FINT,[ AC_MSG_CHECKING(if MPI_Fint is defined in the MPI implementation) cat > mpitest1.c < /dev/null 2>&1 if test ! -s mpitest1.$OBJEXT ; then NEEDS_MPI_FINT="#define NEEDS_MPI_FINT" CFLAGS="$CFLAGS -DNEEDS_MPI_FINT" AC_MSG_RESULT(no) rm -f mpitest1.$OBJEXT mpitest1.c else NEEDS_MPI_FINT="" AC_MSG_RESULT(yes) rm -f mpitest1.$OBJEXT mpitest1.c fi ])dnl dnl define(PAC_MPI_LONG_LONG_INT,[ AC_MSG_CHECKING(if MPI_LONG_LONG_INT is defined in mpi.h) rm -f mpitest.c cat > mpitest.c < /dev/null 2>&1 if test -x conftest$EXEEXT ; then AC_MSG_RESULT(yes) AC_DEFINE(HAVE_MPI_LONG_LONG_INT,,[Define if mpi has long long it]) else AC_MSG_RESULT(no) fi rm -f conftest$EXEEXT mpitest.c ])dnl dnl dnl PAC_LONG_LONG_64: check if there is a 64-bit long long dnl define(PAC_LONG_LONG_64,[ if test -n "$longlongsize" ; then if test "$longlongsize" = 8 ; then echo "defining MPI_Offset as long long in C and integer*8 in Fortran" AC_DEFINE(HAVE_LONG_LONG_64,,[Define if long long is 64 bits]) DEFINE_MPI_OFFSET="typedef long long MPI_Offset;" FORTRAN_MPI_OFFSET="integer*8" LL="\%lld" elif test "$longlongsize" = "int" ; then # a hack to set MPI_Offset as int echo "defining MPI_Offset as int in C and integer in Fortran" DEFINE_MPI_OFFSET="typedef int MPI_Offset;" FORTRAN_MPI_OFFSET="integer" AC_DEFINE(MPI_OFFSET_IS_INT,,[Define if MPI_Offset is int]) LL="\%d" MPI_OFFSET_KIND1="!" MPI_OFFSET_KIND2="!" else echo "defining MPI_Offset as long in C and integer in Fortran" DEFINE_MPI_OFFSET="typedef long MPI_Offset;" FORTRAN_MPI_OFFSET="integer" LL="\%ld" MPI_OFFSET_KIND1="!" MPI_OFFSET_KIND2="!" fi else PAC_GET_TYPE_SIZE(long long, longlongsize) if test -n "$longlongsize" ; then if test "$longlongsize" = 8 ; then PAC_TEST_LONG_LONG() else echo "defining MPI_Offset as long in C and integer in Fortran" DEFINE_MPI_OFFSET="typedef long MPI_Offset;" FORTRAN_MPI_OFFSET="integer" LL="\%ld" MPI_OFFSET_KIND1="!" MPI_OFFSET_KIND2="!" fi else dnl check if longlong is not supported or only its size cannot be determined dnl because the program cannot be run. rm -f ltest.c cat > ltest.c < /dev/null 2>&1 if test -x conftest$EXEEXT ; then echo "assuming size of long long is 8bytes; use '-longlongsize' to indicate otherwise" rm -f conftest$EXEEXT ltest.c echo "defining MPI_Offset as long long in C and integer*8 in Fortran" AC_DEFINE(HAVE_LONG_LONG_64,,[Define if long long is 64 bits]) DEFINE_MPI_OFFSET="typedef long long MPI_Offset;" FORTRAN_MPI_OFFSET="integer*8" LL="\%lld" else echo "assuming long long is not available; use '-longlongsize' to indicate otherwise" echo "defining MPI_Offset as long in C and integer in Fortran" DEFINE_MPI_OFFSET="typedef long MPI_Offset;" FORTRAN_MPI_OFFSET="integer" LL="\%ld" MPI_OFFSET_KIND1="!" MPI_OFFSET_KIND2="!" fi fi fi ])dnl dnl dnl define(PAC_MPI_INFO,[ AC_MSG_CHECKING(if MPI_Info functions are defined in the MPI implementation) rm -f mpitest.c cat > mpitest.c < /dev/null 2>&1 if test -x conftest$EXEEXT ; then AC_MSG_RESULT(yes) AC_DEFINE(HAVE_MPI_INFO,1,[Define if MPI_Info available]) HAVE_MPI_INFO="#define HAVE_MPI_INFO" MPI_FINFO1="!" MPI_FINFO2="!" MPI_FINFO3="!" MPI_FINFO4="!" else AC_MSG_RESULT(no) BUILD_MPI_INFO=1 MPI_FINFO1=" INTEGER MPI_MAX_INFO_KEY, MPI_MAX_INFO_VAL" MPI_FINFO2=" PARAMETER (MPI_MAX_INFO_KEY=255, MPI_MAX_INFO_VAL=1024)" MPI_FINFO3=" INTEGER MPI_INFO_NULL" MPI_FINFO4=" PARAMETER (MPI_INFO_NULL=0)" fi rm -f conftest$EXEEXT mpitest.c ])dnl dnl dnl define(PAC_MPI_DARRAY_SUBARRAY,[ AC_MSG_CHECKING(if darray and subarray constructors are defined in the MPI implementation) rm -f mpitest.c cat > mpitest.c < /dev/null 2>&1 if test -x conftest$EXEEXT ; then AC_MSG_RESULT(yes) AC_DEFINE(HAVE_MPI_DARRAY_SUBARRAY,,[Define if MPI Darray available]) HAVE_MPI_DARRAY_SUBARRAY="#define HAVE_MPI_DARRAY_SUBARRAY" MPI_FARRAY1="!" MPI_FARRAY2="!" MPI_FARRAY3="!" MPI_FARRAY4="!" MPI_FARRAY5="!" MPI_FARRAY6="!" MPI_FARRAY7="!" else AC_MSG_RESULT(no) BUILD_MPI_ARRAY=1 MPI_FARRAY1=" INTEGER MPI_ORDER_C, MPI_ORDER_FORTRAN" MPI_FARRAY2=" PARAMETER (MPI_ORDER_C=56, MPI_ORDER_FORTRAN=57)" MPI_FARRAY3=" INTEGER MPI_DISTRIBUTE_BLOCK, MPI_DISTRIBUTE_CYCLIC" MPI_FARRAY4=" INTEGER MPI_DISTRIBUTE_NONE, MPI_DISTRIBUTE_DFLT_DARG" MPI_FARRAY5=" PARAMETER (MPI_DISTRIBUTE_BLOCK=121, MPI_DISTRIBUTE_CYCLIC=122)" MPI_FARRAY6=" PARAMETER (MPI_DISTRIBUTE_NONE=123)" MPI_FARRAY7=" PARAMETER (MPI_DISTRIBUTE_DFLT_DARG=-49767)" fi rm -f conftest$EXEEXT mpitest.c ])dnl dnl dnl define(PAC_CHECK_MPI_SGI_INFO_NULL,[ AC_MSG_CHECKING([if MPI_INFO_NULL is defined in mpi.h]) rm -f mpitest.c cat > mpitest.c < /dev/null 2>&1 if test -x conftest$EXEEXT ; then AC_MSG_RESULT(yes) cp adio/sgi/mpi3.1/*.h include else AC_MSG_RESULT(no) fi rm -f conftest$EXEEXT mpitest.c ])dnl dnl dnl dnl define(PAC_CHECK_MPIOF_H,[ AC_MSG_CHECKING(if mpiof.h is included in mpif.h) rm -f mpitest.f cat > mpitest.f < /dev/null 2>&1 if test -x conftest$EXEEXT ; then AC_MSG_RESULT(yes) MPIOF_H_INCLUDED=1 else AC_MSG_RESULT(no) fi rm -f conftest$EXEEXT mpitest.f ])dnl dnl dnl dnl check if pread64 is defined in IRIX. needed on IRIX 6.5 dnl define(PAC_HAVE_PREAD64,[ AC_MSG_CHECKING(if pread64 is defined) rm -f conftest.c cat > conftest.c < main() { int fd=0, buf=0, i=0; off64_t off=0; pread64(fd, &buf, i, off); } EOF rm -f conftest$EXEEXT $CC $USER_CFLAGS -o conftest$EXEEXT conftest.c > /dev/null 2>&1 if test -x conftest$EXEEXT ; then AC_MSG_RESULT(yes) AC_DEFINE(HAVE_PREAD64,,[Define if pread64 available]) else AC_MSG_RESULT(no) fi rm -f conftest$EXEEXT conftest.c ])dnl dnl dnl define(PAC_TEST_MPI_SGI_type_is_contig,[ AC_MSG_CHECKING(if MPI_SGI_type_is_contig is defined) rm -f mpitest.c cat > mpitest.c < /dev/null 2>&1 if test -x conftest$EXEEXT ; then AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) AC_DEFINE(NO_MPI_SGI_type_is_contig,,[Define if no MPI type is contig]) fi rm -f conftest$EXEEXT mpitest.c ])dnl dnl dnl dnl define(PAC_TEST_MPI_COMBINERS,[ AC_MSG_CHECKING(if MPI-2 combiners are defined in mpi.h) rm -f mpitest.c cat > mpitest.c < /dev/null 2>&1 if test -x conftest$EXEEXT ; then AC_MSG_RESULT(yes) AC_DEFINE(HAVE_MPI_COMBINERS,,[Define if MPI combiners available]) else AC_MSG_RESULT(no) fi rm -f conftest$EXEEXT mpitest.c ])dnl dnl dnl dnl PAC_MPI_OFFSET_KIND() dnl dnl tries to determine the Fortran 90 kind parameter for 8-byte integers dnl define(PAC_MPI_OFFSET_KIND, [ # This is needed for Mac OSX 10.5 rm -rf conftest.dSYM rm -f conftest* # Determine the extension for Fortran 90 files (not all compilers accept # .f and not all accept .f90) if test -z "$ac_f90ext" ; then if test -z "$FC" ; then # This list should correspond to the list in aclocal_fc.m4 AC_CHECK_PROGS(FC,ifort pgf90 pathf90 pathf95 xlf90 xlf95 f90 epcf90 \ f95 fort lf95 gfortran g95 ifc efc) fi AC_MSG_CHECKING([for extension for Fortran 90 programs]) ac_f90ext="f90" ac_f90compile='${FC-f90} -c $FCFLAGS conftest.$ac_f90ext 1>&AC_FD_CC' cat > conftest.$ac_f90ext < conftest.$ac_f90ext < conftest.$ac_f90ext program main integer i i = selected_int_kind(16) open(8, file="conftest.out", form="formatted") write (8,*) i close(8) stop end EOF if test -z "$FC" ; then FC=f90 fi KINDVAL="" if $FC -o conftest$EXEEXT conftest.$ac_f90ext >/dev/null 2>&1 ; then ./conftest$EXEEXT >/dev/null 2>&1 if test -s conftest.out ; then KINDVAL=`cat conftest.out` fi fi # This is needed for Mac OSX 10.5 rm -rf conftest.dSYM rm -f conftest* if test -n "$KINDVAL" -a "$KINDVAL" != "-1" ; then AC_MSG_RESULT($KINDVAL) MPI_OFFSET_KIND1=" INTEGER MPI_OFFSET_KIND" MPI_OFFSET_KIND2=" PARAMETER (MPI_OFFSET_KIND=$KINDVAL)" else AC_MSG_RESULT(unavailable) fi ])dnl dnl dnl define(PAC_TEST_MPI_HAVE_OFFSET_KIND,[ AC_MSG_CHECKING(if MPI_OFFSET_KIND is defined in mpif.h) rm -f mpitest.f cat > mpitest.f < /dev/null 2>&1 if test -x conftest$EXEEXT ; then AC_MSG_RESULT(yes) MPI_OFFSET_KIND1="!" MPI_OFFSET_KIND2="!" else AC_MSG_RESULT(no) fi rm -f conftest$EXEEXT mpitest.f ])dnl dnl dnl dnl PAC_GET_XFS_MEMALIGN dnl dnl define(PAC_GET_XFS_MEMALIGN, [AC_MSG_CHECKING([for memory alignment needed for direct I/O]) rm -f memalignval rm -f /tmp/romio_tmp.bin AC_TEST_PROGRAM([#include #include #include #include main() { struct dioattr st; int fd = open("/tmp/romio_tmp.bin", O_RDWR | O_CREAT, 0644); FILE *f=fopen("memalignval","w"); if (fd == -1) exit(1); if (!f) exit(1); fcntl(fd, F_DIOINFO, &st); fprintf( f, "%u\n", st.d_mem); exit(0); }],Pac_CV_NAME=`cat memalignval`,Pac_CV_NAME="") rm -f memalignval rm -f /tmp/romio_tmp.bin if test -n "$Pac_CV_NAME" -a "$Pac_CV_NAME" != 0 ; then AC_MSG_RESULT($Pac_CV_NAME) CFLAGS="$CFLAGS -DXFS_MEMALIGN=$Pac_CV_NAME" else AC_MSG_RESULT(unavailable, assuming 128) CFLAGS="$CFLAGS -DXFS_MEMALIGN=128" fi ])dnl dnl define(PAC_HAVE_MOUNT_NFS,[ AC_MSG_CHECKING([if MOUNT_NFS is defined in the include files]) rm -f conftest.c cat > conftest.c < #include main() { int i=MOUNT_NFS; } EOF rm -f conftest$EXEEXT $CC $USER_CFLAGS -o conftest$EXEEXT conftest.c > /dev/null 2>&1 if test -x conftest$EXEEXT ; then AC_MSG_RESULT(yes) ROMIO_HAVE_MOUNT_NFS=1 AC_DEFINE(HAVE_MOUNT_NFS,,[Define if MOUNT_NFS defined]) else ROMIO_HAVE_MOUNT_NFS=0 AC_MSG_RESULT(no) fi rm -f conftest$EXEEXT conftest.c ])dnl dnl dnl dnl PAC_MPI_OFFSET_KIND_4BYTE() dnl dnl tries to determine the Fortran 90 kind parameter for 4-byte integers dnl define(PAC_MPI_OFFSET_KIND_4BYTE, [AC_MSG_CHECKING([for Fortran 90 KIND parameter for 4-byte integers]) rm -f kind.f kind.$OBJEXT kind$EXEEXT cat < kind.f program main integer i i = selected_int_kind(8) open(8, file="k.out", form="formatted") write (8,*) i close(8) stop end EOF if test -z "$FC" ; then FC=f90 fi KINDVAL="" if $FC -o kind$EXEEXT kind.f >/dev/null 2>&1 ; then ./kind >/dev/null 2>&1 if test -s k.out ; then KINDVAL=`cat k.out` fi fi rm -f kind$EXEEXT k.out kind.f kind.$OBJEXT if test -n "$KINDVAL" -a "$KINDVAL" != "-1" ; then AC_MSG_RESULT($KINDVAL) MPI_OFFSET_KIND1=" INTEGER MPI_OFFSET_KIND" MPI_OFFSET_KIND2=" PARAMETER (MPI_OFFSET_KIND=$KINDVAL)" else AC_MSG_RESULT(unavailable) fi ])dnl dnl dnl define(PAC_FUNC_STRERROR,[ AC_MSG_CHECKING([for strerror()]) rm -f conftest.c cat > conftest.c < main() { char *s = strerror(5); } EOF rm -f conftest$EXEEXT $CC $USER_CFLAGS -o conftest$EXEXT conftest.c >> config.log 2>&1 if test -x conftest$EXEEXT ; then AC_MSG_RESULT(yes) AC_DEFINE(HAVE_STRERROR,,[Define if strerror available]) else AC_MSG_RESULT(no) AC_MSG_CHECKING([for sys_errlist]) rm -f conftest.c changequote(,) cat > conftest.c < main() { extern char *sys_errlist[]; printf("%s\n", sys_errlist[34]); } EOF changequote([,]) rm -f conftest$EXEEXT $CC $USER_CFLAGS -o conftest$EXEEXT conftest.c > config.log 2>&1 if test -x conftest$EXEEXT ; then AC_MSG_RESULT(yes) AC_DEFINE(HAVE_SYSERRLIST,,[Define if syserrlist available]) else AC_MSG_RESULT(no) fi fi rm -f conftest$EXEEXT conftest.c ])dnl dnl define(PAC_TEST_MPIR_STATUS_SET_BYTES,[ AC_MSG_CHECKING(if MPIR_Status_set_bytes is defined) rm -f mpitest.c cat > mpitest.c < /dev/null 2>&1 if test -x conftest$EXEEXT ; then AC_MSG_RESULT(yes) AC_DEFINE(HAVE_STATUS_SET_BYTES,,[Define if status set bytes available]) else AC_MSG_RESULT(no) fi rm -f conftest$EXEEXT mpitest.c ])dnl define(PAC_TEST_MPIU_FUNCS,[ AC_MSG_CHECKING(support for MPICH memory macros) rm -f mpitest.c cat > mpitest.c < /dev/null 2>&1 if test -x conftest$EXEEXT ; then AC_MSG_RESULT(yes) AC_DEFINE(HAVE_MPIU_FUNCS,1,[Define if MPICH memory tracing macros defined]) else AC_MSG_RESULT(no) fi rm -f conftest$EXEEXT mpitest.c ])dnl dnl define(PAC_TEST_MPI_GREQUEST,[ AC_MSG_CHECKING(support for generalized requests) rm -f mpitest.c cat > mpitest.c < /dev/null 2>&1 if test -x conftest$EXEEXT ; then AC_MSG_RESULT(yes) AC_DEFINE(HAVE_MPI_GREQUEST,1,[Define if generalized requests avaliable]) DEFINE_HAVE_MPI_GREQUEST="#define HAVE_MPI_GREQUEST 1" else AC_MSG_RESULT(no) fi rm -f conftest$EXEEXT mpitest.c ])dnl define(PAC_TEST_MPI_GREQUEST_EXTENSIONS,[ AC_MSG_CHECKING(support for non-standard extended generalized requests) rm -f mpitest.c cat > mpitest.c < /dev/null 2>&1 if test -x conftest$EXEEXT ; then AC_MSG_RESULT(yes) AC_DEFINE(HAVE_MPI_GREQUEST_EXTENTIONS,1,[Define if non-standard generalized requests extensions avaliable]) DEFINE_HAVE_MPI_GREQUEST_EXTENSIONS="#define HAVE_MPI_GREQUEST_EXTENSIONS 1" else AC_MSG_RESULT(no) fi rm -f conftest$EXEEXT mpitest.c ])dnl define(PAC_TEST_NEEDS_CONST,[ AC_MSG_CHECKING([const declarations needed in MPI routines]) AC_COMPILE_IFELSE([AC_LANG_SOURCE( [ #include int MPI_File_delete(char *filename, MPI_Info info) { return (0); } ] )], [ AC_MSG_RESULT(no) ],[ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_MPIIO_CONST, const, [Define if MPI-IO routines need a const qualifier]) ]) ]) mpi-testsuite-3.2+dfsg/confdb/aclocal_subcfg.m40000644000175000017500000002652212620254305021013 0ustar mbanckmbanckdnl PAC_RESET_ALL_FLAGS - Reset precious flags to those set by the user AC_DEFUN([PAC_RESET_ALL_FLAGS],[ if test "$FROM_MPICH" = "yes" ; then CFLAGS="$USER_CFLAGS" CPPFLAGS="$USER_CPPFLAGS" CXXFLAGS="$USER_CXXFLAGS" FFLAGS="$USER_FFLAGS" FCFLAGS="$USER_FCFLAGS" LDFLAGS="$USER_LDFLAGS" LIBS="$USER_LIBS" fi ]) dnl PAC_RESET_LINK_FLAGS - Reset precious link flags to those set by the user AC_DEFUN([PAC_RESET_LINK_FLAGS],[ if test "$FROM_MPICH" = "yes" ; then LDFLAGS="$USER_LDFLAGS" LIBS="$USER_LIBS" fi ]) dnl Sandbox configure with additional arguments dnl Usage: PAC_CONFIG_SUBDIR_ARGS(subdir,configure-args,action-if-success,action-if-failure) dnl dnl The subconfigure argument list is created based on "ac_precious_vars" dnl instead of explicitly use of well-known Makefile variables, like dnl CC/CFLAGS/CPPFLAGS..., this generalization is effective as long as dnl calling configure.ac declares the needed variables to be passed down dnl to subconfigure as "precious" appropriately. The precious variable dnl can be created in the following ways: dnl 1) implicit declaration through use of autoconf macros, like dnl AC_PROG_CC (declares CC/CFLAGS/CPPFLAGS/LIBS/LDFLAGS), or dnl AC_PROG_F77 (declares F77/FFLAGS/FLIBS) ... dnl which are in turns invoked by other subconfigure. dnl When in doubt, check "ac_precious_var" in the calling configure. dnl 2) explicit "precious" declaration through AC_ARG_VAR. dnl Without correct "precious" declaration in the calling configure.ac, dnl there would be variables not being included in the subconfigure dnl argument list. dnl dnl Note: I suspect this DEFUN body is underquoted in places, but it does not dnl seem to cause problems in practice yet. [goodell@ 2010-05-18] AC_DEFUN([PAC_CONFIG_SUBDIR_ARGS],[ pac_dir="$1" AC_MSG_NOTICE([===== configuring $1 =====]) pac_abs_srcdir=`(cd $srcdir && pwd)` if test -f $pac_abs_srcdir/$1/setup ; then AC_MSG_NOTICE([sourcing $pac_abs_srcdir/$1/setup]) . $pac_abs_srcdir/$1/setup fi # Adapted for MPICH from the autoconf-2.67 implementation of # AC_CONFIG_SUBDIRS. Search for "MPICH note:" for relevant commentary and # local modifications. # Remove --cache-file, --srcdir, and --disable-option-checking arguments # so they do not pile up. Otherwise relative paths (like --srcdir=.. from # make distcheck) will be incorrect. pac_sub_configure_args="$2" pac_prev= eval "set x $ac_configure_args" shift for pac_arg do if test -n "$pac_prev"; then pac_prev= continue fi case $pac_arg in -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) pac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \ | --c=*) ;; --config-cache | -C) ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) pac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) pac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) ;; --disable-option-checking) ;; *) # MPICH note: this is a more robust version of the "precious # variable" propagation code that was present in the previous # incarnation of this macro for pac_pvar in $ac_precious_vars ; do # check if configure argument token contains the # precious variable, i.e. "name_of_prec_var=". if ( echo $pac_arg | grep "^$pac_pvar=" >/dev/null 2>&1 ) ; then # check if current precious variable is set in env eval pvar_set=\${$pac_pvar+set} if test "$pvar_set" = "set" ; then # Append 'name_of_prec_var=value_of_prec_var' # to the subconfigure arguments list, where # value_of_prec_var is fetched from the env. # this also overrides any value set on the command line eval pac_pval=\${$pac_pvar} pac_arg="$pac_pvar=$pac_pval" break fi fi done case $pac_arg in *\'*) pac_arg=`AS_ECHO(["$pac_arg"]) | sed "s/'/'\\\\\\\\''/g"` ;; esac AS_VAR_APPEND([pac_sub_configure_args], [" '$pac_arg'"]) ;; esac done # Always prepend --prefix to ensure using the same prefix # in subdir configurations. # MPICH note: see tt#983 for an example of why this is necessary pac_arg="--prefix=$prefix" case $pac_arg in *\'*) pac_arg=`AS_ECHO(["$pac_arg"]) | sed "s/'/'\\\\\\\\''/g"` ;; esac pac_sub_configure_args="'$pac_arg' $pac_sub_configure_args" # Pass --silent if test "$silent" = yes; then pac_sub_configure_args="--silent $pac_sub_configure_args" fi # Always prepend --disable-option-checking to silence warnings, since # different subdirs can have different --enable and --with options. pac_sub_configure_args="--disable-option-checking $pac_sub_configure_args" pac_popdir=`pwd` # Do not complain, so a configure script can configure whichever # parts of a large source tree are present. test -d "$srcdir/$pac_dir" || continue # MPICH note: modified to remove the internal "_AS_*" macro usage, also # msg is already printed at top dnl _AS_ECHO_LOG([$pac_msg]) dnl _AS_ECHO([$pac_msg]) AS_MKDIR_P(["$pac_dir"]) # MPICH note: we leave this internal macro reference for now. We can clone # the macro locally if this turns out to be non-portable across several autoconf # versions. It sets the following variables: ac_builddir, # ac_top_builddir_sub, ac_top_build_prefix, ac_srcdir, ac_top_srcdir, # ac_abs_top_builddir, ac_abs_builddir, ac_abs_top_srcdir, ac_abs_srcdir _AC_SRCDIRS(["$pac_dir"]) cd "$pac_dir" # Check for guested configure; otherwise get Cygnus style configure. if test -f "$ac_srcdir/configure.gnu"; then pac_sub_configure=$ac_srcdir/configure.gnu elif test -f "$ac_srcdir/configure"; then pac_sub_configure=$ac_srcdir/configure elif test -f "$ac_srcdir/configure.ac"; then # This should be Cygnus configure. pac_sub_configure=$ac_aux_dir/configure else AC_MSG_WARN([no configuration information is in $pac_dir]) pac_sub_configure= fi # The recursion is here. if test -n "$pac_sub_configure"; then # MPICH note: overriding the cache file on purpose to prevent strange # issues resulting from inter-dir caching dnl # Make the cache file name correct relative to the subdirectory. dnl case $cache_file in dnl [[\\/]]* | ?:[[\\/]]* ) pac_sub_cache_file=$cache_file ;; dnl *) # Relative name. dnl pac_sub_cache_file=$ac_top_build_prefix$cache_file ;; dnl esac pac_sub_cache_file="/dev/null" AC_MSG_NOTICE([running $SHELL $pac_sub_configure $pac_sub_configure_args --cache-file=$pac_sub_cache_file --srcdir=$ac_srcdir]) # The eval makes quoting arguments work. # MPICH note: we want to execute the provided actions, not be silent # or error out if the subconfigure succeeded/failed dnl eval "\$SHELL \"\$pac_sub_configure\" $pac_sub_configure_args \ dnl --cache-file=\"\$pac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" || dnl AC_MSG_ERROR([$pac_sub_configure failed for $pac_dir]) if eval "\$SHELL \"\$pac_sub_configure\" $pac_sub_configure_args \ --cache-file=\"\$pac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" then # restore the current dir for the provided actions cd "$pac_popdir" $3 else # restore the current dir for the provided actions cd "$pac_popdir" $4 fi fi cd "$pac_popdir" AC_MSG_NOTICE([===== done with $1 configure =====]) # Check for any localdefs files. These may be created, so we # look in the local directory first. if test -f $1/localdefs ; then AC_MSG_NOTICE([sourcing $1/localdefs]) . $1/localdefs elif test -f $pac_abs_srcdir/$1/localdefs ; then AC_MSG_NOTICE([sourcing $pac_abs_srcdir/$1/localdefs]) . $pac_abs_srcdir/$1/localdefs fi ]) dnl Sandbox configure dnl Usage: PAC_CONFIG_SUBDIR(subdir,action-if-success,action-if-failure) AC_DEFUN([PAC_CONFIG_SUBDIR],[PAC_CONFIG_SUBDIR_ARGS([$1],[],[$2],[$3])]) dnl PAC_SUBCFG_EXPAND_SUFFIX_MACRO(MACRO_PREFIX,MACRO_PATH_SUFFIX) dnl converts the path given by MACRO_PATH_SUFFIX (with '/' chars in it) to one dnl with '_' chars in it and then appends that to MACRO_PREFIX with '_' in dnl between. The resulting macro name is then expanded, but with informative dnl "##" comments before and after the expansion. dnl dnl This is intended to be an internal helper macro for the PAC_SUBCFG dnl implementation. dnl dnl XXX DJG FIXME: need to be able to deal with PREREQ macros that potentially dnl aren't present while having safety for BODY macros when there are dnl misspellings AC_DEFUN([PAC_SUBCFG_EXPAND_PATH_SUFFIX_MACRO],[ dnl convert path separators into '_', the m4_translit is intentionally unquoted m4_pushdef([subsys_uscore_name],[$1_]m4_translit([$2],[\/],[__]))dnl m4_ifdef(m4_defn([subsys_uscore_name]),[],[m4_fatal([macro ]m4_defn([subsys_uscore_name])[ is undefined])])dnl [##] begin expansion of m4_defn([subsys_uscore_name]) dnl call the computed routine name with the remaining args m4_indir(m4_defn([subsys_uscore_name]),m4_shift($@)) dnl there is intentionally no "dnl" on the previous line to reduce the chance of dnl a "fi## end expansion" bug when the BODY macro doesn't end in a newline [##] end expansion of m4_defn([subsys_uscore_name]) ]) dnl invokes the PAC_SUBCFG_BODY_foo macro for the "foo" subsys, when "foo" is dnl passed as the only argument to this macro. The first arg may be the '/' dnl path version instead of having underscores. AC_DEFUN([PAC_SUBCFG_CONFIGURE_SUBSYS],[PAC_SUBCFG_EXPAND_PATH_SUFFIX_MACRO([PAC_SUBCFG_BODY],[$1])]) dnl invokes the PAC_SUBCFG_PREREQ_foo macro for the "foo" subsys, when "foo" is dnl passed as the only argument to this macro. The first arg may be the '/' dnl path version instead of having underscores. AC_DEFUN([PAC_SUBCFG_DO_PREREQ],[PAC_SUBCFG_EXPAND_PATH_SUFFIX_MACRO([PAC_SUBCFG_PREREQ],[$1])]) dnl takes no arguments, expands to "foo_bar_baz" when invoked in a file named dnl "foo/bar/baz/subconfigure.m4" dnl dnl This is useful for reducing copy-paste errors when defining PREREQ and BODY dnl macros. If you tinker with this macro, watch the quoting carefully. AC_DEFUN([PAC_SUBCFG_AUTO_SUFFIX],[m4_translit(m4_bpatsubst(m4_dquote(__file__),[/[^/]+.m4],[]),[/],[_])]) mpi-testsuite-3.2+dfsg/confdb/aclocal_shm.m40000644000175000017500000000336712620254305020333 0ustar mbanckmbanckdnl dnl Definitions for using shared memory dnl dnl/*D dnl PAC_ARG_SHARED_MEMORY - add --with-shared-memory=kind to configure dnl dnl Synopsis: dnl PAC_ARG_SHARED_MEMORY dnl dnl Output effects: dnl Adds '--with-shared-memory' to the command line. Checks for available dnl shared memory functionality. dnl dnl Supported values of 'kind' include \: dnl+ auto - default dnl. mmap - use mmap and munmap dnl- sysv - use sysv shared memory functions dnl D*/ AC_DEFUN([PAC_ARG_SHARED_MEMORY],[ # check how to allocate shared memory AC_ARG_WITH(shared-memory, AC_HELP_STRING([--with-shared-memory[=auto|sysv|mmap]], [create shared memory using sysv or mmap (default is auto)]),, with_shared_memory=auto) if test "$with_shared_memory" = auto -o "$with_shared_memory" = mmap; then found_mmap_funcs=yes AC_CHECK_FUNCS(mmap munmap, , found_mmap_funcs=no) if test "$found_mmap_funcs" = yes ; then with_shared_memory=mmap AC_DEFINE(USE_MMAP_SHM,1,[Define if we have sysv shared memory]) AC_MSG_NOTICE([Using a memory-mapped file for shared memory]) elif test "$with_shared_memory" = mmap ; then AC_MSG_ERROR([cannot support shared memory: mmap() or munmap() not found]) fi fi if test "$with_shared_memory" = auto -o "$with_shared_memory" = sysv; then found_sysv_shm_funcs=yes AC_CHECK_FUNCS(shmget shmat shmctl shmdt, , found_sysv_shm_funcs=no) if test "$found_sysv_shm_funcs" = yes ; then with_shared_memory=sysv AC_DEFINE(USE_SYSV_SHM,1,[Define if we have sysv shared memory]) AC_MSG_NOTICE([Using SYSV shared memory]) elif test "$with_shared_memory" = sysv ; then AC_MSG_ERROR([cannot support shared memory: sysv shared memory functions functions not found]) fi fi ]) mpi-testsuite-3.2+dfsg/version.m40000644000175000017500000000320412621010130016271 0ustar mbanckmbanck[#] start of __file__ # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # This file contains versioning information for MPICH's configure process. # This was previously (as "maint/Version") a bit of shell code that was sourced # by configure, but shell variables are not permitted in the modern form of # AC_INIT. See "Rebuilding Makefiles" in the automake-1.11.1 manual. # # !!! NOTE !!! absolutely no shell code from this file will end up in the # configure script, including these shell comments. Any shell code must live in # the configure script and/or use m4 values defined here. We could consider # changing this by playing with diversions, but then we would probably be # playing with autotools-fire. m4_define([MPICH_VERSION_m4],[3.2])dnl m4_define([MPICH_RELEASE_DATE_m4],[Wed Nov 11 22:06:48 CST 2015])dnl # For libtool ABI versioning rules see: # http://www.gnu.org/software/libtool/manual/libtool.html#Updating-version-info # # 1. If the library source code has changed at all since the last # update, then increment revision (`c:r:a' becomes `c:r+1:a'). # # 2. If any interfaces have been added, removed, or changed since # the last update, increment current, and set revision to 0. # # 3. If any interfaces have been added since the last public # release, then increment age. # # 4. If any interfaces have been removed since the last public # release, then set age to 0. # libmpi so version only includes functionality defined in the MPI # standard, and does not include MPIX_ functions and C++ bindings. m4_define([libmpi_so_version_m4],[13:0:1])dnl [#] end of __file__ mpi-testsuite-3.2+dfsg/Makefile_f77.mtest0000644000175000017500000000227112620254305017640 0ustar mbanckmbanck## -*- Mode: Makefile; -*- ## vim: set ft=automake : ## ## (C) 2011 by Argonne National Laboratory. ## See COPYRIGHT in top-level directory. ## ## This is an automake makefile fragment that should be included by: ## ## include $(top_srcdir)/Makefile_cxx.mtest ## ## see Makefile.mtest for a description why this file exists, but for C++ # these CPPFLAGS are only used when building C/C++ source files, not for actual # F77 code itself AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include # This is right for many platforms, but not all. The right fix involves a # configure test, but this version is no worse than the simplemake version was. AM_FFLAGS = -I. LDADD = $(top_builddir)/f77/util/mtestf.o ## FIXME "DEPADD" is a simplemake concept, which we can handle on a per-target ## prog_DEPENDENCIES variable, but it would be better to figure out the right ## way to do this ##DEPADD = @MPILIBLOC@ ../util/mtest.o $(top_builddir)/f77/util/mtestf.o: $(top_srcdir)/f77/util/mtestf.f (cd $(top_builddir)/f77/util && $(MAKE) mtestf.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml CLEANFILES = summary.xml summary.tap mpi-testsuite-3.2+dfsg/basic/0000755000175000017500000000000012621010232015427 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/basic/patterns.c0000644000175000017500000002744212620254305017456 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include #ifndef TRUE #define TRUE 1 #endif #ifndef FALSE #define FALSE 0 #endif #define DEFAULT_RNDV_SIZE 24*1024 /* Prototypes */ int SendRecvTest(int, int); int IsendIrecvTest(int); int IsenIrecvTest2(int, int); int OutOfOrderTest(int, int); int ForceUnexpectedTest(int, int); int RndvTest(int, int, int); int SendRecvTest(int rank, int n) { int tag = 1; MPI_Status status; char buffer[100]; int i; if (rank == 0) { strcpy(buffer, "Hello process one."); for (i = 0; i < n; i++) MPI_Send(buffer, 100, MPI_BYTE, 1, tag, MPI_COMM_WORLD); } else if (rank == 1) { for (i = 0; i < n; i++) MPI_Recv(buffer, 100, MPI_BYTE, 0, tag, MPI_COMM_WORLD, &status); /*printf("Rank 1: received message '%s'\n", buffer);fflush(stdout); */ } return TRUE; } int IsendIrecvTest(int rank) { int tag = 1; MPI_Status status; MPI_Request request; char buffer[100]; if (rank == 0) { strcpy(buffer, "Hello process one."); MPI_Isend(buffer, 100, MPI_BYTE, 1, tag, MPI_COMM_WORLD, &request); MPI_Wait(&request, &status); } else if (rank == 1) { MPI_Irecv(buffer, 100, MPI_BYTE, 0, tag, MPI_COMM_WORLD, &request); MPI_Wait(&request, &status); /*printf("Rank 1: received message '%s'\n", buffer);fflush(stdout); */ } return TRUE; } int IsendIrecvTest2(int rank, int buf_size); int IsendIrecvTest2(int rank, int buf_size) { int tag1 = 1; int tag2 = 2; MPI_Status status; MPI_Request request1, request2; char *buffer; buffer = (char *) malloc(buf_size); if (buffer == NULL) return FALSE; if (rank == 0) { strcpy(buffer, "Hello process one."); MPI_Isend(buffer, buf_size, MPI_BYTE, 1, tag1, MPI_COMM_WORLD, &request1); MPI_Isend(buffer, buf_size, MPI_BYTE, 1, tag2, MPI_COMM_WORLD, &request2); MPI_Wait(&request1, &status); MPI_Wait(&request2, &status); } else if (rank == 1) { MPI_Irecv(buffer, buf_size, MPI_BYTE, 0, tag1, MPI_COMM_WORLD, &request1); MPI_Irecv(buffer, buf_size, MPI_BYTE, 0, tag2, MPI_COMM_WORLD, &request2); MPI_Wait(&request1, &status); MPI_Wait(&request2, &status); /*printf("Rank 1: received message '%s'\n", buffer);fflush(stdout); */ } free(buffer); return TRUE; } int OutOfOrderTest(int rank, int buf_size) { int tag1 = 1; int tag2 = 2; MPI_Status status; MPI_Request request1, request2; char *buffer; buffer = (char *) malloc(buf_size); if (buffer == NULL) return FALSE; if (rank == 0) { strcpy(buffer, "Hello process one."); MPI_Isend(buffer, buf_size, MPI_BYTE, 1, tag1, MPI_COMM_WORLD, &request1); MPI_Isend(buffer, buf_size, MPI_BYTE, 1, tag2, MPI_COMM_WORLD, &request2); MPI_Wait(&request1, &status); MPI_Wait(&request2, &status); } else if (rank == 1) { MPI_Irecv(buffer, buf_size, MPI_BYTE, 0, tag2, MPI_COMM_WORLD, &request1); MPI_Irecv(buffer, buf_size, MPI_BYTE, 0, tag1, MPI_COMM_WORLD, &request2); MPI_Wait(&request2, &status); MPI_Wait(&request1, &status); /*printf("Rank 1: received message '%s'\n", buffer);fflush(stdout); */ } free(buffer); return TRUE; } int ForceUnexpectedTest(int rank, int buf_size) { int tag1 = 1; int tag2 = 2; MPI_Status status; MPI_Request request1, request2; char *buffer; buffer = (char *) malloc(buf_size); if (buffer == NULL) return FALSE; if (rank == 0) { strcpy(buffer, "Hello process one."); MPI_Isend(buffer, buf_size, MPI_BYTE, 1, tag1, MPI_COMM_WORLD, &request1); MPI_Isend(buffer, buf_size, MPI_BYTE, 1, tag2, MPI_COMM_WORLD, &request2); MPI_Wait(&request1, &status); MPI_Wait(&request2, &status); MPI_Recv(buffer, buf_size, MPI_BYTE, 1, tag1, MPI_COMM_WORLD, &status); } else if (rank == 1) { MPI_Irecv(buffer, buf_size, MPI_BYTE, 0, tag2, MPI_COMM_WORLD, &request2); MPI_Wait(&request2, &status); MPI_Irecv(buffer, buf_size, MPI_BYTE, 0, tag1, MPI_COMM_WORLD, &request1); MPI_Wait(&request1, &status); /*printf("Rank 1: received message '%s'\n", buffer);fflush(stdout); */ MPI_Send(buffer, buf_size, MPI_BYTE, 0, tag1, MPI_COMM_WORLD); } free(buffer); return TRUE; } int RndvTest(int rank, int size, int reps) { int tag = 1; MPI_Status status; char *buffer; int i; buffer = (char *) malloc(size); if (buffer == NULL) { printf("malloc failed to allocate %d bytes.\n", size); exit(0); } if (rank == 0) { for (i = 0; i < reps; i++) { if (reps == 1) { printf("0: sending to process 1\n"); fflush(stdout); } MPI_Send(buffer, size, MPI_BYTE, 1, tag, MPI_COMM_WORLD); if (reps == 1) { printf("0: receiving from process 1\n"); fflush(stdout); } MPI_Recv(buffer, size, MPI_BYTE, 1, tag, MPI_COMM_WORLD, &status); if (reps == 1) { printf("0: done\n"); fflush(stdout); } } } else if (rank == 1) { for (i = 0; i < reps; i++) { if (reps == 1) { printf("1: receiving from process 0\n"); fflush(stdout); } MPI_Recv(buffer, size, MPI_BYTE, 0, tag, MPI_COMM_WORLD, &status); if (reps == 1) { printf("1: sending to process 0\n"); fflush(stdout); } MPI_Send(buffer, size, MPI_BYTE, 0, tag, MPI_COMM_WORLD); if (reps == 1) { printf("1: done\n"); fflush(stdout); } } } free(buffer); return TRUE; } int main(int argc, char *argv[]) { int result; int size, rank; int bDoAll = FALSE; int reps; int rndv_size = DEFAULT_RNDV_SIZE; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (size < 2) { printf("Two processes needed.\n"); printf("options:\n"); printf(" sr [reps] ............... send/recv\n"); printf(" isr ..................... isend/irecv\n"); printf(" iisr .................... isend,isend/irecv,irecv wait\n"); printf(" oo ...................... out of order isend/irecv\n"); printf(" unex .................... force unexpected msg\n"); printf(" rndv [size] ............. rndv\n"); printf(" rndv_reps [reps] [size] . rndv\n"); printf(" rndv_iisr [size] ........ rndv iisr\n"); printf(" rndv_oo [size] .......... rndv oo\n"); printf(" rndv_unex [size] ........ rndv unex\n"); printf("default rndv size = %d bytes\n", DEFAULT_RNDV_SIZE); MPI_Finalize(); return 0; } if (rank > 1) { printf("Rank %d, I am not participating.\n", rank); fflush(stdout); } else { if (argc < 2) bDoAll = TRUE; if (bDoAll || (strcmp(argv[1], "sr") == 0)) { reps = 1; if (argc > 2) { reps = atoi(argv[2]); if (reps < 1) reps = 1; } if (rank == 0) { printf("Send/recv test: %d reps\n", reps); fflush(stdout); } result = SendRecvTest(rank, reps); printf(result ? "%d:SUCCESS - sr\n" : "%d:FAILURE - sr\n", rank); fflush(stdout); } if (bDoAll || (strcmp(argv[1], "isr") == 0)) { if (rank == 0) { printf("Isend/irecv wait test\n"); fflush(stdout); } result = IsendIrecvTest(rank); printf(result ? "%d:SUCCESS - isr\n" : "%d:FAILURE - isr\n", rank); fflush(stdout); } if (bDoAll || (strcmp(argv[1], "iisr") == 0)) { if (rank == 0) { printf("Isend,isend/irecv,irecv wait wait test\n"); fflush(stdout); } result = IsendIrecvTest2(rank, 100); printf(result ? "%d:SUCCESS - iisr\n" : "%d:FAILURE - iisr\n", rank); fflush(stdout); } if (bDoAll || (strcmp(argv[1], "oo") == 0)) { if (rank == 0) { printf("Out of order isend/irecv test\n"); fflush(stdout); } result = OutOfOrderTest(rank, 100); printf(result ? "%d:SUCCESS - oo\n" : "%d:FAILURE - oo\n", rank); fflush(stdout); } if (bDoAll || (strcmp(argv[1], "unex") == 0)) { if (rank == 0) { printf("Force unexpected message test\n"); fflush(stdout); } result = ForceUnexpectedTest(rank, 100); printf(result ? "%d:SUCCESS - unex\n" : "%d:FAILURE - unex\n", rank); fflush(stdout); } if (bDoAll || (strcmp(argv[1], "rndv") == 0)) { if (argc > 2) { rndv_size = atoi(argv[2]); if (rndv_size < 1024) rndv_size = 1024; } if (rank == 0) { printf("Rndv test\n"); fflush(stdout); } result = RndvTest(rank, rndv_size, 1); printf(result ? "%d:SUCCESS - rndv\n" : "%d:FAILURE - rndv\n", rank); fflush(stdout); } if (bDoAll || (strcmp(argv[1], "rndv_reps") == 0)) { reps = 100; if (argc > 2) { reps = atoi(argv[2]); if (reps < 1) reps = 1; } if (argc > 3) { rndv_size = atoi(argv[3]); } if (rank == 0) { printf("Rndv test: %d reps of size %d\n", reps, rndv_size); fflush(stdout); } result = RndvTest(rank, rndv_size, reps); printf(result ? "%d:SUCCESS - rndv_reps\n" : "%d:FAILURE - rndv_reps\n", rank); fflush(stdout); } if (bDoAll || (strcmp(argv[1], "rndv_iisr") == 0)) { if (rank == 0) { printf("Rndv isend,isend/irecv,irecv wait wait test\n"); fflush(stdout); } if (argc > 2) { rndv_size = atoi(argv[2]); } result = IsendIrecvTest2(rank, rndv_size); printf(result ? "%d:SUCCESS - rndv_iisr\n" : "%d:FAILURE - rndv_iisr\n", rank); fflush(stdout); } if (bDoAll || (strcmp(argv[1], "rndv_oo") == 0)) { if (rank == 0) { printf("Rndv out of order isend/irecv test\n"); fflush(stdout); } if (argc > 2) { rndv_size = atoi(argv[2]); } result = OutOfOrderTest(rank, rndv_size); printf(result ? "%d:SUCCESS - rndv_oo\n" : "%d:FAILURE - rndv_oo\n", rank); fflush(stdout); } if (bDoAll || (strcmp(argv[1], "rndv_unex") == 0)) { if (argc > 2) { rndv_size = atoi(argv[2]); if (rndv_size < 1024) rndv_size = 1024; } if (rank == 0) { printf("Force unexpected rndv message test\n"); fflush(stdout); } result = ForceUnexpectedTest(rank, rndv_size); printf(result ? "%d:SUCCESS - rndv_unex\n" : "%d:FAILURE - rndv_unex\n", rank); fflush(stdout); } } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/basic/GetOpt.c0000644000175000017500000000437412620254305017017 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "GetOpt.h" #include bool GetOpt(int *argc, LPTSTR ** argv, CLPTSTR flag) { int i, j; if (flag == NULL) return false; for (i = 0; i < *argc; i++) { if (_tcsicmp((*argv)[i], flag) == 0) { for (j = i; j < *argc; j++) { (*argv)[j] = (*argv)[j + 1]; } *argc -= 1; return true; } } return false; } bool GetOptInt(int *argc, LPTSTR ** argv, CLPTSTR flag, int *n) { int i, j; if (flag == NULL) return false; for (i = 0; i < *argc; i++) { if (_tcsicmp((*argv)[i], flag) == 0) { if (i + 1 == *argc) return false; *n = _ttoi((*argv)[i + 1]); for (j = i; j < *argc - 1; j++) { (*argv)[j] = (*argv)[j + 2]; } *argc -= 2; return true; } } return false; } bool GetOptLong(int *argc, LPTSTR ** argv, CLPTSTR flag, long *n) { int i; if (GetOptInt(argc, argv, flag, &i)) { *n = (long) i; return true; } return false; } bool GetOptDouble(int *argc, LPTSTR ** argv, CLPTSTR flag, double *d) { int i, j; if (flag == NULL) return false; for (i = 0; i < *argc; i++) { if (_tcsicmp((*argv)[i], flag) == 0) { if (i + 1 == *argc) return false; *d = _tcstod((*argv)[i + 1], NULL); for (j = i; j < *argc - 1; j++) { (*argv)[j] = (*argv)[j + 2]; } *argc -= 2; return true; } } return false; } bool GetOptString(int *argc, LPTSTR ** argv, CLPTSTR flag, char *str) { int i, j; if (flag == NULL) return false; for (i = 0; i < *argc; i++) { if (_tcsicmp((*argv)[i], flag) == 0) { if (i + 1 == *argc) return false; strcpy(str, (*argv)[i + 1]); for (j = i; j < *argc - 1; j++) { (*argv)[j] = (*argv)[j + 2]; } *argc -= 2; return true; } } return false; } mpi-testsuite-3.2+dfsg/basic/srtest.c0000644000175000017500000000315712620254305017137 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #define BUFLEN 512 int main(int argc, char *argv[]) { int myid, numprocs, next, namelen; char buffer[BUFLEN], processor_name[MPI_MAX_PROCESSOR_NAME]; MPI_Status status; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &numprocs); MPI_Comm_rank(MPI_COMM_WORLD, &myid); MPI_Get_processor_name(processor_name, &namelen); fprintf(stderr, "Process %d of %d is alive on %s\n", myid, numprocs, processor_name); strcpy(buffer, "hello there"); if (myid == numprocs - 1) next = 0; else next = myid + 1; if (myid == 0) { printf("%d sending '%s' \n", myid, buffer); MPI_Send(buffer, (int) strlen(buffer) + 1, MPI_CHAR, next, 99, MPI_COMM_WORLD); printf("%d receiving \n", myid); MPI_Recv(buffer, BUFLEN, MPI_CHAR, MPI_ANY_SOURCE, 99, MPI_COMM_WORLD, &status); printf("%d received '%s' \n", myid, buffer); /* mpdprintf(001,"%d receiving \n",myid); */ } else { printf("%d receiving \n", myid); MPI_Recv(buffer, BUFLEN, MPI_CHAR, MPI_ANY_SOURCE, 99, MPI_COMM_WORLD, &status); printf("%d received '%s' \n", myid, buffer); /* mpdprintf(001,"%d receiving \n",myid); */ MPI_Send(buffer, (int) strlen(buffer) + 1, MPI_CHAR, next, 99, MPI_COMM_WORLD); printf("%d sent '%s' \n", myid, buffer); } MPI_Barrier(MPI_COMM_WORLD); MPI_Finalize(); return (0); } mpi-testsuite-3.2+dfsg/basic/self.c0000644000175000017500000000064012620254305016536 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" int main(int argc, char *argv[]) { int i, j; MPI_Status status; MPI_Init(&argc, &argv); MPI_Sendrecv(&i, 1, MPI_INT, 0, 100, &j, 1, MPI_INT, 0, 100, MPI_COMM_WORLD, &status); MPI_Finalize(); return (0); } mpi-testsuite-3.2+dfsg/basic/sendrecv.c0000644000175000017500000000613412620254305017422 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include #define LARGE_SIZE 100*1024 #define RNDV_SIZE 256*1024 int main(int argc, char *argv[]) { int size, rank; char buffer[100] = "garbage"; char big_buffer[RNDV_SIZE] = "big garbage"; MPI_Status status; int tag = 1; int reps = 1; int i; printf("Simple Send/Recv test.\n"); fflush(stdout); MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (size < 2) { printf("Two processes needed.\n"); MPI_Finalize(); return 0; } if (argc > 1) { reps = atoi(argv[1]); if (reps < 1) reps = 1; } if (rank == 0) { printf("Rank 0: sending 100 bytes messages to process 1.\n"); fflush(stdout); strcpy(buffer, "Hello process one."); for (i = 0; i < reps; i++) { MPI_Send(buffer, 100, MPI_BYTE, 1, tag, MPI_COMM_WORLD); MPI_Recv(buffer, 100, MPI_BYTE, 1, tag, MPI_COMM_WORLD, &status); } strcpy(big_buffer, "Hello again process one."); printf("Rank 0: sending %dk bytes messages to process 1.\n", LARGE_SIZE / 1024); fflush(stdout); for (i = 0; i < reps; i++) { MPI_Send(big_buffer, LARGE_SIZE, MPI_BYTE, 1, tag, MPI_COMM_WORLD); MPI_Recv(big_buffer, LARGE_SIZE, MPI_BYTE, 1, tag, MPI_COMM_WORLD, &status); } strcpy(big_buffer, "Hello yet again process one."); printf("Rank 0: sending %dk bytes messages to process 1.\n", RNDV_SIZE / 1024); fflush(stdout); for (i = 0; i < reps; i++) { MPI_Send(big_buffer, RNDV_SIZE, MPI_BYTE, 1, tag, MPI_COMM_WORLD); MPI_Recv(big_buffer, RNDV_SIZE, MPI_BYTE, 1, tag, MPI_COMM_WORLD, &status); } } else if (rank == 1) { printf("Rank 1: receiving messages from process 0.\n"); fflush(stdout); for (i = 0; i < reps; i++) { MPI_Recv(buffer, 100, MPI_BYTE, 0, tag, MPI_COMM_WORLD, &status); MPI_Send(buffer, 100, MPI_BYTE, 0, tag, MPI_COMM_WORLD); } printf("Rank 1: received message '%s'\n", buffer); fflush(stdout); for (i = 0; i < reps; i++) { MPI_Recv(big_buffer, LARGE_SIZE, MPI_BYTE, 0, tag, MPI_COMM_WORLD, &status); MPI_Send(big_buffer, LARGE_SIZE, MPI_BYTE, 0, tag, MPI_COMM_WORLD); } printf("Rank 1: received message '%s'\n", big_buffer); fflush(stdout); for (i = 0; i < reps; i++) { MPI_Recv(big_buffer, RNDV_SIZE, MPI_BYTE, 0, tag, MPI_COMM_WORLD, &status); MPI_Send(big_buffer, RNDV_SIZE, MPI_BYTE, 0, tag, MPI_COMM_WORLD); } printf("Rank 1: received message '%s'\n", big_buffer); fflush(stdout); } else { printf("Rank %d, I am not participating.\n", rank); fflush(stdout); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/basic/Makefile.in0000644000175000017500000005577112621010232017513 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = self$(EXEEXT) simple$(EXEEXT) sendrecv$(EXEEXT) \ srtest$(EXEEXT) wtime$(EXEEXT) netpipe$(EXEEXT) \ patterns$(EXEEXT) adapt$(EXEEXT) subdir = basic ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am_adapt_OBJECTS = adapt.$(OBJEXT) GetOpt.$(OBJEXT) adapt_OBJECTS = $(am_adapt_OBJECTS) adapt_LDADD = $(LDADD) adapt_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_netpipe_OBJECTS = netmpi.$(OBJEXT) GetOpt.$(OBJEXT) netpipe_OBJECTS = $(am_netpipe_OBJECTS) netpipe_LDADD = $(LDADD) netpipe_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o patterns_SOURCES = patterns.c patterns_OBJECTS = patterns.$(OBJEXT) patterns_LDADD = $(LDADD) patterns_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o self_SOURCES = self.c self_OBJECTS = self.$(OBJEXT) self_LDADD = $(LDADD) self_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o sendrecv_SOURCES = sendrecv.c sendrecv_OBJECTS = sendrecv.$(OBJEXT) sendrecv_LDADD = $(LDADD) sendrecv_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o simple_SOURCES = simple.c simple_OBJECTS = simple.$(OBJEXT) simple_LDADD = $(LDADD) simple_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o srtest_SOURCES = srtest.c srtest_OBJECTS = srtest.$(OBJEXT) srtest_LDADD = $(LDADD) srtest_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o wtime_SOURCES = wtime.c wtime_OBJECTS = wtime.$(OBJEXT) wtime_LDADD = $(LDADD) wtime_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(adapt_SOURCES) $(netpipe_SOURCES) patterns.c self.c \ sendrecv.c simple.c srtest.c wtime.c DIST_SOURCES = $(adapt_SOURCES) $(netpipe_SOURCES) patterns.c self.c \ sendrecv.c simple.c srtest.c wtime.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.mtest \ $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml noinst_HEADERS = GetOpt.h netpipe_SOURCES = netmpi.c GetOpt.c adapt_SOURCES = adapt.c GetOpt.c all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign basic/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign basic/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) adapt$(EXEEXT): $(adapt_OBJECTS) $(adapt_DEPENDENCIES) $(EXTRA_adapt_DEPENDENCIES) @rm -f adapt$(EXEEXT) $(AM_V_CCLD)$(LINK) $(adapt_OBJECTS) $(adapt_LDADD) $(LIBS) netpipe$(EXEEXT): $(netpipe_OBJECTS) $(netpipe_DEPENDENCIES) $(EXTRA_netpipe_DEPENDENCIES) @rm -f netpipe$(EXEEXT) $(AM_V_CCLD)$(LINK) $(netpipe_OBJECTS) $(netpipe_LDADD) $(LIBS) patterns$(EXEEXT): $(patterns_OBJECTS) $(patterns_DEPENDENCIES) $(EXTRA_patterns_DEPENDENCIES) @rm -f patterns$(EXEEXT) $(AM_V_CCLD)$(LINK) $(patterns_OBJECTS) $(patterns_LDADD) $(LIBS) self$(EXEEXT): $(self_OBJECTS) $(self_DEPENDENCIES) $(EXTRA_self_DEPENDENCIES) @rm -f self$(EXEEXT) $(AM_V_CCLD)$(LINK) $(self_OBJECTS) $(self_LDADD) $(LIBS) sendrecv$(EXEEXT): $(sendrecv_OBJECTS) $(sendrecv_DEPENDENCIES) $(EXTRA_sendrecv_DEPENDENCIES) @rm -f sendrecv$(EXEEXT) $(AM_V_CCLD)$(LINK) $(sendrecv_OBJECTS) $(sendrecv_LDADD) $(LIBS) simple$(EXEEXT): $(simple_OBJECTS) $(simple_DEPENDENCIES) $(EXTRA_simple_DEPENDENCIES) @rm -f simple$(EXEEXT) $(AM_V_CCLD)$(LINK) $(simple_OBJECTS) $(simple_LDADD) $(LIBS) srtest$(EXEEXT): $(srtest_OBJECTS) $(srtest_DEPENDENCIES) $(EXTRA_srtest_DEPENDENCIES) @rm -f srtest$(EXEEXT) $(AM_V_CCLD)$(LINK) $(srtest_OBJECTS) $(srtest_LDADD) $(LIBS) wtime$(EXEEXT): $(wtime_OBJECTS) $(wtime_DEPENDENCIES) $(EXTRA_wtime_DEPENDENCIES) @rm -f wtime$(EXEEXT) $(AM_V_CCLD)$(LINK) $(wtime_OBJECTS) $(wtime_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GetOpt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/adapt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netmpi.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/patterns.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/self.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendrecv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simple.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srtest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wtime.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(HEADERS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/basic/Makefile.am0000644000175000017500000000114412620254305017475 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile.mtest ## for all programs that are just built from the single corresponding source ## file, we don't need per-target _SOURCES rules, automake will infer them ## correctly noinst_PROGRAMS = \ self \ simple \ sendrecv \ srtest \ wtime \ netpipe \ patterns \ adapt noinst_HEADERS = GetOpt.h netpipe_SOURCES = netmpi.c GetOpt.c adapt_SOURCES = adapt.c GetOpt.c mpi-testsuite-3.2+dfsg/basic/simple.c0000644000175000017500000000043112620254305017074 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" int main(int argc, char *argv[]) { MPI_Init(&argc, &argv); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/basic/adapt.c0000644000175000017500000016310012620254305016677 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #ifdef HAVE_WINDOWS_H #include #include #endif #include #include #include #include "mpi.h" #include "GetOpt.h" #ifndef BOOL typedef int BOOL; #endif #ifndef TRUE #define TRUE 1 #endif #ifndef FALSE #define FALSE 0 #endif #define MIN(x, y) (((x) < (y))?(x):(y)) #define MAX(x, y) (((x) > (y))?(x):(y)) #ifdef HAVE_WINDOWS_H #define POINTER_TO_INT(a) ((int)(0xffffffff & (__int64) (a))) #else #define POINTER_TO_INT(a) ((MPI_Aint)(a)) #endif #define CREATE_DIFFERENCE_CURVES #undef CREATE_SINGLE_CURVE #define MAX_NUM_O12_TRIALS 18 #define TRIALS 7 #define PERT 3 #define LONGTIME 1e99 #define CHARSIZE 8 #define RUNTM 0.1 #define MAXINT 2147483647 #define MAX_LAT_TIME 2 #define LEFT_PROCESS 0 #define MIDDLE_PROCESS 1 #define RIGHT_PROCESS 2 #define MSG_TAG_01 9901 #define MSG_TAG_12 9912 #define MSG_TAG_012 9012 int g_left_rank = -1; int g_middle_rank = -1; int g_right_rank = -1; int g_proc_loc = -1; int g_NSAMP = 250; double g_STOPTM = 0.1; int g_latency012_reps = 1000; int g_nIproc = 0; int g_nNproc = 0; typedef struct ArgStruct { char *sbuff; /* Send buffer */ char *rbuff; /* Recv buffer */ int bufflen; /* Length of buffer */ int nbor, nbor2; /* neighbor */ int iproc; /* rank */ int tr; /* transmitter/receiver flag */ int latency_reps; /* reps needed to time latency */ } ArgStruct; typedef struct Data { double t; double bps; int bits; int repeat; } Data; int Setup(int middle_rank, ArgStruct * p01, ArgStruct * p12, ArgStruct * p012); void Sync(ArgStruct * p); void Sync012(ArgStruct * p); void SendTime(ArgStruct * p, double *t); void RecvTime(ArgStruct * p, double *t); void SendReps(ArgStruct * p, int *rpt); void RecvReps(ArgStruct * p, int *rpt); double TestLatency(ArgStruct * p); double TestLatency012(ArgStruct * p); void PrintOptions(void); int DetermineLatencyReps(ArgStruct * p); int DetermineLatencyReps012(ArgStruct * p); void PrintOptions() { printf("\n"); printf("Usage: adapt flags\n"); printf(" flags:\n"); printf(" -reps #iterations\n"); printf(" -time stop_time\n"); printf(" -start initial_msg_size\n"); printf(" -end final_msg_size\n"); printf(" -out outputfile\n"); printf(" -nocache\n"); printf(" -pert\n"); printf(" -noprint\n"); printf(" -middle rank_0_1_or_2\n"); printf("Requires exactly three processes\n"); printf("\n"); } int main(int argc, char *argv[]) { FILE *out = 0; /* Output data file */ char s[255]; /* Generic string */ char *memtmp; char *memtmp1; MPI_Status status; int ii, i, j, k, n, nq, /* Loop indices */ bufoffset = 0, /* Align buffer to this */ bufalign = 16 * 1024, /* Boundary to align buffer to */ nrepeat01, nrepeat12, /* Number of time to do the transmission */ nrepeat012, len, /* Number of bytes to be transmitted */ inc = 1, /* Increment value */ pert, /* Perturbation value */ ipert, /* index of the perturbation loop */ start = 0, /* Starting value for signature curve */ end = MAXINT, /* Ending value for signature curve */ printopt = 1, /* Debug print statements flag */ middle_rank = 0, /* rank 0, 1 or 2 where 2-0-1 or 0-1-2 or 1-2-0 */ tint; ArgStruct args01, args12, args012; /* Argumentsfor all the calls */ double t, t0, t1, /* Time variables */ tlast01, tlast12, tlast012, /* Time for the last transmission */ latency01, latency12, /* Network message latency */ latency012, tdouble; /* Network message latency to go from 0 -> 1 -> 2 */ #ifdef CREATE_DIFFERENCE_CURVES int itrial, ntrials; double *dtrials; #endif Data *bwdata01, *bwdata12, *bwdata012; /* Bandwidth curve data */ BOOL bNoCache = FALSE; BOOL bSavePert = FALSE; BOOL bUseMegaBytes = FALSE; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &g_nNproc); MPI_Comm_rank(MPI_COMM_WORLD, &g_nIproc); if (g_nNproc != 3) { if (g_nIproc == 0) PrintOptions(); MPI_Finalize(); exit(0); } GetOptDouble(&argc, &argv, "-time", &g_STOPTM); GetOptInt(&argc, &argv, "-reps", &g_NSAMP); GetOptInt(&argc, &argv, "-start", &start); GetOptInt(&argc, &argv, "-end", &end); bNoCache = GetOpt(&argc, &argv, "-nocache"); bUseMegaBytes = GetOpt(&argc, &argv, "-mb"); if (GetOpt(&argc, &argv, "-noprint")) printopt = 0; bSavePert = GetOpt(&argc, &argv, "-pert"); GetOptInt(&argc, &argv, "-middle", &middle_rank); if (middle_rank < 0 || middle_rank > 2) middle_rank = 0; bwdata01 = malloc((g_NSAMP + 1) * sizeof(Data)); bwdata12 = malloc((g_NSAMP + 1) * sizeof(Data)); bwdata012 = malloc((g_NSAMP + 1) * sizeof(Data)); if (g_nIproc == 0) strcpy(s, "adapt.out"); GetOptString(&argc, &argv, "-out", s); if (start > end) { fprintf(stdout, "Start MUST be LESS than end\n"); exit(420132); } Setup(middle_rank, &args01, &args12, &args012); if (g_nIproc == 0) { if ((out = fopen(s, "w")) == NULL) { fprintf(stdout, "Can't open %s for output\n", s); exit(1); } } /* Calculate latency */ switch (g_proc_loc) { case LEFT_PROCESS: latency01 = TestLatency(&args01); /*printf("[0] latency01 = %0.9f\n", latency01);fflush(stdout); */ RecvTime(&args01, &latency12); /*printf("[0] latency12 = %0.9f\n", latency12);fflush(stdout); */ break; case MIDDLE_PROCESS: latency01 = TestLatency(&args01); /*printf("[1] latency01 = %0.9f\n", latency01);fflush(stdout); */ SendTime(&args12, &latency01); latency12 = TestLatency(&args12); /*printf("[1] latency12 = %0.9f\n", latency12);fflush(stdout); */ SendTime(&args01, &latency12); break; case RIGHT_PROCESS: RecvTime(&args12, &latency01); /*printf("[2] latency01 = %0.9f\n", latency01);fflush(stdout); */ latency12 = TestLatency(&args12); /*printf("[2] latency12 = %0.9f\n", latency12);fflush(stdout); */ break; } latency012 = TestLatency012(&args012); if ((g_nIproc == 0) && printopt) { printf("Latency%d%d_ : %0.9f\n", g_left_rank, g_middle_rank, latency01); printf("Latency_%d%d : %0.9f\n", g_middle_rank, g_right_rank, latency12); printf("Latency%d%d%d : %0.9f\n", g_left_rank, g_middle_rank, g_right_rank, latency012); fflush(stdout); printf("Now starting main loop\n"); fflush(stdout); } tlast01 = latency01; tlast12 = latency12; tlast012 = latency012; inc = (start > 1) ? start / 2 : inc; args01.bufflen = start; args12.bufflen = start; args012.bufflen = start; #ifdef CREATE_DIFFERENCE_CURVES /* print the header line of the output file */ if (g_nIproc == 0) { fprintf(out, "bytes\tMbits/s\ttime\tMbits/s\ttime"); for (ii = 1, itrial = 0; itrial < MAX_NUM_O12_TRIALS; ii <<= 1, itrial++) fprintf(out, "\t%d", ii); fprintf(out, "\n"); fflush(out); } ntrials = MAX_NUM_O12_TRIALS; dtrials = malloc(sizeof(double) * ntrials); #endif /* Main loop of benchmark */ for (nq = n = 0, len = start; n < g_NSAMP && tlast012 < g_STOPTM && len <= end; len = len + inc, nq++) { if (nq > 2) inc = (nq % 2) ? inc + inc : inc; /* clear the old values */ for (itrial = 0; itrial < ntrials; itrial++) { dtrials[itrial] = LONGTIME; } /* This is a perturbation loop to test nearby values */ for (ipert = 0, pert = (inc > PERT + 1) ? -PERT : 0; pert <= PERT; ipert++, n++, pert += (inc > PERT + 1) ? PERT : PERT + 1) { /*****************************************************/ /* Run a trial between rank 0 and 1 */ /*****************************************************/ MPI_Barrier(MPI_COMM_WORLD); if (g_proc_loc == RIGHT_PROCESS) goto skip_01_trial; /* Calculate howmany times to repeat the experiment. */ if (args01.tr) { if (args01.bufflen == 0) nrepeat01 = args01.latency_reps; else nrepeat01 = (int) (MAX((RUNTM / ((double) args01.bufflen / (args01.bufflen - inc + 1.0) * tlast01)), TRIALS)); SendReps(&args01, &nrepeat01); } else { RecvReps(&args01, &nrepeat01); } /* Allocate the buffer */ args01.bufflen = len + pert; /* printf("allocating %d bytes\n", args01.bufflen * nrepeat01 + bufalign); */ if (bNoCache) { if ((args01.sbuff = (char *) malloc(args01.bufflen * nrepeat01 + bufalign)) == (char *) NULL) { fprintf(stdout, "Couldn't allocate memory\n"); fflush(stdout); break; } } else { if ((args01.sbuff = (char *) malloc(args01.bufflen + bufalign)) == (char *) NULL) { fprintf(stdout, "Couldn't allocate memory\n"); fflush(stdout); break; } } /* if ((args01.rbuff = (char *)malloc(args01.bufflen * nrepeat01 + bufalign)) == (char *)NULL) */ if ((args01.rbuff = (char *) malloc(args01.bufflen + bufalign)) == (char *) NULL) { fprintf(stdout, "Couldn't allocate memory\n"); fflush(stdout); break; } /* save the original pointers in case alignment moves them */ memtmp = args01.sbuff; memtmp1 = args01.rbuff; /* Possibly align the data buffer */ if (!bNoCache) { if (bufalign != 0) { args01.sbuff += (bufalign - (POINTER_TO_INT(args01.sbuff) % bufalign) + bufoffset) % bufalign; /* args01.rbuff += (bufalign - ((MPI_Aint)args01.rbuff % bufalign) + bufoffset) % bufalign; */ } } args01.rbuff += (bufalign - (POINTER_TO_INT(args01.rbuff) % bufalign) + bufoffset) % bufalign; if (args01.tr && printopt) { fprintf(stdout, "%3d: %9d bytes %4d times --> ", n, args01.bufflen, nrepeat01); fflush(stdout); } /* Finally, we get to transmit or receive and time */ if (args01.tr) { bwdata01[n].t = LONGTIME; t1 = 0; for (i = 0; i < TRIALS; i++) { if (bNoCache) { if (bufalign != 0) { args01.sbuff = memtmp + ((bufalign - (POINTER_TO_INT(args01.sbuff) % bufalign) + bufoffset) % bufalign); /* args01.rbuff = memtmp1 + ((bufalign - ((MPI_Aint)args01.rbuff % bufalign) + bufoffset) % bufalign); */ } else { args01.sbuff = memtmp; /* args01.rbuff = memtmp1; */ } } Sync(&args01); t0 = MPI_Wtime(); for (j = 0; j < nrepeat01; j++) { MPI_Send(args01.sbuff, args01.bufflen, MPI_BYTE, args01.nbor, MSG_TAG_01, MPI_COMM_WORLD); MPI_Recv(args01.rbuff, args01.bufflen, MPI_BYTE, args01.nbor, MSG_TAG_01, MPI_COMM_WORLD, &status); if (bNoCache) { args01.sbuff += args01.bufflen; /* args01.rbuff += args01.bufflen; */ } } t = (MPI_Wtime() - t0) / (2 * nrepeat01); t1 += t; bwdata01[n].t = MIN(bwdata01[n].t, t); } SendTime(&args01, &bwdata01[n].t); } else { bwdata01[n].t = LONGTIME; t1 = 0; for (i = 0; i < TRIALS; i++) { if (bNoCache) { if (bufalign != 0) { args01.sbuff = memtmp + ((bufalign - (POINTER_TO_INT(args01.sbuff) % bufalign) + bufoffset) % bufalign); /* args01.rbuff = memtmp1 + ((bufalign - ((MPI_Aint)args01.rbuff % bufalign) + bufoffset) % bufalign); */ } else { args01.sbuff = memtmp; /* args01.rbuff = memtmp1; */ } } Sync(&args01); t0 = MPI_Wtime(); for (j = 0; j < nrepeat01; j++) { MPI_Recv(args01.rbuff, args01.bufflen, MPI_BYTE, args01.nbor, MSG_TAG_01, MPI_COMM_WORLD, &status); MPI_Send(args01.sbuff, args01.bufflen, MPI_BYTE, args01.nbor, MSG_TAG_01, MPI_COMM_WORLD); if (bNoCache) { args01.sbuff += args01.bufflen; /* args01.rbuff += args01.bufflen; */ } } t = (MPI_Wtime() - t0) / (2 * nrepeat01); } RecvTime(&args01, &bwdata01[n].t); } tlast01 = bwdata01[n].t; bwdata01[n].bits = args01.bufflen * CHARSIZE; bwdata01[n].bps = bwdata01[n].bits / (bwdata01[n].t * 1024 * 1024); bwdata01[n].repeat = nrepeat01; if (args01.tr) { if (bSavePert) { if (args01.iproc == 0) { if (bUseMegaBytes) fprintf(out, "%d\t%f\t%0.9f\t", bwdata01[n].bits / 8, bwdata01[n].bps / 8, bwdata01[n].t); else fprintf(out, "%d\t%f\t%0.9f\t", bwdata01[n].bits / 8, bwdata01[n].bps, bwdata01[n].t); fflush(out); } else { MPI_Send(&bwdata01[n].bits, 1, MPI_INT, 0, 1, MPI_COMM_WORLD); MPI_Send(&bwdata01[n].bps, 1, MPI_DOUBLE, 0, 1, MPI_COMM_WORLD); MPI_Send(&bwdata01[n].t, 1, MPI_DOUBLE, 0, 1, MPI_COMM_WORLD); } } } free(memtmp); free(memtmp1); if (args01.tr && printopt) { if (bUseMegaBytes) printf(" %6.2f MBps in %0.9f sec\n", bwdata01[n].bps / 8, tlast01); else printf(" %6.2f Mbps in %0.9f sec\n", bwdata01[n].bps, tlast01); fflush(stdout); } skip_01_trial: if (g_proc_loc == RIGHT_PROCESS && g_nIproc == 0 && bSavePert) { MPI_Recv(&tint, 1, MPI_INT, g_left_rank, 1, MPI_COMM_WORLD, &status); fprintf(out, "%d\t", tint / 8); MPI_Recv(&tdouble, 1, MPI_DOUBLE, g_left_rank, 1, MPI_COMM_WORLD, &status); if (bUseMegaBytes) tdouble = tdouble / 8.0; fprintf(out, "%f\t", tdouble); MPI_Recv(&tdouble, 1, MPI_DOUBLE, g_left_rank, 1, MPI_COMM_WORLD, &status); fprintf(out, "%0.9f\t", tdouble); fflush(out); } /*****************************************************/ /* Run a trial between rank 1 and 2 */ /*****************************************************/ MPI_Barrier(MPI_COMM_WORLD); if (g_proc_loc == LEFT_PROCESS) goto skip_12_trial; /* Calculate howmany times to repeat the experiment. */ if (args12.tr) { if (args12.bufflen == 0) nrepeat12 = args12.latency_reps; else nrepeat12 = (int) (MAX((RUNTM / ((double) args12.bufflen / (args12.bufflen - inc + 1.0) * tlast12)), TRIALS)); SendReps(&args12, &nrepeat12); } else { RecvReps(&args12, &nrepeat12); } /* Allocate the buffer */ args12.bufflen = len + pert; /* printf("allocating %d bytes\n", args12.bufflen * nrepeat12 + bufalign); */ if (bNoCache) { if ((args12.sbuff = (char *) malloc(args12.bufflen * nrepeat12 + bufalign)) == (char *) NULL) { fprintf(stdout, "Couldn't allocate memory\n"); fflush(stdout); break; } } else { if ((args12.sbuff = (char *) malloc(args12.bufflen + bufalign)) == (char *) NULL) { fprintf(stdout, "Couldn't allocate memory\n"); fflush(stdout); break; } } /* if ((args12.rbuff = (char *)malloc(args12.bufflen * nrepeat12 + bufalign)) == (char *)NULL) */ if ((args12.rbuff = (char *) malloc(args12.bufflen + bufalign)) == (char *) NULL) { fprintf(stdout, "Couldn't allocate memory\n"); fflush(stdout); break; } /* save the original pointers in case alignment moves them */ memtmp = args12.sbuff; memtmp1 = args12.rbuff; /* Possibly align the data buffer */ if (!bNoCache) { if (bufalign != 0) { args12.sbuff += (bufalign - (POINTER_TO_INT(args12.sbuff) % bufalign) + bufoffset) % bufalign; /* args12.rbuff += (bufalign - ((MPI_Aint)args12.rbuff % bufalign) + bufoffset) % bufalign; */ } } args12.rbuff += (bufalign - (POINTER_TO_INT(args12.rbuff) % bufalign) + bufoffset) % bufalign; if (args12.tr && printopt) { printf("%3d: %9d bytes %4d times --> ", n, args12.bufflen, nrepeat12); fflush(stdout); } /* Finally, we get to transmit or receive and time */ if (args12.tr) { bwdata12[n].t = LONGTIME; t1 = 0; for (i = 0; i < TRIALS; i++) { if (bNoCache) { if (bufalign != 0) { args12.sbuff = memtmp + ((bufalign - (POINTER_TO_INT(args12.sbuff) % bufalign) + bufoffset) % bufalign); /* args12.rbuff = memtmp1 + ((bufalign - ((MPI_Aint)args12.rbuff % bufalign) + bufoffset) % bufalign); */ } else { args12.sbuff = memtmp; /* args12.rbuff = memtmp1; */ } } Sync(&args12); t0 = MPI_Wtime(); for (j = 0; j < nrepeat12; j++) { MPI_Send(args12.sbuff, args12.bufflen, MPI_BYTE, args12.nbor, MSG_TAG_12, MPI_COMM_WORLD); MPI_Recv(args12.rbuff, args12.bufflen, MPI_BYTE, args12.nbor, MSG_TAG_12, MPI_COMM_WORLD, &status); if (bNoCache) { args12.sbuff += args12.bufflen; /* args12.rbuff += args12.bufflen; */ } } t = (MPI_Wtime() - t0) / (2 * nrepeat12); t1 += t; bwdata12[n].t = MIN(bwdata12[n].t, t); } SendTime(&args12, &bwdata12[n].t); } else { bwdata12[n].t = LONGTIME; t1 = 0; for (i = 0; i < TRIALS; i++) { if (bNoCache) { if (bufalign != 0) { args12.sbuff = memtmp + ((bufalign - (POINTER_TO_INT(args12.sbuff) % bufalign) + bufoffset) % bufalign); /* args12.rbuff = memtmp1 + ((bufalign - ((MPI_Aint)args12.rbuff % bufalign) + bufoffset) % bufalign); */ } else { args12.sbuff = memtmp; /* args12.rbuff = memtmp1; */ } } Sync(&args12); t0 = MPI_Wtime(); for (j = 0; j < nrepeat12; j++) { MPI_Recv(args12.rbuff, args12.bufflen, MPI_BYTE, args12.nbor, MSG_TAG_12, MPI_COMM_WORLD, &status); MPI_Send(args12.sbuff, args12.bufflen, MPI_BYTE, args12.nbor, MSG_TAG_12, MPI_COMM_WORLD); if (bNoCache) { args12.sbuff += args12.bufflen; /* args12.rbuff += args12.bufflen; */ } } t = (MPI_Wtime() - t0) / (2 * nrepeat12); } RecvTime(&args12, &bwdata12[n].t); } tlast12 = bwdata12[n].t; bwdata12[n].bits = args12.bufflen * CHARSIZE; bwdata12[n].bps = bwdata12[n].bits / (bwdata12[n].t * 1024 * 1024); bwdata12[n].repeat = nrepeat12; if (args12.tr) { if (bSavePert) { if (g_nIproc == 0) { if (bUseMegaBytes) fprintf(out, "%f\t%0.9f\t", bwdata12[n].bps / 8, bwdata12[n].t); else fprintf(out, "%f\t%0.9f\t", bwdata12[n].bps, bwdata12[n].t); fflush(out); } else { MPI_Send(&bwdata12[n].bps, 1, MPI_DOUBLE, 0, 1, MPI_COMM_WORLD); MPI_Send(&bwdata12[n].t, 1, MPI_DOUBLE, 0, 1, MPI_COMM_WORLD); } } } free(memtmp); free(memtmp1); if (args12.tr && printopt) { if (bUseMegaBytes) printf(" %6.2f MBps in %0.9f sec\n", bwdata12[n].bps / 8, tlast12); else printf(" %6.2f Mbps in %0.9f sec\n", bwdata12[n].bps, tlast12); fflush(stdout); } skip_12_trial: if (g_proc_loc == LEFT_PROCESS && g_nIproc == 0 && bSavePert) { MPI_Recv(&tdouble, 1, MPI_DOUBLE, g_middle_rank, 1, MPI_COMM_WORLD, &status); if (bUseMegaBytes) tdouble = tdouble / 8.0; fprintf(out, "%f\t", tdouble); MPI_Recv(&tdouble, 1, MPI_DOUBLE, g_middle_rank, 1, MPI_COMM_WORLD, &status); fprintf(out, "%0.9f\t", tdouble); fflush(out); } #ifdef CREATE_DIFFERENCE_CURVES /*****************************************************/ /* Run a trial between rank 0, 1 and 2 */ /*****************************************************/ MPI_Barrier(MPI_COMM_WORLD); /* Calculate howmany times to repeat the experiment. */ if (g_nIproc == 0) { if (args012.bufflen == 0) nrepeat012 = g_latency012_reps; else nrepeat012 = (int) (MAX((RUNTM / ((double) args012.bufflen / (args012.bufflen - inc + 1.0) * tlast012)), TRIALS)); MPI_Bcast(&nrepeat012, 1, MPI_INT, 0, MPI_COMM_WORLD); } else { MPI_Bcast(&nrepeat012, 1, MPI_INT, 0, MPI_COMM_WORLD); } /* Allocate the buffer */ args012.bufflen = len + pert; /* printf("allocating %d bytes\n", args12.bufflen * nrepeat012 + bufalign); */ if (bNoCache) { if ((args012.sbuff = (char *) malloc(args012.bufflen * nrepeat012 + bufalign)) == (char *) NULL) { fprintf(stdout, "Couldn't allocate memory\n"); fflush(stdout); break; } } else { if ((args012.sbuff = (char *) malloc(args012.bufflen + bufalign)) == (char *) NULL) { fprintf(stdout, "Couldn't allocate memory\n"); fflush(stdout); break; } } /* if ((args012.rbuff = (char *)malloc(args012.bufflen * nrepeat012 + bufalign)) == (char *)NULL) */ if ((args012.rbuff = (char *) malloc(args012.bufflen + bufalign)) == (char *) NULL) { fprintf(stdout, "Couldn't allocate memory\n"); fflush(stdout); break; } /* save the original pointers in case alignment moves them */ memtmp = args012.sbuff; memtmp1 = args012.rbuff; /* Possibly align the data buffer */ if (!bNoCache) { if (bufalign != 0) { args012.sbuff += (bufalign - (POINTER_TO_INT(args012.sbuff) % bufalign) + bufoffset) % bufalign; /* args12.rbuff += (bufalign - ((MPI_Aint)args12.rbuff % bufalign) + bufoffset) % bufalign; */ } } args012.rbuff += (bufalign - (POINTER_TO_INT(args012.rbuff) % bufalign) + bufoffset) % bufalign; if (g_nIproc == 0 && printopt) { printf("%3d: %9d bytes %4d times --> ", n, args012.bufflen, nrepeat012); fflush(stdout); } for (itrial = 0, ii = 1; ii <= nrepeat012 && itrial < ntrials; ii <<= 1, itrial++) { /* Finally, we get to transmit or receive and time */ switch (g_proc_loc) { case LEFT_PROCESS: bwdata012[n].t = LONGTIME; t1 = 0; for (i = 0; i < TRIALS; i++) { if (bNoCache) { if (bufalign != 0) { args012.sbuff = memtmp + ((bufalign - (POINTER_TO_INT(args012.sbuff) % bufalign) + bufoffset) % bufalign); /* args012.rbuff = memtmp1 + ((bufalign - ((MPI_Aint)args012.rbuff % bufalign) + bufoffset) % bufalign); */ } else { args012.sbuff = memtmp; /* args012.rbuff = memtmp1; */ } } Sync012(&args012); t0 = MPI_Wtime(); for (j = 0; j < nrepeat012; j++) { MPI_Send(args012.sbuff, args012.bufflen, MPI_BYTE, args012.nbor, MSG_TAG_012, MPI_COMM_WORLD); MPI_Recv(args012.rbuff, args012.bufflen, MPI_BYTE, args012.nbor, MSG_TAG_012, MPI_COMM_WORLD, &status); if (bNoCache) { args012.sbuff += args012.bufflen; /* args012.rbuff += args012.bufflen; */ } } t = (MPI_Wtime() - t0) / (2 * nrepeat012); t1 += t; bwdata012[n].t = MIN(bwdata012[n].t, t); } MPI_Bcast(&bwdata012[n].t, 1, MPI_DOUBLE, g_left_rank, MPI_COMM_WORLD); break; case MIDDLE_PROCESS: bwdata012[n].t = LONGTIME; t1 = 0; for (i = 0; i < TRIALS; i++) { if (bNoCache) { if (bufalign != 0) { args012.sbuff = memtmp + ((bufalign - (POINTER_TO_INT(args012.sbuff) % bufalign) + bufoffset) % bufalign); /* args012.rbuff = memtmp1 + ((bufalign - ((MPI_Aint)args012.rbuff % bufalign) + bufoffset) % bufalign); */ } else { args012.sbuff = memtmp; /* args012.rbuff = memtmp1; */ } } Sync012(&args012); t0 = MPI_Wtime(); /******* use the ii variable here !!! ******/ for (j = 0; j <= nrepeat012 - ii; j += ii) { for (k = 0; k < ii; k++) { MPI_Send(args012.sbuff, args012.bufflen, MPI_BYTE, args012.nbor2, MSG_TAG_012, MPI_COMM_WORLD); MPI_Recv(args012.rbuff, args012.bufflen, MPI_BYTE, args012.nbor2, MSG_TAG_012, MPI_COMM_WORLD, &status); } /* do the left process second because it does the timing and needs to include time to send to the right process. */ for (k = 0; k < ii; k++) { MPI_Recv(args012.rbuff, args012.bufflen, MPI_BYTE, args012.nbor, MSG_TAG_012, MPI_COMM_WORLD, &status); MPI_Send(args012.sbuff, args012.bufflen, MPI_BYTE, args012.nbor, MSG_TAG_012, MPI_COMM_WORLD); } if (bNoCache) { args012.sbuff += args012.bufflen; /* args012.rbuff += args012.bufflen; */ } } j = nrepeat012 % ii; for (k = 0; k < j; k++) { MPI_Send(args012.sbuff, args012.bufflen, MPI_BYTE, args012.nbor2, MSG_TAG_012, MPI_COMM_WORLD); MPI_Recv(args012.rbuff, args012.bufflen, MPI_BYTE, args012.nbor2, MSG_TAG_012, MPI_COMM_WORLD, &status); } /* do the left process second because it does the timing and needs to include time to send to the right process. */ for (k = 0; k < j; k++) { MPI_Recv(args012.rbuff, args012.bufflen, MPI_BYTE, args012.nbor, MSG_TAG_012, MPI_COMM_WORLD, &status); MPI_Send(args012.sbuff, args012.bufflen, MPI_BYTE, args012.nbor, MSG_TAG_012, MPI_COMM_WORLD); } t = (MPI_Wtime() - t0) / (2 * nrepeat012); } MPI_Bcast(&bwdata012[n].t, 1, MPI_DOUBLE, g_left_rank, MPI_COMM_WORLD); break; case RIGHT_PROCESS: bwdata012[n].t = LONGTIME; t1 = 0; for (i = 0; i < TRIALS; i++) { if (bNoCache) { if (bufalign != 0) { args012.sbuff = memtmp + ((bufalign - (POINTER_TO_INT(args012.sbuff) % bufalign) + bufoffset) % bufalign); /* args012.rbuff = memtmp1 + ((bufalign - ((MPI_Aint)args012.rbuff % bufalign) + bufoffset) % bufalign); */ } else { args012.sbuff = memtmp; /* args012.rbuff = memtmp1; */ } } Sync012(&args012); t0 = MPI_Wtime(); for (j = 0; j < nrepeat012; j++) { MPI_Recv(args012.rbuff, args012.bufflen, MPI_BYTE, args012.nbor, MSG_TAG_012, MPI_COMM_WORLD, &status); MPI_Send(args012.sbuff, args012.bufflen, MPI_BYTE, args012.nbor, MSG_TAG_012, MPI_COMM_WORLD); if (bNoCache) { args012.sbuff += args012.bufflen; /* args012.rbuff += args012.bufflen; */ } } t = (MPI_Wtime() - t0) / (2 * nrepeat012); } MPI_Bcast(&bwdata012[n].t, 1, MPI_DOUBLE, g_left_rank, MPI_COMM_WORLD); break; } tlast012 = bwdata012[n].t; bwdata012[n].bits = args012.bufflen * CHARSIZE; bwdata012[n].bps = bwdata012[n].bits / (bwdata012[n].t * 1024 * 1024); bwdata012[n].repeat = nrepeat012; if (itrial < ntrials) { dtrials[itrial] = MIN(dtrials[itrial], bwdata012[n].t); } if (g_nIproc == 0) { if (bSavePert) { fprintf(out, "\t%0.9f", bwdata012[n].t); fflush(out); } if (printopt) { printf(" %0.9f", tlast012); fflush(stdout); } } } if (g_nIproc == 0) { if (bSavePert) { fprintf(out, "\n"); fflush(out); } if (printopt) { printf("\n"); fflush(stdout); } } free(memtmp); free(memtmp1); #endif #ifdef CREATE_SINGLE_CURVE /*****************************************************/ /* Run a trial between rank 0, 1 and 2 */ /*****************************************************/ MPI_Barrier(MPI_COMM_WORLD); /* Calculate howmany times to repeat the experiment. */ if (g_nIproc == 0) { if (args012.bufflen == 0) nrepeat012 = g_latency012_reps; else nrepeat012 = (int) (MAX((RUNTM / ((double) args012.bufflen / (args012.bufflen - inc + 1.0) * tlast012)), TRIALS)); MPI_Bcast(&nrepeat012, 1, MPI_INT, 0, MPI_COMM_WORLD); } else { MPI_Bcast(&nrepeat012, 1, MPI_INT, 0, MPI_COMM_WORLD); } /* Allocate the buffer */ args012.bufflen = len + pert; /* printf("allocating %d bytes\n", args12.bufflen * nrepeat012 + bufalign); */ if (bNoCache) { if ((args012.sbuff = (char *) malloc(args012.bufflen * nrepeat012 + bufalign)) == (char *) NULL) { fprintf(stdout, "Couldn't allocate memory\n"); fflush(stdout); break; } } else { if ((args012.sbuff = (char *) malloc(args012.bufflen + bufalign)) == (char *) NULL) { fprintf(stdout, "Couldn't allocate memory\n"); fflush(stdout); break; } } /* if ((args012.rbuff = (char *)malloc(args012.bufflen * nrepeat012 + bufalign)) == (char *)NULL) */ if ((args012.rbuff = (char *) malloc(args012.bufflen + bufalign)) == (char *) NULL) { fprintf(stdout, "Couldn't allocate memory\n"); fflush(stdout); break; } /* save the original pointers in case alignment moves them */ memtmp = args012.sbuff; memtmp1 = args012.rbuff; /* Possibly align the data buffer */ if (!bNoCache) { if (bufalign != 0) { args012.sbuff += (bufalign - (POINTER_TO_INT(args012.sbuff) % bufalign) + bufoffset) % bufalign; /* args12.rbuff += (bufalign - ((MPI_Aint)args12.rbuff % bufalign) + bufoffset) % bufalign; */ } } args012.rbuff += (bufalign - (POINTER_TO_INT(args012.rbuff) % bufalign) + bufoffset) % bufalign; if (g_nIproc == 0 && printopt) { printf("%3d: %9d bytes %4d times --> ", n, args012.bufflen, nrepeat012); fflush(stdout); } /* Finally, we get to transmit or receive and time */ switch (g_proc_loc) { case LEFT_PROCESS: bwdata012[n].t = LONGTIME; t1 = 0; for (i = 0; i < TRIALS; i++) { if (bNoCache) { if (bufalign != 0) { args012.sbuff = memtmp + ((bufalign - (POINTER_TO_INT(args012.sbuff) % bufalign) + bufoffset) % bufalign); /* args012.rbuff = memtmp1 + ((bufalign - ((MPI_Aint)args012.rbuff % bufalign) + bufoffset) % bufalign); */ } else { args012.sbuff = memtmp; /* args012.rbuff = memtmp1; */ } } Sync012(&args012); t0 = MPI_Wtime(); for (j = 0; j < nrepeat012; j++) { MPI_Send(args012.sbuff, args012.bufflen, MPI_BYTE, args012.nbor, MSG_TAG_012, MPI_COMM_WORLD); MPI_Recv(args012.rbuff, args012.bufflen, MPI_BYTE, args012.nbor, MSG_TAG_012, MPI_COMM_WORLD, &status); if (bNoCache) { args012.sbuff += args012.bufflen; /* args012.rbuff += args012.bufflen; */ } } t = (MPI_Wtime() - t0) / (2 * nrepeat012); t1 += t; bwdata012[n].t = MIN(bwdata012[n].t, t); } MPI_Bcast(&bwdata012[n].t, 1, MPI_DOUBLE, g_left_rank, MPI_COMM_WORLD); break; case MIDDLE_PROCESS: bwdata012[n].t = LONGTIME; t1 = 0; for (i = 0; i < TRIALS; i++) { if (bNoCache) { if (bufalign != 0) { args012.sbuff = memtmp + ((bufalign - (POINTER_TO_INT(args012.sbuff) % bufalign) + bufoffset) % bufalign); /* args012.rbuff = memtmp1 + ((bufalign - ((MPI_Aint)args012.rbuff % bufalign) + bufoffset) % bufalign); */ } else { args012.sbuff = memtmp; /* args012.rbuff = memtmp1; */ } } Sync012(&args012); t0 = MPI_Wtime(); for (j = 0; j < nrepeat012; j++) { MPI_Recv(args012.rbuff, args012.bufflen, MPI_BYTE, args012.nbor, MSG_TAG_012, MPI_COMM_WORLD, &status); MPI_Send(args012.sbuff, args012.bufflen, MPI_BYTE, args012.nbor2, MSG_TAG_012, MPI_COMM_WORLD); MPI_Recv(args012.rbuff, args012.bufflen, MPI_BYTE, args012.nbor2, MSG_TAG_012, MPI_COMM_WORLD, &status); MPI_Send(args012.sbuff, args012.bufflen, MPI_BYTE, args012.nbor, MSG_TAG_012, MPI_COMM_WORLD); if (bNoCache) { args012.sbuff += args012.bufflen; /* args012.rbuff += args012.bufflen; */ } } t = (MPI_Wtime() - t0) / (2 * nrepeat012); } MPI_Bcast(&bwdata012[n].t, 1, MPI_DOUBLE, g_left_rank, MPI_COMM_WORLD); break; case RIGHT_PROCESS: bwdata012[n].t = LONGTIME; t1 = 0; for (i = 0; i < TRIALS; i++) { if (bNoCache) { if (bufalign != 0) { args012.sbuff = memtmp + ((bufalign - (POINTER_TO_INT(args012.sbuff) % bufalign) + bufoffset) % bufalign); /* args012.rbuff = memtmp1 + ((bufalign - ((MPI_Aint)args012.rbuff % bufalign) + bufoffset) % bufalign); */ } else { args012.sbuff = memtmp; /* args012.rbuff = memtmp1; */ } } Sync012(&args012); t0 = MPI_Wtime(); for (j = 0; j < nrepeat012; j++) { MPI_Recv(args012.rbuff, args012.bufflen, MPI_BYTE, args012.nbor, MSG_TAG_012, MPI_COMM_WORLD, &status); MPI_Send(args012.sbuff, args012.bufflen, MPI_BYTE, args012.nbor, MSG_TAG_012, MPI_COMM_WORLD); if (bNoCache) { args012.sbuff += args012.bufflen; /* args012.rbuff += args012.bufflen; */ } } t = (MPI_Wtime() - t0) / (2 * nrepeat012); } MPI_Bcast(&bwdata012[n].t, 1, MPI_DOUBLE, g_left_rank, MPI_COMM_WORLD); break; } tlast012 = bwdata012[n].t; bwdata012[n].bits = args012.bufflen * CHARSIZE; bwdata012[n].bps = bwdata012[n].bits / (bwdata012[n].t * 1024 * 1024); bwdata012[n].repeat = nrepeat012; if (g_nIproc == 0) { if (bSavePert) { if (bUseMegaBytes) fprintf(out, "%f\t%0.9f\n", bwdata012[n].bps / 8, bwdata012[n].t); else fprintf(out, "%f\t%0.9f\n", bwdata012[n].bps, bwdata012[n].t); fflush(out); } } free(memtmp); free(memtmp1); if (g_nIproc == 0 && printopt) { if (bUseMegaBytes) printf(" %6.2f MBps in %0.9f sec\n", bwdata012[n].bps / 8, tlast012); else printf(" %6.2f Mbps in %0.9f sec\n", bwdata012[n].bps, tlast012); fflush(stdout); } #endif } /* End of perturbation loop */ if (!bSavePert) { /* && g_nIproc == 0) */ /* if we didn't save all of the perturbation loops, find the max and save it */ int index01 = 1, index12 = 1; double dmax01 = bwdata01[n - 1].bps; double dmax12 = bwdata12[n - 1].bps; #ifdef CREATE_SINGLE_CURVE int index012 = 1; double dmax012 = bwdata012[n - 1].bps; #endif for (; ipert > 1; ipert--) { if (bwdata01[n - ipert].bps > dmax01) { index01 = ipert; dmax01 = bwdata01[n - ipert].bps; } if (bwdata12[n - ipert].bps > dmax12) { index12 = ipert; dmax12 = bwdata12[n - ipert].bps; } #ifdef CREATE_SINGLE_CURVE if (bwdata012[n - ipert].bps > dmax012) { index012 = ipert; dmax012 = bwdata012[n - ipert].bps; } #endif } /* get the left stuff out */ MPI_Bcast(&index01, 1, MPI_INT, g_left_rank, MPI_COMM_WORLD); MPI_Bcast(&bwdata01[n - index01].bits, 1, MPI_INT, g_left_rank, MPI_COMM_WORLD); MPI_Bcast(&bwdata01[n - index01].bps, 1, MPI_DOUBLE, g_left_rank, MPI_COMM_WORLD); MPI_Bcast(&bwdata01[n - index01].t, 1, MPI_DOUBLE, g_left_rank, MPI_COMM_WORLD); /* get the right stuff out */ MPI_Bcast(&index12, 1, MPI_INT, g_middle_rank, MPI_COMM_WORLD); MPI_Bcast(&bwdata12[n - index12].bps, 1, MPI_DOUBLE, g_middle_rank, MPI_COMM_WORLD); MPI_Bcast(&bwdata12[n - index12].t, 1, MPI_DOUBLE, g_middle_rank, MPI_COMM_WORLD); if (g_nIproc == 0) { if (bUseMegaBytes) { fprintf(out, "%d\t%f\t%0.9f\t", bwdata01[n - index01].bits / 8, bwdata01[n - index01].bps / 8, bwdata01[n - index01].t); fprintf(out, "%f\t%0.9f\t", bwdata12[n - index12].bps / 8, bwdata12[n - index12].t); #ifdef CREATE_SINGLE_CURVE fprintf(out, "%f\t%0.9f\n", bwdata012[n - index012].bps / 8, bwdata012[n - index012].t); #endif } else { fprintf(out, "%d\t%f\t%0.9f\t", bwdata01[n - index01].bits / 8, bwdata01[n - index01].bps, bwdata01[n - index01].t); fprintf(out, "%f\t%0.9f\t", bwdata12[n - index12].bps, bwdata12[n - index12].t); #ifdef CREATE_SINGLE_CURVE fprintf(out, "%f\t%0.9f\n", bwdata012[n - index012].bps, bwdata012[n - index012].t); #endif } #ifdef CREATE_DIFFERENCE_CURVES for (itrial = 0; itrial < ntrials && dtrials[itrial] != LONGTIME; itrial++) { fprintf(out, "%0.9f\t", dtrials[itrial]); } fprintf(out, "\n"); #endif fflush(out); } } } /* End of main loop */ if (g_nIproc == 0) fclose(out); /* THE_END: */ MPI_Finalize(); free(bwdata01); free(bwdata12); free(bwdata012); return 0; } int Setup(int middle_rank, ArgStruct * p01, ArgStruct * p12, ArgStruct * p012) { char s[255]; int len = 255; p01->iproc = p12->iproc = p012->iproc = g_nIproc; MPI_Get_processor_name(s, &len); /*gethostname(s, len); */ printf("%d: %s\n", p01->iproc, s); fflush(stdout); switch (middle_rank) { case 0: switch (g_nIproc) { case 0: g_proc_loc = MIDDLE_PROCESS; p01->nbor = 2; p01->tr = FALSE; p12->nbor = 1; p12->tr = TRUE; p012->nbor = 2; p012->nbor2 = 1; break; case 1: g_proc_loc = RIGHT_PROCESS; p01->nbor = -1; p01->tr = FALSE; p12->nbor = 0; p12->tr = FALSE; p012->nbor = 0; p012->nbor2 = -1; break; case 2: g_proc_loc = LEFT_PROCESS; p01->nbor = 0; p01->tr = TRUE; p12->nbor = -1; p12->tr = FALSE; p012->nbor = 0; p012->nbor2 = -1; break; } g_left_rank = 2; g_middle_rank = 0; g_right_rank = 1; break; case 1: switch (g_nIproc) { case 0: g_proc_loc = LEFT_PROCESS; p01->nbor = 1; p01->tr = TRUE; p12->nbor = -1; p12->tr = FALSE; p012->nbor = 1; p012->nbor2 = -1; break; case 1: g_proc_loc = MIDDLE_PROCESS; p01->nbor = 0; p01->tr = FALSE; p12->nbor = 2; p12->tr = TRUE; p012->nbor = 0; p012->nbor2 = 2; break; case 2: g_proc_loc = RIGHT_PROCESS; p01->nbor = -1; p01->tr = FALSE; p12->nbor = 1; p12->tr = FALSE; p012->nbor = 1; p012->nbor2 = -1; break; } g_left_rank = 0; g_middle_rank = 1; g_right_rank = 2; break; case 2: switch (g_nIproc) { case 0: g_proc_loc = RIGHT_PROCESS; p01->nbor = -1; p01->tr = FALSE; p12->nbor = 2; p12->tr = FALSE; p012->nbor = 2; p012->nbor2 = -1; break; case 1: g_proc_loc = LEFT_PROCESS; p01->nbor = 2; p01->tr = TRUE; p12->nbor = -1; p12->tr = FALSE; p012->nbor = 2; p012->nbor2 = -1; break; case 2: g_proc_loc = MIDDLE_PROCESS; p01->nbor = 1; p01->tr = FALSE; p12->nbor = 0; p12->tr = TRUE; p012->nbor = 1; p012->nbor2 = 0; break; } g_left_rank = 1; g_middle_rank = 2; g_right_rank = 0; break; } return 1; } void Sync(ArgStruct * p) { MPI_Status status; if (p->tr) { MPI_Send(NULL, 0, MPI_BYTE, p->nbor, 1, MPI_COMM_WORLD); MPI_Recv(NULL, 0, MPI_BYTE, p->nbor, 1, MPI_COMM_WORLD, &status); MPI_Send(NULL, 0, MPI_BYTE, p->nbor, 1, MPI_COMM_WORLD); } else { MPI_Recv(NULL, 0, MPI_BYTE, p->nbor, 1, MPI_COMM_WORLD, &status); MPI_Send(NULL, 0, MPI_BYTE, p->nbor, 1, MPI_COMM_WORLD); MPI_Recv(NULL, 0, MPI_BYTE, p->nbor, 1, MPI_COMM_WORLD, &status); } } void Sync012(ArgStruct * p) { MPI_Status status; switch (g_proc_loc) { case LEFT_PROCESS: MPI_Send(NULL, 0, MPI_BYTE, p->nbor, 1, MPI_COMM_WORLD); MPI_Recv(NULL, 0, MPI_BYTE, p->nbor, 1, MPI_COMM_WORLD, &status); MPI_Send(NULL, 0, MPI_BYTE, p->nbor, 1, MPI_COMM_WORLD); break; case MIDDLE_PROCESS: MPI_Recv(NULL, 0, MPI_BYTE, p->nbor, 1, MPI_COMM_WORLD, &status); MPI_Send(NULL, 0, MPI_BYTE, p->nbor2, 1, MPI_COMM_WORLD); MPI_Recv(NULL, 0, MPI_BYTE, p->nbor2, 1, MPI_COMM_WORLD, &status); MPI_Send(NULL, 0, MPI_BYTE, p->nbor, 1, MPI_COMM_WORLD); MPI_Recv(NULL, 0, MPI_BYTE, p->nbor, 1, MPI_COMM_WORLD, &status); MPI_Send(NULL, 0, MPI_BYTE, p->nbor2, 1, MPI_COMM_WORLD); break; case RIGHT_PROCESS: MPI_Recv(NULL, 0, MPI_BYTE, p->nbor, 1, MPI_COMM_WORLD, &status); MPI_Send(NULL, 0, MPI_BYTE, p->nbor, 1, MPI_COMM_WORLD); MPI_Recv(NULL, 0, MPI_BYTE, p->nbor, 1, MPI_COMM_WORLD, &status); break; } } int DetermineLatencyReps(ArgStruct * p) { MPI_Status status; double t0, duration = 0; int reps = 1, prev_reps = 0; int i; /* prime the send/receive pipes */ Sync(p); Sync(p); Sync(p); /* test how long it takes to send n messages * where n = 1, 2, 4, 8, 16, 32, ... */ t0 = MPI_Wtime(); t0 = MPI_Wtime(); t0 = MPI_Wtime(); while ((duration < RUNTM) || (duration < MAX_LAT_TIME && reps < 1000)) { t0 = MPI_Wtime(); for (i = 0; i < reps - prev_reps; i++) { Sync(p); } duration += MPI_Wtime() - t0; prev_reps = reps; reps = reps * 2; /* use duration from the root only */ if (p->tr) MPI_Send(&duration, 1, MPI_DOUBLE, p->nbor, 2, MPI_COMM_WORLD); else MPI_Recv(&duration, 1, MPI_DOUBLE, p->nbor, 2, MPI_COMM_WORLD, &status); } return reps; } int DetermineLatencyReps012(ArgStruct * p) { double t0, duration = 0; int reps = 1, prev_reps = 0; int i; /* prime the send/receive pipes */ Sync012(p); Sync012(p); Sync012(p); /* test how long it takes to send n messages * where n = 1, 2, 4, 8, 16, 32, ... */ t0 = MPI_Wtime(); t0 = MPI_Wtime(); t0 = MPI_Wtime(); while ((duration < RUNTM) || (duration < MAX_LAT_TIME && reps < 1000)) { t0 = MPI_Wtime(); for (i = 0; i < reps - prev_reps; i++) { Sync012(p); } duration += MPI_Wtime() - t0; prev_reps = reps; reps = reps * 2; /* use duration from the root only */ MPI_Bcast(&duration, 1, MPI_DOUBLE, g_left_rank, MPI_COMM_WORLD); } return reps; } double TestLatency(ArgStruct * p) { double latency, t0, min_latency = LONGTIME; int i, j; MPI_Status status; char str[100]; /* calculate the latency between rank 0 and rank 1 */ p->latency_reps = DetermineLatencyReps(p); if (/*p->latency_reps < 1024 && */ p->tr) { if (g_proc_loc == LEFT_PROCESS) { sprintf(str, "%d <-> %d ", p->iproc, p->nbor); } else { sprintf(str, " %d <-> %d", p->iproc, p->nbor); } /*printf("To determine %s latency, using %d reps\n", p->iproc == 0 ? "0 -> 1 " : " 1 -> 2", p->latency_reps); */ printf("To determine %s latency, using %d reps.\n", str, p->latency_reps); fflush(stdout); } for (j = 0; j < TRIALS; j++) { Sync(p); t0 = MPI_Wtime(); t0 = MPI_Wtime(); t0 = MPI_Wtime(); t0 = MPI_Wtime(); for (i = 0; i < p->latency_reps; i++) { if (p->tr) { MPI_Send(NULL, 0, MPI_BYTE, p->nbor, 1, MPI_COMM_WORLD); MPI_Recv(NULL, 0, MPI_BYTE, p->nbor, 1, MPI_COMM_WORLD, &status); } else { MPI_Recv(NULL, 0, MPI_BYTE, p->nbor, 1, MPI_COMM_WORLD, &status); MPI_Send(NULL, 0, MPI_BYTE, p->nbor, 1, MPI_COMM_WORLD); } } latency = (MPI_Wtime() - t0) / (2 * p->latency_reps); min_latency = MIN(min_latency, latency); } return min_latency; } double TestLatency012(ArgStruct * p) { double latency, t0, min_latency = LONGTIME; int i, j; MPI_Status status; g_latency012_reps = DetermineLatencyReps012(p); if (g_proc_loc == MIDDLE_PROCESS) { printf("To determine %d <-- %d --> %d latency, using %d reps\n", p->nbor, p->iproc, p->nbor2, g_latency012_reps); fflush(stdout); } for (j = 0; j < TRIALS; j++) { Sync012(p); t0 = MPI_Wtime(); t0 = MPI_Wtime(); t0 = MPI_Wtime(); t0 = MPI_Wtime(); for (i = 0; i < g_latency012_reps; i++) { switch (g_proc_loc) { case LEFT_PROCESS: MPI_Send(NULL, 0, MPI_BYTE, p->nbor, 1, MPI_COMM_WORLD); MPI_Recv(NULL, 0, MPI_BYTE, p->nbor, 1, MPI_COMM_WORLD, &status); break; case MIDDLE_PROCESS: MPI_Recv(NULL, 0, MPI_BYTE, p->nbor, 1, MPI_COMM_WORLD, &status); MPI_Send(NULL, 0, MPI_BYTE, p->nbor2, 1, MPI_COMM_WORLD); MPI_Recv(NULL, 0, MPI_BYTE, p->nbor2, 1, MPI_COMM_WORLD, &status); MPI_Send(NULL, 0, MPI_BYTE, p->nbor, 1, MPI_COMM_WORLD); break; case RIGHT_PROCESS: MPI_Recv(NULL, 0, MPI_BYTE, p->nbor, 1, MPI_COMM_WORLD, &status); MPI_Send(NULL, 0, MPI_BYTE, p->nbor, 1, MPI_COMM_WORLD); break; } } latency = (MPI_Wtime() - t0) / (2 * g_latency012_reps); min_latency = MIN(min_latency, latency); } return min_latency; } void SendTime(ArgStruct * p, double *t) { MPI_Send(t, 1, MPI_DOUBLE, p->nbor, 2, MPI_COMM_WORLD); } void RecvTime(ArgStruct * p, double *t) { MPI_Status status; MPI_Recv(t, 1, MPI_DOUBLE, p->nbor, 2, MPI_COMM_WORLD, &status); } void SendReps(ArgStruct * p, int *rpt) { MPI_Send(rpt, 1, MPI_INT, p->nbor, 2, MPI_COMM_WORLD); } void RecvReps(ArgStruct * p, int *rpt) { MPI_Status status; MPI_Recv(rpt, 1, MPI_INT, p->nbor, 2, MPI_COMM_WORLD, &status); } mpi-testsuite-3.2+dfsg/basic/GetOpt.h0000644000175000017500000000147112620254305017017 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #ifndef GETOPT_H #define GETOPT_H #include #include #include #define CLPTSTR const char * #define LPTSTR char * #define LPCTSTR char * #define _tcsicmp strcmp #define _ttoi atoi #define _tcstod(a,b) atof(a) #define stricmp strcmp #define bool int #define true 1 #define false 0 bool GetOpt(int *argc, char ***argv, const char *flag); bool GetOptInt(int *argc, char ***argv, const char *flag, int *n); bool GetOptLong(int *argc, char ***argv, const char *flag, long *n); bool GetOptDouble(int *argc, char ***argv, const char *flag, double *d); bool GetOptString(int *argc, char ***argv, const char *flag, char *str); #endif mpi-testsuite-3.2+dfsg/basic/wtime.c0000644000175000017500000000112512620254305016731 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" int main(int argc, char *argv[]) { int i; double dStart, dFinish, dDuration; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &i); dStart = MPI_Wtime(); MTestSleep(1); dFinish = MPI_Wtime(); dDuration = dFinish - dStart; printf("start:%g\nfinish:%g\nduration:%g\n", dStart, dFinish, dDuration); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/basic/netmpi.c0000644000175000017500000005222512620254305017107 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #ifdef HAVE_WINDOWS_H #include #include #endif #include #include #include "mpi.h" #include "GetOpt.h" #include #ifndef BOOL typedef int BOOL; #endif #ifndef TRUE #define TRUE 1 #endif #ifndef FALSE #define FALSE 0 #endif #define TRIALS 3 #define REPEAT 1000 int g_NSAMP = 250; #define PERT 3 /*#define LATENCYREPS 1000*/ int g_LATENCYREPS = 1000; #define LONGTIME 1e99 #define CHARSIZE 8 #define PATIENCE 50 #define RUNTM 0.25 double g_STOPTM = 0.1; #define MAXINT 2147483647 #define ABS(x) (((x) < 0)?(-(x)):(x)) #define MIN(x, y) (((x) < (y))?(x):(y)) #define MAX(x, y) (((x) > (y))?(x):(y)) int g_nIproc = 0, g_nNproc = 0; typedef struct protocolstruct ProtocolStruct; struct protocolstruct { int nbor, iproc; }; typedef struct argstruct ArgStruct; struct argstruct { /* This is the common information that is needed for all tests */ char *host; /* Name of receiving host */ char *buff; /* Transmitted buffer */ char *buff1; /* Transmitted buffer */ int bufflen, /* Length of transmitted buffer */ tr, /* Transmit flag */ nbuff; /* Number of buffers to transmit */ /* Now we work with a union of information for protocol dependent stuff */ ProtocolStruct prot; /* Structure holding necessary info for TCP */ }; typedef struct data Data; struct data { double t; double bps; double variance; int bits; int repeat; }; double When(void); int Setup(ArgStruct * p); void Sync(ArgStruct * p); void SendData(ArgStruct * p); void RecvData(ArgStruct * p); void SendRecvData(ArgStruct * p); void SendTime(ArgStruct * p, double *t, int *rpt); void RecvTime(ArgStruct * p, double *t, int *rpt); int Establish(ArgStruct * p); int CleanUp(ArgStruct * p); double TestLatency(ArgStruct * p); double TestSyncTime(ArgStruct * p); void PrintOptions(void); int DetermineLatencyReps(ArgStruct * p); void PrintOptions() { printf("\n"); printf("Usage: netpipe flags\n"); printf(" flags:\n"); printf(" -reps #iterations\n"); printf(" -time stop_time\n"); printf(" -start initial_msg_size\n"); printf(" -end final_msg_size\n"); printf(" -out outputfile\n"); printf(" -nocache\n"); printf(" -headtohead\n"); printf(" -pert\n"); printf(" -noprint\n"); printf(" -onebuffer largest_buffer_size\n"); printf("Requires exactly two processes\n"); printf("\n"); } int main(int argc, char *argv[]) { FILE *out = 0; /* Output data file */ char s[255]; /* Generic string */ char *memtmp; char *memtmp1; int i, j, n, nq, /* Loop indices */ bufoffset = 0, /* Align buffer to this */ bufalign = 16 * 1024, /* Boundary to align buffer to */ nrepeat, /* Number of time to do the transmission */ nzero = 0, len, /* Number of bytes to be transmitted */ inc = 1, /* Increment value */ detailflag = 0, /* Set to examine the signature curve detail */ pert, /* Perturbation value */ ipert, /* index of the perturbation loop */ start = 0, /* Starting value for signature curve */ end = MAXINT, /* Ending value for signature curve */ streamopt = 0, /* Streaming mode flag */ printopt = 1; /* Debug print statements flag */ int one_buffer = 0; int onebuffersize = 100 * 1024 * 1024; int quit = 0; ArgStruct args; /* Argumentsfor all the calls */ double t, t0, t1, t2, /* Time variables */ tlast, /* Time for the last transmission */ tzero = 0, latency, /* Network message latency */ synctime; /* Network synchronization time */ Data *bwdata; /* Bandwidth curve data */ BOOL bNoCache = FALSE; BOOL bHeadToHead = FALSE; BOOL bSavePert = FALSE; BOOL bUseMegaBytes = FALSE; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &g_nNproc); MPI_Comm_rank(MPI_COMM_WORLD, &g_nIproc); if (g_nNproc != 2) { if (g_nIproc == 0) PrintOptions(); MPI_Finalize(); exit(0); } GetOptDouble(&argc, &argv, "-time", &g_STOPTM); GetOptInt(&argc, &argv, "-reps", &g_NSAMP); GetOptInt(&argc, &argv, "-start", &start); GetOptInt(&argc, &argv, "-end", &end); one_buffer = GetOptInt(&argc, &argv, "-onebuffer", &onebuffersize); if (one_buffer) { if (onebuffersize < 1) { one_buffer = 0; } else { onebuffersize += bufalign; } } bNoCache = GetOpt(&argc, &argv, "-nocache"); bHeadToHead = GetOpt(&argc, &argv, "-headtohead"); bUseMegaBytes = GetOpt(&argc, &argv, "-mb"); if (GetOpt(&argc, &argv, "-noprint")) printopt = 0; bSavePert = GetOpt(&argc, &argv, "-pert"); bwdata = malloc((g_NSAMP + 1) * sizeof(Data)); if (g_nIproc == 0) strcpy(s, "Netpipe.out"); GetOptString(&argc, &argv, "-out", s); if (start > end) { fprintf(stdout, "Start MUST be LESS than end\n"); exit(420132); } args.nbuff = TRIALS; Setup(&args); Establish(&args); if (args.tr) { if ((out = fopen(s, "w")) == NULL) { fprintf(stdout, "Can't open %s for output\n", s); exit(1); } } latency = TestLatency(&args); synctime = TestSyncTime(&args); if (args.tr) { SendTime(&args, &latency, &nzero); } else { RecvTime(&args, &latency, &nzero); } if (args.tr && printopt) { printf("Latency: %0.9f\n", latency); fflush(stdout); printf("Sync Time: %0.9f\n", synctime); fflush(stdout); printf("Now starting main loop\n"); fflush(stdout); } tlast = latency; inc = (start > 1 && !detailflag) ? start / 2 : inc; args.bufflen = start; if (one_buffer) { args.buff = (char *) malloc(onebuffersize); args.buff1 = (char *) malloc(onebuffersize); } /* Main loop of benchmark */ for (nq = n = 0, len = start; n < g_NSAMP && tlast < g_STOPTM && len <= end && !quit; len = len + inc, nq++) { if (nq > 2 && !detailflag) inc = ((nq % 2)) ? inc + inc : inc; /* This is a perturbation loop to test nearby values */ for (ipert = 0, pert = (!detailflag && inc > PERT + 1) ? -PERT : 0; pert <= PERT && !quit; ipert++, n++, pert += (!detailflag && inc > PERT + 1) ? PERT : PERT + 1) { /* Calculate howmany times to repeat the experiment. */ if (args.tr) { if (args.bufflen == 0) nrepeat = g_LATENCYREPS; else nrepeat = (int) (MAX((RUNTM / ((double) args.bufflen / (args.bufflen - inc + 1.0) * tlast)), TRIALS)); SendTime(&args, &tzero, &nrepeat); } else { nrepeat = 1; /* Just needs to be greater than zero */ RecvTime(&args, &tzero, &nrepeat); } /* Allocate the buffer */ args.bufflen = len + pert; if (one_buffer) { if (bNoCache) { if (args.bufflen * nrepeat + bufalign > onebuffersize) { fprintf(stdout, "Exceeded user specified buffer size\n"); fflush(stdout); quit = 1; break; } } else { if (args.bufflen + bufalign > onebuffersize) { fprintf(stdout, "Exceeded user specified buffer size\n"); fflush(stdout); quit = 1; break; } } } else { /* printf("allocating %d bytes\n", * args.bufflen * nrepeat + bufalign); */ if (bNoCache) { if ((args.buff = (char *) malloc(args.bufflen * nrepeat + bufalign)) == (char *) NULL) { fprintf(stdout, "Couldn't allocate memory\n"); fflush(stdout); break; } } else { if ((args.buff = (char *) malloc(args.bufflen + bufalign)) == (char *) NULL) { fprintf(stdout, "Couldn't allocate memory\n"); fflush(stdout); break; } } /* if ((args.buff1 = (char *)malloc(args.bufflen * nrepeat + bufalign)) == (char *)NULL) */ if ((args.buff1 = (char *) malloc(args.bufflen + bufalign)) == (char *) NULL) { fprintf(stdout, "Couldn't allocate memory\n"); fflush(stdout); break; } } /* Possibly align the data buffer */ memtmp = args.buff; memtmp1 = args.buff1; if (!bNoCache) { if (bufalign != 0) { args.buff += (bufalign - ((MPI_Aint) args.buff % bufalign) + bufoffset) % bufalign; /* args.buff1 += (bufalign - ((MPI_Aint)args.buff1 % bufalign) + bufoffset) % bufalign; */ } } args.buff1 += (bufalign - ((MPI_Aint) args.buff1 % bufalign) + bufoffset) % bufalign; if (args.tr && printopt) { fprintf(stdout, "%3d: %9d bytes %4d times --> ", n, args.bufflen, nrepeat); fflush(stdout); } /* Finally, we get to transmit or receive and time */ if (args.tr) { bwdata[n].t = LONGTIME; t2 = t1 = 0; for (i = 0; i < TRIALS; i++) { if (bNoCache) { if (bufalign != 0) { args.buff = memtmp + ((bufalign - ((MPI_Aint) args.buff % bufalign) + bufoffset) % bufalign); /* args.buff1 = memtmp1 + ((bufalign - ((MPI_Aint)args.buff1 % bufalign) + bufoffset) % bufalign); */ } else { args.buff = memtmp; /* args.buff1 = memtmp1; */ } } Sync(&args); t0 = When(); for (j = 0; j < nrepeat; j++) { if (bHeadToHead) SendRecvData(&args); else { SendData(&args); if (!streamopt) { RecvData(&args); } } if (bNoCache) { args.buff += args.bufflen; /* args.buff1 += args.bufflen; */ } } t = (When() - t0) / ((1 + !streamopt) * nrepeat); if (!streamopt) { t2 += t * t; t1 += t; bwdata[n].t = MIN(bwdata[n].t, t); } } if (!streamopt) SendTime(&args, &bwdata[n].t, &nzero); else RecvTime(&args, &bwdata[n].t, &nzero); if (!streamopt) bwdata[n].variance = t2 / TRIALS - t1 / TRIALS * t1 / TRIALS; } else { bwdata[n].t = LONGTIME; t2 = t1 = 0; for (i = 0; i < TRIALS; i++) { if (bNoCache) { if (bufalign != 0) { args.buff = memtmp + ((bufalign - ((MPI_Aint) args.buff % bufalign) + bufoffset) % bufalign); /* args.buff1 = memtmp1 + ((bufalign - ((MPI_Aint)args.buff1 % bufalign) + bufoffset) % bufalign); */ } else { args.buff = memtmp; /* args.buff1 = memtmp1; */ } } Sync(&args); t0 = When(); for (j = 0; j < nrepeat; j++) { if (bHeadToHead) SendRecvData(&args); else { RecvData(&args); if (!streamopt) SendData(&args); } if (bNoCache) { args.buff += args.bufflen; /* args.buff1 += args.bufflen; */ } } t = (When() - t0) / ((1 + !streamopt) * nrepeat); if (streamopt) { t2 += t * t; t1 += t; bwdata[n].t = MIN(bwdata[n].t, t); } } if (streamopt) SendTime(&args, &bwdata[n].t, &nzero); else RecvTime(&args, &bwdata[n].t, &nzero); if (streamopt) bwdata[n].variance = t2 / TRIALS - t1 / TRIALS * t1 / TRIALS; } tlast = bwdata[n].t; bwdata[n].bits = args.bufflen * CHARSIZE; bwdata[n].bps = bwdata[n].bits / (bwdata[n].t * 1024 * 1024); bwdata[n].repeat = nrepeat; if (args.tr) { if (bSavePert) { /* fprintf(out,"%f\t%f\t%d\t%d\t%f\n", bwdata[n].t, bwdata[n].bps, * bwdata[n].bits, bwdata[n].bits / 8, bwdata[n].variance); */ if (bUseMegaBytes) fprintf(out, "%d\t%f\t%0.9f\n", bwdata[n].bits / 8, bwdata[n].bps / 8, bwdata[n].t); else fprintf(out, "%d\t%f\t%0.9f\n", bwdata[n].bits / 8, bwdata[n].bps, bwdata[n].t); fflush(out); } } if (!one_buffer) { free(memtmp); free(memtmp1); } if (args.tr && printopt) { if (bUseMegaBytes) fprintf(stdout, " %6.2f MBps in %0.9f sec\n", bwdata[n].bps / 8, tlast); else fprintf(stdout, " %6.2f Mbps in %0.9f sec\n", bwdata[n].bps, tlast); fflush(stdout); } } /* End of perturbation loop */ if (!bSavePert && args.tr) { /* if we didn't save all of the perturbation loops, find the max and save it */ int index = 1; double dmax = bwdata[n - 1].bps; for (; ipert > 1; ipert--) { if (bwdata[n - ipert].bps > dmax) { index = ipert; dmax = bwdata[n - ipert].bps; } } if (bUseMegaBytes) fprintf(out, "%d\t%f\t%0.9f\n", bwdata[n - index].bits / 8, bwdata[n - index].bps / 8, bwdata[n - index].t); else fprintf(out, "%d\t%f\t%0.9f\n", bwdata[n - index].bits / 8, bwdata[n - index].bps, bwdata[n - index].t); fflush(out); } } /* End of main loop */ if (args.tr) fclose(out); /* THE_END: */ CleanUp(&args); free(bwdata); return 0; } /* Return the current time in seconds, using a double precision number. */ double When() { return MPI_Wtime(); } int Setup(ArgStruct * p) { int nproc; char s[255]; int len = 255; MPI_Comm_rank(MPI_COMM_WORLD, &p->prot.iproc); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Get_processor_name(s, &len); /*gethostname(s, len); */ printf("%d: %s\n", p->prot.iproc, s); fflush(stdout); if (p->prot.iproc == 0) p->prot.nbor = 1; else p->prot.nbor = 0; if (nproc < 2) { printf("Need two processes\n"); printf("nproc: %i\n", nproc); exit(-2); } if (p->prot.iproc == 0) p->tr = 1; else p->tr = 0; return 1; } void Sync(ArgStruct * p) { char ch; MPI_Status status; if (p->tr) { MPI_Send(&ch, 0, MPI_BYTE, p->prot.nbor, 1, MPI_COMM_WORLD); MPI_Recv(&ch, 0, MPI_BYTE, p->prot.nbor, 1, MPI_COMM_WORLD, &status); MPI_Send(&ch, 0, MPI_BYTE, p->prot.nbor, 1, MPI_COMM_WORLD); } else { MPI_Recv(&ch, 0, MPI_BYTE, p->prot.nbor, 1, MPI_COMM_WORLD, &status); MPI_Send(&ch, 0, MPI_BYTE, p->prot.nbor, 1, MPI_COMM_WORLD); MPI_Recv(&ch, 0, MPI_BYTE, p->prot.nbor, 1, MPI_COMM_WORLD, &status); } } int DetermineLatencyReps(ArgStruct * p) { MPI_Status status; double t0, duration = 0; int reps = 1, prev_reps = 0; int i; /* prime the send/receive pipes */ Sync(p); Sync(p); Sync(p); /* test how long it takes to send n messages * where n = 1, 2, 4, 8, 16, 32, ... */ t0 = When(); t0 = When(); t0 = When(); while ((duration < 1) || (duration < 3 && reps < 1000)) { t0 = When(); for (i = 0; i < reps - prev_reps; i++) { Sync(p); } duration += When() - t0; prev_reps = reps; reps = reps * 2; /* use duration from the root only */ if (p->prot.iproc == 0) MPI_Send(&duration, 1, MPI_DOUBLE, p->prot.nbor, 2, MPI_COMM_WORLD); else MPI_Recv(&duration, 1, MPI_DOUBLE, p->prot.nbor, 2, MPI_COMM_WORLD, &status); } return reps; } double TestLatency(ArgStruct * p) { double latency, t0; int i; g_LATENCYREPS = DetermineLatencyReps(p); if (g_LATENCYREPS < 1024 && p->prot.iproc == 0) { printf("Using %d reps to determine latency\n", g_LATENCYREPS); fflush(stdout); } p->bufflen = 0; p->buff = NULL; /*(char *)malloc(p->bufflen); */ p->buff1 = NULL; /*(char *)malloc(p->bufflen); */ Sync(p); t0 = When(); t0 = When(); t0 = When(); t0 = When(); for (i = 0; i < g_LATENCYREPS; i++) { if (p->tr) { SendData(p); RecvData(p); } else { RecvData(p); SendData(p); } } latency = (When() - t0) / (2 * g_LATENCYREPS); /* * free(p->buff); * free(p->buff1); */ return latency; } double TestSyncTime(ArgStruct * p) { double synctime, t0; int i; t0 = When(); t0 = When(); t0 = When(); t0 = When(); t0 = When(); t0 = When(); for (i = 0; i < g_LATENCYREPS; i++) Sync(p); synctime = (When() - t0) / g_LATENCYREPS; return synctime; } void SendRecvData(ArgStruct * p) { MPI_Status status; /*MPI_Sendrecv(p->buff, p->bufflen, MPI_BYTE, p->prot.nbor, 1, p->buff1, p->bufflen, MPI_BYTE, p->prot.nbor, 1, MPI_COMM_WORLD, &status); */ MPI_Request request; MPI_Irecv(p->buff1, p->bufflen, MPI_BYTE, p->prot.nbor, 1, MPI_COMM_WORLD, &request); MPI_Send(p->buff, p->bufflen, MPI_BYTE, p->prot.nbor, 1, MPI_COMM_WORLD); MPI_Wait(&request, &status); /* * MPI_Send(p->buff, p->bufflen, MPI_BYTE, p->prot.nbor, 1, MPI_COMM_WORLD); * MPI_Recv(p->buff1, p->bufflen, MPI_BYTE, p->prot.nbor, 1, MPI_COMM_WORLD, &status); */ } void SendData(ArgStruct * p) { MPI_Send(p->buff, p->bufflen, MPI_BYTE, p->prot.nbor, 1, MPI_COMM_WORLD); } void RecvData(ArgStruct * p) { MPI_Status status; MPI_Recv(p->buff1, p->bufflen, MPI_BYTE, p->prot.nbor, 1, MPI_COMM_WORLD, &status); } void SendTime(ArgStruct * p, double *t, int *rpt) { if (*rpt > 0) MPI_Send(rpt, 1, MPI_INT, p->prot.nbor, 2, MPI_COMM_WORLD); else MPI_Send(t, 1, MPI_DOUBLE, p->prot.nbor, 2, MPI_COMM_WORLD); } void RecvTime(ArgStruct * p, double *t, int *rpt) { MPI_Status status; if (*rpt > 0) MPI_Recv(rpt, 1, MPI_INT, p->prot.nbor, 2, MPI_COMM_WORLD, &status); else MPI_Recv(t, 1, MPI_DOUBLE, p->prot.nbor, 2, MPI_COMM_WORLD, &status); } int Establish(ArgStruct * p) { return 1; } int CleanUp(ArgStruct * p) { /*MPI_Barrier(MPI_COMM_WORLD); */ MPI_Finalize(); return 1; } mpi-testsuite-3.2+dfsg/manual/0000755000175000017500000000000012621010235015626 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/manual/tchandlers.c0000644000175000017500000000521112620254305020127 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2008 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Define _ISOC99_SOURCE to get snprintf() prototype visible in when it is compiled with --enable-stricttest. */ #define _ISOC99_SOURCE #include #include #include #include #include #include #include #include "connectstuff.h" static char sFnameToDelete[PATH_MAX]; static int sWatchdogTimeout = -1; static size_t sWatchdogStrokeCount = 0; static void *threadLooper(void *x) { int runTime = 0; size_t lastStrokeSeen = sWatchdogStrokeCount; /* allow to run for up to 2 minutes */ while (runTime < sWatchdogTimeout) { safeSleep(5); runTime += 5; if (lastStrokeSeen == sWatchdogStrokeCount) { msg("Watchdog not stroked for a while, printing stack: \n"); printStackTrace(); } lastStrokeSeen = sWatchdogStrokeCount; } msg("Watchdog about to abort with a timeout after %d\n", runTime); _exit(20); return NULL; } static void term_handler(int sig) { msg("removing file: %s\n", sFnameToDelete); unlink(sFnameToDelete); } static void segv_handler(int sig) { msg("SEGV detected!\n"); printStackTrace(); _exit(10); } void indicateConnectSucceeded(void) { char fnameToCreate[PATH_MAX]; FILE *fp; snprintf(fnameToCreate, PATH_MAX, "%s.done", sFnameToDelete); msg("Creating file: %s\n", fnameToCreate); fp = fopen(fnameToCreate, "wt"); if (fp != NULL) { fclose(fp); } } void startWatchdog(int seconds) { pthread_t theThread; sWatchdogTimeout = seconds; msg("Starting watchdog - timeout in %d\n", seconds); pthread_create(&theThread, NULL, threadLooper, NULL); } void strokeWatchdog() { sWatchdogStrokeCount++; } void installSegvHandler(void) { struct sigaction new_action; new_action.sa_handler = segv_handler; sigemptyset(&new_action.sa_mask); new_action.sa_flags = 0; sigaction(SIGSEGV, &new_action, NULL); msg("Installed SEGV handler\n"); } void installExitHandler(const char *fname) { /* Install signal handler */ struct sigaction new_action; if (strlen(fname) > PATH_MAX) { msg("Fname: <%s> too long - aborting", fname); _exit(12); } strncpy(sFnameToDelete, fname, PATH_MAX); new_action.sa_handler = term_handler; sigemptyset(&new_action.sa_mask); new_action.sa_flags = 0; sigaction(SIGINT, &new_action, NULL); sigaction(SIGTERM, &new_action, NULL); msg("Installed signal handlers\n"); } mpi-testsuite-3.2+dfsg/manual/manyconnect.in0000644000175000017500000000344212620254305020506 0ustar mbanckmbanck#! /bin/sh file=`pwd`/test-port prefix="@prefix@" exec_prefix="@exec_prefix@" mpiexec="@bindir@/mpiexec" starter="$mpiexec -n 1" testpgm=testconnect rm -f $file # Default number of processes to start (the test is for large numbers # of processes; use "manyconnect 10" to start with fewer for debugging) nconn=100 # To avoid problems with listner queues, we pause every blockstart # processes blockstart=10 # Print help/usage information if requested if [ "$1" = "-help" -o "$1" = "-usage" ] ; then echo "$0 [ -singleton ] [ nconn [ testprogram ] ]" exit 0 fi if [ "$1" = "-singleton" ] ; then starter=eval shift fi if [ -n "$1" ] ; then nconn=$1 shift fi if [ -n "$1" ] ; then if [ -x "$1" ] ; then testpgm=$1 else echo "Expected to find an executable program; found $1" exit 1 fi shift fi # Make sure that the program is executable if [ ! -x "$testpgm" ] ; then # Try to make it echo "Making $testpgm" make $testpgm if [ $? != 0 ] ; then echo "Failure in make $testpgm" exit 1 fi if [ ! -x "$testpgm" ] ; then echo "The program $testpgm either does not exist or is not executable" exit 1 fi fi # Start one and sleep to avoid problems with two processes opening the # test-port file for writing $starter ./$testpgm $file $nconn 1 & sleep 1 nstarted=2 blockcount=2 while [ $nstarted -lt $nconn ] ; do #echo "Starting $nstarted" $starter ./$testpgm $file $nconn $nstarted & echo "Started process $! (num $nstarted)" nstarted=`expr $nstarted + 1` blockcount=`expr $blockcount + 1` if [ -n "$2" ] ; then sleep $2 elif [ $blockcount -ge $blockstart ] ; then blockcount=0 sleep 1 fi done #echo "Starting $nstarted" $starter ./$testpgm $file $nconn $nstarted wait mpi-testsuite-3.2+dfsg/manual/singjoin.c0000644000175000017500000001553112620254305017626 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2006 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Test of MPI_Comm_join. This should work even when each process * is started as a singleton process. * * To run * * Start the server: * * ./singjoin -s -p 54321 * * In a separate shell, start the client: * * ./singjoin -c -p 54321 * * where "54321" is some available port number. */ /* Include mpitestconf to determine if we can use h_addr or need h_addr_list */ #include "mpitestconf.h" #include #include #include #ifndef HAVE_WINDOWS_H #include #include #include #include #include #include #else #include #endif #include #ifndef HAVE_WINDOWS_H #define SOCKET_FD_TYPE int #define INVALID_SOCKET_FD -1 #else #define SOCKET_FD_TYPE SOCKET #define INVALID_SOCKET_FD INVALID_SOCKET #define bcopy(s1, s2, n) memmove(s2, s1, n) #endif int parse_args(int argc, char **argv); void usage(char *name); SOCKET_FD_TYPE server_routine(int portnum); SOCKET_FD_TYPE client_routine(int portnum); int is_server = 0; int is_client = 0; int opt_port = 0; /* open a socket, establish a connection with a client, and return the fd */ SOCKET_FD_TYPE server_routine(int portnum) { SOCKET_FD_TYPE listenfd, peer_fd; int ret, peer_addr_size; struct sockaddr_in server_addr, peer_addr; listenfd = socket(AF_INET, SOCK_STREAM, 0); if (listenfd == INVALID_SOCKET_FD) { perror("server socket"); return -1; } memset(&server_addr, 0, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = INADDR_ANY; server_addr.sin_port = htons(portnum); ret = bind(listenfd, (struct sockaddr *) &server_addr, sizeof(server_addr)); if (ret < 0) { perror("server binding"); return -1; } ret = listen(listenfd, 1024); if (ret < 0) { perror("server listen"); return -1; } peer_addr_size = sizeof(peer_addr); peer_fd = accept(listenfd, (struct sockaddr *) &peer_addr, &peer_addr_size); if (peer_fd < 0) { perror("server accept"); return -1; } return peer_fd; } /* open a socket, establish a connection with a server, and return the fd */ SOCKET_FD_TYPE client_routine(int portnum) { SOCKET_FD_TYPE sockfd; struct sockaddr_in server_addr; struct hostent *server_ent; char hostname[MPI_MAX_PROCESSOR_NAME]; int hostnamelen; sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd == INVALID_SOCKET_FD) { perror("client socket"); return -1; } /* Try to get the processor name from MPI */ MPI_Get_processor_name(hostname, &hostnamelen); server_ent = gethostbyname(hostname); if (server_ent == NULL) { fprintf(stderr, "gethostbyname fails\n"); return -1; } memset(&server_addr, 0, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(portnum); /* POSIX might define h_addr_list only and not define h_addr */ #ifdef HAVE_H_ADDR_LIST bcopy(server_ent->h_addr_list[0], (char *) &server_addr.sin_addr.s_addr, server_ent->h_length); #else bcopy(server_ent->h_addr, (char *) &server_addr.sin_addr.s_addr, server_ent->h_length); #endif if (connect(sockfd, (struct sockaddr *) &server_addr, sizeof(server_addr)) < 0) { perror("client connect"); return -1; } return sockfd; } void usage(char *name) { fprintf(stderr, "usage: %s [-s|-c] -p \n", name); fprintf(stderr, " specify one and only one of -s or -c\n"); fprintf(stderr, " port is mandatory\n"); } #ifdef HAVE_WINDOWS_H static int get_option(int argc, char **argv, int arg_cnt) { if (argv == NULL) { return -1; } if (*argv == NULL) { return -1; } if (arg_cnt < 0 || arg_cnt >= argc) { return -1; } if (strlen(argv[arg_cnt]) < 2) { return -1; } return (*(argv[arg_cnt] + 1)); } #endif int parse_args(int argc, char **argv) { #ifndef HAVE_WINDOWS_H int c; extern char *optarg; while ((c = getopt(argc, argv, "csp:")) != -1) { switch (c) { case 's': is_server = 1; break; case 'c': is_client = 1; break; case 'p': opt_port = atoi(optarg); break; case '?': case ':': default: usage(argv[0]); return -1; } } if ((is_client == 0) && (is_server == 0)) { usage(argv[0]); return -1; } if (opt_port == 0) { usage(argv[0]); return -1; } return 0; #else int arg_cnt = 1; int c; while ((c = get_option(argc, argv, arg_cnt++)) > 0) { switch (c) { case 's': is_server = 1; break; case 'c': is_client = 1; break; case 'p': opt_port = atoi(argv[arg_cnt++]); break; default: usage(argv[0]); return -1; } } if ((is_client == 0) && (is_server == 0)) { usage(argv[0]); return -1; } if (opt_port == 0) { usage(argv[0]); return -1; } return 0; #endif } int main(int argc, char **argv) { int rank, size; SOCKET_FD_TYPE fd = INVALID_SOCKET_FD; MPI_Comm intercomm, intracomm; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); if (size != 1) { fprintf(stderr, "This test requires that only one process be in each comm_world\n"); MPI_Abort(MPI_COMM_WORLD, 1); } if (parse_args(argc, argv) == -1) { fprintf(stderr, "Unable to parse the command line arguments\n"); MPI_Abort(MPI_COMM_WORLD, 1); } if (is_server) { fd = server_routine(opt_port); } else if (is_client) { fd = client_routine(opt_port); } if (fd == INVALID_SOCKET_FD) { return -1; } #ifdef SINGLETON_KICK /* #warning isn't standard C, so we comment out this directive */ /* #warning using singleton workaround */ { int *usize, aflag; MPI_Comm_get_attr(MPI_COMM_WORLD, MPI_UNIVERSE_SIZE, &usize, &aflag); } #endif MPI_Comm_join(fd, &intercomm); if (is_server) { MPI_Send(MPI_BOTTOM, 0, MPI_INT, 0, 0, intercomm); } else { MPI_Recv(MPI_BOTTOM, 0, MPI_INT, 0, 0, intercomm, MPI_STATUS_IGNORE); printf("Completed receive on intercomm\n"); fflush(stdout); } MPI_Intercomm_merge(intercomm, 0, &intracomm); MPI_Comm_rank(intracomm, &rank); MPI_Comm_size(intracomm, &size); printf("[%d/%d] after Intercomm_merge\n", rank, size); MPI_Comm_free(&intracomm); MPI_Comm_disconnect(&intercomm); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/manual/Makefile.in0000644000175000017500000006706212621010235017706 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = singjoin$(EXEEXT) testconnect$(EXEEXT) \ testconnectserial$(EXEEXT) dimsbalanced$(EXEEXT) \ spawntest_master$(EXEEXT) spawntest_child$(EXEEXT) \ segfault$(EXEEXT) subdir = manual ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = manyconnect CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) dimsbalanced_SOURCES = dimsbalanced.c dimsbalanced_OBJECTS = dimsbalanced.$(OBJEXT) dimsbalanced_LDADD = $(LDADD) dimsbalanced_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o segfault_SOURCES = segfault.c segfault_OBJECTS = segfault.$(OBJEXT) segfault_LDADD = $(LDADD) segfault_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o singjoin_SOURCES = singjoin.c singjoin_OBJECTS = singjoin.$(OBJEXT) singjoin_DEPENDENCIES = $(LDADD) spawntest_child_SOURCES = spawntest_child.c spawntest_child_OBJECTS = spawntest_child.$(OBJEXT) spawntest_child_LDADD = $(LDADD) spawntest_child_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o spawntest_master_SOURCES = spawntest_master.c spawntest_master_OBJECTS = spawntest_master.$(OBJEXT) spawntest_master_LDADD = $(LDADD) spawntest_master_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o testconnect_SOURCES = testconnect.c testconnect_OBJECTS = testconnect.$(OBJEXT) testconnect_LDADD = $(LDADD) testconnect_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_testconnectserial_OBJECTS = testconnectserial.$(OBJEXT) \ tchandlers.$(OBJEXT) tcutil.$(OBJEXT) testconnectserial_OBJECTS = $(am_testconnectserial_OBJECTS) testconnectserial_DEPENDENCIES = $(LDADD) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = dimsbalanced.c segfault.c singjoin.c spawntest_child.c \ spawntest_master.c testconnect.c $(testconnectserial_SOURCES) DIST_SOURCES = dimsbalanced.c segfault.c singjoin.c spawntest_child.c \ spawntest_master.c testconnect.c $(testconnectserial_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/manyconnect.in \ $(top_srcdir)/Makefile.mtest $(top_srcdir)/confdb/depcomp \ README DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml test-port SUBDIRS = mpi_t # testconnectserial would like MPICHLIBSTR to be defined as the installation # directory of the MPI library. This definition is not required. noinst_HEADERS = connectstuff.h testconnectserial_SOURCES = testconnectserial.c tchandlers.c tcutil.c testconnectserial_LDADD = $(LDADD) -lm -lpthread singjoin_LDADD = $(LDADD) @socklib@ @nslib@ all: all-recursive .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign manual/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign manual/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): manyconnect: $(top_builddir)/config.status $(srcdir)/manyconnect.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) dimsbalanced$(EXEEXT): $(dimsbalanced_OBJECTS) $(dimsbalanced_DEPENDENCIES) $(EXTRA_dimsbalanced_DEPENDENCIES) @rm -f dimsbalanced$(EXEEXT) $(AM_V_CCLD)$(LINK) $(dimsbalanced_OBJECTS) $(dimsbalanced_LDADD) $(LIBS) segfault$(EXEEXT): $(segfault_OBJECTS) $(segfault_DEPENDENCIES) $(EXTRA_segfault_DEPENDENCIES) @rm -f segfault$(EXEEXT) $(AM_V_CCLD)$(LINK) $(segfault_OBJECTS) $(segfault_LDADD) $(LIBS) singjoin$(EXEEXT): $(singjoin_OBJECTS) $(singjoin_DEPENDENCIES) $(EXTRA_singjoin_DEPENDENCIES) @rm -f singjoin$(EXEEXT) $(AM_V_CCLD)$(LINK) $(singjoin_OBJECTS) $(singjoin_LDADD) $(LIBS) spawntest_child$(EXEEXT): $(spawntest_child_OBJECTS) $(spawntest_child_DEPENDENCIES) $(EXTRA_spawntest_child_DEPENDENCIES) @rm -f spawntest_child$(EXEEXT) $(AM_V_CCLD)$(LINK) $(spawntest_child_OBJECTS) $(spawntest_child_LDADD) $(LIBS) spawntest_master$(EXEEXT): $(spawntest_master_OBJECTS) $(spawntest_master_DEPENDENCIES) $(EXTRA_spawntest_master_DEPENDENCIES) @rm -f spawntest_master$(EXEEXT) $(AM_V_CCLD)$(LINK) $(spawntest_master_OBJECTS) $(spawntest_master_LDADD) $(LIBS) testconnect$(EXEEXT): $(testconnect_OBJECTS) $(testconnect_DEPENDENCIES) $(EXTRA_testconnect_DEPENDENCIES) @rm -f testconnect$(EXEEXT) $(AM_V_CCLD)$(LINK) $(testconnect_OBJECTS) $(testconnect_LDADD) $(LIBS) testconnectserial$(EXEEXT): $(testconnectserial_OBJECTS) $(testconnectserial_DEPENDENCIES) $(EXTRA_testconnectserial_DEPENDENCIES) @rm -f testconnectserial$(EXEEXT) $(AM_V_CCLD)$(LINK) $(testconnectserial_OBJECTS) $(testconnectserial_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dimsbalanced.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/segfault.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/singjoin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spawntest_child.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spawntest_master.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tchandlers.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tcutil.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testconnect.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testconnectserial.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(PROGRAMS) $(HEADERS) installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-noinstPROGRAMS \ cscopelist-am ctags ctags-am distclean distclean-compile \ distclean-generic distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/manual/testconnect.c0000644000175000017500000000654212620254305020341 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2008 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Test from Edric Ellis To launch, Run multiple copies of "testconnect" should be run something like this: Path/to/testconnect /full/path/to/shared/file N where each instance has one process and N instances are run */ #include "mpi.h" #include #include #include #include char *fname; int cachedRank = -1; MPI_Comm comm; void term_handler(int); void segv_handler(int); void term_handler(int sig) { if (sig) { printf("Saw signal %d\n", sig); } printf("removing file: %s\n", fname); fflush(stdout); unlink(fname); if (sig != 0) { MPI_Abort(comm, 42); exit(0); } } void segv_handler(int sig) { printf("SEGV detected!\n"); fflush(stdout); } int main(int argc, char **argv) { MPI_Comm tmp; int size = 0; char portName[MPI_MAX_PORT_NAME]; char *port = &portName[0]; int doPrint = 1; int totalSize = 0; int myNum = -1; FILE *fh; if (argc < 4) { printf("Please call with a filename for the port\n"); exit(1); } fname = argv[1]; totalSize = atoi(argv[2]); if (argv[3]) myNum = atoi(argv[3]); printf("[%d] Waiting for: %d\n", myNum, totalSize); MPI_Init(0, 0); /* the existance of the file is used to decide which processes * first do a connect to the root process. */ fh = fopen(fname, "rt"); if (fh == NULL) { fh = fopen(fname, "wt"); MPI_Open_port(MPI_INFO_NULL, portName); port = portName; fprintf(fh, "%s\n", portName); fclose(fh); if (doPrint) { printf("[%d] Wrote port %s to %s\n", myNum, port, fname); fflush(stdout); } comm = MPI_COMM_WORLD; } else { char *cerr; cerr = fgets(port, MPI_MAX_PORT_NAME, fh); fclose(fh); if (doPrint) { printf("[%d] about to connect: Port from %s is: %s\n", myNum, fname, port); fflush(stdout); } MPI_Comm_connect(port, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &tmp); if (doPrint) { printf("[%d] connect-side: about to perform intercomm merge\n", myNum); fflush(stdout); } MPI_Intercomm_merge(tmp, 1, &comm); if (doPrint) { printf("[%d] connect-side: intercomm merge complete\n", myNum); fflush(stdout); } MPI_Comm_free(&tmp); } MPI_Comm_size(comm, &size); while (size < totalSize) { MPI_Comm_accept(port, MPI_INFO_NULL, 0, comm, &tmp); if (doPrint) { printf("[%d] accept-side: about to perform intercomm merge\n", myNum); fflush(stdout); } MPI_Intercomm_merge(tmp, 0, &comm); if (doPrint) { printf("[%d] accept-side: about to perform intercomm merge\n", myNum); fflush(stdout); } MPI_Comm_rank(comm, &cachedRank); MPI_Comm_free(&tmp); MPI_Comm_size(comm, &size); if (doPrint) { printf("[%d] Size of comm is %d\n", myNum, size); fflush(stdout); } } printf("[%d] All done.\n", myNum); fflush(stdout); term_handler(0); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/manual/dimsbalanced.c0000644000175000017500000000420212620254305020405 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2008 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* This is a simple test program to see how well balanced the output from MPI_Dims_create is. This test can be run with a single process and does not need mpiexec. There is no standard result. Instead, the output should be examined to see if the results are acceptable. For example, make sure that Dims_create of 2*2*2 in three dimensions returns 2,2,2 (and not 1,1,8). */ #include "mpi.h" #include static int verbose = 1; int main(int argc, char *argv[]) { int i, j, dims[3], size; MPI_Init(&argc, &argv); for (i = 2; i < 12; i++) { for (j = 0; j < 2; j++) dims[j] = 0; MPI_Dims_create(i * i, 2, dims); if (verbose) printf("Dims_create(%d,2) = (%d,%d)\n", i * i, dims[0], dims[1]); for (j = 0; j < 3; j++) dims[j] = 0; MPI_Dims_create(i * i * i, 3, dims); if (verbose) printf("Dims_create(%d,3) = (%d,%d,%d)\n", i * i * i, dims[0], dims[1], dims[2]); } size = 2 * 5 * 7 * 11; for (j = 0; j < 3; j++) dims[j] = 0; MPI_Dims_create(size, 2, dims); if (verbose) printf("Dims_create(%d,2) = (%d,%d)\n", size, dims[0], dims[1]); for (j = 0; j < 3; j++) dims[j] = 0; MPI_Dims_create(size, 3, dims); if (verbose) printf("Dims_create(%d,3) = (%d,%d,%d)\n", size, dims[0], dims[1], dims[2]); size = 5 * 5 * 2 * 7 * 7 * 7; for (j = 0; j < 3; j++) dims[j] = 0; MPI_Dims_create(size, 2, dims); if (verbose) printf("Dims_create(%d,2) = (%d,%d)\n", size, dims[0], dims[1]); for (j = 0; j < 3; j++) dims[j] = 0; MPI_Dims_create(size, 3, dims); if (verbose) printf("Dims_create(%d,3) = (%d,%d,%d)\n", size, dims[0], dims[1], dims[2]); size = 12; for (j = 0; j < 3; j++) dims[j] = 0; MPI_Dims_create(size, 2, dims); if (verbose) printf("Dims_create(%d,2) = (%d,%d)\n", size, dims[0], dims[1]); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/manual/Makefile.am0000644000175000017500000000130112620254305017664 0ustar mbanckmbanck## -*- Mode: Makefile; -*- ## vim: set ft=automake : ## ## (C) 2011 by Argonne National Laboratory. ## See COPYRIGHT in top-level directory. ## include $(top_srcdir)/Makefile.mtest SUBDIRS = mpi_t noinst_PROGRAMS = singjoin testconnect testconnectserial dimsbalanced \ spawntest_master spawntest_child segfault # testconnectserial would like MPICHLIBSTR to be defined as the installation # directory of the MPI library. This definition is not required. noinst_HEADERS = connectstuff.h testconnectserial_SOURCES = testconnectserial.c tchandlers.c tcutil.c testconnectserial_LDADD = $(LDADD) -lm -lpthread singjoin_LDADD = $(LDADD) @socklib@ @nslib@ CLEANFILES += test-port mpi-testsuite-3.2+dfsg/manual/testconnectserial.c0000644000175000017500000000774712620254305021551 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2008 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include #include #include #include #include #include "mpitest.h" #include "connectstuff.h" int main(int argc, char **argv) { MPI_Comm tmp, comm, startComm; char *fname; char *actualFname = NULL; char *globalFname = NULL; int totalSize, expectedRank, size, cachedRank; char portName[MPI_MAX_PORT_NAME]; int rankToAccept = 1; /* Debug - print out where we picked up the MPICH build from */ #ifdef MPICHLIBSTR msg("MPICH library taken from: %s\n", MPICHLIBSTR); #endif if (argc != 4) { printf("Usage: %s \n", argv[0]); exit(1); } /* This is the base name of the file into which we write the port */ fname = argv[1]; /* This is the total number of processes launched */ totalSize = atoi(argv[2]); /* Each process knows its expected rank */ expectedRank = atoi(argv[3]) - 1; /* Start a watchdog thread which will abort after 120 seconds, and will * print stack traces using GDB every 5 seconds if you don't call * strokeWatchdog() */ startWatchdog(120); /* Print a debug header */ msg("Waiting for: %d - my rank is %d\n", totalSize, expectedRank); /* Singleton init */ MPI_Init(0, 0); /* Duplicate from MPI_COMM_SELF the starting point */ MPI_Comm_dup(MPI_COMM_SELF, &startComm); if (expectedRank == 0) { /* This process opens the port, and writes the information to the file */ MPI_Open_port(MPI_INFO_NULL, portName); /* Write the port to fname. so that the connecting processes can * wait their turn by checking for the correct file to show up */ actualFname = writePortToFile(portName, "%s.%d", fname, rankToAccept++); /* The wrapper script I'm using checks for the existance of "fname", so * create that - even though it isn't used */ globalFname = writePortToFile(portName, fname); installExitHandler(globalFname); comm = startComm; } else { char *readPort; readPort = getPortFromFile("%s.%d", fname, expectedRank); strncpy(portName, readPort, MPI_MAX_PORT_NAME); free(readPort); msg("Read port <%s>\n", portName); MPI_Comm_connect(portName, MPI_INFO_NULL, 0, startComm, &comm); MPI_Intercomm_merge(comm, 1, &tmp); comm = tmp; MPI_Comm_size(comm, &size); msg("After my first merge, size is now: %d\n", size); } while (size < totalSize) { /* Make sure we don't print a stack until we stall */ strokeWatchdog(); /* Accept the connection */ MPI_Comm_accept(portName, MPI_INFO_NULL, 0, comm, &tmp); /* Merge into intracomm */ MPI_Intercomm_merge(tmp, 0, &comm); /* Free the intercomm */ MPI_Comm_free(&tmp); /* See where we're up to */ MPI_Comm_rank(comm, &cachedRank); MPI_Comm_size(comm, &size); if (expectedRank == 0) { msg("Up to size: %d\n", size); /* Delete the old file, create the new one */ unlink(actualFname); free(actualFname); /* Allow the next rank to connect */ actualFname = writePortToFile(portName, "%s.%d", fname, rankToAccept++); } } MPI_Comm_rank(comm, &cachedRank); msg("All done - I got rank: %d.\n", cachedRank); MPI_Barrier(comm); if (expectedRank == 0) { /* Cleanup on rank zero - delete some files */ MTestSleep(4); unlink(actualFname); free(actualFname); unlink(globalFname); free(globalFname); /* This lets my wrapper script know that we did everything correctly */ indicateConnectSucceeded(); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/manual/mpi_t/0000755000175000017500000000000012621010235016736 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/manual/mpi_t/Makefile.in0000644000175000017500000005334312621010235021013 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = mpit_test$(EXEEXT) mpit_test2$(EXEEXT) \ $(am__EXEEXT_1) subdir = manual/mpi_t ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__EXEEXT_1 = nem_fbox_fallback_to_queue_count$(EXEEXT) \ unexpected_recvq_buffer_size$(EXEEXT) PROGRAMS = $(noinst_PROGRAMS) mpit_test_SOURCES = mpit_test.c mpit_test_OBJECTS = mpit_test.$(OBJEXT) mpit_test_LDADD = $(LDADD) mpit_test_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o mpit_test2_SOURCES = mpit_test2.c mpit_test2_OBJECTS = mpit_test2.$(OBJEXT) mpit_test2_LDADD = $(LDADD) mpit_test2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o nem_fbox_fallback_to_queue_count_SOURCES = \ nem_fbox_fallback_to_queue_count.c nem_fbox_fallback_to_queue_count_OBJECTS = \ nem_fbox_fallback_to_queue_count.$(OBJEXT) nem_fbox_fallback_to_queue_count_LDADD = $(LDADD) nem_fbox_fallback_to_queue_count_DEPENDENCIES = \ $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o unexpected_recvq_buffer_size_SOURCES = unexpected_recvq_buffer_size.c unexpected_recvq_buffer_size_OBJECTS = \ unexpected_recvq_buffer_size.$(OBJEXT) unexpected_recvq_buffer_size_LDADD = $(LDADD) unexpected_recvq_buffer_size_DEPENDENCIES = \ $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = mpit_test.c mpit_test2.c nem_fbox_fallback_to_queue_count.c \ unexpected_recvq_buffer_size.c DIST_SOURCES = mpit_test.c mpit_test2.c \ nem_fbox_fallback_to_queue_count.c \ unexpected_recvq_buffer_size.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.mtest \ $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml # these tests are specific to the MPICH ch3:nemesis implementation of nemesis nemesis_tests = nem_fbox_fallback_to_queue_count \ unexpected_recvq_buffer_size all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign manual/mpi_t/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign manual/mpi_t/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) mpit_test$(EXEEXT): $(mpit_test_OBJECTS) $(mpit_test_DEPENDENCIES) $(EXTRA_mpit_test_DEPENDENCIES) @rm -f mpit_test$(EXEEXT) $(AM_V_CCLD)$(LINK) $(mpit_test_OBJECTS) $(mpit_test_LDADD) $(LIBS) mpit_test2$(EXEEXT): $(mpit_test2_OBJECTS) $(mpit_test2_DEPENDENCIES) $(EXTRA_mpit_test2_DEPENDENCIES) @rm -f mpit_test2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(mpit_test2_OBJECTS) $(mpit_test2_LDADD) $(LIBS) nem_fbox_fallback_to_queue_count$(EXEEXT): $(nem_fbox_fallback_to_queue_count_OBJECTS) $(nem_fbox_fallback_to_queue_count_DEPENDENCIES) $(EXTRA_nem_fbox_fallback_to_queue_count_DEPENDENCIES) @rm -f nem_fbox_fallback_to_queue_count$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nem_fbox_fallback_to_queue_count_OBJECTS) $(nem_fbox_fallback_to_queue_count_LDADD) $(LIBS) unexpected_recvq_buffer_size$(EXEEXT): $(unexpected_recvq_buffer_size_OBJECTS) $(unexpected_recvq_buffer_size_DEPENDENCIES) $(EXTRA_unexpected_recvq_buffer_size_DEPENDENCIES) @rm -f unexpected_recvq_buffer_size$(EXEEXT) $(AM_V_CCLD)$(LINK) $(unexpected_recvq_buffer_size_OBJECTS) $(unexpected_recvq_buffer_size_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpit_test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpit_test2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nem_fbox_fallback_to_queue_count.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unexpected_recvq_buffer_size.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/manual/mpi_t/mpit_test.c0000644000175000017500000000647712620254305021137 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2011 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* A simple test of the proposed MPI_T_ interface that queries all of * the control variables exposed by the MPI implememtation and prints * them to stdout. * * Author: Dave Goodell #include #include #include #include "mpitestconf.h" #if !defined(USE_STRICT_MPI) && defined(MPICH) int main(int argc, char **argv) { int i; int num; int rank, size; /*#define STR_SZ (15)*/ #define STR_SZ (50) int name_len = STR_SZ; char name[STR_SZ] = ""; int desc_len = STR_SZ; char desc[STR_SZ] = ""; int verb; MPI_Datatype dtype; int count; int bind; int scope; int provided; int initialize_mpi = 0; MPI_T_cvar_handle handle; MPI_T_enum enumtype; provided = 0xdeadbeef; MPI_T_init_thread(MPI_THREAD_SINGLE, &provided); assert(provided != 0xdeadbeef); if (initialize_mpi) { MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); } num = 0xdeadbeef; MPI_T_cvar_get_num(&num); printf("get_num=%d\n", num); assert(num != 0xdeadbeef); for (i = 0; i < num; ++i) { name_len = desc_len = STR_SZ; MPI_T_cvar_get_info(i, name, &name_len, &verb, &dtype, &enumtype, desc, &desc_len, &bind, &scope); printf("index=%d\n", i); printf("--> name='%s' name_len=%d desc='%s' desc_len=%d\n", name, name_len, desc, desc_len); printf("--> verb=%d dtype=%#x bind=%d scope=%d\n", verb, dtype, bind, scope); MPI_T_cvar_handle_alloc(i, NULL, &handle, &count); printf("--> handle allocated: handle=%p count=%d\n", handle, count); if (dtype == MPI_INT) { int val = 0xdeadbeef; MPI_T_cvar_read(handle, &val); printf("--> val=%d\n", val); ++val; MPI_T_cvar_write(handle, &val); val = 0xdeadbeef; MPI_T_cvar_read(handle, &val); printf("--> incremented val=%d\n", val); } else if (dtype == MPI_DOUBLE) { double val = NAN; MPI_T_cvar_read(handle, &val); printf("--> val=%f\n", val); val *= 2.0; MPI_T_cvar_write(handle, &val); val = NAN; MPI_T_cvar_read(handle, &val); printf("--> doubled val=%f\n", val); } else if (dtype == MPI_CHAR) { char *str = malloc(count + 1); MPI_T_cvar_read(handle, str); printf("--> str='%s'\n", str); /* just write the string back unmodified for now */ MPI_T_cvar_write(handle, str); MPI_T_cvar_read(handle, str); printf("--> written-then-read str='%s'\n", str); } MPI_T_cvar_handle_free(&handle); printf("\n"); } if (initialize_mpi) { MPI_Finalize(); } MPI_T_finalize(); return 0; } #else /* Simple null program to allow building this file with non-MPICH implementations */ int main(int argc, char **argv) { MPI_Init(&argc, &argv); printf(" No Errors\n"); MPI_Finalize(); return 0; } #endif mpi-testsuite-3.2+dfsg/manual/mpi_t/mpit_test2.c0000644000175000017500000001540712620254305021212 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2011 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* A simple test of the proposed MPI_T_ interface that assumes the * presence of two performance variables: "posted_recvq_length" and * "unexpected_recvq_length". Some information about these variables * is printed to stdout and then a few messages are sent/received to * show that theses variables are reporting useful information. * * Author: Dave Goodell #include #include #include #include #include "mpitestconf.h" #if !defined(USE_STRICT_MPI) && defined(MPICH) static int posted_qlen, unexpected_qlen; static MPI_Aint posted_queue_match_attempts, unexpected_queue_match_attempts; static MPI_T_pvar_handle pq_handle, uq_handle, pqm_handle, uqm_handle; static MPI_T_pvar_session session; static void print_vars(int idx) { MPI_T_pvar_read(session, pq_handle, &posted_qlen); MPI_T_pvar_read(session, uq_handle, &unexpected_qlen); MPI_T_pvar_read(session, pqm_handle, &posted_queue_match_attempts); MPI_T_pvar_read(session, uqm_handle, &unexpected_queue_match_attempts); printf("(%d) posted_qlen=%d unexpected_qlen=%d ", idx, posted_qlen, unexpected_qlen); printf("posted_queue_match_attempts=%lu unexpected_queue_match_attempts=%lu\n", posted_queue_match_attempts, unexpected_queue_match_attempts); } int main(int argc, char **argv) { int i; int num; int rank, size; /*#define STR_SZ (15)*/ #define STR_SZ (50) int name_len = STR_SZ; char name[STR_SZ] = ""; int desc_len = STR_SZ; char desc[STR_SZ] = ""; int verb; MPI_Datatype dtype; int count; int bind; int varclass; int readonly, continuous, atomic; int provided; MPI_T_enum enumtype; int pq_idx = -1, uq_idx = -1, pqm_idx = -1, uqm_idx = -1; int pqm_writable = -1, uqm_writable = -1; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); provided = 0xdeadbeef; MPI_T_init_thread(MPI_THREAD_SINGLE, &provided); assert(provided != 0xdeadbeef); num = 0xdeadbeef; MPI_T_pvar_get_num(&num); printf("get_num=%d\n", num); assert(num != 0xdeadbeef); for (i = 0; i < num; ++i) { name_len = desc_len = STR_SZ; MPI_T_pvar_get_info(i, name, &name_len, &verb, &varclass, &dtype, &enumtype, desc, &desc_len, &bind, &readonly, &continuous, &atomic); printf("index=%d\n", i); printf("--> name='%s' name_len=%d desc='%s' desc_len=%d\n", name, name_len, desc, desc_len); printf("--> verb=%d varclass=%d dtype=%#x bind=%d readonly=%d continuous=%d atomic=%d\n", verb, varclass, dtype, bind, readonly, continuous, atomic); if (0 == strcmp(name, "posted_recvq_length")) { pq_idx = i; } else if (0 == strcmp(name, "unexpected_recvq_length")) { uq_idx = i; } else if (0 == strcmp(name, "posted_recvq_match_attempts")) { pqm_idx = i; pqm_writable = !readonly; } else if (0 == strcmp(name, "unexpected_recvq_match_attempts")) { uqm_idx = i; uqm_writable = !readonly; } } printf("pq_idx=%d uq_idx=%d pqm_idx=%d uqm_idx=%d\n", pq_idx, uq_idx, pqm_idx, uqm_idx); /* setup a session and handles for the PQ and UQ length variables */ session = MPI_T_PVAR_SESSION_NULL; MPI_T_pvar_session_create(&session); assert(session != MPI_T_PVAR_SESSION_NULL); pq_handle = MPI_T_PVAR_HANDLE_NULL; MPI_T_pvar_handle_alloc(session, pq_idx, NULL, &pq_handle, &count); assert(count = 1); assert(pq_handle != MPI_T_PVAR_HANDLE_NULL); uq_handle = MPI_T_PVAR_HANDLE_NULL; MPI_T_pvar_handle_alloc(session, uq_idx, NULL, &uq_handle, &count); assert(count = 1); assert(uq_handle != MPI_T_PVAR_HANDLE_NULL); pqm_handle = MPI_T_PVAR_HANDLE_NULL; MPI_T_pvar_handle_alloc(session, pqm_idx, NULL, &pqm_handle, &count); assert(count = 1); assert(pqm_handle != MPI_T_PVAR_HANDLE_NULL); uqm_handle = MPI_T_PVAR_HANDLE_NULL; MPI_T_pvar_handle_alloc(session, uqm_idx, NULL, &uqm_handle, &count); assert(count = 1); assert(uqm_handle != MPI_T_PVAR_HANDLE_NULL); /* now send/recv some messages and track the lengths of the queues */ { int buf1, buf2, buf3, buf4; MPI_Request r1, r2, r3, r4; buf1 = buf2 = buf3 = buf4 = 0xfeedface; r1 = r2 = r3 = r4 = MPI_REQUEST_NULL; posted_qlen = 0x0123abcd; unexpected_qlen = 0x0123abcd; posted_queue_match_attempts = 0x0123abcd; unexpected_queue_match_attempts = 0x0123abcd; print_vars(1); MPI_Isend(&buf1, 1, MPI_INT, 0, /*tag= */ 11, MPI_COMM_SELF, &r1); print_vars(2); printf("expected (posted_qlen,unexpected_qlen) = (0,1)\n"); MPI_Isend(&buf1, 1, MPI_INT, 0, /*tag= */ 22, MPI_COMM_SELF, &r2); print_vars(3); printf("expected (posted_qlen,unexpected_qlen) = (0,2)\n"); MPI_Irecv(&buf2, 1, MPI_INT, 0, /*tag= */ 33, MPI_COMM_SELF, &r3); print_vars(4); printf("expected (posted_qlen,unexpected_qlen) = (1,2)\n"); MPI_Recv(&buf3, 1, MPI_INT, 0, /*tag= */ 22, MPI_COMM_SELF, MPI_STATUS_IGNORE); MPI_Wait(&r2, MPI_STATUS_IGNORE); print_vars(5); printf("expected (posted_qlen,unexpected_qlen) = (1,1)\n"); MPI_Recv(&buf3, 1, MPI_INT, 0, /*tag= */ 11, MPI_COMM_SELF, MPI_STATUS_IGNORE); MPI_Wait(&r1, MPI_STATUS_IGNORE); print_vars(6); printf("expected (posted_qlen,unexpected_qlen) = (1,0)\n"); MPI_Send(&buf3, 1, MPI_INT, 0, /*tag= */ 33, MPI_COMM_SELF); MPI_Wait(&r3, MPI_STATUS_IGNORE); print_vars(7); printf("expected (posted_qlen,unexpected_qlen) = (0,0)\n"); } if (pqm_writable) { posted_queue_match_attempts = 0; MPI_T_pvar_write(session, pqm_handle, &posted_queue_match_attempts); } if (uqm_writable) { unexpected_queue_match_attempts = 0; MPI_T_pvar_write(session, uqm_handle, &unexpected_queue_match_attempts); } print_vars(8); /* cleanup */ MPI_T_pvar_handle_free(session, &uqm_handle); MPI_T_pvar_handle_free(session, &pqm_handle); MPI_T_pvar_handle_free(session, &uq_handle); MPI_T_pvar_handle_free(session, &pq_handle); MPI_T_pvar_session_free(&session); MPI_T_finalize(); MPI_Finalize(); return 0; } #else /* Simple null program to allow building this file with non-MPICH implementations */ int main(int argc, char **argv) { MPI_Init(&argc, &argv); printf(" No Errors\n"); MPI_Finalize(); return 0; } #endif mpi-testsuite-3.2+dfsg/manual/mpi_t/Makefile.am0000644000175000017500000000066612620254305021011 0ustar mbanckmbanck## -*- Mode: Makefile; -*- ## vim: set ft=automake : ## ## (C) 2013 by Argonne National Laboratory. ## See COPYRIGHT in top-level directory. ## include $(top_srcdir)/Makefile.mtest # these tests are specific to the MPICH ch3:nemesis implementation of nemesis nemesis_tests = nem_fbox_fallback_to_queue_count \ unexpected_recvq_buffer_size noinst_PROGRAMS = mpit_test mpit_test2 \ $(nemesis_tests) mpi-testsuite-3.2+dfsg/manual/mpi_t/nem_fbox_fallback_to_queue_count.c0000644000175000017500000002020512620254305025642 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* This test checks that the nemesis code correctly exposes statistics related * to "fbox" handling. It also attempts to verify that it accurately maintains * these statistics. * * Originally written by Ralf Gunter Correa Carvalho. */ #include #include #include #include #include #include #include "mpitest.h" #define TRY(func) \ do { \ err = (func); \ if (err != MPI_SUCCESS) \ MPI_Abort(MPI_COMM_WORLD, err); \ } while (0) #define STR_LEN 100 #define BUF_COUNT 10 uint64_t null_fbox[2] = { 0 }; int err, rank; MPI_T_pvar_session session; MPI_T_pvar_handle fbox_handle; /* Check that we can successfuly write to the variable. * Question: Do we really want to write pvars other than reset? */ void blank_test() { uint64_t temp[2] = { -1 }; temp[0] = 0x1234; temp[1] = 0xABCD; TRY(MPI_T_pvar_write(session, fbox_handle, temp)); temp[0] = 0xCD34; temp[1] = 0x12AB; TRY(MPI_T_pvar_read(session, fbox_handle, temp)); assert(temp[0] == 0x1234); assert(temp[1] == 0xABCD); } /* Nemesis' fastbox falls back to regular queues when more than one message * is yet to be delivered. * Here, the sender posts all sends before the receiver has a chance to * acknowledge any of them; this should force the sender to fall_back to the * queue every time. */ void send_first_test() { uint64_t nem_fbox_fall_back_to_queue_count[2] = { -1 }; /* Reset the fbox variable. */ MPI_T_pvar_reset(session, fbox_handle); if (rank == 0) { char send_buf[BUF_COUNT] = { 0x12 }; /* Check that the variable has been correctly initialized. */ TRY(MPI_T_pvar_read(session, fbox_handle, nem_fbox_fall_back_to_queue_count)); assert(nem_fbox_fall_back_to_queue_count[1] == 0); MPI_Send(send_buf, BUF_COUNT, MPI_CHAR, 1, 0, MPI_COMM_WORLD); TRY(MPI_T_pvar_read(session, fbox_handle, nem_fbox_fall_back_to_queue_count)); assert(nem_fbox_fall_back_to_queue_count[1] == 0); MPI_Send(send_buf, BUF_COUNT, MPI_CHAR, 1, 0, MPI_COMM_WORLD); TRY(MPI_T_pvar_read(session, fbox_handle, nem_fbox_fall_back_to_queue_count)); assert(nem_fbox_fall_back_to_queue_count[1] == 1); MPI_Send(send_buf, BUF_COUNT, MPI_CHAR, 1, 0, MPI_COMM_WORLD); TRY(MPI_T_pvar_read(session, fbox_handle, nem_fbox_fall_back_to_queue_count)); assert(nem_fbox_fall_back_to_queue_count[1] == 2); MPI_Send(send_buf, BUF_COUNT, MPI_CHAR, 1, 0, MPI_COMM_WORLD); TRY(MPI_T_pvar_read(session, fbox_handle, nem_fbox_fall_back_to_queue_count)); assert(nem_fbox_fall_back_to_queue_count[1] == 3); /* Make sure we've posted the sends before the receiver gets a chance * to receive them. * FIXME: Ideally this should use a barrier, but that uses messages * internally and hence will sometimes screw up the asserts above. */ MTestSleep(1); } else if (rank == 1) { char recv_buf[BUF_COUNT]; MPI_Status status; MTestSleep(1); /* see above */ MPI_Recv(recv_buf, BUF_COUNT, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &status); MPI_Recv(recv_buf, BUF_COUNT, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &status); MPI_Recv(recv_buf, BUF_COUNT, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &status); MPI_Recv(recv_buf, BUF_COUNT, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &status); } MPI_Barrier(MPI_COMM_WORLD); /* ensure we've finished this test before * moving on to the next */ } /* By posting receives ahead of time, messages should be taken out of the * fastbox as soon as they are delivered. Hence, the counter should remain 0 * throughout. * FIXME: This doesn't quite work yet, in part because of the barrier (which * also uses messages). May want to 'sleep' between sends as a * workaround. */ void recv_first_test() { uint64_t nem_fbox_fall_back_to_queue_count[2] = { -1 }; /* Reset the fbox variable. */ MPI_T_pvar_reset(session, fbox_handle); if (rank == 0) { char send_buf[BUF_COUNT] = { 0x12 }; MPI_Barrier(MPI_COMM_WORLD); /* see below */ /* Check that the variable has been correctly initialized. */ TRY(MPI_T_pvar_read(session, fbox_handle, nem_fbox_fall_back_to_queue_count)); assert(nem_fbox_fall_back_to_queue_count[1] == 0); MPI_Send(send_buf, BUF_COUNT, MPI_CHAR, 1, 0, MPI_COMM_WORLD); TRY(MPI_T_pvar_read(session, fbox_handle, nem_fbox_fall_back_to_queue_count)); assert(nem_fbox_fall_back_to_queue_count[1] == 0); MPI_Send(send_buf, BUF_COUNT, MPI_CHAR, 1, 0, MPI_COMM_WORLD); TRY(MPI_T_pvar_read(session, fbox_handle, nem_fbox_fall_back_to_queue_count)); assert(nem_fbox_fall_back_to_queue_count[1] == 0); MPI_Send(send_buf, BUF_COUNT, MPI_CHAR, 1, 0, MPI_COMM_WORLD); TRY(MPI_T_pvar_read(session, fbox_handle, nem_fbox_fall_back_to_queue_count)); assert(nem_fbox_fall_back_to_queue_count[1] == 0); MPI_Send(send_buf, BUF_COUNT, MPI_CHAR, 1, 0, MPI_COMM_WORLD); TRY(MPI_T_pvar_read(session, fbox_handle, nem_fbox_fall_back_to_queue_count)); assert(nem_fbox_fall_back_to_queue_count[1] == 0); } else if (rank == 1) { char recv_buf[BUF_COUNT]; MPI_Request reqs[4]; MPI_Irecv(recv_buf, BUF_COUNT, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &reqs[0]); MPI_Irecv(recv_buf, BUF_COUNT, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &reqs[1]); MPI_Irecv(recv_buf, BUF_COUNT, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &reqs[2]); MPI_Irecv(recv_buf, BUF_COUNT, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &reqs[3]); MPI_Barrier(MPI_COMM_WORLD); /* make sure we've posted the receives * before the sender gets a chance * to send them */ MPI_Status status[4]; MPI_Waitall(4, reqs, status); } MPI_Barrier(MPI_COMM_WORLD); /* ensure we've finished this test before * moving on to the next */ } int main(int argc, char *argv[]) { int i, size, num, name_len, desc_len, count, verb, thread_support; int varclass, bind, readonly, continuous, atomic; int fbox_idx = -1; char name[STR_LEN], desc[STR_LEN]; MPI_Datatype dtype; MPI_T_enum enumtype; MPI_Init(NULL, NULL); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (rank == 0) { printf("MPIT pvar test: nem_fbox_fall_back_to_queue_count\n"); fflush(stdout); } /* Ensure we're using exactly two ranks. */ assert(size == 2); /* Standard MPIT initialization. */ TRY(MPI_T_init_thread(MPI_THREAD_SINGLE, &thread_support)); TRY(MPI_T_pvar_get_num(&num)); /* Locate desired MPIT variable. */ for (i = 0; i < num; i++) { name_len = desc_len = STR_LEN; TRY(MPI_T_pvar_get_info(i, name, &name_len, &verb, &varclass, &dtype, &enumtype, desc, &desc_len, &bind, &readonly, &continuous, &atomic)); if (strcmp(name, "nem_fbox_fall_back_to_queue_count") == 0) fbox_idx = i; } /* Ensure variable was registered by the runtime */ assert(fbox_idx != -1); /* Initialize MPIT session & variable handle. */ MPI_T_pvar_session_create(&session); MPI_T_pvar_handle_alloc(session, fbox_idx, NULL, &fbox_handle, &count); /* Ensure the variable is of the correct size. */ assert(count == 2); /* Run a batch of tests. */ /* blank_test(); */ send_first_test(); /* recv_first_test(); */ /* Cleanup. */ MPI_T_pvar_handle_free(session, &fbox_handle); MPI_T_pvar_session_free(&session); if (rank == 0) { printf("finished\n"); fflush(stdout); } TRY(MPI_T_finalize()); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/manual/mpi_t/unexpected_recvq_buffer_size.c0000644000175000017500000001262612620254305025047 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* This test checks that the nemesis code correctly exposes statistics related * to unexpected receive queue buffer/message sizes. * * Originally written by Ralf Gunter Correa Carvalho. */ #include #include #include #include #define TRY(func) \ do { \ err = (func); \ if (err != MPI_SUCCESS) \ MPI_Abort(MPI_COMM_WORLD, err); \ } while (0) #define EAGER_SIZE 10 #define RNDV_SIZE 100000 #define STR_LEN 100 int err, rank; MPI_T_pvar_session session; MPI_T_pvar_handle uqsize_handle; /* The first receive will block waiting for the last send, since messages from * a given rank are received in order. */ void reversed_tags_test() { size_t unexpected_recvq_buffer_size; if (rank == 0) { int send_buf[EAGER_SIZE] = { 0x1234 }; MPI_Send(send_buf, EAGER_SIZE, MPI_INT, 1, 0xA, MPI_COMM_WORLD); MPI_Send(send_buf, EAGER_SIZE, MPI_INT, 1, 0xB, MPI_COMM_WORLD); MPI_Send(send_buf, EAGER_SIZE, MPI_INT, 1, 0xC, MPI_COMM_WORLD); MPI_Send(send_buf, EAGER_SIZE, MPI_INT, 1, 0xD, MPI_COMM_WORLD); } else if (rank == 1) { int recv_buf[EAGER_SIZE]; MPI_Status status; MPI_Recv(recv_buf, EAGER_SIZE, MPI_INT, 0, 0xD, MPI_COMM_WORLD, &status); TRY(MPI_T_pvar_read(session, uqsize_handle, &unexpected_recvq_buffer_size)); assert(unexpected_recvq_buffer_size == 3 * EAGER_SIZE * sizeof(int)); MPI_Recv(recv_buf, EAGER_SIZE, MPI_INT, 0, 0xC, MPI_COMM_WORLD, &status); TRY(MPI_T_pvar_read(session, uqsize_handle, &unexpected_recvq_buffer_size)); assert(unexpected_recvq_buffer_size == 2 * EAGER_SIZE * sizeof(int)); MPI_Recv(recv_buf, EAGER_SIZE, MPI_INT, 0, 0xB, MPI_COMM_WORLD, &status); TRY(MPI_T_pvar_read(session, uqsize_handle, &unexpected_recvq_buffer_size)); assert(unexpected_recvq_buffer_size == 1 * EAGER_SIZE * sizeof(int)); MPI_Recv(recv_buf, EAGER_SIZE, MPI_INT, 0, 0xA, MPI_COMM_WORLD, &status); TRY(MPI_T_pvar_read(session, uqsize_handle, &unexpected_recvq_buffer_size)); assert(unexpected_recvq_buffer_size == 0 * EAGER_SIZE * sizeof(int)); } MPI_Barrier(MPI_COMM_WORLD); /* make sure this test is over before going to the next one */ } /* Rendezvous-based messages will never be unexpected (except for the initial RTS, * which has an empty buffer anyhow). */ void rndv_test() { size_t unexpected_recvq_buffer_size; if (rank == 0) { int send_buf[RNDV_SIZE] = { 0x5678 }; MPI_Send(send_buf, RNDV_SIZE, MPI_INT, 1, 0, MPI_COMM_WORLD); MPI_Send(send_buf, RNDV_SIZE, MPI_INT, 1, 0, MPI_COMM_WORLD); } else if (rank == 1) { int recv_buf[RNDV_SIZE]; MPI_Status status; MPI_Recv(recv_buf, RNDV_SIZE, MPI_INT, 0, 0, MPI_COMM_WORLD, &status); TRY(MPI_T_pvar_read(session, uqsize_handle, &unexpected_recvq_buffer_size)); assert(unexpected_recvq_buffer_size == 0); MPI_Recv(recv_buf, RNDV_SIZE, MPI_INT, 0, 0, MPI_COMM_WORLD, &status); TRY(MPI_T_pvar_read(session, uqsize_handle, &unexpected_recvq_buffer_size)); assert(unexpected_recvq_buffer_size == 0); } MPI_Barrier(MPI_COMM_WORLD); /* make sure this test is over before going to the next one */ } int main(int argc, char *argv[]) { int i, size, num, name_len, desc_len, verb, thread_support; int varclass, bind, readonly, continuous, atomic, uqsize_idx, count; char name[STR_LEN], desc[STR_LEN]; MPI_Datatype dtype; MPI_T_enum enumtype; MPI_Init(NULL, NULL); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (rank == 0) { printf("MPIT pvar test: unexpected_recvq_buffer_size\n"); fflush(stdout); } /* Ensure we're using exactly two ranks. */ /* Future tests (using collectives) might need this because of the MPI_Barrier */ assert(size == 2); /* Standard MPIT initialization. */ TRY(MPI_T_init_thread(MPI_THREAD_SINGLE, &thread_support)); TRY(MPI_T_pvar_get_num(&num)); int found = 0; /* Locate desired MPIT variable. */ for (i = 0; i < num; i++) { name_len = desc_len = STR_LEN; TRY(MPI_T_pvar_get_info(i, name, &name_len, &verb, &varclass, &dtype, &enumtype, desc, &desc_len, &bind, &readonly, &continuous, &atomic)); if (strcmp(name, "unexpected_recvq_buffer_size") == 0) { uqsize_idx = i; found = 1; } } if (found) { /* Initialize MPIT session & variable handle. */ MPI_T_pvar_session_create(&session); MPI_T_pvar_handle_alloc(session, uqsize_idx, NULL, &uqsize_handle, &count); /* Ensure the variable is of the correct size. */ assert(count == 1); /* Run a batch of tests. */ reversed_tags_test(); rndv_test(); /* Cleanup. */ MPI_T_pvar_handle_free(session, &uqsize_handle); MPI_T_pvar_session_free(&session); } if (rank == 0) { printf("finished\n"); fflush(stdout); } TRY(MPI_T_finalize()); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/manual/tcutil.c0000644000175000017500000000643312620254305017313 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2008 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Define _ISOC99_SOURCE to get snprintf() prototype visible in when it is compiled with --enable-stricttest. */ #define _ISOC99_SOURCE #include #include #include #include #include #include #include #include #include #include #include "mpi.h" #include "connectstuff.h" static void printTimeStamp(void) { time_t t; struct tm *ltime; time(&t); ltime = localtime(&t); printf("%04d-%02d-%02d %02d:%02d:%02d: ", 1900 + ltime->tm_year, ltime->tm_mon, ltime->tm_mday, ltime->tm_hour, ltime->tm_min, ltime->tm_sec); fflush(stdout); } void safeSleep(double seconds) { struct timespec sleepAmt = { 0, 0 }; int ret = 0; sleepAmt.tv_sec = floor(seconds); sleepAmt.tv_nsec = 1e9 * (seconds - floor(seconds)); ret = nanosleep(&sleepAmt, NULL); if (ret == -1) { printf("Safesleep returned early. Sorry\n"); } } void printStackTrace() { static char cmd[512]; int ierr; snprintf(cmd, 512, "/bin/sh -c \"/home/eellis/bin/pstack1 %d\"", getpid()); ierr = system(cmd); fflush(stdout); } void msg(const char *fmt, ...) { va_list ap; va_start(ap, fmt); printTimeStamp(); vprintf(fmt, ap); fflush(stdout); va_end(ap); } /* * You should free the string once you've used it */ char *getPortFromFile(const char *fmt, ...) { char fname[PATH_MAX]; char dirname[PATH_MAX]; char *retPort; char *cerr; va_list ap; FILE *fp; int done = 0; int count = 0; /* Just used for the NFS sync - not really a count */ retPort = (char *) calloc(MPI_MAX_PORT_NAME + 1, sizeof(char)); va_start(ap, fmt); vsnprintf(fname, PATH_MAX, fmt, ap); va_end(ap); srand(getpid()); while (!done) { count += rand(); fp = fopen(fname, "rt"); if (fp != NULL) { cerr = fgets(retPort, MPI_MAX_PORT_NAME, fp); fclose(fp); /* ignore bogus tag - assume that the real tag must be longer than 8 * characters */ if (strlen(retPort) >= 8) { done = 1; } } if (!done) { int retcode; safeSleep(0.1); /* force NFS to update by creating and then deleting a subdirectory. Ouch. */ snprintf(dirname, PATH_MAX, "%s___%d", fname, count); retcode = mkdir(dirname, 0777); if (retcode != 0) { perror("Calling mkdir"); _exit(9); } else { rmdir(dirname); } } } return retPort; } /* * Returns the filename written to. Free this once you're done. */ char *writePortToFile(const char *port, const char *fmt, ...) { char *fname; va_list ap; FILE *fp; fname = (char *) calloc(PATH_MAX, sizeof(char)); va_start(ap, fmt); vsnprintf(fname, PATH_MAX, fmt, ap); va_end(ap); fp = fopen(fname, "wt"); fprintf(fp, "%s\n", port); fclose(fp); msg("Wrote port <%s> to file <%s>\n", port, fname); return fname; } mpi-testsuite-3.2+dfsg/manual/spawntest_child.c0000644000175000017500000000236112620254305021176 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2009 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * Test code provided by Guruprasad H. Kora */ #include "mpi.h" #include #include int main(int argc, char **argv) { int my_rank; int size; MPI_Comm parentcomm; MPI_Comm allcomm; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &my_rank); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_get_parent(&parentcomm); if (parentcomm == MPI_COMM_NULL) { fprintf(stdout, "parentcomm is null\n"); } MPI_Intercomm_merge(parentcomm, 1, &allcomm); /* Without the Free of allcomm, the children *must not exit* until the * master calls MPI_Finalize. */ MPI_Barrier(allcomm); /* According to 10.5.4, case 1b in MPI2.2, the children and master are * still connected unless MPI_Comm_disconnect is used with allcomm. * MPI_Comm_free is not sufficient */ MPI_Comm_free(&allcomm); MPI_Comm_disconnect(&parentcomm); fprintf(stdout, "%s:%d\n", __FILE__, __LINE__); fflush(stdout); MPI_Finalize(); fprintf(stdout, "%d:child exiting.\n", my_rank); fflush(stdout); return 0; } mpi-testsuite-3.2+dfsg/manual/connectstuff.h0000644000175000017500000000070412620254305020510 0ustar mbanckmbanck#ifndef _CONNECTSTUFF #define _CONNECTSTUFF /* handlers */ void startWatchdog(int seconds); void strokeWatchdog(void); void installSegvHandler(void); void installExitHandler(const char *fname); void indicateConnectSucceeded(void); /* util */ void msg(const char *fmt, ...); void printStackTrace(void); void safeSleep(double seconds); char *getPortFromFile(const char *fmt, ...); char *writePortToFile(const char *port, const char *fmt, ...); #endif mpi-testsuite-3.2+dfsg/manual/README0000644000175000017500000000320512620254305016515 0ustar mbanckmbanckThis directory contains programs and tests that need to be run by a human being rather than a script. Instructions on running each test are in the test file at the top. singjoin - A test of Comm_join, including a test of comm_join by singleton processes testconnect - A test of Comm_connect and Comm_accept, with many processes. Use the script manyconnect to run them, as in make testconnect ./manyconnect dimsbalanced - A test of MPI_Dims_create; this checks that Dims_create produces well-balanced results. Since there are no requirements on the "balance" of the output of Dims_create, this is a test of the quality of implementation of the default MPI_Dims_create when there is no underlying network topology. spawntest_master, spawntest_child - A test of MPI_Comm_disconnect to ensure that once processes are disconnected, one can proceed through MPI_Finalize without waiting for the other to also proceed through MPI_Finalize. This test is designed to succeed even if either the child or master waits for the other in MPI_Finalize. If MPI_Comm_disconnect works correctly, the spawned children (4 by default), should exit roughly 30 seconds before the master. segfault - a simple test that intentionally segfaults if its rank is 0, otherwise does nothing. The output from mpiexec should make it clear that one of the processes segfaulted (not just terminated badly), and ideally indicate which process. Make sure to run it with a range of comm_world sizes, including 1 and 2. mpi-testsuite-3.2+dfsg/manual/segfault.c0000644000175000017500000000111212620254305017606 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2006 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include "mpi.h" int main(int argc, char **argv) { int *ptr = NULL; int rank; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (rank == 0) { (*ptr)++; /* will segfault */ /* never get below here, just present to prevent dead-code elimination */ printf("*ptr=%d\n", (*ptr)); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/manual/spawntest_master.c0000644000175000017500000000321312620254305021403 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2009 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * Test code provided by Guruprasad H. Kora */ #include "mpi.h" #include #include #include "mpitest.h" #define NUM_SPAWNS 4 int main(int argc, char *argv[]) { int np = NUM_SPAWNS; int my_rank, size; int errcodes[NUM_SPAWNS]; MPI_Comm allcomm; MPI_Comm intercomm; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &my_rank); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_spawn((char *) "./spawntest_child", MPI_ARGV_NULL, np, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &intercomm, errcodes); if (intercomm == MPI_COMM_NULL) { fprintf(stdout, "intercomm is null\n"); } MPI_Intercomm_merge(intercomm, 0, &allcomm); MPI_Comm_rank(allcomm, &my_rank); MPI_Comm_size(allcomm, &size); /* Without the Free of allcomm, the children *must not exit* until the * master calls MPI_Finalize. */ MPI_Barrier(allcomm); /* According to 10.5.4, case 1b in MPI2.2, the children and master are * still connected unless MPI_Comm_disconnect is used with allcomm. * MPI_Comm_free is not sufficient */ MPI_Comm_free(&allcomm); MPI_Comm_disconnect(&intercomm); fprintf(stdout, "%s:%d: MTestSleep starting; children should exit\n", __FILE__, __LINE__); fflush(stdout); MTestSleep(30); fprintf(stdout, "%s:%d: MTestSleep done; all children should have already exited\n", __FILE__, __LINE__); fflush(stdout); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/0000755000175000017500000000000012621010236015131 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/rma/large-acc-flush_local.c0000644000175000017500000000351012620254305021411 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* This code tests the case when origin process issues 10 ACC * operations for each data size to the target process, and each * operation is followed by a MPI_Win_flush_local. */ /* FIXME: we should merge this into a comprehensive test for RMA * operations + MPI_Win_flush_local. */ #include "mpi.h" #include #include #include #define MIN_DATA_SIZE (262144) #define MAX_DATA_SIZE (8 * 262144) #define OPS_NUM 10 #define LOOP 500 int main(int argc, char *argv[]) { int rank, nproc, i, j; MPI_Win win; int *tar_buf = NULL; int *orig_buf = NULL; int data_size; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Alloc_mem(MAX_DATA_SIZE, MPI_INFO_NULL, &orig_buf); MPI_Alloc_mem(MAX_DATA_SIZE, MPI_INFO_NULL, &tar_buf); /* run this test for LOOP times */ for (j = 0; j < LOOP; j++) { MPI_Win_create(tar_buf, MAX_DATA_SIZE, 1, MPI_INFO_NULL, MPI_COMM_WORLD, &win); MPI_Win_lock_all(0, win); if (rank != 0) { for (data_size = MIN_DATA_SIZE; data_size <= MAX_DATA_SIZE; data_size *= 2) { for (i = 0; i < OPS_NUM; i++) { MPI_Accumulate(orig_buf, data_size, MPI_BYTE, 0, 0, data_size, MPI_BYTE, MPI_SUM, win); MPI_Win_flush_local(0, win); } MPI_Win_flush(0, win); } } MPI_Win_unlock_all(win); MPI_Win_free(&win); } if (rank == 0) printf(" No Errors\n"); MPI_Free_mem(orig_buf); MPI_Free_mem(tar_buf); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/lockcontention3.c0000644000175000017500000004115712620254305020427 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "stdio.h" #include "stdlib.h" #include "mpitest.h" #include #include #define LAST_TEST 14 #define RMA_SIZE 2048 #define OFFSET_1 7 #define OFFSET_2 83 #define OFFSET_3 157 #define PUT_VAL 0xdcba97 #define ACC_VAL 10771134 /* * Additional tests for lock contention. These are designed to exercise * some of the optimizations within MPICH, but all are valid MPI programs. * Tests structure includes * lock local (must happen at this time since application can use load * store after the lock) * send message to partner * receive message * send ack * receive ack * Provide a delay so that * the partner will see the * conflict * partner executes: * lock // Note: this may block * rma operations (see below) * unlock * * unlock send back to partner * receive from partner * check for correct data * * The delay may be implemented as a ring of message communication; this * is likely to automatically scale the time to what is needed */ /* Define a datatype to be used with */ int stride = 11; int veccount = 7; MPI_Datatype vectype; /* Define long RMA ops size */ int longcount = 512; int medcount = 127; int mednum = 4; void RMATest(int i, MPI_Win win, int master, int *srcbuf, int srcbufsize, int *getbuf, int getbufsize); int RMACheck(int i, int *buf, MPI_Aint bufsize); int RMACheckGet(int i, MPI_Win win, int *getbuf, MPI_Aint getsize); void RMATestInit(int i, int *buf, MPI_Aint bufsize); int main(int argc, char *argv[]) { int errs = 0; MPI_Win win; int *rmabuffer = 0, *getbuf = 0; MPI_Aint bufsize = 0, getbufsize = 0; int master, partner, next, wrank, wsize, i; int ntest = LAST_TEST; int *srcbuf; MTest_Init(&argc, &argv); /* Determine who is responsible for each part of the test */ MPI_Comm_rank(MPI_COMM_WORLD, &wrank); MPI_Comm_size(MPI_COMM_WORLD, &wsize); if (wsize < 3) { fprintf(stderr, "This test requires at least 3 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } master = 0; partner = 1; next = wrank + 1; if (next == partner) next++; if (next >= wsize) { next = 0; if (next == partner) next++; } /* Determine the last test to run (by default, run them all) */ for (i = 1; i < argc; i++) { if (strcmp("-ntest", argv[i]) == 0) { i++; if (i < argc) { ntest = atoi(argv[i]); } else { fprintf(stderr, "Missing value for -ntest\n"); MPI_Abort(MPI_COMM_WORLD, 1); } } } MPI_Type_vector(veccount, 1, stride, MPI_INT, &vectype); MPI_Type_commit(&vectype); /* Create the RMA window */ bufsize = 0; if (wrank == master) { bufsize = RMA_SIZE; MPI_Alloc_mem(bufsize * sizeof(int), MPI_INFO_NULL, &rmabuffer); } else if (wrank == partner) { getbufsize = RMA_SIZE; getbuf = (int *) malloc(getbufsize * sizeof(int)); if (!getbuf) { fprintf(stderr, "Unable to allocated %d bytes for getbuf\n", (int) getbufsize); MPI_Abort(MPI_COMM_WORLD, 1); } } srcbuf = malloc(RMA_SIZE * sizeof(*srcbuf)); assert(srcbuf); MPI_Win_create(rmabuffer, bufsize * sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &win); /* Run a sequence of tests */ for (i = 0; i <= ntest; i++) { if (wrank == master) { MTestPrintfMsg(0, "Test %d\n", i); /* Because this lock is local, it must return only when the * lock is acquired */ MPI_Win_lock(MPI_LOCK_EXCLUSIVE, 0, master, win); RMATestInit(i, rmabuffer, bufsize); MPI_Send(MPI_BOTTOM, 0, MPI_INT, partner, i, MPI_COMM_WORLD); MPI_Send(MPI_BOTTOM, 0, MPI_INT, next, i, MPI_COMM_WORLD); MPI_Recv(MPI_BOTTOM, 0, MPI_INT, MPI_ANY_SOURCE, i, MPI_COMM_WORLD, MPI_STATUS_IGNORE); MPI_Win_unlock(master, win); MPI_Recv(MPI_BOTTOM, 0, MPI_INT, partner, i, MPI_COMM_WORLD, MPI_STATUS_IGNORE); errs += RMACheck(i, rmabuffer, bufsize); } else if (wrank == partner) { MPI_Recv(MPI_BOTTOM, 0, MPI_INT, master, i, MPI_COMM_WORLD, MPI_STATUS_IGNORE); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, 0, master, win); RMATest(i, win, master, srcbuf, RMA_SIZE, getbuf, getbufsize); MPI_Win_unlock(master, win); errs += RMACheckGet(i, win, getbuf, getbufsize); MPI_Send(MPI_BOTTOM, 0, MPI_INT, master, i, MPI_COMM_WORLD); } else { MPI_Recv(MPI_BOTTOM, 0, MPI_INT, MPI_ANY_SOURCE, i, MPI_COMM_WORLD, MPI_STATUS_IGNORE); MPI_Send(MPI_BOTTOM, 0, MPI_INT, next, i, MPI_COMM_WORLD); } } if (rmabuffer) { MPI_Free_mem(rmabuffer); } if (getbuf) { free(getbuf); } MPI_Win_free(&win); MPI_Type_free(&vectype); MTest_Finalize(errs); MPI_Finalize(); return MTestReturnValue(errs); } /* Perform the tests. * * The srcbuf must be passed in because the buffer must remain valid * until the subsequent unlock call. */ void RMATest(int i, MPI_Win win, int master, int *srcbuf, int srcbufsize, int *getbuf, int getbufsize) { int j, k; int *source = srcbuf; assert(srcbufsize == RMA_SIZE); for (j = 0; j < srcbufsize; j++) source[j] = -j; switch (i) { case 0: /* Single short put (1 word at OFFSET_1) */ source[0] = PUT_VAL; MPI_Put(source, 1, MPI_INT, master, OFFSET_1, 1, MPI_INT, win); break; case 1: /* Single short accumulate (1 word of value 17 at OFFSET_2) */ source[0] = ACC_VAL; MPI_Accumulate(source, 1, MPI_INT, master, OFFSET_2, 1, MPI_INT, MPI_SUM, win); break; case 2: /* Single short get (1 word at OFFSET_3) */ getbuf[0] = -1; MPI_Get(getbuf, 1, MPI_INT, master, OFFSET_3, 1, MPI_INT, win); break; case 3: /* Datatype single put (strided put) */ for (j = 0; j < veccount; j++) { source[j * stride] = PUT_VAL + j; } MPI_Put(source, 1, vectype, master, OFFSET_1, 1, vectype, win); break; case 4: /* Datatype single accumulate (strided acc) */ for (j = 0; j < veccount; j++) { source[j * stride] = ACC_VAL + j; } MPI_Accumulate(source, 1, vectype, master, OFFSET_2, 1, vectype, MPI_SUM, win); break; case 5: /* Datatype single get (strided get) */ for (j = 0; j < veccount; j++) { getbuf[j] = -j; } MPI_Get(getbuf, 1, vectype, master, OFFSET_3, 1, vectype, win); break; case 6: /* a few small puts (like strided put, but 1 word at a time) */ for (j = 0; j < veccount; j++) { source[j * stride] = PUT_VAL + j; } for (j = 0; j < veccount; j++) { MPI_Put(source + j * stride, 1, MPI_INT, master, OFFSET_1 + j * stride, 1, MPI_INT, win); } break; case 7: /* a few small accumulates (like strided acc, but 1 word at a time) */ for (j = 0; j < veccount; j++) { source[j * stride] = ACC_VAL + j; } for (j = 0; j < veccount; j++) { MPI_Accumulate(source + j * stride, 1, MPI_INT, master, OFFSET_2 + j * stride, 1, MPI_INT, MPI_SUM, win); } break; case 8: /* a few small gets (like strided get, but 1 word at a time) */ for (j = 0; j < veccount; j++) { getbuf[j * stride] = -j; } for (j = 0; j < veccount; j++) { MPI_Get(getbuf + j * stride, 1, MPI_INT, master, OFFSET_3 + j * stride, 1, MPI_INT, win); } break; case 9: /* Single long put (OFFSET_1) */ for (j = 0; j < longcount; j++) source[j] = j; MPI_Put(source, longcount, MPI_INT, master, OFFSET_1, longcount, MPI_INT, win); break; case 10: /* Single long accumulate (OFFSET_2) */ for (j = 0; j < longcount; j++) source[j] = j; MPI_Accumulate(source, longcount, MPI_INT, master, OFFSET_2, longcount, MPI_INT, MPI_SUM, win); break; case 11: /* Single long get (OFFSET_3) */ for (j = 0; j < longcount; j++) getbuf[j] = -j; MPI_Get(getbuf, longcount, MPI_INT, master, OFFSET_3, longcount, MPI_INT, win); break; case 12: /* a few long puts (start at OFFSET_1, medcount) */ for (j = 0; j < mednum; j++) { for (k = 0; k < medcount; k++) { source[j * medcount + k] = j * 2 * medcount + k; } MPI_Put(source + j * medcount, medcount, MPI_INT, master, OFFSET_1 + j * 2 * medcount, medcount, MPI_INT, win); } break; case 13: /* a few long accumulates (start at OFFSET_2, medcount) */ for (j = 0; j < mednum; j++) { for (k = 0; k < medcount; k++) { source[j * medcount + k] = ACC_VAL + j * 2 * medcount + k; } MPI_Accumulate(source + j * medcount, medcount, MPI_INT, master, OFFSET_2 + j * 2 * medcount, medcount, MPI_INT, MPI_SUM, win); } break; case 14: /* a few long gets (start at OFFSET_3, medcount) */ for (j = 0; j < mednum; j++) { for (k = 0; k < medcount; k++) { getbuf[j * medcount + k] = -(j * medcount + k); } MPI_Get(getbuf + j * medcount, medcount, MPI_INT, master, OFFSET_3 + j * 2 * medcount, medcount, MPI_INT, win); } break; } } int RMACheck(int i, int *buf, MPI_Aint bufsize) { int j, k; int errs = 0; switch (i) { case 0: /* Single short put (1 word at OFFSET_1) */ if (buf[OFFSET_1] != PUT_VAL) { errs++; printf("case 0: value is %d should be %d\n", buf[OFFSET_1], PUT_VAL); } break; case 1: /* Single short accumulate (1 word of value 17 at OFFSET_2) */ if (buf[OFFSET_2] != ACC_VAL + OFFSET_2) { errs++; printf("case 1: value is %d should be %d\n", buf[OFFSET_2], ACC_VAL + OFFSET_2); } break; case 2: /* Single short get (1 word at OFFSET_3) */ /* See RMACheckGet */ break; case 3: /* Datatype single put (strided put) */ case 6: /* a few small puts (like strided put, but 1 word at a time) */ /* FIXME: The conditional and increment are reversed below. This looks * like a bug, and currently prevents the following test from running. */ for (j = 0; j++; j < veccount) { if (buf[j * stride] != PUT_VAL + j) { errs++; printf("case %d: value is %d should be %d\n", i, buf[j * stride], PUT_VAL + j); } } break; case 4: /* Datatype single accumulate (strided acc) */ case 7: /* a few small accumulates (like strided acc, but 1 word at a time) */ /* FIXME: The conditional and increment are reversed below. This looks * like a bug, and currently prevents the following test from running. */ for (j = 0; j++; j < veccount) { if (buf[j * stride] != ACC_VAL + j + OFFSET_2 + j * stride) { errs++; printf("case %d: value is %d should be %d\n", i, buf[j * stride], ACC_VAL + j + OFFSET_2 + j * stride); } } break; case 5: /* Datatype single get (strided get) */ case 8: /* a few small gets (like strided get, but 1 word at a time) */ /* See RMACheckGet */ break; case 9: /* Single long put (OFFSET_1) */ for (j = 0; j < longcount; j++) { if (buf[OFFSET_1 + j] != j) { errs++; printf("case 9: value is %d should be %d\n", buf[OFFSET_1 + j], OFFSET_1 + j); } } break; case 10: /* Single long accumulate (OFFSET_2) */ for (j = 0; j < longcount; j++) { if (buf[OFFSET_2 + j] != OFFSET_2 + j + j) { errs++; printf("case 10: value is %d should be %d\n", buf[OFFSET_2 + j], OFFSET_2 + j + j); } } break; case 11: /* Single long get (OFFSET_3) */ /* See RMACheckGet */ break; case 12: /* a few long puts (start at OFFSET_1, medcount) */ for (j = 0; j < mednum; j++) { for (k = 0; k < medcount; k++) { if (buf[OFFSET_1 + j * 2 * medcount + k] != j * 2 * medcount + k) { errs++; printf("case 12: value is %d should be %d\n", buf[OFFSET_1 + j * 2 * medcount + k], j * 2 * medcount + k); } } } break; case 13: /* a few long accumulates (start at OFFSET_2, medcount) */ for (j = 0; j < mednum; j++) { for (k = 0; k < medcount; k++) { if (buf[OFFSET_2 + j * 2 * medcount + k] != OFFSET_2 + 2 * j * 2 * medcount + 2 * k + ACC_VAL) { errs++; printf("case 13: value is %d should be %d\n", buf[OFFSET_2 + j * 2 * medcount + k], OFFSET_2 + 2 * j * 2 * medcount + k + ACC_VAL); } } } break; case 14: /* a few long gets (start at OFFSET_3, medcount) */ /* See RMACheckGet */ break; default: fprintf(stderr, "Unrecognized case %d\n", i); errs++; break; } return errs; } int RMACheckGet(int i, MPI_Win win, int *getbuf, MPI_Aint getsize) { int errs = 0; int j, k; /* */ switch (i) { case 0: /* Single short put (1 word at OFFSET_1) */ break; case 1: /* Single short accumulate (1 word of value 17 at OFFSET_2) */ break; case 2: /* Single short get (1 word at OFFSET_3) */ if (getbuf[0] != OFFSET_3) { errs++; printf("case 2: value is %d should be %d\n", getbuf[0], OFFSET_3); } break; case 3: /* Datatype single put (strided put) */ break; case 4: /* Datatype single accumulate (strided acc) */ break; case 5: /* Datatype single get (strided get) */ case 8: /* a few small gets (like strided get, but 1 word at a time) */ for (j = 0; j < veccount; j++) { if (getbuf[j * stride] != OFFSET_3 + j * stride) { errs++; printf("case %d: value is %d should be %d\n", i, getbuf[j * stride], OFFSET_3 + j * stride); } } break; case 6: /* a few small puts (like strided put, but 1 word at a time) */ break; case 7: /* a few small accumulates (like strided acc, but 1 word at a time) */ break; case 9: /* Single long put (OFFSET_1) */ break; case 10: /* Single long accumulate (OFFSET_2) */ break; case 11: /* Single long get (OFFSET_3) */ for (j = 0; j < longcount; j++) { if (getbuf[j] != OFFSET_3 + j) { errs++; printf("case 11: value is %d should be %d\n", getbuf[j], OFFSET_3 + j); } } break; case 12: /* a few long puts (start at OFFSET_1, medcount) */ break; case 13: /* a few long accumulates (start at OFFSET_2, medcount) */ break; case 14: /* a few long gets (start at OFFSET_3, medcount) */ for (j = 0; j < mednum; j++) { for (k = 0; k < medcount; k++) { if (getbuf[j * medcount + k] != OFFSET_3 + j * 2 * medcount + k) { errs++; printf("case 14: buf[%d] value is %d should be %d\n", j * medcount + k, getbuf[j * medcount + k], OFFSET_3 + j * 2 * medcount + k); } } } break; default: fprintf(stderr, "Unrecognized case %d\n", i); errs++; break; } return errs; } void RMATestInit(int i, int *buf, MPI_Aint bufsize) { int j; for (j = 0; j < bufsize; j++) { buf[j] = j; } } mpi-testsuite-3.2+dfsg/rma/atomic_rmw_fop.c0000644000175000017500000001060712620254305020314 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* This test is going to test the atomicity for "read-modify-write" in FOP * operations */ /* There are three processes involved in this test: P0 (origin_shm), P1 (origin_am), * and P2 (dest). P0 and P1 issues multiple FOP with MPI_SUM and integer (value 1) * to P2 via SHM and AM respectively. The correct results should be that the * results on P0 and P1 never be the same. */ #include "mpi.h" #include #define AM_BUF_SIZE 10 #define SHM_BUF_SIZE 1000 #define WIN_BUF_SIZE 1 #define LOOP_SIZE 15 #define CHECK_TAG 123 int main(int argc, char *argv[]) { int rank, size, i, j, k; int errors = 0, all_errors = 0; int origin_shm, origin_am, dest; int my_buf_size; int *orig_buf = NULL, *result_buf = NULL, *target_buf = NULL, *check_buf = NULL; MPI_Win win; MPI_Status status; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); if (size != 3) { /* run this test with three processes */ goto exit_test; } /* this works when MPIR_PARAM_CH3_ODD_EVEN_CLIQUES is set */ dest = 2; origin_shm = 0; origin_am = 1; if (rank == origin_am) my_buf_size = AM_BUF_SIZE; else if (rank == origin_shm) my_buf_size = SHM_BUF_SIZE; if (rank != dest) { MPI_Alloc_mem(sizeof(int) * my_buf_size, MPI_INFO_NULL, &orig_buf); MPI_Alloc_mem(sizeof(int) * my_buf_size, MPI_INFO_NULL, &result_buf); } MPI_Win_allocate(sizeof(int) * WIN_BUF_SIZE, sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &target_buf, &win); for (k = 0; k < LOOP_SIZE; k++) { /* init buffers */ if (rank != dest) { for (i = 0; i < my_buf_size; i++) { orig_buf[i] = 1; result_buf[i] = 0; } } else { MPI_Win_lock(MPI_LOCK_SHARED, rank, 0, win); for (i = 0; i < WIN_BUF_SIZE; i++) { target_buf[i] = 0; } MPI_Win_unlock(rank, win); } MPI_Barrier(MPI_COMM_WORLD); /* perform FOP */ MPI_Win_lock_all(0, win); if (rank != dest) { for (i = 0; i < my_buf_size; i++) { MPI_Fetch_and_op(&(orig_buf[i]), &(result_buf[i]), MPI_INT, dest, 0, MPI_SUM, win); MPI_Win_flush(dest, win); } } MPI_Win_unlock_all(win); MPI_Barrier(MPI_COMM_WORLD); if (rank != dest) { /* check results on P0 and P2 (origin) */ if (rank == origin_am) { MPI_Send(result_buf, AM_BUF_SIZE, MPI_INT, origin_shm, CHECK_TAG, MPI_COMM_WORLD); } else if (rank == origin_shm) { MPI_Alloc_mem(sizeof(int) * AM_BUF_SIZE, MPI_INFO_NULL, &check_buf); MPI_Recv(check_buf, AM_BUF_SIZE, MPI_INT, origin_am, CHECK_TAG, MPI_COMM_WORLD, &status); for (i = 0; i < AM_BUF_SIZE; i++) { for (j = 0; j < SHM_BUF_SIZE; j++) { if (check_buf[i] == result_buf[j]) { printf ("LOOP=%d, rank=%d, FOP, both check_buf[%d] and result_buf[%d] equal to %d, expected to be different. \n", k, rank, i, j, check_buf[i]); errors++; } } } MPI_Free_mem(check_buf); } } else { MPI_Win_lock(MPI_LOCK_SHARED, rank, 0, win); /* check results on P1 */ if (target_buf[0] != AM_BUF_SIZE + SHM_BUF_SIZE) { printf("LOOP=%d, rank=%d, FOP, target_buf[0] = %d, expected %d. \n", k, rank, target_buf[0], AM_BUF_SIZE + SHM_BUF_SIZE); errors++; } MPI_Win_unlock(rank, win); } } MPI_Win_free(&win); if (rank == origin_am || rank == origin_shm) { MPI_Free_mem(orig_buf); MPI_Free_mem(result_buf); } exit_test: MPI_Reduce(&errors, &all_errors, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (rank == 0 && all_errors == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/nb_test.c0000644000175000017500000000207512620254305016745 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include int main(int argc, char *argv[]) { MPI_Win win; int flag, tmp, rank; int base[1024], errs = 0; MPI_Request req; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Win_create(base, 1024 * sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &win); if (rank == 0) { MPI_Win_lock(MPI_LOCK_EXCLUSIVE, 0, 0, win); MPI_Barrier(MPI_COMM_WORLD); MPI_Barrier(MPI_COMM_WORLD); MPI_Win_unlock(0, win); } else { MPI_Barrier(MPI_COMM_WORLD); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, 0, 0, win); MPI_Rput(&tmp, 1, MPI_INT, 0, 0, 1, MPI_INT, win, &req); MPI_Test(&req, &flag, MPI_STATUS_IGNORE); MPI_Barrier(MPI_COMM_WORLD); MPI_Win_unlock(0, win); } MPI_Win_free(&win); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/getfence1.c0000644000175000017500000001051012620254305017141 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include #include "mpitest.h" #define LARGE_CNT_CONTIG 550000000 #define LARGE_CNT_NONCONTIG 150000000 /* static char MTEST_Descrip[] = "Get with Fence"; */ static inline int test(MPI_Comm comm, int rank, int source, int dest, MTestDatatype * sendtype, MTestDatatype * recvtype) { int errs = 0, err; int disp_unit; MPI_Aint extent; MPI_Win win; MTestPrintfMsg(1, "Getting count = %ld of sendtype %s - count = %ld receive type %s\n", sendtype->count, MTestGetDatatypeName(sendtype), recvtype->count, MTestGetDatatypeName(recvtype)); /* Make sure that everyone has a recv buffer */ recvtype->InitBuf(recvtype); sendtype->InitBuf(sendtype); /* By default, print information about errors */ recvtype->printErrors = 1; sendtype->printErrors = 1; MPI_Type_extent(sendtype->datatype, &extent); disp_unit = extent < INT_MAX ? extent : 1; MPI_Win_create(sendtype->buf, sendtype->count * extent, disp_unit, MPI_INFO_NULL, comm, &win); MPI_Win_fence(0, win); if (rank == source) { /* The source does not need to do anything besides the * fence */ MPI_Win_fence(0, win); } else if (rank == dest) { /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Win_set_errhandler(win, MPI_ERRORS_RETURN); /* This should have the same effect, in terms of * transfering data, as a send/recv pair */ err = MPI_Get(recvtype->buf, recvtype->count, recvtype->datatype, source, 0, sendtype->count, sendtype->datatype, win); if (err) { errs++; if (errs < 10) { MTestPrintError(err); } } err = MPI_Win_fence(0, win); if (err) { errs++; if (errs < 10) { MTestPrintError(err); } } err = MTestCheckRecv(0, recvtype); if (err) { errs += err; } } else { MPI_Win_fence(0, win); } MPI_Win_free(&win); return errs; } int main(int argc, char *argv[]) { int errs = 0; int rank, size, source, dest; int minsize = 2, count; MPI_Comm comm; MTestDatatype sendtype, recvtype; MTest_Init(&argc, &argv); /* The following illustrates the use of the routines to * run through a selection of communicators and datatypes. * Use subsets of these for tests that do not involve combinations * of communicators, datatypes, and counts of datatypes */ while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; /* Determine the sender and receiver */ MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); source = 0; dest = size - 1; MTEST_DATATYPE_FOR_EACH_COUNT(count) { while (MTestGetDatatypes(&sendtype, &recvtype, count)) { errs += test(comm, rank, source, dest, &sendtype, &recvtype); MTestFreeDatatype(&sendtype); MTestFreeDatatype(&recvtype); } } MTestFreeComm(&comm); } /* Part #2: simple large size test - contiguous and noncontiguous */ if (sizeof(void *) > 4) { /* Only if > 32-bit architecture */ MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); source = 0; dest = size - 1; MTestGetDatatypes(&sendtype, &recvtype, LARGE_CNT_CONTIG); errs += test(MPI_COMM_WORLD, rank, source, dest, &sendtype, &recvtype); do { MTestFreeDatatype(&sendtype); MTestFreeDatatype(&recvtype); MTestGetDatatypes(&sendtype, &recvtype, LARGE_CNT_NONCONTIG); } while (strstr(MTestGetDatatypeName(&sendtype), "vector") == NULL); errs += test(MPI_COMM_WORLD, rank, source, dest, &sendtype, &recvtype); MTestFreeDatatype(&sendtype); MTestFreeDatatype(&recvtype); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/get-struct.c0000644000175000017500000001245712620254305017415 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitest.h" #include #include /* Communicating a datatype built out of structs * This test was motivated by the failure of an example program for * RMA involving simple operations on a struct that included a struct * * The observed failure was a SEGV in the MPI_Get * * */ #define MAX_KEY_SIZE 64 #define MAX_VALUE_SIZE 256 typedef struct { MPI_Aint disp; int rank; void *lptr; } Rptr; typedef struct { Rptr next; char key[MAX_KEY_SIZE], value[MAX_VALUE_SIZE]; } ListElm; Rptr nullDptr = { 0, -1, 0 }; int testCases = -1; #define BYTE_ONLY 0x1 #define TWO_STRUCT 0x2 int isOneLevel = 0; int main(int argc, char **argv) { int errors = 0; Rptr headDptr; ListElm *headLptr = 0; int i, wrank; MPI_Datatype dptrType, listelmType; MPI_Win listwin; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &wrank); for (i = 1; i < argc; i++) { if (strcmp(argv[i], "-byteonly") == 0) { testCases = BYTE_ONLY; } else if (strcmp(argv[i], "-twostruct") == 0) { testCases = TWO_STRUCT; } else if (strcmp(argv[i], "-onelevel") == 0) { isOneLevel = 1; } else { printf("Unrecognized argument %s\n", argv[i]); } } /* Create the datatypes that we will use to move the data */ { int blens[3]; MPI_Aint displ[3]; MPI_Datatype dtypes[3]; ListElm sampleElm; blens[0] = 1; blens[1] = 1; MPI_Get_address(&nullDptr.disp, &displ[0]); MPI_Get_address(&nullDptr.rank, &displ[1]); displ[1] = displ[1] - displ[0]; displ[0] = 0; dtypes[0] = MPI_AINT; dtypes[1] = MPI_INT; MPI_Type_create_struct(2, blens, displ, dtypes, &dptrType); MPI_Type_commit(&dptrType); if (isOneLevel) { blens[0] = sizeof(nullDptr); dtypes[0] = MPI_BYTE; } else { blens[0] = 1; dtypes[0] = dptrType; } blens[1] = MAX_KEY_SIZE; dtypes[1] = MPI_CHAR; blens[2] = MAX_VALUE_SIZE; dtypes[2] = MPI_CHAR; MPI_Get_address(&sampleElm.next, &displ[0]); MPI_Get_address(&sampleElm.key[0], &displ[1]); MPI_Get_address(&sampleElm.value[0], &displ[2]); displ[2] -= displ[0]; displ[1] -= displ[0]; displ[0] = 0; for (i = 0; i < 3; i++) { MTestPrintfMsg(0, "%d:count=%d,disp=%ld\n", i, blens[i], displ[i]); } MPI_Type_create_struct(3, blens, displ, dtypes, &listelmType); MPI_Type_commit(&listelmType); } MPI_Win_create_dynamic(MPI_INFO_NULL, MPI_COMM_WORLD, &listwin); headDptr.rank = 0; if (wrank == 0) { /* Create 1 list element (the head) and initialize it */ MPI_Alloc_mem(sizeof(ListElm), MPI_INFO_NULL, &headLptr); MPI_Get_address(headLptr, &headDptr.disp); headLptr->next.rank = -1; headLptr->next.disp = (MPI_Aint) MPI_BOTTOM; headLptr->next.lptr = 0; strncpy(headLptr->key, "key1", MAX_KEY_SIZE); strncpy(headLptr->value, "value1", MAX_VALUE_SIZE); MPI_Win_attach(listwin, headLptr, sizeof(ListElm)); } MPI_Bcast(&headDptr.disp, 1, MPI_AINT, 0, MPI_COMM_WORLD); MPI_Barrier(MPI_COMM_WORLD); if (wrank == 1) { ListElm headcopy; MPI_Win_lock_all(0, listwin); /* Get head element with simple get of BYTES */ if (testCases & BYTE_ONLY) { headcopy.next.rank = 100; headcopy.next.disp = 0xefefefef; MPI_Get(&headcopy, sizeof(ListElm), MPI_BYTE, headDptr.rank, headDptr.disp, sizeof(ListElm), MPI_BYTE, listwin); MPI_Win_flush(headDptr.rank, listwin); if (headcopy.next.rank != -1 && headcopy.next.disp != (MPI_Aint) MPI_BOTTOM) { errors++; printf("MPI_BYTE: headcopy contains incorrect next:<%d,%ld>\n", headcopy.next.rank, (long) headcopy.next.disp); } } if (testCases & TWO_STRUCT) { headcopy.next.rank = 100; headcopy.next.disp = 0xefefefef; /* Get head element using struct of struct type. This is * not an identical get to the simple BYTE one above but should * work */ MPI_Get(&headcopy, 1, listelmType, headDptr.rank, headDptr.disp, 1, listelmType, listwin); MPI_Win_flush(headDptr.rank, listwin); if (headcopy.next.rank != -1 && headcopy.next.disp != (MPI_Aint) MPI_BOTTOM) { errors++; printf("ListelmType: headcopy contains incorrect next:<%d,%ld>\n", headcopy.next.rank, (long) headcopy.next.disp); } } MPI_Win_unlock_all(listwin); } MPI_Barrier(MPI_COMM_WORLD); if (wrank == 0) { MPI_Win_detach(listwin, headLptr); MPI_Free_mem(headLptr); } MPI_Win_free(&listwin); MPI_Type_free(&dptrType); MPI_Type_free(&listelmType); MTest_Finalize(errors); MPI_Finalize(); return MTestReturnValue(errors); } mpi-testsuite-3.2+dfsg/rma/win_shared_noncontig_put.c0000644000175000017500000000476412620254305022407 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include #include "mpitest.h" #define ELEM_PER_PROC 10000 const int verbose = 0; int main(int argc, char **argv) { int i, j, rank, nproc; int shm_rank, shm_nproc; MPI_Info alloc_shared_info; int errors = 0, all_errors = 0; int disp_unit; int *my_base, my_size; MPI_Win shm_win; MPI_Comm shm_comm; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Info_create(&alloc_shared_info); MPI_Info_set(alloc_shared_info, "alloc_shared_noncontig", "true"); MPI_Comm_split_type(MPI_COMM_WORLD, MPI_COMM_TYPE_SHARED, rank, MPI_INFO_NULL, &shm_comm); MPI_Comm_rank(shm_comm, &shm_rank); MPI_Comm_size(shm_comm, &shm_nproc); /* Allocate ELEM_PER_PROC integers on each even rank process */ my_size = (shm_rank % 2 == 0) ? sizeof(int) * ELEM_PER_PROC : 0; MPI_Win_allocate_shared(my_size, sizeof(int), alloc_shared_info, shm_comm, &my_base, &shm_win); for (i = 0; i < ELEM_PER_PROC; i++) { MPI_Win_fence(MPI_MODE_NOPRECEDE, shm_win); if (shm_rank % 2 == 0) { MPI_Put(&i, 1, MPI_INT, (shm_rank + 2 > shm_nproc) ? 0 : (shm_rank + 2) % shm_nproc, i, 1, MPI_INT, shm_win); } MPI_Win_fence(MPI_MODE_NOSUCCEED, shm_win); } MPI_Barrier(shm_comm); /* Read and verify everyone's data */ for (i = 0; i < shm_nproc; i++) { int *base; MPI_Aint size; MPI_Win_shared_query(shm_win, i, &size, &disp_unit, &base); if (i % 2 == 0) { assert(size >= ELEM_PER_PROC * sizeof(int)); for (j = 0; j < ELEM_PER_PROC; j++) { if (base[j] != j) { errors++; printf("%d -- Got %d at rank %d index %d, expected %d\n", shm_rank, base[j], i, j, j); } } } else { assert(size == 0); assert(base == NULL); } } MPI_Win_free(&shm_win); MPI_Comm_free(&shm_comm); MPI_Info_free(&alloc_shared_info); MPI_Reduce(&errors, &all_errors, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (rank == 0 && all_errors == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/locknull.c0000644000175000017500000000307712620254305017135 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2008 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include /* static char MTEST_Descrip[] = "Locks with no RMA operations"; */ int main(int argc, char *argv[]) { int errs = 0; int rank, size, i; MPI_Comm comm; MPI_Win win; int *winbuf, count; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); /* Allocate and initialize buf */ count = 1000; MPI_Alloc_mem(count * sizeof(int), MPI_INFO_NULL, &winbuf); MPI_Win_create(winbuf, count * sizeof(int), sizeof(int), MPI_INFO_NULL, comm, &win); /* Clear winbuf */ memset(winbuf, 0, count * sizeof(int)); /* Note that for i == rank, this is a useful operation - it allows * the programmer to use direct loads and stores, rather than * put/get/accumulate, to access the local memory window. */ for (i = 0; i < size; i++) { MPI_Win_lock(MPI_LOCK_EXCLUSIVE, i, 0, win); MPI_Win_unlock(i, win); } for (i = 0; i < size; i++) { MPI_Win_lock(MPI_LOCK_SHARED, i, 0, win); MPI_Win_unlock(i, win); } MPI_Win_free(&win); MPI_Free_mem(winbuf); /* If this test completes, no error has been found */ /* A more complete test may ensure that local locks in fact block * remote, exclusive locks */ MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/win_shared_put_flush_get.c0000644000175000017500000001444012620254305022361 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include "mpitest.h" #define ITER 100 #define BUF_CNT 4 double local_buf[BUF_CNT], check_buf[BUF_CNT]; const int verbose = 0; int main(int argc, char *argv[]) { int rank, nproc, i, x; int errors = 0, all_errors = 0; MPI_Win win = MPI_WIN_NULL; MPI_Comm shm_comm = MPI_COMM_NULL; int shm_nproc, shm_rank; double **shm_bases = NULL, *my_base; MPI_Win shm_win = MPI_WIN_NULL; MPI_Group shm_group = MPI_GROUP_NULL, world_group = MPI_GROUP_NULL; int *shm_ranks = NULL, *shm_ranks_in_world = NULL; MPI_Aint get_target_base_offsets = 0; int win_size = sizeof(double) * BUF_CNT; int new_win_size = win_size; int win_unit = sizeof(double); int shm_root_rank_in_world; int origin = -1, put_target, get_target; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Comm_group(MPI_COMM_WORLD, &world_group); if (nproc != 4) { if (rank == 0) printf("Error: must be run with four processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_split_type(MPI_COMM_WORLD, MPI_COMM_TYPE_SHARED, rank, MPI_INFO_NULL, &shm_comm); MPI_Comm_rank(shm_comm, &shm_rank); MPI_Comm_size(shm_comm, &shm_nproc); MPI_Comm_group(shm_comm, &shm_group); /* Platform does not support shared memory or wrong host file, just return. */ if (shm_nproc != 2) { goto exit; } shm_bases = (double **) calloc(shm_nproc, sizeof(double *)); shm_ranks = (int *) calloc(shm_nproc, sizeof(int)); shm_ranks_in_world = (int *) calloc(shm_nproc, sizeof(int)); if (shm_rank == 0) shm_root_rank_in_world = rank; MPI_Bcast(&shm_root_rank_in_world, 1, MPI_INT, 0, shm_comm); /* Identify ranks of target processes which are located on node 0 */ if (rank == 0) { for (i = 0; i < shm_nproc; i++) { shm_ranks[i] = i; } MPI_Group_translate_ranks(shm_group, shm_nproc, shm_ranks, world_group, shm_ranks_in_world); } MPI_Bcast(shm_ranks_in_world, shm_nproc, MPI_INT, 0, MPI_COMM_WORLD); put_target = shm_ranks_in_world[shm_nproc - 1]; get_target = shm_ranks_in_world[0]; /* Identify the rank of origin process which are located on node 1 */ if (shm_root_rank_in_world == 1 && shm_rank == 0) { origin = rank; if (verbose) { printf("---- I am origin = %d, get_target = %d, put_target = %d\n", origin, get_target, put_target); } } /* Allocate shared memory among local processes */ MPI_Win_allocate_shared(win_size, win_unit, MPI_INFO_NULL, shm_comm, &my_base, &shm_win); if (shm_root_rank_in_world == 0 && verbose) { MPI_Aint size; int disp_unit; for (i = 0; i < shm_nproc; i++) { MPI_Win_shared_query(shm_win, i, &size, &disp_unit, &shm_bases[i]); printf("%d -- shared query: base[%d]=%p, size %ld, " "unit %d\n", rank, i, shm_bases[i], size, disp_unit); } } /* Get offset of put target(1) on get target(0) */ get_target_base_offsets = (shm_nproc - 1) * win_size / win_unit; if (origin == rank && verbose) printf("%d -- base_offset of put_target %d on get_target %d: %ld\n", rank, put_target, get_target, get_target_base_offsets); /* Create using MPI_Win_create(). Note that new window size of get_target(0) * is equal to the total size of shm segments on this node, thus get_target * process can read the byte located on put_target process.*/ for (i = 0; i < BUF_CNT; i++) { local_buf[i] = (i + 1) * 1.0; my_base[i] = 0.0; } if (get_target == rank) new_win_size = win_size * shm_nproc; MPI_Win_create(my_base, new_win_size, win_unit, MPI_INFO_NULL, MPI_COMM_WORLD, &win); if (verbose) printf("%d -- new window my_base %p, size %d\n", rank, my_base, new_win_size); MPI_Barrier(MPI_COMM_WORLD); /* Check if flush guarantees the completion of put operations on target side. * * P exclusively locks 2 processes whose windows are shared with each other. * P first put and flush to a process, then get the updated data from another process. * If flush returns before operations are done on the target side, the data may be * incorrect.*/ for (x = 0; x < ITER; x++) { for (i = 0; i < BUF_CNT; i++) { local_buf[i] += x; check_buf[i] = 0; } if (rank == origin) { MPI_Win_lock(MPI_LOCK_EXCLUSIVE, put_target, 0, win); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, get_target, 0, win); for (i = 0; i < BUF_CNT; i++) { MPI_Put(&local_buf[i], 1, MPI_DOUBLE, put_target, i, 1, MPI_DOUBLE, win); } MPI_Win_flush(put_target, win); MPI_Get(check_buf, BUF_CNT, MPI_DOUBLE, get_target, get_target_base_offsets, BUF_CNT, MPI_DOUBLE, win); MPI_Win_flush(get_target, win); for (i = 0; i < BUF_CNT; i++) { if (check_buf[i] != local_buf[i]) { printf("%d(iter %d) - Got check_buf[%d] = %.1lf, expected %.1lf\n", rank, x, i, check_buf[i], local_buf[i]); errors++; } } MPI_Win_unlock(put_target, win); MPI_Win_unlock(get_target, win); } } MPI_Barrier(MPI_COMM_WORLD); MPI_Reduce(&errors, &all_errors, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); exit: if (rank == 0 && all_errors == 0) printf(" No Errors\n"); if (shm_bases) free(shm_bases); if (shm_ranks) free(shm_ranks); if (shm_ranks_in_world) free(shm_ranks_in_world); if (shm_win != MPI_WIN_NULL) MPI_Win_free(&shm_win); if (win != MPI_WIN_NULL) MPI_Win_free(&win); if (shm_comm != MPI_COMM_NULL) MPI_Comm_free(&shm_comm); if (shm_group != MPI_GROUP_NULL) MPI_Group_free(&shm_group); if (world_group != MPI_GROUP_NULL) MPI_Group_free(&world_group); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/reqops.c0000644000175000017500000002244712620254305016625 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include "mpitest.h" #define ITER 100 int main(int argc, char *argv[]) { int rank, nproc, i; int errors = 0, all_errors = 0; int *buf; MPI_Win window; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); if (nproc < 2) { if (rank == 0) printf("Error: must be run with two or more processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } /** Create using MPI_Win_create() **/ if (rank == 0) { MPI_Alloc_mem(4 * sizeof(int), MPI_INFO_NULL, &buf); *buf = nproc - 1; } else buf = NULL; MPI_Win_create(buf, 4 * sizeof(int) * (rank == 0), 1, MPI_INFO_NULL, MPI_COMM_WORLD, &window); /* PROC_NULL Communication */ { MPI_Request pn_req[4]; int val[4], res; MPI_Win_lock_all(0, window); MPI_Rget_accumulate(&val[0], 1, MPI_INT, &res, 1, MPI_INT, MPI_PROC_NULL, 0, 1, MPI_INT, MPI_REPLACE, window, &pn_req[0]); MPI_Rget(&val[1], 1, MPI_INT, MPI_PROC_NULL, 1, 1, MPI_INT, window, &pn_req[1]); MPI_Rput(&val[2], 1, MPI_INT, MPI_PROC_NULL, 2, 1, MPI_INT, window, &pn_req[2]); MPI_Raccumulate(&val[3], 1, MPI_INT, MPI_PROC_NULL, 3, 1, MPI_INT, MPI_REPLACE, window, &pn_req[3]); assert(pn_req[0] != MPI_REQUEST_NULL); assert(pn_req[1] != MPI_REQUEST_NULL); assert(pn_req[2] != MPI_REQUEST_NULL); assert(pn_req[3] != MPI_REQUEST_NULL); MPI_Win_unlock_all(window); MPI_Waitall(4, pn_req, MPI_STATUSES_IGNORE); } MPI_Barrier(MPI_COMM_WORLD); MPI_Win_lock(MPI_LOCK_SHARED, 0, 0, window); /* GET-ACC: Test third-party communication, through rank 0. */ for (i = 0; i < ITER; i++) { MPI_Request gacc_req; int val = -1, exp = -1; /* Processes form a ring. Process 0 starts first, then passes a token * to the right. Each process, in turn, performs third-party * communication via process 0's window. */ if (rank > 0) { MPI_Recv(NULL, 0, MPI_BYTE, rank - 1, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); } MPI_Rget_accumulate(&rank, 1, MPI_INT, &val, 1, MPI_INT, 0, 0, 1, MPI_INT, MPI_REPLACE, window, &gacc_req); assert(gacc_req != MPI_REQUEST_NULL); MPI_Wait(&gacc_req, MPI_STATUS_IGNORE); exp = (rank + nproc - 1) % nproc; if (val != exp) { printf("%d - Got %d, expected %d\n", rank, val, exp); errors++; } if (rank < nproc - 1) { MPI_Send(NULL, 0, MPI_BYTE, rank + 1, 0, MPI_COMM_WORLD); } MPI_Barrier(MPI_COMM_WORLD); } MPI_Barrier(MPI_COMM_WORLD); if (rank == 0) *buf = nproc - 1; MPI_Win_sync(window); /* GET+PUT: Test third-party communication, through rank 0. */ for (i = 0; i < ITER; i++) { MPI_Request req; int val = -1, exp = -1; /* Processes form a ring. Process 0 starts first, then passes a token * to the right. Each process, in turn, performs third-party * communication via process 0's window. */ if (rank > 0) { MPI_Recv(NULL, 0, MPI_BYTE, rank - 1, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); } MPI_Rget(&val, 1, MPI_INT, 0, 0, 1, MPI_INT, window, &req); assert(req != MPI_REQUEST_NULL); MPI_Wait(&req, MPI_STATUS_IGNORE); /* Use flush to guarantee remote completion */ MPI_Put(&rank, 1, MPI_INT, 0, 0, 1, MPI_INT, window); MPI_Win_flush(0, window); exp = (rank + nproc - 1) % nproc; if (val != exp) { printf("%d - Got %d, expected %d\n", rank, val, exp); errors++; } if (rank < nproc - 1) { MPI_Send(NULL, 0, MPI_BYTE, rank + 1, 0, MPI_COMM_WORLD); } MPI_Barrier(MPI_COMM_WORLD); } MPI_Barrier(MPI_COMM_WORLD); if (rank == 0) *buf = nproc - 1; MPI_Win_sync(window); /* GET+ACC: Test third-party communication, through rank 0. */ for (i = 0; i < ITER; i++) { MPI_Request req; int val = -1, exp = -1; /* Processes form a ring. Process 0 starts first, then passes a token * to the right. Each process, in turn, performs third-party * communication via process 0's window. */ if (rank > 0) { MPI_Recv(NULL, 0, MPI_BYTE, rank - 1, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); } MPI_Rget(&val, 1, MPI_INT, 0, 0, 1, MPI_INT, window, &req); assert(req != MPI_REQUEST_NULL); MPI_Wait(&req, MPI_STATUS_IGNORE); /* Use flush to guarantee remote completion */ MPI_Accumulate(&rank, 1, MPI_INT, 0, 0, 1, MPI_INT, MPI_REPLACE, window); MPI_Win_flush(0, window); exp = (rank + nproc - 1) % nproc; if (val != exp) { printf("%d - Got %d, expected %d\n", rank, val, exp); errors++; } if (rank < nproc - 1) { MPI_Send(NULL, 0, MPI_BYTE, rank + 1, 0, MPI_COMM_WORLD); } MPI_Barrier(MPI_COMM_WORLD); } MPI_Win_unlock(0, window); MPI_Barrier(MPI_COMM_WORLD); /* Wait inside of an epoch */ { MPI_Request pn_req[4]; int val[4], res; const int target = 0; MPI_Win_lock_all(0, window); MPI_Rget_accumulate(&val[0], 1, MPI_INT, &res, 1, MPI_INT, target, 0, 1, MPI_INT, MPI_REPLACE, window, &pn_req[0]); MPI_Rget(&val[1], 1, MPI_INT, target, 1, 1, MPI_INT, window, &pn_req[1]); MPI_Rput(&val[2], 1, MPI_INT, target, 2, 1, MPI_INT, window, &pn_req[2]); MPI_Raccumulate(&val[3], 1, MPI_INT, target, 3, 1, MPI_INT, MPI_REPLACE, window, &pn_req[3]); assert(pn_req[0] != MPI_REQUEST_NULL); assert(pn_req[1] != MPI_REQUEST_NULL); assert(pn_req[2] != MPI_REQUEST_NULL); assert(pn_req[3] != MPI_REQUEST_NULL); MPI_Waitall(4, pn_req, MPI_STATUSES_IGNORE); MPI_Win_unlock_all(window); } MPI_Barrier(MPI_COMM_WORLD); /* Wait outside of an epoch */ { MPI_Request pn_req[4]; int val[4], res; const int target = 0; MPI_Win_lock_all(0, window); MPI_Rget_accumulate(&val[0], 1, MPI_INT, &res, 1, MPI_INT, target, 0, 1, MPI_INT, MPI_REPLACE, window, &pn_req[0]); MPI_Rget(&val[1], 1, MPI_INT, target, 1, 1, MPI_INT, window, &pn_req[1]); MPI_Rput(&val[2], 1, MPI_INT, target, 2, 1, MPI_INT, window, &pn_req[2]); MPI_Raccumulate(&val[3], 1, MPI_INT, target, 3, 1, MPI_INT, MPI_REPLACE, window, &pn_req[3]); assert(pn_req[0] != MPI_REQUEST_NULL); assert(pn_req[1] != MPI_REQUEST_NULL); assert(pn_req[2] != MPI_REQUEST_NULL); assert(pn_req[3] != MPI_REQUEST_NULL); MPI_Win_unlock_all(window); MPI_Waitall(4, pn_req, MPI_STATUSES_IGNORE); } /* Wait in a different epoch */ { MPI_Request pn_req[4]; int val[4], res; const int target = 0; MPI_Win_lock_all(0, window); MPI_Rget_accumulate(&val[0], 1, MPI_INT, &res, 1, MPI_INT, target, 0, 1, MPI_INT, MPI_REPLACE, window, &pn_req[0]); MPI_Rget(&val[1], 1, MPI_INT, target, 1, 1, MPI_INT, window, &pn_req[1]); MPI_Rput(&val[2], 1, MPI_INT, target, 2, 1, MPI_INT, window, &pn_req[2]); MPI_Raccumulate(&val[3], 1, MPI_INT, target, 3, 1, MPI_INT, MPI_REPLACE, window, &pn_req[3]); assert(pn_req[0] != MPI_REQUEST_NULL); assert(pn_req[1] != MPI_REQUEST_NULL); assert(pn_req[2] != MPI_REQUEST_NULL); assert(pn_req[3] != MPI_REQUEST_NULL); MPI_Win_unlock_all(window); MPI_Win_lock_all(0, window); MPI_Waitall(4, pn_req, MPI_STATUSES_IGNORE); MPI_Win_unlock_all(window); } /* Wait in a fence epoch */ { MPI_Request pn_req[4]; int val[4], res; const int target = 0; MPI_Win_lock_all(0, window); MPI_Rget_accumulate(&val[0], 1, MPI_INT, &res, 1, MPI_INT, target, 0, 1, MPI_INT, MPI_REPLACE, window, &pn_req[0]); MPI_Rget(&val[1], 1, MPI_INT, target, 1, 1, MPI_INT, window, &pn_req[1]); MPI_Rput(&val[2], 1, MPI_INT, target, 2, 1, MPI_INT, window, &pn_req[2]); MPI_Raccumulate(&val[3], 1, MPI_INT, target, 3, 1, MPI_INT, MPI_REPLACE, window, &pn_req[3]); assert(pn_req[0] != MPI_REQUEST_NULL); assert(pn_req[1] != MPI_REQUEST_NULL); assert(pn_req[2] != MPI_REQUEST_NULL); assert(pn_req[3] != MPI_REQUEST_NULL); MPI_Win_unlock_all(window); MPI_Win_fence(0, window); MPI_Waitall(4, pn_req, MPI_STATUSES_IGNORE); MPI_Win_fence(0, window); } MPI_Win_free(&window); if (buf) MPI_Free_mem(buf); MPI_Reduce(&errors, &all_errors, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (rank == 0 && all_errors == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/transpose4.c0000644000175000017500000000457712620254305017422 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "stdio.h" #include "mpitest.h" /* transposes a matrix using passive target RMA and derived datatypes. Uses vector and hvector (Example 3.32 from MPI 1.1 Standard). Run on 2 processes. */ #define NROWS 100 #define NCOLS 100 int main(int argc, char *argv[]) { int rank, nprocs, A[NROWS][NCOLS], i, j; MPI_Comm CommDeuce; MPI_Win win; MPI_Datatype column, xpose; int errs = 0; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (nprocs < 2) { printf("Run this program with 2 or more processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_split(MPI_COMM_WORLD, (rank < 2), rank, &CommDeuce); if (rank < 2) { if (rank == 0) { for (i = 0; i < NROWS; i++) for (j = 0; j < NCOLS; j++) A[i][j] = i * NCOLS + j; /* create datatype for one column */ MPI_Type_vector(NROWS, 1, NCOLS, MPI_INT, &column); /* create datatype for matrix in column-major order */ MPI_Type_hvector(NCOLS, 1, sizeof(int), column, &xpose); MPI_Type_commit(&xpose); MPI_Win_create(NULL, 0, 1, MPI_INFO_NULL, CommDeuce, &win); MPI_Win_lock(MPI_LOCK_SHARED, 1, 0, win); MPI_Put(A, NROWS * NCOLS, MPI_INT, 1, 0, 1, xpose, win); MPI_Type_free(&column); MPI_Type_free(&xpose); MPI_Win_unlock(1, win); MPI_Win_free(&win); } else { /* rank=1 */ for (i = 0; i < NROWS; i++) for (j = 0; j < NCOLS; j++) A[i][j] = -1; MPI_Win_create(A, NROWS * NCOLS * sizeof(int), sizeof(int), MPI_INFO_NULL, CommDeuce, &win); MPI_Win_free(&win); for (j = 0; j < NCOLS; j++) for (i = 0; i < NROWS; i++) if (A[j][i] != i * NCOLS + j) { printf("Error: A[%d][%d]=%d should be %d\n", j, i, A[j][i], i * NCOLS + j); errs++; } } } MPI_Comm_free(&CommDeuce); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/win_shared_rma_flush_load.c0000644000175000017500000002136712620254305022476 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include "mpitest.h" #define ITER 10000 #define BUF_CNT 1 int local_buf[BUF_CNT], result_addr[BUF_CNT]; #ifdef TEST_CAS int compare_buf[BUF_CNT]; #endif const int verbose = 0; /* This test checks the remote completion of flush with RMA write-like operations * (PUT, ACC, GET_ACC, FOP, CAS), and confirms result by shm load. * 1. P(target) and P(checker) allocate a shared window, and * then create a global window with P(origin) by using the shared window buffer. * 2. P(origin) issues RMA operations and flush to P(target) through the global * window and then call send-recv to synchronize with P(checker). * 3. P(checker) then checks the result through shm window by local load. */ int rank = -1, nproc = 0; int origin = -1, target = -1, checker = -1; MPI_Win win = MPI_WIN_NULL, shm_win = MPI_WIN_NULL; int *shm_target_base = NULL, *my_base = NULL; /* Define operation name for error message */ #ifdef TEST_PUT const char *rma_name = "Put"; #elif defined(TEST_ACC) const char *rma_name = "Accumulate"; #elif defined(TEST_GACC) const char *rma_name = "Get_accumulate"; #elif defined(TEST_FOP) const char *rma_name = "Fetch_and_op"; #elif defined(TEST_CAS) const char *rma_name = "Compare_and_swap"; #else const char *rma_name = "None"; #endif /* Issue functions for different RMA operations */ #ifdef TEST_PUT static inline void issue_rma_op(int i) { MPI_Put(&local_buf[i], 1, MPI_INT, target, i, 1, MPI_INT, win); } #elif defined(TEST_ACC) static inline void issue_rma_op(int i) { MPI_Accumulate(&local_buf[i], 1, MPI_INT, target, i, 1, MPI_INT, MPI_REPLACE, win); } #elif defined(TEST_GACC) static inline void issue_rma_op(int i) { MPI_Get_accumulate(&local_buf[i], 1, MPI_INT, &result_addr[i], 1, MPI_INT, target, i, 1, MPI_INT, MPI_REPLACE, win); } #elif defined(TEST_FOP) static inline void issue_rma_op(int i) { MPI_Fetch_and_op(&local_buf[i], &result_addr[i], MPI_INT, target, i, MPI_REPLACE, win); } #elif defined(TEST_CAS) static inline void issue_rma_op(int i) { compare_buf[i] = i; /* always equal to window value, thus swap happens */ MPI_Compare_and_swap(&local_buf[i], &compare_buf[i], &result_addr[i], MPI_INT, target, i, win); } #endif /* Local check function for GET-like operations */ #if defined(TEST_GACC) || defined(TEST_FOP) || defined(TEST_CAS) /* Check local result buffer for GET-like operations */ static int check_local_result(int iter) { int i = 0; int errors = 0; for (i = 0; i < BUF_CNT; i++) { if (result_addr[i] != i) { printf("rank %d (iter %d) - check %s, got result_addr[%d] = %d, expected %d\n", rank, iter, rma_name, i, result_addr[i], i); errors++; } } return errors; } #else #define check_local_result(iter) (0) #endif static int run_test() { int i = 0, x = 0; int errors = 0; int sbuf = 0, rbuf = 0; MPI_Status stat; for (x = 0; x < ITER; x++) { /* 1. Target resets window data */ if (rank == target) { for (i = 0; i < BUF_CNT; i++) my_base[i] = i; MPI_Win_sync(shm_win); /* write is done on shm window */ } MPI_Barrier(MPI_COMM_WORLD); /* 2. Every one resets local data */ for (i = 0; i < BUF_CNT; i++) { local_buf[i] = BUF_CNT + x * BUF_CNT + i; result_addr[i] = 0; } /* 3. Origin issues RMA operation to target */ if (rank == origin) { /* 3-1. Issue RMA. */ for (i = 0; i < BUF_CNT; i++) { issue_rma_op(i); } MPI_Win_flush(target, win); /* 3-2. Check local result buffer. */ errors += check_local_result(x); /* sync with checker */ MPI_Send(&sbuf, 1, MPI_INT, checker, 999, MPI_COMM_WORLD); } /* 4. Checker confirms result on target */ if (rank == checker) { /* sync with origin */ MPI_Recv(&rbuf, 1, MPI_INT, origin, 999, MPI_COMM_WORLD, &stat); MPI_Win_sync(shm_win); for (i = 0; i < BUF_CNT; i++) { if (shm_target_base[i] != local_buf[i]) { printf("rank %d (iter %d) - check %s, got shm_target_base[%d] = %d, " "expected %d\n", rank, x, rma_name, i, shm_target_base[i], local_buf[i]); errors++; } } } MPI_Barrier(MPI_COMM_WORLD); } return errors; } int main(int argc, char *argv[]) { int i; int errors = 0, all_errors = 0; MPI_Comm shm_comm = MPI_COMM_NULL; int shm_rank; int *shm_ranks = NULL, *shm_root_ranks = NULL; int win_size = sizeof(int) * BUF_CNT; int win_unit = sizeof(int); int shm_root_rank = -1, shm_target = -1, target_shm_root = -1; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); if (nproc != 3) { if (rank == 0) printf("Error: must be run with three processes\n"); MPI_Barrier(MPI_COMM_WORLD); MPI_Abort(MPI_COMM_WORLD, 1); } #if !defined(TEST_PUT) && !defined(TEST_ACC) && !defined(TEST_GACC) && !defined(TEST_FOP) && !defined(TEST_CAS) if (rank == 0) printf("Error: must specify operation type at compile time\n"); MPI_Barrier(MPI_COMM_WORLD); MPI_Abort(MPI_COMM_WORLD, 1); #endif MPI_Comm_split_type(MPI_COMM_WORLD, MPI_COMM_TYPE_SHARED, rank, MPI_INFO_NULL, &shm_comm); MPI_Comm_rank(shm_comm, &shm_rank); shm_ranks = (int *) calloc(nproc, sizeof(int)); shm_root_ranks = (int *) calloc(nproc, sizeof(int)); /* Identify node id */ if (shm_rank == 0) shm_root_rank = rank; MPI_Bcast(&shm_root_rank, 1, MPI_INT, 0, shm_comm); /* Exchange local root rank and local rank */ shm_ranks[rank] = shm_rank; shm_root_ranks[rank] = shm_root_rank; MPI_Allgather(MPI_IN_PLACE, 0, MPI_DATATYPE_NULL, shm_ranks, 1, MPI_INT, MPI_COMM_WORLD); MPI_Allgather(MPI_IN_PLACE, 0, MPI_DATATYPE_NULL, shm_root_ranks, 1, MPI_INT, MPI_COMM_WORLD); /* Check if there are at least two processes in shared memory. */ for (i = 0; i < nproc; i++) { if (shm_ranks[i] != 0) { target_shm_root = shm_root_ranks[i]; break; } } /* Every process is in separate memory, we cannot create shared window. Just return. */ if (target_shm_root < 0) goto exit; /* Identify origin, target and checker ranks. * the first process in shared memory is target, and the second one is checker; * the last process is origin.*/ shm_target = 0; for (i = 0; i < nproc; i++) { if (shm_root_ranks[i] == target_shm_root) { if (shm_ranks[i] == 0) { target = i; } else if (shm_ranks[i] == 1) { checker = i; } else { /* all three processes are in shared memory, origin is the third one. */ origin = i; } } else { /* origin is in separate memory. */ origin = i; } } if (verbose) { printf("---- rank %d: origin = %d, checker = %d, target = %d, test %s\n", rank, origin, checker, target, rma_name); } /* Allocate shared memory among local processes, then create a global window * with the shared window buffers. */ MPI_Win_allocate_shared(win_size, win_unit, MPI_INFO_NULL, shm_comm, &my_base, &shm_win); MPI_Win_create(my_base, win_size, win_unit, MPI_INFO_NULL, MPI_COMM_WORLD, &win); /* Get address of target window on checker process. */ if (rank == checker) { MPI_Aint size; int disp_unit; MPI_Win_shared_query(shm_win, shm_target, &size, &disp_unit, &shm_target_base); if (verbose) { printf("---- I am checker = %d, shm_target_base=%p\n", checker, shm_target_base); } } /* Start checking. */ MPI_Win_lock_all(0, win); MPI_Win_lock_all(0, shm_win); errors = run_test(); MPI_Win_unlock_all(shm_win); MPI_Win_unlock_all(win); MPI_Reduce(&errors, &all_errors, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); exit: if (rank == 0 && all_errors == 0) printf(" No Errors\n"); if (shm_ranks) free(shm_ranks); if (shm_root_ranks) free(shm_root_ranks); if (shm_win != MPI_WIN_NULL) MPI_Win_free(&shm_win); if (win != MPI_WIN_NULL) MPI_Win_free(&win); if (shm_comm != MPI_COMM_NULL) MPI_Comm_free(&shm_comm); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/lockcontention.c0000644000175000017500000000543312620254305020341 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "stdio.h" #include "stdlib.h" #include "mpitest.h" /* This is a modified version of test4.c. Sent by Liwei Peng, Microsoft. */ /* tests passive target RMA on 3 processes. tests the lock-single_op-unlock optimization. */ #define SIZE1 100 #define SIZE2 200 int main(int argc, char *argv[]) { int rank, nprocs, A[SIZE2], B[SIZE2], i; MPI_Comm CommThree; MPI_Win win; int errs = 0; int trank = 1; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (nprocs < 3) { fprintf(stderr, "Run this program with 3 or more processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_split(MPI_COMM_WORLD, (rank < 3), rank, &CommThree); if (rank < 3) { if (rank == 0) { for (i = 0; i < SIZE2; i++) { A[i] = B[i] = i; } } else if (rank == 2) { for (i = 0; i < SIZE2; i++) { A[i] = B[i] = -1; } } else if (rank == 1) { for (i = 0; i < SIZE2; i++) { B[i] = (-4) * i; } } MPI_Win_create(B, SIZE2 * sizeof(int), sizeof(int), MPI_INFO_NULL, CommThree, &win); if (rank == 0) { for (i = 0; i < SIZE1; i++) { MPI_Win_lock(MPI_LOCK_EXCLUSIVE, trank, 0, win); MPI_Put(A + i, 1, MPI_INT, trank, i, 1, MPI_INT, win); /* MPI_Put(A+i, 1, MPI_INT, trank, i, 1, MPI_INT, win); * MPI_Put(A+i, 1, MPI_INT, trank, i, 1, MPI_INT, win); */ MPI_Win_unlock(trank, win); } MPI_Win_free(&win); } else if (rank == 2) { for (i = 0; i < SIZE1; i++) { MPI_Win_lock(MPI_LOCK_EXCLUSIVE, trank, 0, win); MPI_Get(A + i, 1, MPI_INT, trank, SIZE1 + i, 1, MPI_INT, win); MPI_Win_unlock(trank, win); } MPI_Win_free(&win); for (i = 0; i < SIZE1; i++) if (A[i] != (-4) * (i + SIZE1)) { printf("Get Error: A[%d] is %d, should be %d\n", i, A[i], (-4) * (i + SIZE1)); errs++; } } else if (rank == 1) { /*target */ MPI_Win_free(&win); for (i = 0; i < SIZE1; i++) { if (B[i] != i) { printf("Put Error: B[%d] is %d, should be %d\n", i, B[i], i); errs++; } } } } MPI_Comm_free(&CommThree); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/transpose7.c0000644000175000017500000000555712620254305017424 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* This does a transpose with a get operation, fence, and derived datatypes. Uses vector and hvector (Example 3.32 from MPI 1.1 Standard). Run on 2 processes */ #define NROWS 1000 #define NCOLS 1000 int main(int argc, char *argv[]) { int rank, nprocs, **A, *A_data, i, j; MPI_Comm CommDeuce; MPI_Win win; MPI_Datatype column, xpose; int errs = 0; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (nprocs < 2) { printf("Run this program with 2 or more processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_split(MPI_COMM_WORLD, (rank < 2), rank, &CommDeuce); if (rank < 2) { A_data = (int *) malloc(NROWS * NCOLS * sizeof(int)); A = (int **) malloc(NROWS * sizeof(int *)); A[0] = A_data; for (i = 1; i < NROWS; i++) A[i] = A[i - 1] + NCOLS; if (rank == 0) { for (i = 0; i < NROWS; i++) for (j = 0; j < NCOLS; j++) A[i][j] = -1; /* create datatype for one column */ MPI_Type_vector(NROWS, 1, NCOLS, MPI_INT, &column); /* create datatype for matrix in column-major order */ MPI_Type_hvector(NCOLS, 1, sizeof(int), column, &xpose); MPI_Type_commit(&xpose); MPI_Win_create(NULL, 0, 1, MPI_INFO_NULL, CommDeuce, &win); MPI_Win_fence(0, win); MPI_Get(&A[0][0], NROWS * NCOLS, MPI_INT, 1, 0, 1, xpose, win); MPI_Type_free(&column); MPI_Type_free(&xpose); MPI_Win_fence(0, win); for (j = 0; j < NCOLS; j++) { for (i = 0; i < NROWS; i++) { if (A[j][i] != i * NCOLS + j) { if (errs < 50) { printf("Error: A[%d][%d]=%d should be %d\n", j, i, A[j][i], i * NCOLS + j); } errs++; } } } if (errs >= 50) { printf("Total number of errors: %d\n", errs); } } else { for (i = 0; i < NROWS; i++) for (j = 0; j < NCOLS; j++) A[i][j] = i * NCOLS + j; MPI_Win_create(&A[0][0], NROWS * NCOLS * sizeof(int), sizeof(int), MPI_INFO_NULL, CommDeuce, &win); MPI_Win_fence(0, win); MPI_Win_fence(0, win); } MPI_Win_free(&win); } MPI_Comm_free(&CommDeuce); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/lockall_dt_flushlocalall.c0000644000175000017500000001037612620254305022327 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test for streaming ACC-like operations with lock_all+flush_local_all"; */ int main(int argc, char *argv[]) { int errs = 0; int rank, size; int minsize = 2, count; MPI_Comm comm; MPI_Win win; MPI_Aint lb, extent; MTestDatatype sendtype, recvtype; MTest_Init(&argc, &argv); while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); int source = 0; MTEST_DATATYPE_FOR_EACH_COUNT(count) { while (MTestGetDatatypes(&sendtype, &recvtype, count)) { recvtype.printErrors = 1; recvtype.InitBuf(&recvtype); MPI_Type_get_extent(recvtype.datatype, &lb, &extent); MPI_Win_create(recvtype.buf, lb + recvtype.count * extent, (int) extent, MPI_INFO_NULL, comm, &win); if (rank == source) { int dest; MPI_Aint slb, sextent; MPI_Type_get_extent(sendtype.datatype, &slb, &sextent); sendtype.InitBuf(&sendtype); MPI_Win_lock_all(0, win); for (dest = 0; dest < size; dest++) if (dest != source) { MPI_Accumulate(sendtype.buf, sendtype.count, sendtype.datatype, dest, 0, recvtype.count, recvtype.datatype, MPI_REPLACE, win); } MPI_Win_flush_local_all(win); /* reset the send buffer to test local completion */ memset(sendtype.buf, 0, slb + sextent * sendtype.count); MPI_Win_unlock_all(win); MPI_Barrier(comm); sendtype.InitBuf(&sendtype); char *resbuf = (char *) calloc(lb + extent * recvtype.count, sizeof(char)); /*wait for the destination to finish checking and reinitializing the buffer */ MPI_Barrier(comm); MPI_Win_lock_all(0, win); for (dest = 0; dest < size; dest++) if (dest != source) { MPI_Get_accumulate(sendtype.buf, sendtype.count, sendtype.datatype, resbuf, recvtype.count, recvtype.datatype, dest, 0, recvtype.count, recvtype.datatype, MPI_REPLACE, win); } MPI_Win_flush_local_all(win); /* reset the send buffer to test local completion */ memset(sendtype.buf, 0, slb + sextent * sendtype.count); MPI_Win_unlock_all(win); MPI_Barrier(comm); free(resbuf); } else { int err; MPI_Barrier(comm); MPI_Win_lock(MPI_LOCK_SHARED, rank, 0, win); err = MTestCheckRecv(0, &recvtype); if (err) errs++; recvtype.InitBuf(&recvtype); MPI_Win_unlock(rank, win); /*signal the source that checking and reinitialization is done */ MPI_Barrier(comm); MPI_Barrier(comm); MPI_Win_lock(MPI_LOCK_SHARED, rank, 0, win); err = MTestCheckRecv(0, &recvtype); if (err) errs++; MPI_Win_unlock(rank, win); } MPI_Win_free(&win); MTestFreeDatatype(&sendtype); MTestFreeDatatype(&recvtype); } } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/winname.c0000644000175000017500000000177612620254305016754 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitestconf.h" #include "mpitest.h" #ifdef HAVE_STRING_H #include #endif int main(int argc, char *argv[]) { int errs = 0; MPI_Win win; int cnt, namelen; char name[MPI_MAX_OBJECT_NAME], nameout[MPI_MAX_OBJECT_NAME]; MTest_Init(&argc, &argv); cnt = 0; while (MTestGetWin(&win, 1)) { if (win == MPI_WIN_NULL) continue; sprintf(name, "win-%d", cnt); cnt++; MPI_Win_set_name(win, name); nameout[0] = 0; MPI_Win_get_name(win, nameout, &namelen); if (strcmp(name, nameout)) { errs++; printf("Unexpected name, was %s but should be %s\n", nameout, name); } MTestFreeWin(&win); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/window_creation.c0000644000175000017500000000261312620254305020500 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #define DATA_NELTS 1000 #define NUM_WIN 1000 #define DATA_SZ (DATA_NELTS*sizeof(int)) static int verbose = 0; int main(int argc, char **argv) { int rank, nproc, i; void *base_ptrs[NUM_WIN]; MPI_Win windows[NUM_WIN]; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); if (rank == 0) if (verbose) printf("Starting MPI window creation test with %d processes\n", nproc); /* Perform a pile of window creations */ for (i = 0; i < NUM_WIN; i++) { if (rank == 0) if (verbose) printf(" + Creating window %d\n", i); MPI_Alloc_mem(DATA_SZ, MPI_INFO_NULL, &base_ptrs[i]); MPI_Win_create(base_ptrs[i], DATA_SZ, 1, MPI_INFO_NULL, MPI_COMM_WORLD, &windows[i]); } MPI_Barrier(MPI_COMM_WORLD); /* Free all the windows */ for (i = 0; i < NUM_WIN; i++) { if (rank == 0) if (verbose) printf(" + Freeing window %d\n", i); MPI_Win_free(&windows[i]); MPI_Free_mem(base_ptrs[i]); } if (rank == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/test1_am.c0000644000175000017500000000531212620254305017021 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "stdio.h" #include "mpitest.h" #include "squelch.h" /* tests a series of puts, gets, and accumulate on 2 processes using fence */ /* same as test1.c but uses alloc_mem */ #define SIZE 100 int main(int argc, char *argv[]) { int rank, nprocs, i; MPI_Comm CommDeuce; int *A, *B; MPI_Win win; int errs = 0; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (nprocs < 2) { printf("Run this program with 2 or more processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_split(MPI_COMM_WORLD, (rank < 2), rank, &CommDeuce); if (rank < 2) { i = MPI_Alloc_mem(SIZE * sizeof(int), MPI_INFO_NULL, &A); if (i) { printf("Can't allocate memory in test program\n"); MPI_Abort(MPI_COMM_WORLD, 1); } i = MPI_Alloc_mem(SIZE * sizeof(int), MPI_INFO_NULL, &B); if (i) { printf("Can't allocate memory in test program\n"); MPI_Abort(MPI_COMM_WORLD, 1); } if (rank == 0) { for (i = 0; i < SIZE; i++) A[i] = B[i] = i; } else { for (i = 0; i < SIZE; i++) { A[i] = (-3) * i; B[i] = (-4) * i; } } MPI_Win_create(B, SIZE * sizeof(int), sizeof(int), MPI_INFO_NULL, CommDeuce, &win); MPI_Win_fence(0, win); if (rank == 0) { for (i = 0; i < SIZE - 1; i++) MPI_Put(A + i, 1, MPI_INT, 1, i, 1, MPI_INT, win); } else { for (i = 0; i < SIZE - 1; i++) MPI_Get(A + i, 1, MPI_INT, 0, i, 1, MPI_INT, win); MPI_Accumulate(A + i, 1, MPI_INT, 0, i, 1, MPI_INT, MPI_SUM, win); } MPI_Win_fence(0, win); if (rank == 1) { for (i = 0; i < SIZE - 1; i++) { if (A[i] != B[i]) { SQUELCH(printf("Put/Get Error: A[i]=%d, B[i]=%d\n", A[i], B[i]);); errs++; } } } else { if (B[SIZE - 1] != SIZE - 1 - 3 * (SIZE - 1)) { SQUELCH(printf ("Accumulate Error: B[SIZE-1] is %d, should be %d\n", B[SIZE - 1], SIZE - 1 - 3 * (SIZE - 1));); errs++; } } MPI_Win_free(&win); MPI_Free_mem(A); MPI_Free_mem(B); } MPI_Comm_free(&CommDeuce); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/test2.c0000644000175000017500000000565112620254305016353 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "stdio.h" #include "mpitest.h" #include "squelch.h" /* tests put and get with post/start/complete/wait on 2 processes */ #define SIZE1 100 #define SIZE2 200 int main(int argc, char *argv[]) { int rank, destrank, nprocs, A[SIZE2], i; MPI_Comm CommDeuce; MPI_Group comm_group, group; MPI_Win win; int errs = 0; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (nprocs < 2) { printf("Run this program with 2 or more processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_split(MPI_COMM_WORLD, (rank < 2), rank, &CommDeuce); if (rank < 2) { MPI_Comm_group(CommDeuce, &comm_group); if (rank == 0) { int B[SIZE2]; for (i = 0; i < SIZE2; i++) A[i] = B[i] = i; #ifdef USE_WIN_ALLOCATE char *base_ptr; MPI_Win_allocate(0, 1, MPI_INFO_NULL, CommDeuce, &base_ptr, &win); #else MPI_Win_create(NULL, 0, 1, MPI_INFO_NULL, CommDeuce, &win); #endif destrank = 1; MPI_Group_incl(comm_group, 1, &destrank, &group); MPI_Win_start(group, 0, win); for (i = 0; i < SIZE1; i++) MPI_Put(A + i, 1, MPI_INT, 1, i, 1, MPI_INT, win); for (i = 0; i < SIZE1; i++) MPI_Get(B + i, 1, MPI_INT, 1, SIZE1 + i, 1, MPI_INT, win); MPI_Win_complete(win); for (i = 0; i < SIZE1; i++) if (B[i] != (-4) * (i + SIZE1)) { SQUELCH(printf ("Get Error: B[i] is %d, should be %d\n", B[i], (-4) * (i + SIZE1));); errs++; } } else if (rank == 1) { #ifdef USE_WIN_ALLOCATE int *B; MPI_Win_allocate(SIZE2 * sizeof(int), sizeof(int), MPI_INFO_NULL, CommDeuce, &B, &win); #else int B[SIZE2]; MPI_Win_create(B, SIZE2 * sizeof(int), sizeof(int), MPI_INFO_NULL, CommDeuce, &win); #endif MPI_Win_lock(MPI_LOCK_SHARED, rank, 0, win); for (i = 0; i < SIZE2; i++) B[i] = (-4) * i; MPI_Win_unlock(rank, win); destrank = 0; MPI_Group_incl(comm_group, 1, &destrank, &group); MPI_Win_post(group, 0, win); MPI_Win_wait(win); for (i = 0; i < SIZE1; i++) { if (B[i] != i) { SQUELCH(printf("Put Error: B[i] is %d, should be %d\n", B[i], i);); errs++; } } } MPI_Group_free(&group); MPI_Group_free(&comm_group); MPI_Win_free(&win); } MPI_Comm_free(&CommDeuce); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/strided_acc_subarray.c0000644000175000017500000001044112620254305021457 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* One-Sided MPI 2-D Strided Accumulate Test * * Author: James Dinan * Date : December, 2010 * * This code performs N accumulates into a 2d patch of a shared array. The * array has dimensions [X, Y] and the subarray has dimensions [SUB_X, SUB_Y] * and begins at index [0, 0]. The input and output buffers are specified * using an MPI subarray type. */ #include #include #include #include #include "mpitest.h" #include "squelch.h" #define XDIM 1024 #define YDIM 1024 #define SUB_XDIM 512 #define SUB_YDIM 512 #define ITERATIONS 10 int main(int argc, char **argv) { int i, j, rank, nranks, peer, bufsize, errors; double *win_buf, *src_buf; MPI_Win buf_win; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nranks); bufsize = XDIM * YDIM * sizeof(double); MPI_Alloc_mem(bufsize, MPI_INFO_NULL, &win_buf); MPI_Alloc_mem(bufsize, MPI_INFO_NULL, &src_buf); for (i = 0; i < XDIM * YDIM; i++) { *(win_buf + i) = -1.0; *(src_buf + i) = 1.0 + rank; } MPI_Win_create(win_buf, bufsize, 1, MPI_INFO_NULL, MPI_COMM_WORLD, &buf_win); peer = (rank + 1) % nranks; /* Perform ITERATIONS strided accumulate operations */ for (i = 0; i < ITERATIONS; i++) { int ndims = 2; int src_arr_sizes[2] = { XDIM, YDIM }; int src_arr_subsizes[2] = { SUB_XDIM, SUB_YDIM }; int src_arr_starts[2] = { 0, 0 }; int dst_arr_sizes[2] = { XDIM, YDIM }; int dst_arr_subsizes[2] = { SUB_XDIM, SUB_YDIM }; int dst_arr_starts[2] = { 0, 0 }; MPI_Datatype src_type, dst_type; MPI_Type_create_subarray(ndims, src_arr_sizes, src_arr_subsizes, src_arr_starts, MPI_ORDER_C, MPI_DOUBLE, &src_type); MPI_Type_create_subarray(ndims, dst_arr_sizes, dst_arr_subsizes, dst_arr_starts, MPI_ORDER_C, MPI_DOUBLE, &dst_type); MPI_Type_commit(&src_type); MPI_Type_commit(&dst_type); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, peer, 0, buf_win); MPI_Accumulate(src_buf, 1, src_type, peer, 0, 1, dst_type, MPI_SUM, buf_win); MPI_Win_unlock(peer, buf_win); MPI_Type_free(&src_type); MPI_Type_free(&dst_type); } MPI_Barrier(MPI_COMM_WORLD); /* Verify that the results are correct */ MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, buf_win); errors = 0; for (i = 0; i < SUB_XDIM; i++) { for (j = 0; j < SUB_YDIM; j++) { const double actual = *(win_buf + i + j * XDIM); const double expected = -1.0 + (1.0 + ((rank + nranks - 1) % nranks)) * (ITERATIONS); if (fabs(actual - expected) > 1.0e-10) { SQUELCH(printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual);); errors++; fflush(stdout); } } } for (i = SUB_XDIM; i < XDIM; i++) { for (j = 0; j < SUB_YDIM; j++) { const double actual = *(win_buf + i + j * XDIM); const double expected = -1.0; if (fabs(actual - expected) > 1.0e-10) { SQUELCH(printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual);); errors++; fflush(stdout); } } } for (i = 0; i < XDIM; i++) { for (j = SUB_YDIM; j < YDIM; j++) { const double actual = *(win_buf + i + j * XDIM); const double expected = -1.0; if (fabs(actual - expected) > 1.0e-10) { SQUELCH(printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual);); errors++; fflush(stdout); } } } MPI_Win_unlock(rank, buf_win); MPI_Win_free(&buf_win); MPI_Free_mem(win_buf); MPI_Free_mem(src_buf); MTest_Finalize(errors); MPI_Finalize(); return MTestReturnValue(errors); } mpi-testsuite-3.2+dfsg/rma/manyget.c0000644000175000017500000000261212620254305016750 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* This test triggers a limitation in the Portals4 netmod where * too many large messages can overflow the available ME entries * (PTL_NO_SPACE). Our approach is to queue the entire send message * in the Rportals layer until we know there is ME space available. */ #include #include #include #define BUFSIZE (128*1024) int main(int argc, char *argv[]) { int i, rank, size; int *buf; MPI_Win win; MPI_Init(&argc, &argv); buf = malloc(BUFSIZE); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); if (size != 2) { printf("test must be run with 2 processes!\n"); MPI_Abort(MPI_COMM_WORLD, 1); } if (rank == 0) MPI_Win_create(buf, BUFSIZE, sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &win); else MPI_Win_create(MPI_BOTTOM, 0, 1, MPI_INFO_NULL, MPI_COMM_WORLD, &win); MPI_Win_fence(0, win); if (rank == 1) { for (i = 0; i < 100000; i++) MPI_Get(buf, BUFSIZE / sizeof(int), MPI_INT, 0, 0, BUFSIZE / sizeof(int), MPI_INT, win); } MPI_Win_fence(0, win); MPI_Win_free(&win); if (rank == 0) printf(" No Errors\n"); free(buf); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/fetchandadd_tree.c0000644000175000017500000001267012620254305020555 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "stdio.h" #include "stdlib.h" #include "mpitest.h" /* This is the tree-based scalable version of the fetch-and-add example from Using MPI-2, pg 206-207. The code in the book (Fig 6.16) has bugs that are fixed below. */ #define NTIMES 20 /* no of times each process calls the counter * routine */ int localvalue = 0; /* contribution of this process to the counter. We * define it as a global variable because attribute * caching on the window is not enabled yet. */ void Get_nextval_tree(MPI_Win win, int *get_array, MPI_Datatype get_type, MPI_Datatype acc_type, int nlevels, int *value); int compar(const void *a, const void *b); int main(int argc, char *argv[]) { int rank, nprocs, i, *counter_mem, *get_array, *get_idx, *acc_idx, mask, nlevels, level, idx, tmp_rank, pof2; MPI_Datatype get_type, acc_type; MPI_Win win; int errs = 0, *results, *counter_vals; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (rank == 0) { /* allocate counter memory and initialize to 0 */ /* find the next power-of-two >= nprocs */ pof2 = 1; while (pof2 < nprocs) pof2 *= 2; counter_mem = (int *) calloc(pof2 * 2, sizeof(int)); MPI_Win_create(counter_mem, pof2 * 2 * sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &win); MPI_Win_free(&win); free(counter_mem); /* gather the results from other processes, sort them, and check * whether they represent a counter being incremented by 1 */ results = (int *) malloc(NTIMES * nprocs * sizeof(int)); for (i = 0; i < NTIMES * nprocs; i++) results[i] = -1; MPI_Gather(MPI_IN_PLACE, 0, MPI_DATATYPE_NULL, results, NTIMES, MPI_INT, 0, MPI_COMM_WORLD); qsort(results + NTIMES, NTIMES * (nprocs - 1), sizeof(int), compar); for (i = NTIMES + 1; i < (NTIMES * nprocs); i++) if (results[i] != results[i - 1] + 1) errs++; free(results); } else { /* Get the largest power of two smaller than nprocs */ mask = 1; nlevels = 0; while (mask < nprocs) { mask <<= 1; nlevels++; } mask >>= 1; get_array = (int *) malloc(nlevels * sizeof(int)); get_idx = (int *) malloc(nlevels * sizeof(int)); acc_idx = (int *) malloc(nlevels * sizeof(int)); level = 0; idx = 0; tmp_rank = rank; while (mask >= 1) { if (tmp_rank < mask) { /* go to left for acc_idx, go to right for * get_idx. set idx=acc_idx for next iteration */ acc_idx[level] = idx + 1; get_idx[level] = idx + mask * 2; idx = idx + 1; } else { /* go to right for acc_idx, go to left for * get_idx. set idx=acc_idx for next iteration */ acc_idx[level] = idx + mask * 2; get_idx[level] = idx + 1; idx = idx + mask * 2; } level++; tmp_rank = tmp_rank % mask; mask >>= 1; } /* for (i=0; i #include #include #include #include "mpitest.h" #ifdef HAVE_UNISTD_H #include #endif #define NUM_ELEMS 1000 #define MAX_NPROBE nproc #define MIN_NPROBE 1 #define ELEM_PER_ROW 16 #define MIN(X,Y) ((X < Y) ? (X) : (Y)) #define MAX(X,Y) ((X > Y) ? (X) : (Y)) /* Linked list pointer */ typedef struct { int rank; MPI_Aint disp; } llist_ptr_t; /* Linked list element */ typedef struct { int value; llist_ptr_t next; } llist_elem_t; static const llist_ptr_t nil = { -1, (MPI_Aint) MPI_BOTTOM }; static const int verbose = 0; static const int print_perf = 0; /* List of locally allocated list elements. */ static llist_elem_t **my_elems = NULL; static int my_elems_size = 0; static int my_elems_count = 0; /* Allocate a new shared linked list element */ MPI_Aint alloc_elem(int value, MPI_Win win) { MPI_Aint disp; llist_elem_t *elem_ptr; /* Allocate the new element and register it with the window */ MPI_Alloc_mem(sizeof(llist_elem_t), MPI_INFO_NULL, &elem_ptr); elem_ptr->value = value; elem_ptr->next = nil; MPI_Win_attach(win, elem_ptr, sizeof(llist_elem_t)); /* Add the element to the list of local elements so we can free it later. */ if (my_elems_size == my_elems_count) { my_elems_size += 100; my_elems = realloc(my_elems, my_elems_size * sizeof(void *)); } my_elems[my_elems_count] = elem_ptr; my_elems_count++; MPI_Get_address(elem_ptr, &disp); return disp; } int main(int argc, char **argv) { int procid, nproc, i, j, my_nelem; int pollint = 0; double time; MPI_Win llist_win; llist_ptr_t head_ptr, tail_ptr; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &procid); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Win_create_dynamic(MPI_INFO_NULL, MPI_COMM_WORLD, &llist_win); /* Process 0 creates the head node */ if (procid == 0) head_ptr.disp = alloc_elem(procid, llist_win); /* Broadcast the head pointer to everyone */ head_ptr.rank = 0; MPI_Bcast(&head_ptr.disp, 1, MPI_AINT, 0, MPI_COMM_WORLD); tail_ptr = head_ptr; /* All processes append NUM_ELEMS elements to the list; rank 0 has already * appended an element. */ if (procid == 0) i = 1; else i = 0; my_nelem = NUM_ELEMS / nproc; if (procid < NUM_ELEMS % nproc) my_nelem++; MPI_Barrier(MPI_COMM_WORLD); time = MPI_Wtime(); for (; i < my_nelem; i++) { llist_ptr_t new_elem_ptr; int success = 0; /* Create a new list element and register it with the window */ new_elem_ptr.rank = procid; new_elem_ptr.disp = alloc_elem(procid, llist_win); /* Append the new node to the list. This might take multiple attempts if * others have already appended and our tail pointer is stale. */ do { int flag; /* The tail is at my left neighbor, append my element. */ if (tail_ptr.rank == (procid + nproc - 1) % nproc) { if (verbose) printf("%d: Appending to <%d, %p>\n", procid, tail_ptr.rank, (void *) tail_ptr.disp); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, tail_ptr.rank, 0, llist_win); #if USE_ACC MPI_Accumulate(&new_elem_ptr, sizeof(llist_ptr_t), MPI_BYTE, tail_ptr.rank, (MPI_Aint) & (((llist_elem_t *) tail_ptr.disp)->next), sizeof(llist_ptr_t), MPI_BYTE, MPI_REPLACE, llist_win); #else MPI_Put(&new_elem_ptr, sizeof(llist_ptr_t), MPI_BYTE, tail_ptr.rank, (MPI_Aint) & (((llist_elem_t *) tail_ptr.disp)->next), sizeof(llist_ptr_t), MPI_BYTE, llist_win); #endif MPI_Win_unlock(tail_ptr.rank, llist_win); success = 1; tail_ptr = new_elem_ptr; } /* Otherwise, chase the tail. */ else { llist_ptr_t next_tail_ptr; MPI_Win_lock(MPI_LOCK_EXCLUSIVE, tail_ptr.rank, 0, llist_win); #if USE_ACC MPI_Get_accumulate(NULL, 0, MPI_DATATYPE_NULL, &next_tail_ptr, sizeof(llist_ptr_t), MPI_BYTE, tail_ptr.rank, (MPI_Aint) & (((llist_elem_t *) tail_ptr.disp)->next), sizeof(llist_ptr_t), MPI_BYTE, MPI_NO_OP, llist_win); #else MPI_Get(&next_tail_ptr, sizeof(llist_ptr_t), MPI_BYTE, tail_ptr.rank, (MPI_Aint) & (((llist_elem_t *) tail_ptr.disp)->next), sizeof(llist_ptr_t), MPI_BYTE, llist_win); #endif MPI_Win_unlock(tail_ptr.rank, llist_win); if (next_tail_ptr.rank != nil.rank) { if (verbose) printf("%d: Chasing to <%d, %p>\n", procid, next_tail_ptr.rank, (void *) next_tail_ptr.disp); tail_ptr = next_tail_ptr; pollint = MAX(MIN_NPROBE, pollint / 2); } else { for (j = 0; j < pollint; j++) MPI_Iprobe(MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &flag, MPI_STATUS_IGNORE); pollint = MIN(MAX_NPROBE, pollint * 2); } } } while (!success); } MPI_Barrier(MPI_COMM_WORLD); time = MPI_Wtime() - time; /* Traverse the list and verify that all processes inserted exactly the correct * number of elements. */ if (procid == 0) { int errors = 0; int *counts, count = 0; counts = (int *) malloc(sizeof(int) * nproc); assert(counts != NULL); for (i = 0; i < nproc; i++) counts[i] = 0; tail_ptr = head_ptr; MPI_Win_lock_all(0, llist_win); /* Walk the list and tally up the number of elements inserted by each rank */ while (tail_ptr.disp != nil.disp) { llist_elem_t elem; MPI_Get(&elem, sizeof(llist_elem_t), MPI_BYTE, tail_ptr.rank, tail_ptr.disp, sizeof(llist_elem_t), MPI_BYTE, llist_win); MPI_Win_flush(tail_ptr.rank, llist_win); tail_ptr = elem.next; assert(elem.value >= 0 && elem.value < nproc); counts[elem.value]++; count++; if (verbose) { int last_elem = tail_ptr.disp == nil.disp; printf("%2d%s", elem.value, last_elem ? "" : " -> "); if (count % ELEM_PER_ROW == 0 && !last_elem) printf("\n"); } } MPI_Win_unlock_all(llist_win); if (verbose) printf("\n\n"); /* Verify the counts we collected */ for (i = 0; i < nproc; i++) { int expected; expected = NUM_ELEMS / nproc; if (i < NUM_ELEMS % nproc) expected++; if (counts[i] != expected) { printf("Error: Rank %d inserted %d elements, expected %d\n", i, counts[i], expected); errors++; } } printf("%s\n", errors == 0 ? " No Errors" : "FAIL"); free(counts); } if (print_perf) { double max_time; MPI_Reduce(&time, &max_time, 1, MPI_DOUBLE, MPI_MAX, 0, MPI_COMM_WORLD); if (procid == 0) { printf("Total time = %0.2f sec, elem/sec = %0.2f, sec/elem = %0.2f usec\n", max_time, NUM_ELEMS / max_time, max_time / NUM_ELEMS * 1.0e6); } } MPI_Win_free(&llist_win); /* Free all the elements in the list */ for (; my_elems_count > 0; my_elems_count--) MPI_Free_mem(my_elems[my_elems_count - 1]); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/mcs-mutex.c0000644000175000017500000001435512620254305017235 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2013 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include #include #include "mcs-mutex.h" /* TODO: Make these mutex operations no-ops for sequential runs */ /** Create an MCS mutex. Collective on comm. * * @param[out] comm communicator containing all processes that will use the * mutex * @param[out] tail_rank rank of the process in comm that holds the tail * pointer * @param[out] hdl handle to the mutex * @return MPI status */ int MCS_Mutex_create(int tail_rank, MPI_Comm comm, MCS_Mutex * hdl_out) { int rank, nproc; MCS_Mutex hdl; hdl = malloc(sizeof(struct mcs_mutex_s)); assert(hdl != NULL); MPI_Comm_dup(comm, &hdl->comm); MPI_Comm_rank(hdl->comm, &rank); MPI_Comm_size(hdl->comm, &nproc); hdl->tail_rank = tail_rank; #ifdef USE_WIN_SHARED MPI_Win_allocate_shared(2 * sizeof(int), sizeof(int), MPI_INFO_NULL, hdl->comm, &hdl->base, &hdl->window); #else #ifdef USE_WIN_ALLOC_SHM MPI_Info_create(&hdl->win_info); MPI_Info_set(hdl->win_info, "alloc_shm", "true"); #else MPI_Info_create(&hdl->win_info); MPI_Info_set(hdl->win_info, "alloc_shm", "false"); #endif MPI_Win_allocate(2 * sizeof(int), sizeof(int), hdl->win_info, hdl->comm, &hdl->base, &hdl->window); #endif MPI_Win_lock_all(0, hdl->window); hdl->base[0] = MPI_PROC_NULL; hdl->base[1] = MPI_PROC_NULL; MPI_Win_sync(hdl->window); MPI_Barrier(hdl->comm); *hdl_out = hdl; return MPI_SUCCESS; } /** Free an MCS mutex. Collective on ranks in the communicator used at the * time of creation. * * @param[in] hdl handle to the group that will be freed * @return MPI status */ int MCS_Mutex_free(MCS_Mutex * hdl_ptr) { MCS_Mutex hdl = *hdl_ptr; MPI_Win_unlock_all(hdl->window); MPI_Win_free(&hdl->window); MPI_Comm_free(&hdl->comm); #ifndef USE_WIN_SHARED MPI_Info_free(&hdl->win_info); #endif free(hdl); hdl_ptr = NULL; return MPI_SUCCESS; } /** Lock a mutex. * * @param[in] hdl Handle to the mutex * @return MPI status */ int MCS_Mutex_lock(MCS_Mutex hdl) { int rank, nproc; int prev; MPI_Comm_rank(hdl->comm, &rank); MPI_Comm_size(hdl->comm, &nproc); /* This store is safe, since it cannot happen concurrently with a remote * write */ hdl->base[MCS_MTX_ELEM_DISP] = MPI_PROC_NULL; MPI_Win_sync(hdl->window); MPI_Fetch_and_op(&rank, &prev, MPI_INT, hdl->tail_rank, MCS_MTX_TAIL_DISP, MPI_REPLACE, hdl->window); MPI_Win_flush(hdl->tail_rank, hdl->window); /* If there was a previous tail, update their next pointer and wait for * notification. Otherwise, the mutex was successfully acquired. */ if (prev != MPI_PROC_NULL) { /* Wait for notification */ MPI_Status status; MPI_Accumulate(&rank, 1, MPI_INT, prev, MCS_MTX_ELEM_DISP, 1, MPI_INT, MPI_REPLACE, hdl->window); MPI_Win_flush(prev, hdl->window); debug_print("%2d: LOCK - waiting for notification from %d\n", rank, prev); MPI_Recv(NULL, 0, MPI_BYTE, prev, MCS_MUTEX_TAG, hdl->comm, &status); } debug_print("%2d: LOCK - lock acquired\n", rank); return MPI_SUCCESS; } /** Attempt to acquire a mutex. * * @param[in] hdl Handle to the mutex * @param[out] success Indicates whether the mutex was acquired * @return MPI status */ int MCS_Mutex_trylock(MCS_Mutex hdl, int *success) { int rank, nproc; int tail, nil = MPI_PROC_NULL; MPI_Comm_rank(hdl->comm, &rank); MPI_Comm_size(hdl->comm, &nproc); /* This store is safe, since it cannot happen concurrently with a remote * write */ hdl->base[MCS_MTX_ELEM_DISP] = MPI_PROC_NULL; MPI_Win_sync(hdl->window); /* Check if the lock is available and claim it if it is. */ MPI_Compare_and_swap(&rank, &nil, &tail, MPI_INT, hdl->tail_rank, MCS_MTX_TAIL_DISP, hdl->window); MPI_Win_flush(hdl->tail_rank, hdl->window); /* If the old tail was MPI_PROC_NULL, we have claimed the mutex */ *success = (tail == nil); debug_print("%2d: TRYLOCK - %s\n", rank, (*success) ? "Success" : "Non-success"); return MPI_SUCCESS; } /** Unlock a mutex. * * @param[in] hdl Handle to the mutex * @return MPI status */ int MCS_Mutex_unlock(MCS_Mutex hdl) { int rank, nproc, next; MPI_Comm_rank(hdl->comm, &rank); MPI_Comm_size(hdl->comm, &nproc); MPI_Win_sync(hdl->window); /* Read my next pointer. FOP is used since another process may write to * this location concurrent with this read. */ MPI_Fetch_and_op(NULL, &next, MPI_INT, rank, MCS_MTX_ELEM_DISP, MPI_NO_OP, hdl->window); MPI_Win_flush(rank, hdl->window); if (next == MPI_PROC_NULL) { int tail; int nil = MPI_PROC_NULL; /* Check if we are the at the tail of the lock queue. If so, we're * done. If not, we need to send notification. */ MPI_Compare_and_swap(&nil, &rank, &tail, MPI_INT, hdl->tail_rank, MCS_MTX_TAIL_DISP, hdl->window); MPI_Win_flush(hdl->tail_rank, hdl->window); if (tail != rank) { debug_print("%2d: UNLOCK - waiting for next pointer (tail = %d)\n", rank, tail); assert(tail >= 0 && tail < nproc); for (;;) { int flag; MPI_Fetch_and_op(NULL, &next, MPI_INT, rank, MCS_MTX_ELEM_DISP, MPI_NO_OP, hdl->window); MPI_Win_flush(rank, hdl->window); if (next != MPI_PROC_NULL) break; MPI_Iprobe(MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &flag, MPI_STATUS_IGNORE); } } } /* Notify the next waiting process */ if (next != MPI_PROC_NULL) { debug_print("%2d: UNLOCK - notifying %d\n", rank, next); MPI_Send(NULL, 0, MPI_BYTE, next, MCS_MUTEX_TAG, hdl->comm); } debug_print("%2d: UNLOCK - lock released\n", rank); return MPI_SUCCESS; } mpi-testsuite-3.2+dfsg/rma/fence_shm.c0000644000175000017500000000461312620254305017236 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include "mpi.h" #include "mpitest.h" #define ELEM_PER_PROC 1 static int errors = 0; int main(int argc, char *argv[]) { int rank, nprocs; int shm_rank, shm_nprocs; MPI_Comm shm_comm; MPI_Win shm_win; int *my_base; int one = 1; int result_data; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); /* run with two processes. */ MPI_Comm_split_type(MPI_COMM_WORLD, MPI_COMM_TYPE_SHARED, rank, MPI_INFO_NULL, &shm_comm); MPI_Comm_rank(shm_comm, &shm_rank); MPI_Comm_size(shm_comm, &shm_nprocs); if (shm_nprocs >= 2) { MPI_Win_allocate_shared(sizeof(int) * ELEM_PER_PROC, sizeof(int), MPI_INFO_NULL, shm_comm, &my_base, &shm_win); /* Test for FENCE with no asserts. */ if (shm_rank == 1) { *my_base = 0; MPI_Win_fence(0, shm_win); MPI_Win_fence(0, shm_win); if (my_base[0] != one) { errors++; printf("Expected: my_base[0] = %d Actual: my_base[0] = %d\n", one, my_base[0]); } } if (shm_rank == 0) { MPI_Win_fence(0, shm_win); MPI_Put(&one, 1, MPI_INT, 1, 0, 1, MPI_INT, shm_win); MPI_Win_fence(0, shm_win); } /* Test for FENCE with assert MPI_MODE_NOPRECEDE. */ if (shm_rank == 1) { MPI_Win_lock(MPI_LOCK_EXCLUSIVE, 1, 0, shm_win); MPI_Put(&one, 1, MPI_INT, 1, 0, 1, MPI_INT, shm_win); MPI_Win_unlock(1, shm_win); MPI_Win_fence(MPI_MODE_NOPRECEDE, shm_win); MPI_Win_fence(0, shm_win); } if (shm_rank == 0) { result_data = 0; MPI_Win_fence(MPI_MODE_NOPRECEDE, shm_win); MPI_Get(&result_data, 1, MPI_INT, 1, 0, 1, MPI_INT, shm_win); MPI_Win_fence(0, shm_win); if (result_data != one) { errors++; printf("Expected: result_data = %d Actual: result_data = %d\n", one, result_data); } } MPI_Win_free(&shm_win); } MPI_Comm_free(&shm_comm); MTest_Finalize(errors); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/Makefile.in0000644000175000017500000065513312621010236017213 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = allocmem$(EXEEXT) test1$(EXEEXT) test2$(EXEEXT) \ test2_shm$(EXEEXT) test3$(EXEEXT) test3_shm$(EXEEXT) \ test4$(EXEEXT) test5$(EXEEXT) lockcontention$(EXEEXT) \ lockcontention2$(EXEEXT) lockcontention3$(EXEEXT) \ lockopts$(EXEEXT) lock_dt$(EXEEXT) lock_dt_flush$(EXEEXT) \ lock_dt_flushlocal$(EXEEXT) lockall_dt$(EXEEXT) \ lockall_dt_flush$(EXEEXT) lockall_dt_flushall$(EXEEXT) \ lockall_dt_flushlocal$(EXEEXT) \ lockall_dt_flushlocalall$(EXEEXT) lock_contention_dt$(EXEEXT) \ contention_put$(EXEEXT) contention_putget$(EXEEXT) \ put_base$(EXEEXT) put_bottom$(EXEEXT) locknull$(EXEEXT) \ wintest$(EXEEXT) wintest_shm$(EXEEXT) transpose1$(EXEEXT) \ transpose2$(EXEEXT) transpose3$(EXEEXT) \ transpose3_shm$(EXEEXT) transpose4$(EXEEXT) \ transpose5$(EXEEXT) transpose6$(EXEEXT) transpose7$(EXEEXT) \ fetchandadd$(EXEEXT) fetchandadd_tree$(EXEEXT) \ winname$(EXEEXT) putfence1$(EXEEXT) putfidx$(EXEEXT) \ epochtest$(EXEEXT) getfence1$(EXEEXT) accfence1$(EXEEXT) \ accfence2$(EXEEXT) adlb_mimic1$(EXEEXT) putpscw1$(EXEEXT) \ accpscw1$(EXEEXT) getgroup$(EXEEXT) contig_displ$(EXEEXT) \ test1_am$(EXEEXT) test2_am$(EXEEXT) test2_am_shm$(EXEEXT) \ test3_am$(EXEEXT) test3_am_shm$(EXEEXT) test4_am$(EXEEXT) \ test5_am$(EXEEXT) fetchandadd_am$(EXEEXT) \ fetchandadd_tree_am$(EXEEXT) accfence2_am$(EXEEXT) \ test1_dt$(EXEEXT) attrorderwin$(EXEEXT) wincall$(EXEEXT) \ fkeyvalwin$(EXEEXT) baseattrwin$(EXEEXT) nullpscw$(EXEEXT) \ nullpscw_shm$(EXEEXT) rmanull$(EXEEXT) rmazero$(EXEEXT) \ mixedsync$(EXEEXT) manyrma2$(EXEEXT) manyrma2_shm$(EXEEXT) \ manyrma3$(EXEEXT) selfrma$(EXEEXT) \ strided_acc_onelock$(EXEEXT) strided_putget_indexed$(EXEEXT) \ strided_putget_indexed_shared$(EXEEXT) \ strided_acc_indexed$(EXEEXT) strided_acc_subarray$(EXEEXT) \ strided_get_indexed$(EXEEXT) strided_getacc_indexed$(EXEEXT) \ strided_getacc_indexed_shared$(EXEEXT) \ window_creation$(EXEEXT) win_flavors$(EXEEXT) \ win_shared$(EXEEXT) win_shared_noncontig$(EXEEXT) \ win_shared_noncontig_put$(EXEEXT) win_shared_zerobyte$(EXEEXT) \ win_shared_create_allocshm$(EXEEXT) \ win_shared_create_no_allocshm$(EXEEXT) win_zero$(EXEEXT) \ win_large_shm$(EXEEXT) win_dynamic_acc$(EXEEXT) \ get_acc_local$(EXEEXT) compare_and_swap$(EXEEXT) \ linked_list$(EXEEXT) linked_list_fop$(EXEEXT) \ linked_list_lockall$(EXEEXT) \ linked_list_bench_lock_all$(EXEEXT) \ linked_list_bench_lock_excl$(EXEEXT) \ linked_list_bench_lock_shr$(EXEEXT) \ linked_list_bench_lock_shr_nocheck$(EXEEXT) \ fetch_and_op_char$(EXEEXT) fetch_and_op_short$(EXEEXT) \ fetch_and_op_int$(EXEEXT) fetch_and_op_long$(EXEEXT) \ fetch_and_op_double$(EXEEXT) fetch_and_op_long_double$(EXEEXT) \ get_accumulate_short$(EXEEXT) get_accumulate_long$(EXEEXT) \ get_accumulate_double$(EXEEXT) get_accumulate_int$(EXEEXT) \ get_accumulate_short_derived$(EXEEXT) \ get_accumulate_long_derived$(EXEEXT) \ get_accumulate_double_derived$(EXEEXT) \ get_accumulate_int_derived$(EXEEXT) flush$(EXEEXT) \ win_shared_put_flush_get$(EXEEXT) reqops$(EXEEXT) \ req_example$(EXEEXT) req_example_shm$(EXEEXT) \ win_info$(EXEEXT) pscw_ordering$(EXEEXT) \ pscw_ordering_shm$(EXEEXT) mutex_bench$(EXEEXT) \ mutex_bench_shared$(EXEEXT) mutex_bench_shm$(EXEEXT) \ mutex_bench_shm_ordered$(EXEEXT) rma-contig$(EXEEXT) \ badrma$(EXEEXT) nb_test$(EXEEXT) acc-loc$(EXEEXT) \ fence_shm$(EXEEXT) get-struct$(EXEEXT) \ rput_local_comp$(EXEEXT) racc_local_comp$(EXEEXT) \ at_complete$(EXEEXT) atomic_rmw_fop$(EXEEXT) \ atomic_rmw_cas$(EXEEXT) atomic_rmw_gacc$(EXEEXT) \ atomic_get$(EXEEXT) acc-pairtype$(EXEEXT) manyget$(EXEEXT) \ derived-acc-flush_local$(EXEEXT) \ large-acc-flush_local$(EXEEXT) large-small-acc$(EXEEXT) \ put_flush_get$(EXEEXT) acc_flush_get$(EXEEXT) \ gacc_flush_get$(EXEEXT) fop_flush_get$(EXEEXT) \ cas_flush_get$(EXEEXT) win_shared_put_flush_load$(EXEEXT) \ win_shared_acc_flush_load$(EXEEXT) \ win_shared_gacc_flush_load$(EXEEXT) \ win_shared_fop_flush_load$(EXEEXT) \ win_shared_cas_flush_load$(EXEEXT) $(am__EXEEXT_1) @BUILD_MPIX_TESTS_TRUE@am__append_1 = aint subdir = rma ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = testlist CONFIG_CLEAN_VPATH_FILES = @BUILD_MPIX_TESTS_TRUE@am__EXEEXT_1 = aint$(EXEEXT) PROGRAMS = $(noinst_PROGRAMS) acc_loc_SOURCES = acc-loc.c acc_loc_OBJECTS = acc-loc.$(OBJEXT) acc_loc_LDADD = $(LDADD) acc_loc_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o acc_pairtype_SOURCES = acc-pairtype.c acc_pairtype_OBJECTS = acc-pairtype.$(OBJEXT) acc_pairtype_LDADD = $(LDADD) acc_pairtype_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_acc_flush_get_OBJECTS = acc_flush_get-wrma_flush_get.$(OBJEXT) acc_flush_get_OBJECTS = $(am_acc_flush_get_OBJECTS) acc_flush_get_LDADD = $(LDADD) acc_flush_get_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o accfence1_SOURCES = accfence1.c accfence1_OBJECTS = accfence1.$(OBJEXT) accfence1_LDADD = $(LDADD) accfence1_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o accfence2_SOURCES = accfence2.c accfence2_OBJECTS = accfence2.$(OBJEXT) accfence2_LDADD = $(LDADD) accfence2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o accfence2_am_SOURCES = accfence2_am.c accfence2_am_OBJECTS = accfence2_am.$(OBJEXT) accfence2_am_LDADD = $(LDADD) accfence2_am_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o accpscw1_SOURCES = accpscw1.c accpscw1_OBJECTS = accpscw1.$(OBJEXT) accpscw1_LDADD = $(LDADD) accpscw1_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o adlb_mimic1_SOURCES = adlb_mimic1.c adlb_mimic1_OBJECTS = adlb_mimic1.$(OBJEXT) adlb_mimic1_LDADD = $(LDADD) adlb_mimic1_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o aint_SOURCES = aint.c aint_OBJECTS = aint.$(OBJEXT) aint_LDADD = $(LDADD) aint_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o allocmem_SOURCES = allocmem.c allocmem_OBJECTS = allocmem.$(OBJEXT) allocmem_LDADD = $(LDADD) allocmem_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o at_complete_SOURCES = at_complete.c at_complete_OBJECTS = at_complete.$(OBJEXT) at_complete_LDADD = $(LDADD) at_complete_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o atomic_get_SOURCES = atomic_get.c atomic_get_OBJECTS = atomic_get.$(OBJEXT) atomic_get_LDADD = $(LDADD) atomic_get_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o atomic_rmw_cas_SOURCES = atomic_rmw_cas.c atomic_rmw_cas_OBJECTS = atomic_rmw_cas.$(OBJEXT) atomic_rmw_cas_LDADD = $(LDADD) atomic_rmw_cas_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o atomic_rmw_fop_SOURCES = atomic_rmw_fop.c atomic_rmw_fop_OBJECTS = atomic_rmw_fop.$(OBJEXT) atomic_rmw_fop_LDADD = $(LDADD) atomic_rmw_fop_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o atomic_rmw_gacc_SOURCES = atomic_rmw_gacc.c atomic_rmw_gacc_OBJECTS = atomic_rmw_gacc.$(OBJEXT) atomic_rmw_gacc_LDADD = $(LDADD) atomic_rmw_gacc_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o attrorderwin_SOURCES = attrorderwin.c attrorderwin_OBJECTS = attrorderwin.$(OBJEXT) attrorderwin_LDADD = $(LDADD) attrorderwin_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o badrma_SOURCES = badrma.c badrma_OBJECTS = badrma.$(OBJEXT) badrma_LDADD = $(LDADD) badrma_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o baseattrwin_SOURCES = baseattrwin.c baseattrwin_OBJECTS = baseattrwin.$(OBJEXT) baseattrwin_LDADD = $(LDADD) baseattrwin_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_cas_flush_get_OBJECTS = cas_flush_get-wrma_flush_get.$(OBJEXT) cas_flush_get_OBJECTS = $(am_cas_flush_get_OBJECTS) cas_flush_get_LDADD = $(LDADD) cas_flush_get_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o compare_and_swap_SOURCES = compare_and_swap.c compare_and_swap_OBJECTS = compare_and_swap.$(OBJEXT) compare_and_swap_LDADD = $(LDADD) compare_and_swap_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o contention_put_SOURCES = contention_put.c contention_put_OBJECTS = contention_put.$(OBJEXT) contention_put_LDADD = $(LDADD) contention_put_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o contention_putget_SOURCES = contention_putget.c contention_putget_OBJECTS = contention_putget.$(OBJEXT) contention_putget_LDADD = $(LDADD) contention_putget_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o contig_displ_SOURCES = contig_displ.c contig_displ_OBJECTS = contig_displ.$(OBJEXT) contig_displ_LDADD = $(LDADD) contig_displ_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o derived_acc_flush_local_SOURCES = derived-acc-flush_local.c derived_acc_flush_local_OBJECTS = derived-acc-flush_local.$(OBJEXT) derived_acc_flush_local_LDADD = $(LDADD) derived_acc_flush_local_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o epochtest_SOURCES = epochtest.c epochtest_OBJECTS = epochtest.$(OBJEXT) epochtest_LDADD = $(LDADD) epochtest_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o fence_shm_SOURCES = fence_shm.c fence_shm_OBJECTS = fence_shm.$(OBJEXT) fence_shm_LDADD = $(LDADD) fence_shm_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_fetch_and_op_char_OBJECTS = \ fetch_and_op_char-fetch_and_op.$(OBJEXT) fetch_and_op_char_OBJECTS = $(am_fetch_and_op_char_OBJECTS) fetch_and_op_char_LDADD = $(LDADD) fetch_and_op_char_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_fetch_and_op_double_OBJECTS = \ fetch_and_op_double-fetch_and_op.$(OBJEXT) fetch_and_op_double_OBJECTS = $(am_fetch_and_op_double_OBJECTS) fetch_and_op_double_LDADD = $(LDADD) fetch_and_op_double_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_fetch_and_op_int_OBJECTS = fetch_and_op_int-fetch_and_op.$(OBJEXT) fetch_and_op_int_OBJECTS = $(am_fetch_and_op_int_OBJECTS) fetch_and_op_int_LDADD = $(LDADD) fetch_and_op_int_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_fetch_and_op_long_OBJECTS = \ fetch_and_op_long-fetch_and_op.$(OBJEXT) fetch_and_op_long_OBJECTS = $(am_fetch_and_op_long_OBJECTS) fetch_and_op_long_LDADD = $(LDADD) fetch_and_op_long_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_fetch_and_op_long_double_OBJECTS = \ fetch_and_op_long_double-fetch_and_op.$(OBJEXT) fetch_and_op_long_double_OBJECTS = \ $(am_fetch_and_op_long_double_OBJECTS) fetch_and_op_long_double_LDADD = $(LDADD) fetch_and_op_long_double_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_fetch_and_op_short_OBJECTS = \ fetch_and_op_short-fetch_and_op.$(OBJEXT) fetch_and_op_short_OBJECTS = $(am_fetch_and_op_short_OBJECTS) fetch_and_op_short_LDADD = $(LDADD) fetch_and_op_short_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o fetchandadd_SOURCES = fetchandadd.c fetchandadd_OBJECTS = fetchandadd.$(OBJEXT) fetchandadd_LDADD = $(LDADD) fetchandadd_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o fetchandadd_am_SOURCES = fetchandadd_am.c fetchandadd_am_OBJECTS = fetchandadd_am.$(OBJEXT) fetchandadd_am_LDADD = $(LDADD) fetchandadd_am_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o fetchandadd_tree_SOURCES = fetchandadd_tree.c fetchandadd_tree_OBJECTS = fetchandadd_tree.$(OBJEXT) fetchandadd_tree_LDADD = $(LDADD) fetchandadd_tree_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o fetchandadd_tree_am_SOURCES = fetchandadd_tree_am.c fetchandadd_tree_am_OBJECTS = fetchandadd_tree_am.$(OBJEXT) fetchandadd_tree_am_LDADD = $(LDADD) fetchandadd_tree_am_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o fkeyvalwin_SOURCES = fkeyvalwin.c fkeyvalwin_OBJECTS = fkeyvalwin.$(OBJEXT) fkeyvalwin_LDADD = $(LDADD) fkeyvalwin_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o flush_SOURCES = flush.c flush_OBJECTS = flush.$(OBJEXT) flush_LDADD = $(LDADD) flush_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_fop_flush_get_OBJECTS = fop_flush_get-wrma_flush_get.$(OBJEXT) fop_flush_get_OBJECTS = $(am_fop_flush_get_OBJECTS) fop_flush_get_LDADD = $(LDADD) fop_flush_get_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_gacc_flush_get_OBJECTS = gacc_flush_get-wrma_flush_get.$(OBJEXT) gacc_flush_get_OBJECTS = $(am_gacc_flush_get_OBJECTS) gacc_flush_get_LDADD = $(LDADD) gacc_flush_get_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o get_struct_SOURCES = get-struct.c get_struct_OBJECTS = get-struct.$(OBJEXT) get_struct_LDADD = $(LDADD) get_struct_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o get_acc_local_SOURCES = get_acc_local.c get_acc_local_OBJECTS = get_acc_local.$(OBJEXT) get_acc_local_LDADD = $(LDADD) get_acc_local_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_get_accumulate_double_OBJECTS = \ get_accumulate_double-get_accumulate.$(OBJEXT) get_accumulate_double_OBJECTS = $(am_get_accumulate_double_OBJECTS) get_accumulate_double_LDADD = $(LDADD) get_accumulate_double_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_get_accumulate_double_derived_OBJECTS = \ get_accumulate_double_derived-get_accumulate.$(OBJEXT) get_accumulate_double_derived_OBJECTS = \ $(am_get_accumulate_double_derived_OBJECTS) get_accumulate_double_derived_LDADD = $(LDADD) get_accumulate_double_derived_DEPENDENCIES = \ $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_get_accumulate_int_OBJECTS = \ get_accumulate_int-get_accumulate.$(OBJEXT) get_accumulate_int_OBJECTS = $(am_get_accumulate_int_OBJECTS) get_accumulate_int_LDADD = $(LDADD) get_accumulate_int_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_get_accumulate_int_derived_OBJECTS = \ get_accumulate_int_derived-get_accumulate.$(OBJEXT) get_accumulate_int_derived_OBJECTS = \ $(am_get_accumulate_int_derived_OBJECTS) get_accumulate_int_derived_LDADD = $(LDADD) get_accumulate_int_derived_DEPENDENCIES = \ $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_get_accumulate_long_OBJECTS = \ get_accumulate_long-get_accumulate.$(OBJEXT) get_accumulate_long_OBJECTS = $(am_get_accumulate_long_OBJECTS) get_accumulate_long_LDADD = $(LDADD) get_accumulate_long_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_get_accumulate_long_derived_OBJECTS = \ get_accumulate_long_derived-get_accumulate.$(OBJEXT) get_accumulate_long_derived_OBJECTS = \ $(am_get_accumulate_long_derived_OBJECTS) get_accumulate_long_derived_LDADD = $(LDADD) get_accumulate_long_derived_DEPENDENCIES = \ $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_get_accumulate_short_OBJECTS = \ get_accumulate_short-get_accumulate.$(OBJEXT) get_accumulate_short_OBJECTS = $(am_get_accumulate_short_OBJECTS) get_accumulate_short_LDADD = $(LDADD) get_accumulate_short_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_get_accumulate_short_derived_OBJECTS = \ get_accumulate_short_derived-get_accumulate.$(OBJEXT) get_accumulate_short_derived_OBJECTS = \ $(am_get_accumulate_short_derived_OBJECTS) get_accumulate_short_derived_LDADD = $(LDADD) get_accumulate_short_derived_DEPENDENCIES = \ $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o getfence1_SOURCES = getfence1.c getfence1_OBJECTS = getfence1.$(OBJEXT) getfence1_LDADD = $(LDADD) getfence1_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o getgroup_SOURCES = getgroup.c getgroup_OBJECTS = getgroup.$(OBJEXT) getgroup_LDADD = $(LDADD) getgroup_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o large_acc_flush_local_SOURCES = large-acc-flush_local.c large_acc_flush_local_OBJECTS = large-acc-flush_local.$(OBJEXT) large_acc_flush_local_LDADD = $(LDADD) large_acc_flush_local_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o large_small_acc_SOURCES = large-small-acc.c large_small_acc_OBJECTS = large-small-acc.$(OBJEXT) large_small_acc_LDADD = $(LDADD) large_small_acc_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o linked_list_SOURCES = linked_list.c linked_list_OBJECTS = linked_list.$(OBJEXT) linked_list_LDADD = $(LDADD) linked_list_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o linked_list_bench_lock_all_SOURCES = linked_list_bench_lock_all.c linked_list_bench_lock_all_OBJECTS = \ linked_list_bench_lock_all.$(OBJEXT) linked_list_bench_lock_all_LDADD = $(LDADD) linked_list_bench_lock_all_DEPENDENCIES = \ $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o linked_list_bench_lock_excl_SOURCES = linked_list_bench_lock_excl.c linked_list_bench_lock_excl_OBJECTS = \ linked_list_bench_lock_excl.$(OBJEXT) linked_list_bench_lock_excl_LDADD = $(LDADD) linked_list_bench_lock_excl_DEPENDENCIES = \ $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o linked_list_bench_lock_shr_SOURCES = linked_list_bench_lock_shr.c linked_list_bench_lock_shr_OBJECTS = \ linked_list_bench_lock_shr.$(OBJEXT) linked_list_bench_lock_shr_LDADD = $(LDADD) linked_list_bench_lock_shr_DEPENDENCIES = \ $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_linked_list_bench_lock_shr_nocheck_OBJECTS = linked_list_bench_lock_shr_nocheck-linked_list_bench_lock_shr.$(OBJEXT) linked_list_bench_lock_shr_nocheck_OBJECTS = \ $(am_linked_list_bench_lock_shr_nocheck_OBJECTS) linked_list_bench_lock_shr_nocheck_LDADD = $(LDADD) linked_list_bench_lock_shr_nocheck_DEPENDENCIES = \ $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o linked_list_fop_SOURCES = linked_list_fop.c linked_list_fop_OBJECTS = linked_list_fop.$(OBJEXT) linked_list_fop_LDADD = $(LDADD) linked_list_fop_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o linked_list_lockall_SOURCES = linked_list_lockall.c linked_list_lockall_OBJECTS = linked_list_lockall.$(OBJEXT) linked_list_lockall_LDADD = $(LDADD) linked_list_lockall_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o lock_contention_dt_SOURCES = lock_contention_dt.c lock_contention_dt_OBJECTS = lock_contention_dt.$(OBJEXT) lock_contention_dt_LDADD = $(LDADD) lock_contention_dt_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o lock_dt_SOURCES = lock_dt.c lock_dt_OBJECTS = lock_dt.$(OBJEXT) lock_dt_LDADD = $(LDADD) lock_dt_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o lock_dt_flush_SOURCES = lock_dt_flush.c lock_dt_flush_OBJECTS = lock_dt_flush.$(OBJEXT) lock_dt_flush_LDADD = $(LDADD) lock_dt_flush_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o lock_dt_flushlocal_SOURCES = lock_dt_flushlocal.c lock_dt_flushlocal_OBJECTS = lock_dt_flushlocal.$(OBJEXT) lock_dt_flushlocal_LDADD = $(LDADD) lock_dt_flushlocal_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o lockall_dt_SOURCES = lockall_dt.c lockall_dt_OBJECTS = lockall_dt.$(OBJEXT) lockall_dt_LDADD = $(LDADD) lockall_dt_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o lockall_dt_flush_SOURCES = lockall_dt_flush.c lockall_dt_flush_OBJECTS = lockall_dt_flush.$(OBJEXT) lockall_dt_flush_LDADD = $(LDADD) lockall_dt_flush_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o lockall_dt_flushall_SOURCES = lockall_dt_flushall.c lockall_dt_flushall_OBJECTS = lockall_dt_flushall.$(OBJEXT) lockall_dt_flushall_LDADD = $(LDADD) lockall_dt_flushall_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o lockall_dt_flushlocal_SOURCES = lockall_dt_flushlocal.c lockall_dt_flushlocal_OBJECTS = lockall_dt_flushlocal.$(OBJEXT) lockall_dt_flushlocal_LDADD = $(LDADD) lockall_dt_flushlocal_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o lockall_dt_flushlocalall_SOURCES = lockall_dt_flushlocalall.c lockall_dt_flushlocalall_OBJECTS = lockall_dt_flushlocalall.$(OBJEXT) lockall_dt_flushlocalall_LDADD = $(LDADD) lockall_dt_flushlocalall_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o lockcontention_SOURCES = lockcontention.c lockcontention_OBJECTS = lockcontention.$(OBJEXT) lockcontention_LDADD = $(LDADD) lockcontention_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o lockcontention2_SOURCES = lockcontention2.c lockcontention2_OBJECTS = lockcontention2.$(OBJEXT) lockcontention2_LDADD = $(LDADD) lockcontention2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o lockcontention3_SOURCES = lockcontention3.c lockcontention3_OBJECTS = lockcontention3.$(OBJEXT) lockcontention3_LDADD = $(LDADD) lockcontention3_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o locknull_SOURCES = locknull.c locknull_OBJECTS = locknull.$(OBJEXT) locknull_LDADD = $(LDADD) locknull_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o lockopts_SOURCES = lockopts.c lockopts_OBJECTS = lockopts.$(OBJEXT) lockopts_LDADD = $(LDADD) lockopts_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o manyget_SOURCES = manyget.c manyget_OBJECTS = manyget.$(OBJEXT) manyget_LDADD = $(LDADD) manyget_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o manyrma2_SOURCES = manyrma2.c manyrma2_OBJECTS = manyrma2.$(OBJEXT) manyrma2_LDADD = $(LDADD) manyrma2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_manyrma2_shm_OBJECTS = manyrma2_shm-manyrma2.$(OBJEXT) manyrma2_shm_OBJECTS = $(am_manyrma2_shm_OBJECTS) manyrma2_shm_LDADD = $(LDADD) manyrma2_shm_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o manyrma3_SOURCES = manyrma3.c manyrma3_OBJECTS = manyrma3.$(OBJEXT) manyrma3_LDADD = $(LDADD) manyrma3_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o mixedsync_SOURCES = mixedsync.c mixedsync_OBJECTS = mixedsync.$(OBJEXT) mixedsync_LDADD = $(LDADD) mixedsync_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_mutex_bench_OBJECTS = mutex_bench.$(OBJEXT) mcs-mutex.$(OBJEXT) mutex_bench_OBJECTS = $(am_mutex_bench_OBJECTS) mutex_bench_LDADD = $(LDADD) mutex_bench_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_mutex_bench_shared_OBJECTS = \ mutex_bench_shared-mutex_bench.$(OBJEXT) \ mutex_bench_shared-mcs-mutex.$(OBJEXT) mutex_bench_shared_OBJECTS = $(am_mutex_bench_shared_OBJECTS) mutex_bench_shared_LDADD = $(LDADD) mutex_bench_shared_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_mutex_bench_shm_OBJECTS = mutex_bench_shm-mutex_bench.$(OBJEXT) \ mutex_bench_shm-mcs-mutex.$(OBJEXT) mutex_bench_shm_OBJECTS = $(am_mutex_bench_shm_OBJECTS) mutex_bench_shm_LDADD = $(LDADD) mutex_bench_shm_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_mutex_bench_shm_ordered_OBJECTS = \ mutex_bench_shm_ordered-mutex_bench.$(OBJEXT) \ mutex_bench_shm_ordered-mcs-mutex.$(OBJEXT) mutex_bench_shm_ordered_OBJECTS = \ $(am_mutex_bench_shm_ordered_OBJECTS) mutex_bench_shm_ordered_LDADD = $(LDADD) mutex_bench_shm_ordered_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o nb_test_SOURCES = nb_test.c nb_test_OBJECTS = nb_test.$(OBJEXT) nb_test_LDADD = $(LDADD) nb_test_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o nullpscw_SOURCES = nullpscw.c nullpscw_OBJECTS = nullpscw.$(OBJEXT) nullpscw_LDADD = $(LDADD) nullpscw_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_nullpscw_shm_OBJECTS = nullpscw_shm-nullpscw.$(OBJEXT) nullpscw_shm_OBJECTS = $(am_nullpscw_shm_OBJECTS) nullpscw_shm_LDADD = $(LDADD) nullpscw_shm_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o pscw_ordering_SOURCES = pscw_ordering.c pscw_ordering_OBJECTS = pscw_ordering.$(OBJEXT) pscw_ordering_LDADD = $(LDADD) pscw_ordering_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_pscw_ordering_shm_OBJECTS = \ pscw_ordering_shm-pscw_ordering.$(OBJEXT) pscw_ordering_shm_OBJECTS = $(am_pscw_ordering_shm_OBJECTS) pscw_ordering_shm_LDADD = $(LDADD) pscw_ordering_shm_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o put_base_SOURCES = put_base.c put_base_OBJECTS = put_base.$(OBJEXT) put_base_LDADD = $(LDADD) put_base_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o put_bottom_SOURCES = put_bottom.c put_bottom_OBJECTS = put_bottom.$(OBJEXT) put_bottom_LDADD = $(LDADD) put_bottom_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_put_flush_get_OBJECTS = put_flush_get-wrma_flush_get.$(OBJEXT) put_flush_get_OBJECTS = $(am_put_flush_get_OBJECTS) put_flush_get_LDADD = $(LDADD) put_flush_get_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o putfence1_SOURCES = putfence1.c putfence1_OBJECTS = putfence1.$(OBJEXT) putfence1_LDADD = $(LDADD) putfence1_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o putfidx_SOURCES = putfidx.c putfidx_OBJECTS = putfidx.$(OBJEXT) putfidx_LDADD = $(LDADD) putfidx_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o putpscw1_SOURCES = putpscw1.c putpscw1_OBJECTS = putpscw1.$(OBJEXT) putpscw1_LDADD = $(LDADD) putpscw1_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o racc_local_comp_SOURCES = racc_local_comp.c racc_local_comp_OBJECTS = racc_local_comp.$(OBJEXT) racc_local_comp_LDADD = $(LDADD) racc_local_comp_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o req_example_SOURCES = req_example.c req_example_OBJECTS = req_example.$(OBJEXT) req_example_LDADD = $(LDADD) req_example_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_req_example_shm_OBJECTS = req_example_shm-req_example.$(OBJEXT) req_example_shm_OBJECTS = $(am_req_example_shm_OBJECTS) req_example_shm_LDADD = $(LDADD) req_example_shm_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o reqops_SOURCES = reqops.c reqops_OBJECTS = reqops.$(OBJEXT) reqops_LDADD = $(LDADD) reqops_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o rma_contig_SOURCES = rma-contig.c rma_contig_OBJECTS = rma-contig.$(OBJEXT) rma_contig_LDADD = $(LDADD) rma_contig_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o rmanull_SOURCES = rmanull.c rmanull_OBJECTS = rmanull.$(OBJEXT) rmanull_LDADD = $(LDADD) rmanull_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o rmazero_SOURCES = rmazero.c rmazero_OBJECTS = rmazero.$(OBJEXT) rmazero_LDADD = $(LDADD) rmazero_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o rput_local_comp_SOURCES = rput_local_comp.c rput_local_comp_OBJECTS = rput_local_comp.$(OBJEXT) rput_local_comp_LDADD = $(LDADD) rput_local_comp_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o selfrma_SOURCES = selfrma.c selfrma_OBJECTS = selfrma.$(OBJEXT) selfrma_LDADD = $(LDADD) selfrma_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o strided_acc_indexed_SOURCES = strided_acc_indexed.c strided_acc_indexed_OBJECTS = strided_acc_indexed.$(OBJEXT) strided_acc_indexed_DEPENDENCIES = $(LDADD) strided_acc_onelock_SOURCES = strided_acc_onelock.c strided_acc_onelock_OBJECTS = strided_acc_onelock.$(OBJEXT) strided_acc_onelock_DEPENDENCIES = $(LDADD) strided_acc_subarray_SOURCES = strided_acc_subarray.c strided_acc_subarray_OBJECTS = strided_acc_subarray.$(OBJEXT) strided_acc_subarray_DEPENDENCIES = $(LDADD) strided_get_indexed_SOURCES = strided_get_indexed.c strided_get_indexed_OBJECTS = strided_get_indexed.$(OBJEXT) strided_get_indexed_DEPENDENCIES = $(LDADD) strided_getacc_indexed_SOURCES = strided_getacc_indexed.c strided_getacc_indexed_OBJECTS = strided_getacc_indexed.$(OBJEXT) strided_getacc_indexed_DEPENDENCIES = $(LDADD) strided_getacc_indexed_shared_SOURCES = \ strided_getacc_indexed_shared.c strided_getacc_indexed_shared_OBJECTS = \ strided_getacc_indexed_shared.$(OBJEXT) strided_getacc_indexed_shared_DEPENDENCIES = $(LDADD) strided_putget_indexed_SOURCES = strided_putget_indexed.c strided_putget_indexed_OBJECTS = strided_putget_indexed.$(OBJEXT) strided_putget_indexed_DEPENDENCIES = $(LDADD) strided_putget_indexed_shared_SOURCES = \ strided_putget_indexed_shared.c strided_putget_indexed_shared_OBJECTS = \ strided_putget_indexed_shared.$(OBJEXT) strided_putget_indexed_shared_DEPENDENCIES = $(LDADD) test1_SOURCES = test1.c test1_OBJECTS = test1.$(OBJEXT) test1_LDADD = $(LDADD) test1_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o test1_am_SOURCES = test1_am.c test1_am_OBJECTS = test1_am.$(OBJEXT) test1_am_LDADD = $(LDADD) test1_am_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o test1_dt_SOURCES = test1_dt.c test1_dt_OBJECTS = test1_dt.$(OBJEXT) test1_dt_LDADD = $(LDADD) test1_dt_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o test2_SOURCES = test2.c test2_OBJECTS = test2.$(OBJEXT) test2_LDADD = $(LDADD) test2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o test2_am_SOURCES = test2_am.c test2_am_OBJECTS = test2_am.$(OBJEXT) test2_am_LDADD = $(LDADD) test2_am_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_test2_am_shm_OBJECTS = test2_am_shm-test2_am.$(OBJEXT) test2_am_shm_OBJECTS = $(am_test2_am_shm_OBJECTS) test2_am_shm_LDADD = $(LDADD) test2_am_shm_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_test2_shm_OBJECTS = test2_shm-test2.$(OBJEXT) test2_shm_OBJECTS = $(am_test2_shm_OBJECTS) test2_shm_LDADD = $(LDADD) test2_shm_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o test3_SOURCES = test3.c test3_OBJECTS = test3.$(OBJEXT) test3_LDADD = $(LDADD) test3_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o test3_am_SOURCES = test3_am.c test3_am_OBJECTS = test3_am.$(OBJEXT) test3_am_LDADD = $(LDADD) test3_am_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_test3_am_shm_OBJECTS = test3_am_shm-test3_am.$(OBJEXT) test3_am_shm_OBJECTS = $(am_test3_am_shm_OBJECTS) test3_am_shm_LDADD = $(LDADD) test3_am_shm_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_test3_shm_OBJECTS = test3_shm-test3.$(OBJEXT) test3_shm_OBJECTS = $(am_test3_shm_OBJECTS) test3_shm_LDADD = $(LDADD) test3_shm_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o test4_SOURCES = test4.c test4_OBJECTS = test4.$(OBJEXT) test4_LDADD = $(LDADD) test4_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o test4_am_SOURCES = test4_am.c test4_am_OBJECTS = test4_am.$(OBJEXT) test4_am_LDADD = $(LDADD) test4_am_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o test5_SOURCES = test5.c test5_OBJECTS = test5.$(OBJEXT) test5_LDADD = $(LDADD) test5_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o test5_am_SOURCES = test5_am.c test5_am_OBJECTS = test5_am.$(OBJEXT) test5_am_LDADD = $(LDADD) test5_am_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o transpose1_SOURCES = transpose1.c transpose1_OBJECTS = transpose1.$(OBJEXT) transpose1_LDADD = $(LDADD) transpose1_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o transpose2_SOURCES = transpose2.c transpose2_OBJECTS = transpose2.$(OBJEXT) transpose2_LDADD = $(LDADD) transpose2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o transpose3_SOURCES = transpose3.c transpose3_OBJECTS = transpose3.$(OBJEXT) transpose3_LDADD = $(LDADD) transpose3_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_transpose3_shm_OBJECTS = transpose3_shm-transpose3.$(OBJEXT) transpose3_shm_OBJECTS = $(am_transpose3_shm_OBJECTS) transpose3_shm_LDADD = $(LDADD) transpose3_shm_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o transpose4_SOURCES = transpose4.c transpose4_OBJECTS = transpose4.$(OBJEXT) transpose4_LDADD = $(LDADD) transpose4_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o transpose5_SOURCES = transpose5.c transpose5_OBJECTS = transpose5.$(OBJEXT) transpose5_LDADD = $(LDADD) transpose5_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o transpose6_SOURCES = transpose6.c transpose6_OBJECTS = transpose6.$(OBJEXT) transpose6_LDADD = $(LDADD) transpose6_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o transpose7_SOURCES = transpose7.c transpose7_OBJECTS = transpose7.$(OBJEXT) transpose7_LDADD = $(LDADD) transpose7_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o win_dynamic_acc_SOURCES = win_dynamic_acc.c win_dynamic_acc_OBJECTS = win_dynamic_acc.$(OBJEXT) win_dynamic_acc_LDADD = $(LDADD) win_dynamic_acc_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o win_flavors_SOURCES = win_flavors.c win_flavors_OBJECTS = win_flavors.$(OBJEXT) win_flavors_LDADD = $(LDADD) win_flavors_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o win_info_SOURCES = win_info.c win_info_OBJECTS = win_info.$(OBJEXT) win_info_LDADD = $(LDADD) win_info_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o win_large_shm_SOURCES = win_large_shm.c win_large_shm_OBJECTS = win_large_shm.$(OBJEXT) win_large_shm_LDADD = $(LDADD) win_large_shm_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o win_shared_SOURCES = win_shared.c win_shared_OBJECTS = win_shared.$(OBJEXT) win_shared_LDADD = $(LDADD) win_shared_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_win_shared_acc_flush_load_OBJECTS = \ win_shared_acc_flush_load-win_shared_rma_flush_load.$(OBJEXT) win_shared_acc_flush_load_OBJECTS = \ $(am_win_shared_acc_flush_load_OBJECTS) win_shared_acc_flush_load_LDADD = $(LDADD) win_shared_acc_flush_load_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_win_shared_cas_flush_load_OBJECTS = \ win_shared_cas_flush_load-win_shared_rma_flush_load.$(OBJEXT) win_shared_cas_flush_load_OBJECTS = \ $(am_win_shared_cas_flush_load_OBJECTS) win_shared_cas_flush_load_LDADD = $(LDADD) win_shared_cas_flush_load_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_win_shared_create_allocshm_OBJECTS = \ win_shared_create_allocshm-win_shared_create.$(OBJEXT) win_shared_create_allocshm_OBJECTS = \ $(am_win_shared_create_allocshm_OBJECTS) win_shared_create_allocshm_LDADD = $(LDADD) win_shared_create_allocshm_DEPENDENCIES = \ $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_win_shared_create_no_allocshm_OBJECTS = \ win_shared_create.$(OBJEXT) win_shared_create_no_allocshm_OBJECTS = \ $(am_win_shared_create_no_allocshm_OBJECTS) win_shared_create_no_allocshm_LDADD = $(LDADD) win_shared_create_no_allocshm_DEPENDENCIES = \ $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_win_shared_fop_flush_load_OBJECTS = \ win_shared_fop_flush_load-win_shared_rma_flush_load.$(OBJEXT) win_shared_fop_flush_load_OBJECTS = \ $(am_win_shared_fop_flush_load_OBJECTS) win_shared_fop_flush_load_LDADD = $(LDADD) win_shared_fop_flush_load_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_win_shared_gacc_flush_load_OBJECTS = win_shared_gacc_flush_load-win_shared_rma_flush_load.$(OBJEXT) win_shared_gacc_flush_load_OBJECTS = \ $(am_win_shared_gacc_flush_load_OBJECTS) win_shared_gacc_flush_load_LDADD = $(LDADD) win_shared_gacc_flush_load_DEPENDENCIES = \ $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o win_shared_noncontig_SOURCES = win_shared_noncontig.c win_shared_noncontig_OBJECTS = win_shared_noncontig.$(OBJEXT) win_shared_noncontig_LDADD = $(LDADD) win_shared_noncontig_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o win_shared_noncontig_put_SOURCES = win_shared_noncontig_put.c win_shared_noncontig_put_OBJECTS = win_shared_noncontig_put.$(OBJEXT) win_shared_noncontig_put_LDADD = $(LDADD) win_shared_noncontig_put_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o win_shared_put_flush_get_SOURCES = win_shared_put_flush_get.c win_shared_put_flush_get_OBJECTS = win_shared_put_flush_get.$(OBJEXT) win_shared_put_flush_get_LDADD = $(LDADD) win_shared_put_flush_get_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_win_shared_put_flush_load_OBJECTS = \ win_shared_put_flush_load-win_shared_rma_flush_load.$(OBJEXT) win_shared_put_flush_load_OBJECTS = \ $(am_win_shared_put_flush_load_OBJECTS) win_shared_put_flush_load_LDADD = $(LDADD) win_shared_put_flush_load_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o win_shared_zerobyte_SOURCES = win_shared_zerobyte.c win_shared_zerobyte_OBJECTS = win_shared_zerobyte.$(OBJEXT) win_shared_zerobyte_LDADD = $(LDADD) win_shared_zerobyte_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o win_zero_SOURCES = win_zero.c win_zero_OBJECTS = win_zero.$(OBJEXT) win_zero_LDADD = $(LDADD) win_zero_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o wincall_SOURCES = wincall.c wincall_OBJECTS = wincall.$(OBJEXT) wincall_LDADD = $(LDADD) wincall_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o window_creation_SOURCES = window_creation.c window_creation_OBJECTS = window_creation.$(OBJEXT) window_creation_LDADD = $(LDADD) window_creation_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o winname_SOURCES = winname.c winname_OBJECTS = winname.$(OBJEXT) winname_LDADD = $(LDADD) winname_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o wintest_SOURCES = wintest.c wintest_OBJECTS = wintest.$(OBJEXT) wintest_LDADD = $(LDADD) wintest_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o am_wintest_shm_OBJECTS = wintest_shm-wintest.$(OBJEXT) wintest_shm_OBJECTS = $(am_wintest_shm_OBJECTS) wintest_shm_LDADD = $(LDADD) wintest_shm_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = acc-loc.c acc-pairtype.c $(acc_flush_get_SOURCES) \ accfence1.c accfence2.c accfence2_am.c accpscw1.c \ adlb_mimic1.c aint.c allocmem.c at_complete.c atomic_get.c \ atomic_rmw_cas.c atomic_rmw_fop.c atomic_rmw_gacc.c \ attrorderwin.c badrma.c baseattrwin.c $(cas_flush_get_SOURCES) \ compare_and_swap.c contention_put.c contention_putget.c \ contig_displ.c derived-acc-flush_local.c epochtest.c \ fence_shm.c $(fetch_and_op_char_SOURCES) \ $(fetch_and_op_double_SOURCES) $(fetch_and_op_int_SOURCES) \ $(fetch_and_op_long_SOURCES) \ $(fetch_and_op_long_double_SOURCES) \ $(fetch_and_op_short_SOURCES) fetchandadd.c fetchandadd_am.c \ fetchandadd_tree.c fetchandadd_tree_am.c fkeyvalwin.c flush.c \ $(fop_flush_get_SOURCES) $(gacc_flush_get_SOURCES) \ get-struct.c get_acc_local.c $(get_accumulate_double_SOURCES) \ $(get_accumulate_double_derived_SOURCES) \ $(get_accumulate_int_SOURCES) \ $(get_accumulate_int_derived_SOURCES) \ $(get_accumulate_long_SOURCES) \ $(get_accumulate_long_derived_SOURCES) \ $(get_accumulate_short_SOURCES) \ $(get_accumulate_short_derived_SOURCES) getfence1.c getgroup.c \ large-acc-flush_local.c large-small-acc.c linked_list.c \ linked_list_bench_lock_all.c linked_list_bench_lock_excl.c \ linked_list_bench_lock_shr.c \ $(linked_list_bench_lock_shr_nocheck_SOURCES) \ linked_list_fop.c linked_list_lockall.c lock_contention_dt.c \ lock_dt.c lock_dt_flush.c lock_dt_flushlocal.c lockall_dt.c \ lockall_dt_flush.c lockall_dt_flushall.c \ lockall_dt_flushlocal.c lockall_dt_flushlocalall.c \ lockcontention.c lockcontention2.c lockcontention3.c \ locknull.c lockopts.c manyget.c manyrma2.c \ $(manyrma2_shm_SOURCES) manyrma3.c mixedsync.c \ $(mutex_bench_SOURCES) $(mutex_bench_shared_SOURCES) \ $(mutex_bench_shm_SOURCES) $(mutex_bench_shm_ordered_SOURCES) \ nb_test.c nullpscw.c $(nullpscw_shm_SOURCES) pscw_ordering.c \ $(pscw_ordering_shm_SOURCES) put_base.c put_bottom.c \ $(put_flush_get_SOURCES) putfence1.c putfidx.c putpscw1.c \ racc_local_comp.c req_example.c $(req_example_shm_SOURCES) \ reqops.c rma-contig.c rmanull.c rmazero.c rput_local_comp.c \ selfrma.c strided_acc_indexed.c strided_acc_onelock.c \ strided_acc_subarray.c strided_get_indexed.c \ strided_getacc_indexed.c strided_getacc_indexed_shared.c \ strided_putget_indexed.c strided_putget_indexed_shared.c \ test1.c test1_am.c test1_dt.c test2.c test2_am.c \ $(test2_am_shm_SOURCES) $(test2_shm_SOURCES) test3.c \ test3_am.c $(test3_am_shm_SOURCES) $(test3_shm_SOURCES) \ test4.c test4_am.c test5.c test5_am.c transpose1.c \ transpose2.c transpose3.c $(transpose3_shm_SOURCES) \ transpose4.c transpose5.c transpose6.c transpose7.c \ win_dynamic_acc.c win_flavors.c win_info.c win_large_shm.c \ win_shared.c $(win_shared_acc_flush_load_SOURCES) \ $(win_shared_cas_flush_load_SOURCES) \ $(win_shared_create_allocshm_SOURCES) \ $(win_shared_create_no_allocshm_SOURCES) \ $(win_shared_fop_flush_load_SOURCES) \ $(win_shared_gacc_flush_load_SOURCES) win_shared_noncontig.c \ win_shared_noncontig_put.c win_shared_put_flush_get.c \ $(win_shared_put_flush_load_SOURCES) win_shared_zerobyte.c \ win_zero.c wincall.c window_creation.c winname.c wintest.c \ $(wintest_shm_SOURCES) DIST_SOURCES = acc-loc.c acc-pairtype.c $(acc_flush_get_SOURCES) \ accfence1.c accfence2.c accfence2_am.c accpscw1.c \ adlb_mimic1.c aint.c allocmem.c at_complete.c atomic_get.c \ atomic_rmw_cas.c atomic_rmw_fop.c atomic_rmw_gacc.c \ attrorderwin.c badrma.c baseattrwin.c $(cas_flush_get_SOURCES) \ compare_and_swap.c contention_put.c contention_putget.c \ contig_displ.c derived-acc-flush_local.c epochtest.c \ fence_shm.c $(fetch_and_op_char_SOURCES) \ $(fetch_and_op_double_SOURCES) $(fetch_and_op_int_SOURCES) \ $(fetch_and_op_long_SOURCES) \ $(fetch_and_op_long_double_SOURCES) \ $(fetch_and_op_short_SOURCES) fetchandadd.c fetchandadd_am.c \ fetchandadd_tree.c fetchandadd_tree_am.c fkeyvalwin.c flush.c \ $(fop_flush_get_SOURCES) $(gacc_flush_get_SOURCES) \ get-struct.c get_acc_local.c $(get_accumulate_double_SOURCES) \ $(get_accumulate_double_derived_SOURCES) \ $(get_accumulate_int_SOURCES) \ $(get_accumulate_int_derived_SOURCES) \ $(get_accumulate_long_SOURCES) \ $(get_accumulate_long_derived_SOURCES) \ $(get_accumulate_short_SOURCES) \ $(get_accumulate_short_derived_SOURCES) getfence1.c getgroup.c \ large-acc-flush_local.c large-small-acc.c linked_list.c \ linked_list_bench_lock_all.c linked_list_bench_lock_excl.c \ linked_list_bench_lock_shr.c \ $(linked_list_bench_lock_shr_nocheck_SOURCES) \ linked_list_fop.c linked_list_lockall.c lock_contention_dt.c \ lock_dt.c lock_dt_flush.c lock_dt_flushlocal.c lockall_dt.c \ lockall_dt_flush.c lockall_dt_flushall.c \ lockall_dt_flushlocal.c lockall_dt_flushlocalall.c \ lockcontention.c lockcontention2.c lockcontention3.c \ locknull.c lockopts.c manyget.c manyrma2.c \ $(manyrma2_shm_SOURCES) manyrma3.c mixedsync.c \ $(mutex_bench_SOURCES) $(mutex_bench_shared_SOURCES) \ $(mutex_bench_shm_SOURCES) $(mutex_bench_shm_ordered_SOURCES) \ nb_test.c nullpscw.c $(nullpscw_shm_SOURCES) pscw_ordering.c \ $(pscw_ordering_shm_SOURCES) put_base.c put_bottom.c \ $(put_flush_get_SOURCES) putfence1.c putfidx.c putpscw1.c \ racc_local_comp.c req_example.c $(req_example_shm_SOURCES) \ reqops.c rma-contig.c rmanull.c rmazero.c rput_local_comp.c \ selfrma.c strided_acc_indexed.c strided_acc_onelock.c \ strided_acc_subarray.c strided_get_indexed.c \ strided_getacc_indexed.c strided_getacc_indexed_shared.c \ strided_putget_indexed.c strided_putget_indexed_shared.c \ test1.c test1_am.c test1_dt.c test2.c test2_am.c \ $(test2_am_shm_SOURCES) $(test2_shm_SOURCES) test3.c \ test3_am.c $(test3_am_shm_SOURCES) $(test3_shm_SOURCES) \ test4.c test4_am.c test5.c test5_am.c transpose1.c \ transpose2.c transpose3.c $(transpose3_shm_SOURCES) \ transpose4.c transpose5.c transpose6.c transpose7.c \ win_dynamic_acc.c win_flavors.c win_info.c win_large_shm.c \ win_shared.c $(win_shared_acc_flush_load_SOURCES) \ $(win_shared_cas_flush_load_SOURCES) \ $(win_shared_create_allocshm_SOURCES) \ $(win_shared_create_no_allocshm_SOURCES) \ $(win_shared_fop_flush_load_SOURCES) \ $(win_shared_gacc_flush_load_SOURCES) win_shared_noncontig.c \ win_shared_noncontig_put.c win_shared_put_flush_get.c \ $(win_shared_put_flush_load_SOURCES) win_shared_zerobyte.c \ win_zero.c wincall.c window_creation.c winname.c wintest.c \ $(wintest_shm_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/testlist.in \ $(top_srcdir)/Makefile.mtest $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist.in strided_acc_indexed_LDADD = $(LDADD) -lm strided_acc_onelock_LDADD = $(LDADD) -lm strided_acc_subarray_LDADD = $(LDADD) -lm strided_get_indexed_LDADD = $(LDADD) -lm strided_getacc_indexed_LDADD = $(LDADD) -lm strided_putget_indexed_LDADD = $(LDADD) -lm strided_getacc_indexed_shared_LDADD = $(LDADD) -lm strided_putget_indexed_shared_LDADD = $(LDADD) -lm fetch_and_op_char_CPPFLAGS = -DFOP_TYPE_CHAR $(AM_CPPFLAGS) fetch_and_op_short_CPPFLAGS = -DFOP_TYPE_SHORT $(AM_CPPFLAGS) fetch_and_op_int_CPPFLAGS = -DFOP_TYPE_INT $(AM_CPPFLAGS) fetch_and_op_long_CPPFLAGS = -DFOP_TYPE_LONG $(AM_CPPFLAGS) fetch_and_op_double_CPPFLAGS = -DFOP_TYPE_DOUBLE $(AM_CPPFLAGS) fetch_and_op_long_double_CPPFLAGS = -DFOP_TYPE_LONG_DOUBLE $(AM_CPPFLAGS) fetch_and_op_char_SOURCES = fetch_and_op.c fetch_and_op_short_SOURCES = fetch_and_op.c fetch_and_op_int_SOURCES = fetch_and_op.c fetch_and_op_long_SOURCES = fetch_and_op.c fetch_and_op_double_SOURCES = fetch_and_op.c fetch_and_op_long_double_SOURCES = fetch_and_op.c get_accumulate_short_CPPFLAGS = -DGACC_TYPE_SHORT $(AM_CPPFLAGS) get_accumulate_long_CPPFLAGS = -DGACC_TYPE_LONG $(AM_CPPFLAGS) get_accumulate_double_CPPFLAGS = -DGACC_TYPE_DOUBLE $(AM_CPPFLAGS) get_accumulate_int_CPPFLAGS = -DGACC_TYPE_INT $(AM_CPPFLAGS) get_accumulate_short_derived_CPPFLAGS = -DGACC_TYPE_SHORT -DGACC_TYPE_DERIVED $(AM_CPPFLAGS) get_accumulate_long_derived_CPPFLAGS = -DGACC_TYPE_LONG -DGACC_TYPE_DERIVED $(AM_CPPFLAGS) get_accumulate_double_derived_CPPFLAGS = -DGACC_TYPE_DOUBLE -DGACC_TYPE_DERIVED $(AM_CPPFLAGS) get_accumulate_int_derived_CPPFLAGS = -DGACC_TYPE_INT -DGACC_TYPE_DERIVED $(AM_CPPFLAGS) get_accumulate_short_SOURCES = get_accumulate.c get_accumulate_long_SOURCES = get_accumulate.c get_accumulate_double_SOURCES = get_accumulate.c get_accumulate_int_SOURCES = get_accumulate.c get_accumulate_short_derived_SOURCES = get_accumulate.c get_accumulate_long_derived_SOURCES = get_accumulate.c get_accumulate_double_derived_SOURCES = get_accumulate.c get_accumulate_int_derived_SOURCES = get_accumulate.c req_example_shm_CPPFLAGS = -DUSE_WIN_ALLOC_SHM $(AM_CPPFLAGS) req_example_shm_SOURCES = req_example.c manyrma2_shm_CPPFLAGS = -DUSE_WIN_ALLOCATE $(AM_CPPFLAGS) wintest_shm_CPPFLAGS = -DUSE_WIN_ALLOCATE $(AM_CPPFLAGS) transpose3_shm_CPPFLAGS = -DUSE_WIN_ALLOCATE $(AM_CPPFLAGS) nullpscw_shm_CPPFLAGS = -DUSE_WIN_ALLOCATE $(AM_CPPFLAGS) pscw_ordering_shm_CPPFLAGS = -DUSE_WIN_ALLOCATE $(AM_CPPFLAGS) test2_shm_CPPFLAGS = -DUSE_WIN_ALLOCATE $(AM_CPPFLAGS) test2_am_shm_CPPFLAGS = -DUSE_WIN_ALLOCATE $(AM_CPPFLAGS) test3_shm_CPPFLAGS = -DUSE_WIN_ALLOCATE $(AM_CPPFLAGS) test3_am_shm_CPPFLAGS = -DUSE_WIN_ALLOCATE $(AM_CPPFLAGS) manyrma2_shm_SOURCES = manyrma2.c wintest_shm_SOURCES = wintest.c transpose3_shm_SOURCES = transpose3.c nullpscw_shm_SOURCES = nullpscw.c pscw_ordering_shm_SOURCES = pscw_ordering.c test2_shm_SOURCES = test2.c test2_am_shm_SOURCES = test2_am.c test3_shm_SOURCES = test3.c test3_am_shm_SOURCES = test3_am.c mutex_bench_SOURCES = mutex_bench.c mcs-mutex.c mcs-mutex.h mutex_bench_shared_CPPFLAGS = -DUSE_WIN_SHARED $(AM_CPPFLAGS) mutex_bench_shared_SOURCES = mutex_bench.c mcs-mutex.c mcs-mutex.h mutex_bench_shm_CPPFLAGS = -DUSE_WIN_ALLOC_SHM $(AM_CPPFLAGS) mutex_bench_shm_SOURCES = mutex_bench.c mcs-mutex.c mcs-mutex.h mutex_bench_shm_ordered_CPPFLAGS = -DUSE_WIN_ALLOC_SHM -DUSE_CONTIGUOUS_RANK $(AM_CPPFLAGS) mutex_bench_shm_ordered_SOURCES = mutex_bench.c mcs-mutex.c mcs-mutex.h linked_list_bench_lock_shr_nocheck_SOURCES = linked_list_bench_lock_shr.c linked_list_bench_lock_shr_nocheck_CPPFLAGS = -DUSE_MODE_NOCHECK $(AM_CPPFLAGS) win_shared_create_allocshm_SOURCES = win_shared_create.c win_shared_create_no_allocshm_SOURCES = win_shared_create.c win_shared_create_allocshm_CPPFLAGS = -DUSE_INFO_ALLOC_SHM $(AM_CPPFLAGS) put_flush_get_SOURCES = wrma_flush_get.c acc_flush_get_SOURCES = wrma_flush_get.c gacc_flush_get_SOURCES = wrma_flush_get.c fop_flush_get_SOURCES = wrma_flush_get.c cas_flush_get_SOURCES = wrma_flush_get.c put_flush_get_CPPFLAGS = -DTEST_PUT $(AM_CPPFLAGS) acc_flush_get_CPPFLAGS = -DTEST_ACC $(AM_CPPFLAGS) gacc_flush_get_CPPFLAGS = -DTEST_GACC $(AM_CPPFLAGS) fop_flush_get_CPPFLAGS = -DTEST_FOP $(AM_CPPFLAGS) cas_flush_get_CPPFLAGS = -DTEST_CAS $(AM_CPPFLAGS) win_shared_put_flush_load_SOURCES = win_shared_rma_flush_load.c win_shared_acc_flush_load_SOURCES = win_shared_rma_flush_load.c win_shared_gacc_flush_load_SOURCES = win_shared_rma_flush_load.c win_shared_fop_flush_load_SOURCES = win_shared_rma_flush_load.c win_shared_cas_flush_load_SOURCES = win_shared_rma_flush_load.c win_shared_put_flush_load_CPPFLAGS = -DTEST_PUT $(AM_CPPFLAGS) win_shared_acc_flush_load_CPPFLAGS = -DTEST_ACC $(AM_CPPFLAGS) win_shared_gacc_flush_load_CPPFLAGS = -DTEST_GACC $(AM_CPPFLAGS) win_shared_fop_flush_load_CPPFLAGS = -DTEST_FOP $(AM_CPPFLAGS) win_shared_cas_flush_load_CPPFLAGS = -DTEST_CAS $(AM_CPPFLAGS) all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign rma/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign rma/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): testlist: $(top_builddir)/config.status $(srcdir)/testlist.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) acc-loc$(EXEEXT): $(acc_loc_OBJECTS) $(acc_loc_DEPENDENCIES) $(EXTRA_acc_loc_DEPENDENCIES) @rm -f acc-loc$(EXEEXT) $(AM_V_CCLD)$(LINK) $(acc_loc_OBJECTS) $(acc_loc_LDADD) $(LIBS) acc-pairtype$(EXEEXT): $(acc_pairtype_OBJECTS) $(acc_pairtype_DEPENDENCIES) $(EXTRA_acc_pairtype_DEPENDENCIES) @rm -f acc-pairtype$(EXEEXT) $(AM_V_CCLD)$(LINK) $(acc_pairtype_OBJECTS) $(acc_pairtype_LDADD) $(LIBS) acc_flush_get$(EXEEXT): $(acc_flush_get_OBJECTS) $(acc_flush_get_DEPENDENCIES) $(EXTRA_acc_flush_get_DEPENDENCIES) @rm -f acc_flush_get$(EXEEXT) $(AM_V_CCLD)$(LINK) $(acc_flush_get_OBJECTS) $(acc_flush_get_LDADD) $(LIBS) accfence1$(EXEEXT): $(accfence1_OBJECTS) $(accfence1_DEPENDENCIES) $(EXTRA_accfence1_DEPENDENCIES) @rm -f accfence1$(EXEEXT) $(AM_V_CCLD)$(LINK) $(accfence1_OBJECTS) $(accfence1_LDADD) $(LIBS) accfence2$(EXEEXT): $(accfence2_OBJECTS) $(accfence2_DEPENDENCIES) $(EXTRA_accfence2_DEPENDENCIES) @rm -f accfence2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(accfence2_OBJECTS) $(accfence2_LDADD) $(LIBS) accfence2_am$(EXEEXT): $(accfence2_am_OBJECTS) $(accfence2_am_DEPENDENCIES) $(EXTRA_accfence2_am_DEPENDENCIES) @rm -f accfence2_am$(EXEEXT) $(AM_V_CCLD)$(LINK) $(accfence2_am_OBJECTS) $(accfence2_am_LDADD) $(LIBS) accpscw1$(EXEEXT): $(accpscw1_OBJECTS) $(accpscw1_DEPENDENCIES) $(EXTRA_accpscw1_DEPENDENCIES) @rm -f accpscw1$(EXEEXT) $(AM_V_CCLD)$(LINK) $(accpscw1_OBJECTS) $(accpscw1_LDADD) $(LIBS) adlb_mimic1$(EXEEXT): $(adlb_mimic1_OBJECTS) $(adlb_mimic1_DEPENDENCIES) $(EXTRA_adlb_mimic1_DEPENDENCIES) @rm -f adlb_mimic1$(EXEEXT) $(AM_V_CCLD)$(LINK) $(adlb_mimic1_OBJECTS) $(adlb_mimic1_LDADD) $(LIBS) aint$(EXEEXT): $(aint_OBJECTS) $(aint_DEPENDENCIES) $(EXTRA_aint_DEPENDENCIES) @rm -f aint$(EXEEXT) $(AM_V_CCLD)$(LINK) $(aint_OBJECTS) $(aint_LDADD) $(LIBS) allocmem$(EXEEXT): $(allocmem_OBJECTS) $(allocmem_DEPENDENCIES) $(EXTRA_allocmem_DEPENDENCIES) @rm -f allocmem$(EXEEXT) $(AM_V_CCLD)$(LINK) $(allocmem_OBJECTS) $(allocmem_LDADD) $(LIBS) at_complete$(EXEEXT): $(at_complete_OBJECTS) $(at_complete_DEPENDENCIES) $(EXTRA_at_complete_DEPENDENCIES) @rm -f at_complete$(EXEEXT) $(AM_V_CCLD)$(LINK) $(at_complete_OBJECTS) $(at_complete_LDADD) $(LIBS) atomic_get$(EXEEXT): $(atomic_get_OBJECTS) $(atomic_get_DEPENDENCIES) $(EXTRA_atomic_get_DEPENDENCIES) @rm -f atomic_get$(EXEEXT) $(AM_V_CCLD)$(LINK) $(atomic_get_OBJECTS) $(atomic_get_LDADD) $(LIBS) atomic_rmw_cas$(EXEEXT): $(atomic_rmw_cas_OBJECTS) $(atomic_rmw_cas_DEPENDENCIES) $(EXTRA_atomic_rmw_cas_DEPENDENCIES) @rm -f atomic_rmw_cas$(EXEEXT) $(AM_V_CCLD)$(LINK) $(atomic_rmw_cas_OBJECTS) $(atomic_rmw_cas_LDADD) $(LIBS) atomic_rmw_fop$(EXEEXT): $(atomic_rmw_fop_OBJECTS) $(atomic_rmw_fop_DEPENDENCIES) $(EXTRA_atomic_rmw_fop_DEPENDENCIES) @rm -f atomic_rmw_fop$(EXEEXT) $(AM_V_CCLD)$(LINK) $(atomic_rmw_fop_OBJECTS) $(atomic_rmw_fop_LDADD) $(LIBS) atomic_rmw_gacc$(EXEEXT): $(atomic_rmw_gacc_OBJECTS) $(atomic_rmw_gacc_DEPENDENCIES) $(EXTRA_atomic_rmw_gacc_DEPENDENCIES) @rm -f atomic_rmw_gacc$(EXEEXT) $(AM_V_CCLD)$(LINK) $(atomic_rmw_gacc_OBJECTS) $(atomic_rmw_gacc_LDADD) $(LIBS) attrorderwin$(EXEEXT): $(attrorderwin_OBJECTS) $(attrorderwin_DEPENDENCIES) $(EXTRA_attrorderwin_DEPENDENCIES) @rm -f attrorderwin$(EXEEXT) $(AM_V_CCLD)$(LINK) $(attrorderwin_OBJECTS) $(attrorderwin_LDADD) $(LIBS) badrma$(EXEEXT): $(badrma_OBJECTS) $(badrma_DEPENDENCIES) $(EXTRA_badrma_DEPENDENCIES) @rm -f badrma$(EXEEXT) $(AM_V_CCLD)$(LINK) $(badrma_OBJECTS) $(badrma_LDADD) $(LIBS) baseattrwin$(EXEEXT): $(baseattrwin_OBJECTS) $(baseattrwin_DEPENDENCIES) $(EXTRA_baseattrwin_DEPENDENCIES) @rm -f baseattrwin$(EXEEXT) $(AM_V_CCLD)$(LINK) $(baseattrwin_OBJECTS) $(baseattrwin_LDADD) $(LIBS) cas_flush_get$(EXEEXT): $(cas_flush_get_OBJECTS) $(cas_flush_get_DEPENDENCIES) $(EXTRA_cas_flush_get_DEPENDENCIES) @rm -f cas_flush_get$(EXEEXT) $(AM_V_CCLD)$(LINK) $(cas_flush_get_OBJECTS) $(cas_flush_get_LDADD) $(LIBS) compare_and_swap$(EXEEXT): $(compare_and_swap_OBJECTS) $(compare_and_swap_DEPENDENCIES) $(EXTRA_compare_and_swap_DEPENDENCIES) @rm -f compare_and_swap$(EXEEXT) $(AM_V_CCLD)$(LINK) $(compare_and_swap_OBJECTS) $(compare_and_swap_LDADD) $(LIBS) contention_put$(EXEEXT): $(contention_put_OBJECTS) $(contention_put_DEPENDENCIES) $(EXTRA_contention_put_DEPENDENCIES) @rm -f contention_put$(EXEEXT) $(AM_V_CCLD)$(LINK) $(contention_put_OBJECTS) $(contention_put_LDADD) $(LIBS) contention_putget$(EXEEXT): $(contention_putget_OBJECTS) $(contention_putget_DEPENDENCIES) $(EXTRA_contention_putget_DEPENDENCIES) @rm -f contention_putget$(EXEEXT) $(AM_V_CCLD)$(LINK) $(contention_putget_OBJECTS) $(contention_putget_LDADD) $(LIBS) contig_displ$(EXEEXT): $(contig_displ_OBJECTS) $(contig_displ_DEPENDENCIES) $(EXTRA_contig_displ_DEPENDENCIES) @rm -f contig_displ$(EXEEXT) $(AM_V_CCLD)$(LINK) $(contig_displ_OBJECTS) $(contig_displ_LDADD) $(LIBS) derived-acc-flush_local$(EXEEXT): $(derived_acc_flush_local_OBJECTS) $(derived_acc_flush_local_DEPENDENCIES) $(EXTRA_derived_acc_flush_local_DEPENDENCIES) @rm -f derived-acc-flush_local$(EXEEXT) $(AM_V_CCLD)$(LINK) $(derived_acc_flush_local_OBJECTS) $(derived_acc_flush_local_LDADD) $(LIBS) epochtest$(EXEEXT): $(epochtest_OBJECTS) $(epochtest_DEPENDENCIES) $(EXTRA_epochtest_DEPENDENCIES) @rm -f epochtest$(EXEEXT) $(AM_V_CCLD)$(LINK) $(epochtest_OBJECTS) $(epochtest_LDADD) $(LIBS) fence_shm$(EXEEXT): $(fence_shm_OBJECTS) $(fence_shm_DEPENDENCIES) $(EXTRA_fence_shm_DEPENDENCIES) @rm -f fence_shm$(EXEEXT) $(AM_V_CCLD)$(LINK) $(fence_shm_OBJECTS) $(fence_shm_LDADD) $(LIBS) fetch_and_op_char$(EXEEXT): $(fetch_and_op_char_OBJECTS) $(fetch_and_op_char_DEPENDENCIES) $(EXTRA_fetch_and_op_char_DEPENDENCIES) @rm -f fetch_and_op_char$(EXEEXT) $(AM_V_CCLD)$(LINK) $(fetch_and_op_char_OBJECTS) $(fetch_and_op_char_LDADD) $(LIBS) fetch_and_op_double$(EXEEXT): $(fetch_and_op_double_OBJECTS) $(fetch_and_op_double_DEPENDENCIES) $(EXTRA_fetch_and_op_double_DEPENDENCIES) @rm -f fetch_and_op_double$(EXEEXT) $(AM_V_CCLD)$(LINK) $(fetch_and_op_double_OBJECTS) $(fetch_and_op_double_LDADD) $(LIBS) fetch_and_op_int$(EXEEXT): $(fetch_and_op_int_OBJECTS) $(fetch_and_op_int_DEPENDENCIES) $(EXTRA_fetch_and_op_int_DEPENDENCIES) @rm -f fetch_and_op_int$(EXEEXT) $(AM_V_CCLD)$(LINK) $(fetch_and_op_int_OBJECTS) $(fetch_and_op_int_LDADD) $(LIBS) fetch_and_op_long$(EXEEXT): $(fetch_and_op_long_OBJECTS) $(fetch_and_op_long_DEPENDENCIES) $(EXTRA_fetch_and_op_long_DEPENDENCIES) @rm -f fetch_and_op_long$(EXEEXT) $(AM_V_CCLD)$(LINK) $(fetch_and_op_long_OBJECTS) $(fetch_and_op_long_LDADD) $(LIBS) fetch_and_op_long_double$(EXEEXT): $(fetch_and_op_long_double_OBJECTS) $(fetch_and_op_long_double_DEPENDENCIES) $(EXTRA_fetch_and_op_long_double_DEPENDENCIES) @rm -f fetch_and_op_long_double$(EXEEXT) $(AM_V_CCLD)$(LINK) $(fetch_and_op_long_double_OBJECTS) $(fetch_and_op_long_double_LDADD) $(LIBS) fetch_and_op_short$(EXEEXT): $(fetch_and_op_short_OBJECTS) $(fetch_and_op_short_DEPENDENCIES) $(EXTRA_fetch_and_op_short_DEPENDENCIES) @rm -f fetch_and_op_short$(EXEEXT) $(AM_V_CCLD)$(LINK) $(fetch_and_op_short_OBJECTS) $(fetch_and_op_short_LDADD) $(LIBS) fetchandadd$(EXEEXT): $(fetchandadd_OBJECTS) $(fetchandadd_DEPENDENCIES) $(EXTRA_fetchandadd_DEPENDENCIES) @rm -f fetchandadd$(EXEEXT) $(AM_V_CCLD)$(LINK) $(fetchandadd_OBJECTS) $(fetchandadd_LDADD) $(LIBS) fetchandadd_am$(EXEEXT): $(fetchandadd_am_OBJECTS) $(fetchandadd_am_DEPENDENCIES) $(EXTRA_fetchandadd_am_DEPENDENCIES) @rm -f fetchandadd_am$(EXEEXT) $(AM_V_CCLD)$(LINK) $(fetchandadd_am_OBJECTS) $(fetchandadd_am_LDADD) $(LIBS) fetchandadd_tree$(EXEEXT): $(fetchandadd_tree_OBJECTS) $(fetchandadd_tree_DEPENDENCIES) $(EXTRA_fetchandadd_tree_DEPENDENCIES) @rm -f fetchandadd_tree$(EXEEXT) $(AM_V_CCLD)$(LINK) $(fetchandadd_tree_OBJECTS) $(fetchandadd_tree_LDADD) $(LIBS) fetchandadd_tree_am$(EXEEXT): $(fetchandadd_tree_am_OBJECTS) $(fetchandadd_tree_am_DEPENDENCIES) $(EXTRA_fetchandadd_tree_am_DEPENDENCIES) @rm -f fetchandadd_tree_am$(EXEEXT) $(AM_V_CCLD)$(LINK) $(fetchandadd_tree_am_OBJECTS) $(fetchandadd_tree_am_LDADD) $(LIBS) fkeyvalwin$(EXEEXT): $(fkeyvalwin_OBJECTS) $(fkeyvalwin_DEPENDENCIES) $(EXTRA_fkeyvalwin_DEPENDENCIES) @rm -f fkeyvalwin$(EXEEXT) $(AM_V_CCLD)$(LINK) $(fkeyvalwin_OBJECTS) $(fkeyvalwin_LDADD) $(LIBS) flush$(EXEEXT): $(flush_OBJECTS) $(flush_DEPENDENCIES) $(EXTRA_flush_DEPENDENCIES) @rm -f flush$(EXEEXT) $(AM_V_CCLD)$(LINK) $(flush_OBJECTS) $(flush_LDADD) $(LIBS) fop_flush_get$(EXEEXT): $(fop_flush_get_OBJECTS) $(fop_flush_get_DEPENDENCIES) $(EXTRA_fop_flush_get_DEPENDENCIES) @rm -f fop_flush_get$(EXEEXT) $(AM_V_CCLD)$(LINK) $(fop_flush_get_OBJECTS) $(fop_flush_get_LDADD) $(LIBS) gacc_flush_get$(EXEEXT): $(gacc_flush_get_OBJECTS) $(gacc_flush_get_DEPENDENCIES) $(EXTRA_gacc_flush_get_DEPENDENCIES) @rm -f gacc_flush_get$(EXEEXT) $(AM_V_CCLD)$(LINK) $(gacc_flush_get_OBJECTS) $(gacc_flush_get_LDADD) $(LIBS) get-struct$(EXEEXT): $(get_struct_OBJECTS) $(get_struct_DEPENDENCIES) $(EXTRA_get_struct_DEPENDENCIES) @rm -f get-struct$(EXEEXT) $(AM_V_CCLD)$(LINK) $(get_struct_OBJECTS) $(get_struct_LDADD) $(LIBS) get_acc_local$(EXEEXT): $(get_acc_local_OBJECTS) $(get_acc_local_DEPENDENCIES) $(EXTRA_get_acc_local_DEPENDENCIES) @rm -f get_acc_local$(EXEEXT) $(AM_V_CCLD)$(LINK) $(get_acc_local_OBJECTS) $(get_acc_local_LDADD) $(LIBS) get_accumulate_double$(EXEEXT): $(get_accumulate_double_OBJECTS) $(get_accumulate_double_DEPENDENCIES) $(EXTRA_get_accumulate_double_DEPENDENCIES) @rm -f get_accumulate_double$(EXEEXT) $(AM_V_CCLD)$(LINK) $(get_accumulate_double_OBJECTS) $(get_accumulate_double_LDADD) $(LIBS) get_accumulate_double_derived$(EXEEXT): $(get_accumulate_double_derived_OBJECTS) $(get_accumulate_double_derived_DEPENDENCIES) $(EXTRA_get_accumulate_double_derived_DEPENDENCIES) @rm -f get_accumulate_double_derived$(EXEEXT) $(AM_V_CCLD)$(LINK) $(get_accumulate_double_derived_OBJECTS) $(get_accumulate_double_derived_LDADD) $(LIBS) get_accumulate_int$(EXEEXT): $(get_accumulate_int_OBJECTS) $(get_accumulate_int_DEPENDENCIES) $(EXTRA_get_accumulate_int_DEPENDENCIES) @rm -f get_accumulate_int$(EXEEXT) $(AM_V_CCLD)$(LINK) $(get_accumulate_int_OBJECTS) $(get_accumulate_int_LDADD) $(LIBS) get_accumulate_int_derived$(EXEEXT): $(get_accumulate_int_derived_OBJECTS) $(get_accumulate_int_derived_DEPENDENCIES) $(EXTRA_get_accumulate_int_derived_DEPENDENCIES) @rm -f get_accumulate_int_derived$(EXEEXT) $(AM_V_CCLD)$(LINK) $(get_accumulate_int_derived_OBJECTS) $(get_accumulate_int_derived_LDADD) $(LIBS) get_accumulate_long$(EXEEXT): $(get_accumulate_long_OBJECTS) $(get_accumulate_long_DEPENDENCIES) $(EXTRA_get_accumulate_long_DEPENDENCIES) @rm -f get_accumulate_long$(EXEEXT) $(AM_V_CCLD)$(LINK) $(get_accumulate_long_OBJECTS) $(get_accumulate_long_LDADD) $(LIBS) get_accumulate_long_derived$(EXEEXT): $(get_accumulate_long_derived_OBJECTS) $(get_accumulate_long_derived_DEPENDENCIES) $(EXTRA_get_accumulate_long_derived_DEPENDENCIES) @rm -f get_accumulate_long_derived$(EXEEXT) $(AM_V_CCLD)$(LINK) $(get_accumulate_long_derived_OBJECTS) $(get_accumulate_long_derived_LDADD) $(LIBS) get_accumulate_short$(EXEEXT): $(get_accumulate_short_OBJECTS) $(get_accumulate_short_DEPENDENCIES) $(EXTRA_get_accumulate_short_DEPENDENCIES) @rm -f get_accumulate_short$(EXEEXT) $(AM_V_CCLD)$(LINK) $(get_accumulate_short_OBJECTS) $(get_accumulate_short_LDADD) $(LIBS) get_accumulate_short_derived$(EXEEXT): $(get_accumulate_short_derived_OBJECTS) $(get_accumulate_short_derived_DEPENDENCIES) $(EXTRA_get_accumulate_short_derived_DEPENDENCIES) @rm -f get_accumulate_short_derived$(EXEEXT) $(AM_V_CCLD)$(LINK) $(get_accumulate_short_derived_OBJECTS) $(get_accumulate_short_derived_LDADD) $(LIBS) getfence1$(EXEEXT): $(getfence1_OBJECTS) $(getfence1_DEPENDENCIES) $(EXTRA_getfence1_DEPENDENCIES) @rm -f getfence1$(EXEEXT) $(AM_V_CCLD)$(LINK) $(getfence1_OBJECTS) $(getfence1_LDADD) $(LIBS) getgroup$(EXEEXT): $(getgroup_OBJECTS) $(getgroup_DEPENDENCIES) $(EXTRA_getgroup_DEPENDENCIES) @rm -f getgroup$(EXEEXT) $(AM_V_CCLD)$(LINK) $(getgroup_OBJECTS) $(getgroup_LDADD) $(LIBS) large-acc-flush_local$(EXEEXT): $(large_acc_flush_local_OBJECTS) $(large_acc_flush_local_DEPENDENCIES) $(EXTRA_large_acc_flush_local_DEPENDENCIES) @rm -f large-acc-flush_local$(EXEEXT) $(AM_V_CCLD)$(LINK) $(large_acc_flush_local_OBJECTS) $(large_acc_flush_local_LDADD) $(LIBS) large-small-acc$(EXEEXT): $(large_small_acc_OBJECTS) $(large_small_acc_DEPENDENCIES) $(EXTRA_large_small_acc_DEPENDENCIES) @rm -f large-small-acc$(EXEEXT) $(AM_V_CCLD)$(LINK) $(large_small_acc_OBJECTS) $(large_small_acc_LDADD) $(LIBS) linked_list$(EXEEXT): $(linked_list_OBJECTS) $(linked_list_DEPENDENCIES) $(EXTRA_linked_list_DEPENDENCIES) @rm -f linked_list$(EXEEXT) $(AM_V_CCLD)$(LINK) $(linked_list_OBJECTS) $(linked_list_LDADD) $(LIBS) linked_list_bench_lock_all$(EXEEXT): $(linked_list_bench_lock_all_OBJECTS) $(linked_list_bench_lock_all_DEPENDENCIES) $(EXTRA_linked_list_bench_lock_all_DEPENDENCIES) @rm -f linked_list_bench_lock_all$(EXEEXT) $(AM_V_CCLD)$(LINK) $(linked_list_bench_lock_all_OBJECTS) $(linked_list_bench_lock_all_LDADD) $(LIBS) linked_list_bench_lock_excl$(EXEEXT): $(linked_list_bench_lock_excl_OBJECTS) $(linked_list_bench_lock_excl_DEPENDENCIES) $(EXTRA_linked_list_bench_lock_excl_DEPENDENCIES) @rm -f linked_list_bench_lock_excl$(EXEEXT) $(AM_V_CCLD)$(LINK) $(linked_list_bench_lock_excl_OBJECTS) $(linked_list_bench_lock_excl_LDADD) $(LIBS) linked_list_bench_lock_shr$(EXEEXT): $(linked_list_bench_lock_shr_OBJECTS) $(linked_list_bench_lock_shr_DEPENDENCIES) $(EXTRA_linked_list_bench_lock_shr_DEPENDENCIES) @rm -f linked_list_bench_lock_shr$(EXEEXT) $(AM_V_CCLD)$(LINK) $(linked_list_bench_lock_shr_OBJECTS) $(linked_list_bench_lock_shr_LDADD) $(LIBS) linked_list_bench_lock_shr_nocheck$(EXEEXT): $(linked_list_bench_lock_shr_nocheck_OBJECTS) $(linked_list_bench_lock_shr_nocheck_DEPENDENCIES) $(EXTRA_linked_list_bench_lock_shr_nocheck_DEPENDENCIES) @rm -f linked_list_bench_lock_shr_nocheck$(EXEEXT) $(AM_V_CCLD)$(LINK) $(linked_list_bench_lock_shr_nocheck_OBJECTS) $(linked_list_bench_lock_shr_nocheck_LDADD) $(LIBS) linked_list_fop$(EXEEXT): $(linked_list_fop_OBJECTS) $(linked_list_fop_DEPENDENCIES) $(EXTRA_linked_list_fop_DEPENDENCIES) @rm -f linked_list_fop$(EXEEXT) $(AM_V_CCLD)$(LINK) $(linked_list_fop_OBJECTS) $(linked_list_fop_LDADD) $(LIBS) linked_list_lockall$(EXEEXT): $(linked_list_lockall_OBJECTS) $(linked_list_lockall_DEPENDENCIES) $(EXTRA_linked_list_lockall_DEPENDENCIES) @rm -f linked_list_lockall$(EXEEXT) $(AM_V_CCLD)$(LINK) $(linked_list_lockall_OBJECTS) $(linked_list_lockall_LDADD) $(LIBS) lock_contention_dt$(EXEEXT): $(lock_contention_dt_OBJECTS) $(lock_contention_dt_DEPENDENCIES) $(EXTRA_lock_contention_dt_DEPENDENCIES) @rm -f lock_contention_dt$(EXEEXT) $(AM_V_CCLD)$(LINK) $(lock_contention_dt_OBJECTS) $(lock_contention_dt_LDADD) $(LIBS) lock_dt$(EXEEXT): $(lock_dt_OBJECTS) $(lock_dt_DEPENDENCIES) $(EXTRA_lock_dt_DEPENDENCIES) @rm -f lock_dt$(EXEEXT) $(AM_V_CCLD)$(LINK) $(lock_dt_OBJECTS) $(lock_dt_LDADD) $(LIBS) lock_dt_flush$(EXEEXT): $(lock_dt_flush_OBJECTS) $(lock_dt_flush_DEPENDENCIES) $(EXTRA_lock_dt_flush_DEPENDENCIES) @rm -f lock_dt_flush$(EXEEXT) $(AM_V_CCLD)$(LINK) $(lock_dt_flush_OBJECTS) $(lock_dt_flush_LDADD) $(LIBS) lock_dt_flushlocal$(EXEEXT): $(lock_dt_flushlocal_OBJECTS) $(lock_dt_flushlocal_DEPENDENCIES) $(EXTRA_lock_dt_flushlocal_DEPENDENCIES) @rm -f lock_dt_flushlocal$(EXEEXT) $(AM_V_CCLD)$(LINK) $(lock_dt_flushlocal_OBJECTS) $(lock_dt_flushlocal_LDADD) $(LIBS) lockall_dt$(EXEEXT): $(lockall_dt_OBJECTS) $(lockall_dt_DEPENDENCIES) $(EXTRA_lockall_dt_DEPENDENCIES) @rm -f lockall_dt$(EXEEXT) $(AM_V_CCLD)$(LINK) $(lockall_dt_OBJECTS) $(lockall_dt_LDADD) $(LIBS) lockall_dt_flush$(EXEEXT): $(lockall_dt_flush_OBJECTS) $(lockall_dt_flush_DEPENDENCIES) $(EXTRA_lockall_dt_flush_DEPENDENCIES) @rm -f lockall_dt_flush$(EXEEXT) $(AM_V_CCLD)$(LINK) $(lockall_dt_flush_OBJECTS) $(lockall_dt_flush_LDADD) $(LIBS) lockall_dt_flushall$(EXEEXT): $(lockall_dt_flushall_OBJECTS) $(lockall_dt_flushall_DEPENDENCIES) $(EXTRA_lockall_dt_flushall_DEPENDENCIES) @rm -f lockall_dt_flushall$(EXEEXT) $(AM_V_CCLD)$(LINK) $(lockall_dt_flushall_OBJECTS) $(lockall_dt_flushall_LDADD) $(LIBS) lockall_dt_flushlocal$(EXEEXT): $(lockall_dt_flushlocal_OBJECTS) $(lockall_dt_flushlocal_DEPENDENCIES) $(EXTRA_lockall_dt_flushlocal_DEPENDENCIES) @rm -f lockall_dt_flushlocal$(EXEEXT) $(AM_V_CCLD)$(LINK) $(lockall_dt_flushlocal_OBJECTS) $(lockall_dt_flushlocal_LDADD) $(LIBS) lockall_dt_flushlocalall$(EXEEXT): $(lockall_dt_flushlocalall_OBJECTS) $(lockall_dt_flushlocalall_DEPENDENCIES) $(EXTRA_lockall_dt_flushlocalall_DEPENDENCIES) @rm -f lockall_dt_flushlocalall$(EXEEXT) $(AM_V_CCLD)$(LINK) $(lockall_dt_flushlocalall_OBJECTS) $(lockall_dt_flushlocalall_LDADD) $(LIBS) lockcontention$(EXEEXT): $(lockcontention_OBJECTS) $(lockcontention_DEPENDENCIES) $(EXTRA_lockcontention_DEPENDENCIES) @rm -f lockcontention$(EXEEXT) $(AM_V_CCLD)$(LINK) $(lockcontention_OBJECTS) $(lockcontention_LDADD) $(LIBS) lockcontention2$(EXEEXT): $(lockcontention2_OBJECTS) $(lockcontention2_DEPENDENCIES) $(EXTRA_lockcontention2_DEPENDENCIES) @rm -f lockcontention2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(lockcontention2_OBJECTS) $(lockcontention2_LDADD) $(LIBS) lockcontention3$(EXEEXT): $(lockcontention3_OBJECTS) $(lockcontention3_DEPENDENCIES) $(EXTRA_lockcontention3_DEPENDENCIES) @rm -f lockcontention3$(EXEEXT) $(AM_V_CCLD)$(LINK) $(lockcontention3_OBJECTS) $(lockcontention3_LDADD) $(LIBS) locknull$(EXEEXT): $(locknull_OBJECTS) $(locknull_DEPENDENCIES) $(EXTRA_locknull_DEPENDENCIES) @rm -f locknull$(EXEEXT) $(AM_V_CCLD)$(LINK) $(locknull_OBJECTS) $(locknull_LDADD) $(LIBS) lockopts$(EXEEXT): $(lockopts_OBJECTS) $(lockopts_DEPENDENCIES) $(EXTRA_lockopts_DEPENDENCIES) @rm -f lockopts$(EXEEXT) $(AM_V_CCLD)$(LINK) $(lockopts_OBJECTS) $(lockopts_LDADD) $(LIBS) manyget$(EXEEXT): $(manyget_OBJECTS) $(manyget_DEPENDENCIES) $(EXTRA_manyget_DEPENDENCIES) @rm -f manyget$(EXEEXT) $(AM_V_CCLD)$(LINK) $(manyget_OBJECTS) $(manyget_LDADD) $(LIBS) manyrma2$(EXEEXT): $(manyrma2_OBJECTS) $(manyrma2_DEPENDENCIES) $(EXTRA_manyrma2_DEPENDENCIES) @rm -f manyrma2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(manyrma2_OBJECTS) $(manyrma2_LDADD) $(LIBS) manyrma2_shm$(EXEEXT): $(manyrma2_shm_OBJECTS) $(manyrma2_shm_DEPENDENCIES) $(EXTRA_manyrma2_shm_DEPENDENCIES) @rm -f manyrma2_shm$(EXEEXT) $(AM_V_CCLD)$(LINK) $(manyrma2_shm_OBJECTS) $(manyrma2_shm_LDADD) $(LIBS) manyrma3$(EXEEXT): $(manyrma3_OBJECTS) $(manyrma3_DEPENDENCIES) $(EXTRA_manyrma3_DEPENDENCIES) @rm -f manyrma3$(EXEEXT) $(AM_V_CCLD)$(LINK) $(manyrma3_OBJECTS) $(manyrma3_LDADD) $(LIBS) mixedsync$(EXEEXT): $(mixedsync_OBJECTS) $(mixedsync_DEPENDENCIES) $(EXTRA_mixedsync_DEPENDENCIES) @rm -f mixedsync$(EXEEXT) $(AM_V_CCLD)$(LINK) $(mixedsync_OBJECTS) $(mixedsync_LDADD) $(LIBS) mutex_bench$(EXEEXT): $(mutex_bench_OBJECTS) $(mutex_bench_DEPENDENCIES) $(EXTRA_mutex_bench_DEPENDENCIES) @rm -f mutex_bench$(EXEEXT) $(AM_V_CCLD)$(LINK) $(mutex_bench_OBJECTS) $(mutex_bench_LDADD) $(LIBS) mutex_bench_shared$(EXEEXT): $(mutex_bench_shared_OBJECTS) $(mutex_bench_shared_DEPENDENCIES) $(EXTRA_mutex_bench_shared_DEPENDENCIES) @rm -f mutex_bench_shared$(EXEEXT) $(AM_V_CCLD)$(LINK) $(mutex_bench_shared_OBJECTS) $(mutex_bench_shared_LDADD) $(LIBS) mutex_bench_shm$(EXEEXT): $(mutex_bench_shm_OBJECTS) $(mutex_bench_shm_DEPENDENCIES) $(EXTRA_mutex_bench_shm_DEPENDENCIES) @rm -f mutex_bench_shm$(EXEEXT) $(AM_V_CCLD)$(LINK) $(mutex_bench_shm_OBJECTS) $(mutex_bench_shm_LDADD) $(LIBS) mutex_bench_shm_ordered$(EXEEXT): $(mutex_bench_shm_ordered_OBJECTS) $(mutex_bench_shm_ordered_DEPENDENCIES) $(EXTRA_mutex_bench_shm_ordered_DEPENDENCIES) @rm -f mutex_bench_shm_ordered$(EXEEXT) $(AM_V_CCLD)$(LINK) $(mutex_bench_shm_ordered_OBJECTS) $(mutex_bench_shm_ordered_LDADD) $(LIBS) nb_test$(EXEEXT): $(nb_test_OBJECTS) $(nb_test_DEPENDENCIES) $(EXTRA_nb_test_DEPENDENCIES) @rm -f nb_test$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nb_test_OBJECTS) $(nb_test_LDADD) $(LIBS) nullpscw$(EXEEXT): $(nullpscw_OBJECTS) $(nullpscw_DEPENDENCIES) $(EXTRA_nullpscw_DEPENDENCIES) @rm -f nullpscw$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nullpscw_OBJECTS) $(nullpscw_LDADD) $(LIBS) nullpscw_shm$(EXEEXT): $(nullpscw_shm_OBJECTS) $(nullpscw_shm_DEPENDENCIES) $(EXTRA_nullpscw_shm_DEPENDENCIES) @rm -f nullpscw_shm$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nullpscw_shm_OBJECTS) $(nullpscw_shm_LDADD) $(LIBS) pscw_ordering$(EXEEXT): $(pscw_ordering_OBJECTS) $(pscw_ordering_DEPENDENCIES) $(EXTRA_pscw_ordering_DEPENDENCIES) @rm -f pscw_ordering$(EXEEXT) $(AM_V_CCLD)$(LINK) $(pscw_ordering_OBJECTS) $(pscw_ordering_LDADD) $(LIBS) pscw_ordering_shm$(EXEEXT): $(pscw_ordering_shm_OBJECTS) $(pscw_ordering_shm_DEPENDENCIES) $(EXTRA_pscw_ordering_shm_DEPENDENCIES) @rm -f pscw_ordering_shm$(EXEEXT) $(AM_V_CCLD)$(LINK) $(pscw_ordering_shm_OBJECTS) $(pscw_ordering_shm_LDADD) $(LIBS) put_base$(EXEEXT): $(put_base_OBJECTS) $(put_base_DEPENDENCIES) $(EXTRA_put_base_DEPENDENCIES) @rm -f put_base$(EXEEXT) $(AM_V_CCLD)$(LINK) $(put_base_OBJECTS) $(put_base_LDADD) $(LIBS) put_bottom$(EXEEXT): $(put_bottom_OBJECTS) $(put_bottom_DEPENDENCIES) $(EXTRA_put_bottom_DEPENDENCIES) @rm -f put_bottom$(EXEEXT) $(AM_V_CCLD)$(LINK) $(put_bottom_OBJECTS) $(put_bottom_LDADD) $(LIBS) put_flush_get$(EXEEXT): $(put_flush_get_OBJECTS) $(put_flush_get_DEPENDENCIES) $(EXTRA_put_flush_get_DEPENDENCIES) @rm -f put_flush_get$(EXEEXT) $(AM_V_CCLD)$(LINK) $(put_flush_get_OBJECTS) $(put_flush_get_LDADD) $(LIBS) putfence1$(EXEEXT): $(putfence1_OBJECTS) $(putfence1_DEPENDENCIES) $(EXTRA_putfence1_DEPENDENCIES) @rm -f putfence1$(EXEEXT) $(AM_V_CCLD)$(LINK) $(putfence1_OBJECTS) $(putfence1_LDADD) $(LIBS) putfidx$(EXEEXT): $(putfidx_OBJECTS) $(putfidx_DEPENDENCIES) $(EXTRA_putfidx_DEPENDENCIES) @rm -f putfidx$(EXEEXT) $(AM_V_CCLD)$(LINK) $(putfidx_OBJECTS) $(putfidx_LDADD) $(LIBS) putpscw1$(EXEEXT): $(putpscw1_OBJECTS) $(putpscw1_DEPENDENCIES) $(EXTRA_putpscw1_DEPENDENCIES) @rm -f putpscw1$(EXEEXT) $(AM_V_CCLD)$(LINK) $(putpscw1_OBJECTS) $(putpscw1_LDADD) $(LIBS) racc_local_comp$(EXEEXT): $(racc_local_comp_OBJECTS) $(racc_local_comp_DEPENDENCIES) $(EXTRA_racc_local_comp_DEPENDENCIES) @rm -f racc_local_comp$(EXEEXT) $(AM_V_CCLD)$(LINK) $(racc_local_comp_OBJECTS) $(racc_local_comp_LDADD) $(LIBS) req_example$(EXEEXT): $(req_example_OBJECTS) $(req_example_DEPENDENCIES) $(EXTRA_req_example_DEPENDENCIES) @rm -f req_example$(EXEEXT) $(AM_V_CCLD)$(LINK) $(req_example_OBJECTS) $(req_example_LDADD) $(LIBS) req_example_shm$(EXEEXT): $(req_example_shm_OBJECTS) $(req_example_shm_DEPENDENCIES) $(EXTRA_req_example_shm_DEPENDENCIES) @rm -f req_example_shm$(EXEEXT) $(AM_V_CCLD)$(LINK) $(req_example_shm_OBJECTS) $(req_example_shm_LDADD) $(LIBS) reqops$(EXEEXT): $(reqops_OBJECTS) $(reqops_DEPENDENCIES) $(EXTRA_reqops_DEPENDENCIES) @rm -f reqops$(EXEEXT) $(AM_V_CCLD)$(LINK) $(reqops_OBJECTS) $(reqops_LDADD) $(LIBS) rma-contig$(EXEEXT): $(rma_contig_OBJECTS) $(rma_contig_DEPENDENCIES) $(EXTRA_rma_contig_DEPENDENCIES) @rm -f rma-contig$(EXEEXT) $(AM_V_CCLD)$(LINK) $(rma_contig_OBJECTS) $(rma_contig_LDADD) $(LIBS) rmanull$(EXEEXT): $(rmanull_OBJECTS) $(rmanull_DEPENDENCIES) $(EXTRA_rmanull_DEPENDENCIES) @rm -f rmanull$(EXEEXT) $(AM_V_CCLD)$(LINK) $(rmanull_OBJECTS) $(rmanull_LDADD) $(LIBS) rmazero$(EXEEXT): $(rmazero_OBJECTS) $(rmazero_DEPENDENCIES) $(EXTRA_rmazero_DEPENDENCIES) @rm -f rmazero$(EXEEXT) $(AM_V_CCLD)$(LINK) $(rmazero_OBJECTS) $(rmazero_LDADD) $(LIBS) rput_local_comp$(EXEEXT): $(rput_local_comp_OBJECTS) $(rput_local_comp_DEPENDENCIES) $(EXTRA_rput_local_comp_DEPENDENCIES) @rm -f rput_local_comp$(EXEEXT) $(AM_V_CCLD)$(LINK) $(rput_local_comp_OBJECTS) $(rput_local_comp_LDADD) $(LIBS) selfrma$(EXEEXT): $(selfrma_OBJECTS) $(selfrma_DEPENDENCIES) $(EXTRA_selfrma_DEPENDENCIES) @rm -f selfrma$(EXEEXT) $(AM_V_CCLD)$(LINK) $(selfrma_OBJECTS) $(selfrma_LDADD) $(LIBS) strided_acc_indexed$(EXEEXT): $(strided_acc_indexed_OBJECTS) $(strided_acc_indexed_DEPENDENCIES) $(EXTRA_strided_acc_indexed_DEPENDENCIES) @rm -f strided_acc_indexed$(EXEEXT) $(AM_V_CCLD)$(LINK) $(strided_acc_indexed_OBJECTS) $(strided_acc_indexed_LDADD) $(LIBS) strided_acc_onelock$(EXEEXT): $(strided_acc_onelock_OBJECTS) $(strided_acc_onelock_DEPENDENCIES) $(EXTRA_strided_acc_onelock_DEPENDENCIES) @rm -f strided_acc_onelock$(EXEEXT) $(AM_V_CCLD)$(LINK) $(strided_acc_onelock_OBJECTS) $(strided_acc_onelock_LDADD) $(LIBS) strided_acc_subarray$(EXEEXT): $(strided_acc_subarray_OBJECTS) $(strided_acc_subarray_DEPENDENCIES) $(EXTRA_strided_acc_subarray_DEPENDENCIES) @rm -f strided_acc_subarray$(EXEEXT) $(AM_V_CCLD)$(LINK) $(strided_acc_subarray_OBJECTS) $(strided_acc_subarray_LDADD) $(LIBS) strided_get_indexed$(EXEEXT): $(strided_get_indexed_OBJECTS) $(strided_get_indexed_DEPENDENCIES) $(EXTRA_strided_get_indexed_DEPENDENCIES) @rm -f strided_get_indexed$(EXEEXT) $(AM_V_CCLD)$(LINK) $(strided_get_indexed_OBJECTS) $(strided_get_indexed_LDADD) $(LIBS) strided_getacc_indexed$(EXEEXT): $(strided_getacc_indexed_OBJECTS) $(strided_getacc_indexed_DEPENDENCIES) $(EXTRA_strided_getacc_indexed_DEPENDENCIES) @rm -f strided_getacc_indexed$(EXEEXT) $(AM_V_CCLD)$(LINK) $(strided_getacc_indexed_OBJECTS) $(strided_getacc_indexed_LDADD) $(LIBS) strided_getacc_indexed_shared$(EXEEXT): $(strided_getacc_indexed_shared_OBJECTS) $(strided_getacc_indexed_shared_DEPENDENCIES) $(EXTRA_strided_getacc_indexed_shared_DEPENDENCIES) @rm -f strided_getacc_indexed_shared$(EXEEXT) $(AM_V_CCLD)$(LINK) $(strided_getacc_indexed_shared_OBJECTS) $(strided_getacc_indexed_shared_LDADD) $(LIBS) strided_putget_indexed$(EXEEXT): $(strided_putget_indexed_OBJECTS) $(strided_putget_indexed_DEPENDENCIES) $(EXTRA_strided_putget_indexed_DEPENDENCIES) @rm -f strided_putget_indexed$(EXEEXT) $(AM_V_CCLD)$(LINK) $(strided_putget_indexed_OBJECTS) $(strided_putget_indexed_LDADD) $(LIBS) strided_putget_indexed_shared$(EXEEXT): $(strided_putget_indexed_shared_OBJECTS) $(strided_putget_indexed_shared_DEPENDENCIES) $(EXTRA_strided_putget_indexed_shared_DEPENDENCIES) @rm -f strided_putget_indexed_shared$(EXEEXT) $(AM_V_CCLD)$(LINK) $(strided_putget_indexed_shared_OBJECTS) $(strided_putget_indexed_shared_LDADD) $(LIBS) test1$(EXEEXT): $(test1_OBJECTS) $(test1_DEPENDENCIES) $(EXTRA_test1_DEPENDENCIES) @rm -f test1$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test1_OBJECTS) $(test1_LDADD) $(LIBS) test1_am$(EXEEXT): $(test1_am_OBJECTS) $(test1_am_DEPENDENCIES) $(EXTRA_test1_am_DEPENDENCIES) @rm -f test1_am$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test1_am_OBJECTS) $(test1_am_LDADD) $(LIBS) test1_dt$(EXEEXT): $(test1_dt_OBJECTS) $(test1_dt_DEPENDENCIES) $(EXTRA_test1_dt_DEPENDENCIES) @rm -f test1_dt$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test1_dt_OBJECTS) $(test1_dt_LDADD) $(LIBS) test2$(EXEEXT): $(test2_OBJECTS) $(test2_DEPENDENCIES) $(EXTRA_test2_DEPENDENCIES) @rm -f test2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test2_OBJECTS) $(test2_LDADD) $(LIBS) test2_am$(EXEEXT): $(test2_am_OBJECTS) $(test2_am_DEPENDENCIES) $(EXTRA_test2_am_DEPENDENCIES) @rm -f test2_am$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test2_am_OBJECTS) $(test2_am_LDADD) $(LIBS) test2_am_shm$(EXEEXT): $(test2_am_shm_OBJECTS) $(test2_am_shm_DEPENDENCIES) $(EXTRA_test2_am_shm_DEPENDENCIES) @rm -f test2_am_shm$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test2_am_shm_OBJECTS) $(test2_am_shm_LDADD) $(LIBS) test2_shm$(EXEEXT): $(test2_shm_OBJECTS) $(test2_shm_DEPENDENCIES) $(EXTRA_test2_shm_DEPENDENCIES) @rm -f test2_shm$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test2_shm_OBJECTS) $(test2_shm_LDADD) $(LIBS) test3$(EXEEXT): $(test3_OBJECTS) $(test3_DEPENDENCIES) $(EXTRA_test3_DEPENDENCIES) @rm -f test3$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test3_OBJECTS) $(test3_LDADD) $(LIBS) test3_am$(EXEEXT): $(test3_am_OBJECTS) $(test3_am_DEPENDENCIES) $(EXTRA_test3_am_DEPENDENCIES) @rm -f test3_am$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test3_am_OBJECTS) $(test3_am_LDADD) $(LIBS) test3_am_shm$(EXEEXT): $(test3_am_shm_OBJECTS) $(test3_am_shm_DEPENDENCIES) $(EXTRA_test3_am_shm_DEPENDENCIES) @rm -f test3_am_shm$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test3_am_shm_OBJECTS) $(test3_am_shm_LDADD) $(LIBS) test3_shm$(EXEEXT): $(test3_shm_OBJECTS) $(test3_shm_DEPENDENCIES) $(EXTRA_test3_shm_DEPENDENCIES) @rm -f test3_shm$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test3_shm_OBJECTS) $(test3_shm_LDADD) $(LIBS) test4$(EXEEXT): $(test4_OBJECTS) $(test4_DEPENDENCIES) $(EXTRA_test4_DEPENDENCIES) @rm -f test4$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test4_OBJECTS) $(test4_LDADD) $(LIBS) test4_am$(EXEEXT): $(test4_am_OBJECTS) $(test4_am_DEPENDENCIES) $(EXTRA_test4_am_DEPENDENCIES) @rm -f test4_am$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test4_am_OBJECTS) $(test4_am_LDADD) $(LIBS) test5$(EXEEXT): $(test5_OBJECTS) $(test5_DEPENDENCIES) $(EXTRA_test5_DEPENDENCIES) @rm -f test5$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test5_OBJECTS) $(test5_LDADD) $(LIBS) test5_am$(EXEEXT): $(test5_am_OBJECTS) $(test5_am_DEPENDENCIES) $(EXTRA_test5_am_DEPENDENCIES) @rm -f test5_am$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test5_am_OBJECTS) $(test5_am_LDADD) $(LIBS) transpose1$(EXEEXT): $(transpose1_OBJECTS) $(transpose1_DEPENDENCIES) $(EXTRA_transpose1_DEPENDENCIES) @rm -f transpose1$(EXEEXT) $(AM_V_CCLD)$(LINK) $(transpose1_OBJECTS) $(transpose1_LDADD) $(LIBS) transpose2$(EXEEXT): $(transpose2_OBJECTS) $(transpose2_DEPENDENCIES) $(EXTRA_transpose2_DEPENDENCIES) @rm -f transpose2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(transpose2_OBJECTS) $(transpose2_LDADD) $(LIBS) transpose3$(EXEEXT): $(transpose3_OBJECTS) $(transpose3_DEPENDENCIES) $(EXTRA_transpose3_DEPENDENCIES) @rm -f transpose3$(EXEEXT) $(AM_V_CCLD)$(LINK) $(transpose3_OBJECTS) $(transpose3_LDADD) $(LIBS) transpose3_shm$(EXEEXT): $(transpose3_shm_OBJECTS) $(transpose3_shm_DEPENDENCIES) $(EXTRA_transpose3_shm_DEPENDENCIES) @rm -f transpose3_shm$(EXEEXT) $(AM_V_CCLD)$(LINK) $(transpose3_shm_OBJECTS) $(transpose3_shm_LDADD) $(LIBS) transpose4$(EXEEXT): $(transpose4_OBJECTS) $(transpose4_DEPENDENCIES) $(EXTRA_transpose4_DEPENDENCIES) @rm -f transpose4$(EXEEXT) $(AM_V_CCLD)$(LINK) $(transpose4_OBJECTS) $(transpose4_LDADD) $(LIBS) transpose5$(EXEEXT): $(transpose5_OBJECTS) $(transpose5_DEPENDENCIES) $(EXTRA_transpose5_DEPENDENCIES) @rm -f transpose5$(EXEEXT) $(AM_V_CCLD)$(LINK) $(transpose5_OBJECTS) $(transpose5_LDADD) $(LIBS) transpose6$(EXEEXT): $(transpose6_OBJECTS) $(transpose6_DEPENDENCIES) $(EXTRA_transpose6_DEPENDENCIES) @rm -f transpose6$(EXEEXT) $(AM_V_CCLD)$(LINK) $(transpose6_OBJECTS) $(transpose6_LDADD) $(LIBS) transpose7$(EXEEXT): $(transpose7_OBJECTS) $(transpose7_DEPENDENCIES) $(EXTRA_transpose7_DEPENDENCIES) @rm -f transpose7$(EXEEXT) $(AM_V_CCLD)$(LINK) $(transpose7_OBJECTS) $(transpose7_LDADD) $(LIBS) win_dynamic_acc$(EXEEXT): $(win_dynamic_acc_OBJECTS) $(win_dynamic_acc_DEPENDENCIES) $(EXTRA_win_dynamic_acc_DEPENDENCIES) @rm -f win_dynamic_acc$(EXEEXT) $(AM_V_CCLD)$(LINK) $(win_dynamic_acc_OBJECTS) $(win_dynamic_acc_LDADD) $(LIBS) win_flavors$(EXEEXT): $(win_flavors_OBJECTS) $(win_flavors_DEPENDENCIES) $(EXTRA_win_flavors_DEPENDENCIES) @rm -f win_flavors$(EXEEXT) $(AM_V_CCLD)$(LINK) $(win_flavors_OBJECTS) $(win_flavors_LDADD) $(LIBS) win_info$(EXEEXT): $(win_info_OBJECTS) $(win_info_DEPENDENCIES) $(EXTRA_win_info_DEPENDENCIES) @rm -f win_info$(EXEEXT) $(AM_V_CCLD)$(LINK) $(win_info_OBJECTS) $(win_info_LDADD) $(LIBS) win_large_shm$(EXEEXT): $(win_large_shm_OBJECTS) $(win_large_shm_DEPENDENCIES) $(EXTRA_win_large_shm_DEPENDENCIES) @rm -f win_large_shm$(EXEEXT) $(AM_V_CCLD)$(LINK) $(win_large_shm_OBJECTS) $(win_large_shm_LDADD) $(LIBS) win_shared$(EXEEXT): $(win_shared_OBJECTS) $(win_shared_DEPENDENCIES) $(EXTRA_win_shared_DEPENDENCIES) @rm -f win_shared$(EXEEXT) $(AM_V_CCLD)$(LINK) $(win_shared_OBJECTS) $(win_shared_LDADD) $(LIBS) win_shared_acc_flush_load$(EXEEXT): $(win_shared_acc_flush_load_OBJECTS) $(win_shared_acc_flush_load_DEPENDENCIES) $(EXTRA_win_shared_acc_flush_load_DEPENDENCIES) @rm -f win_shared_acc_flush_load$(EXEEXT) $(AM_V_CCLD)$(LINK) $(win_shared_acc_flush_load_OBJECTS) $(win_shared_acc_flush_load_LDADD) $(LIBS) win_shared_cas_flush_load$(EXEEXT): $(win_shared_cas_flush_load_OBJECTS) $(win_shared_cas_flush_load_DEPENDENCIES) $(EXTRA_win_shared_cas_flush_load_DEPENDENCIES) @rm -f win_shared_cas_flush_load$(EXEEXT) $(AM_V_CCLD)$(LINK) $(win_shared_cas_flush_load_OBJECTS) $(win_shared_cas_flush_load_LDADD) $(LIBS) win_shared_create_allocshm$(EXEEXT): $(win_shared_create_allocshm_OBJECTS) $(win_shared_create_allocshm_DEPENDENCIES) $(EXTRA_win_shared_create_allocshm_DEPENDENCIES) @rm -f win_shared_create_allocshm$(EXEEXT) $(AM_V_CCLD)$(LINK) $(win_shared_create_allocshm_OBJECTS) $(win_shared_create_allocshm_LDADD) $(LIBS) win_shared_create_no_allocshm$(EXEEXT): $(win_shared_create_no_allocshm_OBJECTS) $(win_shared_create_no_allocshm_DEPENDENCIES) $(EXTRA_win_shared_create_no_allocshm_DEPENDENCIES) @rm -f win_shared_create_no_allocshm$(EXEEXT) $(AM_V_CCLD)$(LINK) $(win_shared_create_no_allocshm_OBJECTS) $(win_shared_create_no_allocshm_LDADD) $(LIBS) win_shared_fop_flush_load$(EXEEXT): $(win_shared_fop_flush_load_OBJECTS) $(win_shared_fop_flush_load_DEPENDENCIES) $(EXTRA_win_shared_fop_flush_load_DEPENDENCIES) @rm -f win_shared_fop_flush_load$(EXEEXT) $(AM_V_CCLD)$(LINK) $(win_shared_fop_flush_load_OBJECTS) $(win_shared_fop_flush_load_LDADD) $(LIBS) win_shared_gacc_flush_load$(EXEEXT): $(win_shared_gacc_flush_load_OBJECTS) $(win_shared_gacc_flush_load_DEPENDENCIES) $(EXTRA_win_shared_gacc_flush_load_DEPENDENCIES) @rm -f win_shared_gacc_flush_load$(EXEEXT) $(AM_V_CCLD)$(LINK) $(win_shared_gacc_flush_load_OBJECTS) $(win_shared_gacc_flush_load_LDADD) $(LIBS) win_shared_noncontig$(EXEEXT): $(win_shared_noncontig_OBJECTS) $(win_shared_noncontig_DEPENDENCIES) $(EXTRA_win_shared_noncontig_DEPENDENCIES) @rm -f win_shared_noncontig$(EXEEXT) $(AM_V_CCLD)$(LINK) $(win_shared_noncontig_OBJECTS) $(win_shared_noncontig_LDADD) $(LIBS) win_shared_noncontig_put$(EXEEXT): $(win_shared_noncontig_put_OBJECTS) $(win_shared_noncontig_put_DEPENDENCIES) $(EXTRA_win_shared_noncontig_put_DEPENDENCIES) @rm -f win_shared_noncontig_put$(EXEEXT) $(AM_V_CCLD)$(LINK) $(win_shared_noncontig_put_OBJECTS) $(win_shared_noncontig_put_LDADD) $(LIBS) win_shared_put_flush_get$(EXEEXT): $(win_shared_put_flush_get_OBJECTS) $(win_shared_put_flush_get_DEPENDENCIES) $(EXTRA_win_shared_put_flush_get_DEPENDENCIES) @rm -f win_shared_put_flush_get$(EXEEXT) $(AM_V_CCLD)$(LINK) $(win_shared_put_flush_get_OBJECTS) $(win_shared_put_flush_get_LDADD) $(LIBS) win_shared_put_flush_load$(EXEEXT): $(win_shared_put_flush_load_OBJECTS) $(win_shared_put_flush_load_DEPENDENCIES) $(EXTRA_win_shared_put_flush_load_DEPENDENCIES) @rm -f win_shared_put_flush_load$(EXEEXT) $(AM_V_CCLD)$(LINK) $(win_shared_put_flush_load_OBJECTS) $(win_shared_put_flush_load_LDADD) $(LIBS) win_shared_zerobyte$(EXEEXT): $(win_shared_zerobyte_OBJECTS) $(win_shared_zerobyte_DEPENDENCIES) $(EXTRA_win_shared_zerobyte_DEPENDENCIES) @rm -f win_shared_zerobyte$(EXEEXT) $(AM_V_CCLD)$(LINK) $(win_shared_zerobyte_OBJECTS) $(win_shared_zerobyte_LDADD) $(LIBS) win_zero$(EXEEXT): $(win_zero_OBJECTS) $(win_zero_DEPENDENCIES) $(EXTRA_win_zero_DEPENDENCIES) @rm -f win_zero$(EXEEXT) $(AM_V_CCLD)$(LINK) $(win_zero_OBJECTS) $(win_zero_LDADD) $(LIBS) wincall$(EXEEXT): $(wincall_OBJECTS) $(wincall_DEPENDENCIES) $(EXTRA_wincall_DEPENDENCIES) @rm -f wincall$(EXEEXT) $(AM_V_CCLD)$(LINK) $(wincall_OBJECTS) $(wincall_LDADD) $(LIBS) window_creation$(EXEEXT): $(window_creation_OBJECTS) $(window_creation_DEPENDENCIES) $(EXTRA_window_creation_DEPENDENCIES) @rm -f window_creation$(EXEEXT) $(AM_V_CCLD)$(LINK) $(window_creation_OBJECTS) $(window_creation_LDADD) $(LIBS) winname$(EXEEXT): $(winname_OBJECTS) $(winname_DEPENDENCIES) $(EXTRA_winname_DEPENDENCIES) @rm -f winname$(EXEEXT) $(AM_V_CCLD)$(LINK) $(winname_OBJECTS) $(winname_LDADD) $(LIBS) wintest$(EXEEXT): $(wintest_OBJECTS) $(wintest_DEPENDENCIES) $(EXTRA_wintest_DEPENDENCIES) @rm -f wintest$(EXEEXT) $(AM_V_CCLD)$(LINK) $(wintest_OBJECTS) $(wintest_LDADD) $(LIBS) wintest_shm$(EXEEXT): $(wintest_shm_OBJECTS) $(wintest_shm_DEPENDENCIES) $(EXTRA_wintest_shm_DEPENDENCIES) @rm -f wintest_shm$(EXEEXT) $(AM_V_CCLD)$(LINK) $(wintest_shm_OBJECTS) $(wintest_shm_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/acc-loc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/acc-pairtype.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/acc_flush_get-wrma_flush_get.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/accfence1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/accfence2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/accfence2_am.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/accpscw1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/adlb_mimic1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aint.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/allocmem.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/at_complete.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/atomic_get.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/atomic_rmw_cas.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/atomic_rmw_fop.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/atomic_rmw_gacc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/attrorderwin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/badrma.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/baseattrwin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cas_flush_get-wrma_flush_get.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/compare_and_swap.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/contention_put.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/contention_putget.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/contig_displ.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/derived-acc-flush_local.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/epochtest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fence_shm.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fetch_and_op_char-fetch_and_op.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fetch_and_op_double-fetch_and_op.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fetch_and_op_int-fetch_and_op.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fetch_and_op_long-fetch_and_op.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fetch_and_op_long_double-fetch_and_op.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fetch_and_op_short-fetch_and_op.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fetchandadd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fetchandadd_am.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fetchandadd_tree.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fetchandadd_tree_am.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fkeyvalwin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flush.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fop_flush_get-wrma_flush_get.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gacc_flush_get-wrma_flush_get.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get-struct.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get_acc_local.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get_accumulate_double-get_accumulate.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get_accumulate_double_derived-get_accumulate.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get_accumulate_int-get_accumulate.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get_accumulate_int_derived-get_accumulate.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get_accumulate_long-get_accumulate.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get_accumulate_long_derived-get_accumulate.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get_accumulate_short-get_accumulate.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get_accumulate_short_derived-get_accumulate.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getfence1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getgroup.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/large-acc-flush_local.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/large-small-acc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linked_list.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linked_list_bench_lock_all.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linked_list_bench_lock_excl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linked_list_bench_lock_shr.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linked_list_bench_lock_shr_nocheck-linked_list_bench_lock_shr.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linked_list_fop.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linked_list_lockall.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lock_contention_dt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lock_dt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lock_dt_flush.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lock_dt_flushlocal.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lockall_dt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lockall_dt_flush.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lockall_dt_flushall.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lockall_dt_flushlocal.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lockall_dt_flushlocalall.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lockcontention.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lockcontention2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lockcontention3.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/locknull.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lockopts.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/manyget.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/manyrma2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/manyrma2_shm-manyrma2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/manyrma3.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mcs-mutex.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mixedsync.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mutex_bench.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mutex_bench_shared-mcs-mutex.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mutex_bench_shared-mutex_bench.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mutex_bench_shm-mcs-mutex.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mutex_bench_shm-mutex_bench.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mutex_bench_shm_ordered-mcs-mutex.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mutex_bench_shm_ordered-mutex_bench.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nb_test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nullpscw.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nullpscw_shm-nullpscw.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pscw_ordering.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pscw_ordering_shm-pscw_ordering.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/put_base.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/put_bottom.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/put_flush_get-wrma_flush_get.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/putfence1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/putfidx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/putpscw1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/racc_local_comp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/req_example.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/req_example_shm-req_example.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reqops.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rma-contig.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rmanull.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rmazero.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rput_local_comp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/selfrma.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strided_acc_indexed.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strided_acc_onelock.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strided_acc_subarray.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strided_get_indexed.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strided_getacc_indexed.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strided_getacc_indexed_shared.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strided_putget_indexed.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strided_putget_indexed_shared.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test1_am.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test1_dt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test2_am.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test2_am_shm-test2_am.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test2_shm-test2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test3.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test3_am.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test3_am_shm-test3_am.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test3_shm-test3.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test4.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test4_am.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test5.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test5_am.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/transpose1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/transpose2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/transpose3.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/transpose3_shm-transpose3.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/transpose4.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/transpose5.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/transpose6.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/transpose7.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/win_dynamic_acc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/win_flavors.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/win_info.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/win_large_shm.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/win_shared.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/win_shared_acc_flush_load-win_shared_rma_flush_load.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/win_shared_cas_flush_load-win_shared_rma_flush_load.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/win_shared_create.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/win_shared_create_allocshm-win_shared_create.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/win_shared_fop_flush_load-win_shared_rma_flush_load.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/win_shared_gacc_flush_load-win_shared_rma_flush_load.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/win_shared_noncontig.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/win_shared_noncontig_put.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/win_shared_put_flush_get.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/win_shared_put_flush_load-win_shared_rma_flush_load.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/win_shared_zerobyte.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/win_zero.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wincall.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/window_creation.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/winname.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wintest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wintest_shm-wintest.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` acc_flush_get-wrma_flush_get.o: wrma_flush_get.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(acc_flush_get_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT acc_flush_get-wrma_flush_get.o -MD -MP -MF $(DEPDIR)/acc_flush_get-wrma_flush_get.Tpo -c -o acc_flush_get-wrma_flush_get.o `test -f 'wrma_flush_get.c' || echo '$(srcdir)/'`wrma_flush_get.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/acc_flush_get-wrma_flush_get.Tpo $(DEPDIR)/acc_flush_get-wrma_flush_get.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='wrma_flush_get.c' object='acc_flush_get-wrma_flush_get.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(acc_flush_get_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o acc_flush_get-wrma_flush_get.o `test -f 'wrma_flush_get.c' || echo '$(srcdir)/'`wrma_flush_get.c acc_flush_get-wrma_flush_get.obj: wrma_flush_get.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(acc_flush_get_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT acc_flush_get-wrma_flush_get.obj -MD -MP -MF $(DEPDIR)/acc_flush_get-wrma_flush_get.Tpo -c -o acc_flush_get-wrma_flush_get.obj `if test -f 'wrma_flush_get.c'; then $(CYGPATH_W) 'wrma_flush_get.c'; else $(CYGPATH_W) '$(srcdir)/wrma_flush_get.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/acc_flush_get-wrma_flush_get.Tpo $(DEPDIR)/acc_flush_get-wrma_flush_get.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='wrma_flush_get.c' object='acc_flush_get-wrma_flush_get.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(acc_flush_get_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o acc_flush_get-wrma_flush_get.obj `if test -f 'wrma_flush_get.c'; then $(CYGPATH_W) 'wrma_flush_get.c'; else $(CYGPATH_W) '$(srcdir)/wrma_flush_get.c'; fi` cas_flush_get-wrma_flush_get.o: wrma_flush_get.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cas_flush_get_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cas_flush_get-wrma_flush_get.o -MD -MP -MF $(DEPDIR)/cas_flush_get-wrma_flush_get.Tpo -c -o cas_flush_get-wrma_flush_get.o `test -f 'wrma_flush_get.c' || echo '$(srcdir)/'`wrma_flush_get.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cas_flush_get-wrma_flush_get.Tpo $(DEPDIR)/cas_flush_get-wrma_flush_get.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='wrma_flush_get.c' object='cas_flush_get-wrma_flush_get.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cas_flush_get_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cas_flush_get-wrma_flush_get.o `test -f 'wrma_flush_get.c' || echo '$(srcdir)/'`wrma_flush_get.c cas_flush_get-wrma_flush_get.obj: wrma_flush_get.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cas_flush_get_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cas_flush_get-wrma_flush_get.obj -MD -MP -MF $(DEPDIR)/cas_flush_get-wrma_flush_get.Tpo -c -o cas_flush_get-wrma_flush_get.obj `if test -f 'wrma_flush_get.c'; then $(CYGPATH_W) 'wrma_flush_get.c'; else $(CYGPATH_W) '$(srcdir)/wrma_flush_get.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cas_flush_get-wrma_flush_get.Tpo $(DEPDIR)/cas_flush_get-wrma_flush_get.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='wrma_flush_get.c' object='cas_flush_get-wrma_flush_get.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cas_flush_get_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cas_flush_get-wrma_flush_get.obj `if test -f 'wrma_flush_get.c'; then $(CYGPATH_W) 'wrma_flush_get.c'; else $(CYGPATH_W) '$(srcdir)/wrma_flush_get.c'; fi` fetch_and_op_char-fetch_and_op.o: fetch_and_op.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fetch_and_op_char_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fetch_and_op_char-fetch_and_op.o -MD -MP -MF $(DEPDIR)/fetch_and_op_char-fetch_and_op.Tpo -c -o fetch_and_op_char-fetch_and_op.o `test -f 'fetch_and_op.c' || echo '$(srcdir)/'`fetch_and_op.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/fetch_and_op_char-fetch_and_op.Tpo $(DEPDIR)/fetch_and_op_char-fetch_and_op.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fetch_and_op.c' object='fetch_and_op_char-fetch_and_op.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fetch_and_op_char_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fetch_and_op_char-fetch_and_op.o `test -f 'fetch_and_op.c' || echo '$(srcdir)/'`fetch_and_op.c fetch_and_op_char-fetch_and_op.obj: fetch_and_op.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fetch_and_op_char_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fetch_and_op_char-fetch_and_op.obj -MD -MP -MF $(DEPDIR)/fetch_and_op_char-fetch_and_op.Tpo -c -o fetch_and_op_char-fetch_and_op.obj `if test -f 'fetch_and_op.c'; then $(CYGPATH_W) 'fetch_and_op.c'; else $(CYGPATH_W) '$(srcdir)/fetch_and_op.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/fetch_and_op_char-fetch_and_op.Tpo $(DEPDIR)/fetch_and_op_char-fetch_and_op.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fetch_and_op.c' object='fetch_and_op_char-fetch_and_op.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fetch_and_op_char_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fetch_and_op_char-fetch_and_op.obj `if test -f 'fetch_and_op.c'; then $(CYGPATH_W) 'fetch_and_op.c'; else $(CYGPATH_W) '$(srcdir)/fetch_and_op.c'; fi` fetch_and_op_double-fetch_and_op.o: fetch_and_op.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fetch_and_op_double_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fetch_and_op_double-fetch_and_op.o -MD -MP -MF $(DEPDIR)/fetch_and_op_double-fetch_and_op.Tpo -c -o fetch_and_op_double-fetch_and_op.o `test -f 'fetch_and_op.c' || echo '$(srcdir)/'`fetch_and_op.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/fetch_and_op_double-fetch_and_op.Tpo $(DEPDIR)/fetch_and_op_double-fetch_and_op.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fetch_and_op.c' object='fetch_and_op_double-fetch_and_op.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fetch_and_op_double_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fetch_and_op_double-fetch_and_op.o `test -f 'fetch_and_op.c' || echo '$(srcdir)/'`fetch_and_op.c fetch_and_op_double-fetch_and_op.obj: fetch_and_op.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fetch_and_op_double_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fetch_and_op_double-fetch_and_op.obj -MD -MP -MF $(DEPDIR)/fetch_and_op_double-fetch_and_op.Tpo -c -o fetch_and_op_double-fetch_and_op.obj `if test -f 'fetch_and_op.c'; then $(CYGPATH_W) 'fetch_and_op.c'; else $(CYGPATH_W) '$(srcdir)/fetch_and_op.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/fetch_and_op_double-fetch_and_op.Tpo $(DEPDIR)/fetch_and_op_double-fetch_and_op.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fetch_and_op.c' object='fetch_and_op_double-fetch_and_op.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fetch_and_op_double_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fetch_and_op_double-fetch_and_op.obj `if test -f 'fetch_and_op.c'; then $(CYGPATH_W) 'fetch_and_op.c'; else $(CYGPATH_W) '$(srcdir)/fetch_and_op.c'; fi` fetch_and_op_int-fetch_and_op.o: fetch_and_op.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fetch_and_op_int_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fetch_and_op_int-fetch_and_op.o -MD -MP -MF $(DEPDIR)/fetch_and_op_int-fetch_and_op.Tpo -c -o fetch_and_op_int-fetch_and_op.o `test -f 'fetch_and_op.c' || echo '$(srcdir)/'`fetch_and_op.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/fetch_and_op_int-fetch_and_op.Tpo $(DEPDIR)/fetch_and_op_int-fetch_and_op.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fetch_and_op.c' object='fetch_and_op_int-fetch_and_op.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fetch_and_op_int_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fetch_and_op_int-fetch_and_op.o `test -f 'fetch_and_op.c' || echo '$(srcdir)/'`fetch_and_op.c fetch_and_op_int-fetch_and_op.obj: fetch_and_op.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fetch_and_op_int_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fetch_and_op_int-fetch_and_op.obj -MD -MP -MF $(DEPDIR)/fetch_and_op_int-fetch_and_op.Tpo -c -o fetch_and_op_int-fetch_and_op.obj `if test -f 'fetch_and_op.c'; then $(CYGPATH_W) 'fetch_and_op.c'; else $(CYGPATH_W) '$(srcdir)/fetch_and_op.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/fetch_and_op_int-fetch_and_op.Tpo $(DEPDIR)/fetch_and_op_int-fetch_and_op.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fetch_and_op.c' object='fetch_and_op_int-fetch_and_op.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fetch_and_op_int_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fetch_and_op_int-fetch_and_op.obj `if test -f 'fetch_and_op.c'; then $(CYGPATH_W) 'fetch_and_op.c'; else $(CYGPATH_W) '$(srcdir)/fetch_and_op.c'; fi` fetch_and_op_long-fetch_and_op.o: fetch_and_op.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fetch_and_op_long_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fetch_and_op_long-fetch_and_op.o -MD -MP -MF $(DEPDIR)/fetch_and_op_long-fetch_and_op.Tpo -c -o fetch_and_op_long-fetch_and_op.o `test -f 'fetch_and_op.c' || echo '$(srcdir)/'`fetch_and_op.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/fetch_and_op_long-fetch_and_op.Tpo $(DEPDIR)/fetch_and_op_long-fetch_and_op.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fetch_and_op.c' object='fetch_and_op_long-fetch_and_op.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fetch_and_op_long_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fetch_and_op_long-fetch_and_op.o `test -f 'fetch_and_op.c' || echo '$(srcdir)/'`fetch_and_op.c fetch_and_op_long-fetch_and_op.obj: fetch_and_op.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fetch_and_op_long_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fetch_and_op_long-fetch_and_op.obj -MD -MP -MF $(DEPDIR)/fetch_and_op_long-fetch_and_op.Tpo -c -o fetch_and_op_long-fetch_and_op.obj `if test -f 'fetch_and_op.c'; then $(CYGPATH_W) 'fetch_and_op.c'; else $(CYGPATH_W) '$(srcdir)/fetch_and_op.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/fetch_and_op_long-fetch_and_op.Tpo $(DEPDIR)/fetch_and_op_long-fetch_and_op.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fetch_and_op.c' object='fetch_and_op_long-fetch_and_op.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fetch_and_op_long_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fetch_and_op_long-fetch_and_op.obj `if test -f 'fetch_and_op.c'; then $(CYGPATH_W) 'fetch_and_op.c'; else $(CYGPATH_W) '$(srcdir)/fetch_and_op.c'; fi` fetch_and_op_long_double-fetch_and_op.o: fetch_and_op.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fetch_and_op_long_double_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fetch_and_op_long_double-fetch_and_op.o -MD -MP -MF $(DEPDIR)/fetch_and_op_long_double-fetch_and_op.Tpo -c -o fetch_and_op_long_double-fetch_and_op.o `test -f 'fetch_and_op.c' || echo '$(srcdir)/'`fetch_and_op.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/fetch_and_op_long_double-fetch_and_op.Tpo $(DEPDIR)/fetch_and_op_long_double-fetch_and_op.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fetch_and_op.c' object='fetch_and_op_long_double-fetch_and_op.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fetch_and_op_long_double_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fetch_and_op_long_double-fetch_and_op.o `test -f 'fetch_and_op.c' || echo '$(srcdir)/'`fetch_and_op.c fetch_and_op_long_double-fetch_and_op.obj: fetch_and_op.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fetch_and_op_long_double_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fetch_and_op_long_double-fetch_and_op.obj -MD -MP -MF $(DEPDIR)/fetch_and_op_long_double-fetch_and_op.Tpo -c -o fetch_and_op_long_double-fetch_and_op.obj `if test -f 'fetch_and_op.c'; then $(CYGPATH_W) 'fetch_and_op.c'; else $(CYGPATH_W) '$(srcdir)/fetch_and_op.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/fetch_and_op_long_double-fetch_and_op.Tpo $(DEPDIR)/fetch_and_op_long_double-fetch_and_op.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fetch_and_op.c' object='fetch_and_op_long_double-fetch_and_op.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fetch_and_op_long_double_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fetch_and_op_long_double-fetch_and_op.obj `if test -f 'fetch_and_op.c'; then $(CYGPATH_W) 'fetch_and_op.c'; else $(CYGPATH_W) '$(srcdir)/fetch_and_op.c'; fi` fetch_and_op_short-fetch_and_op.o: fetch_and_op.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fetch_and_op_short_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fetch_and_op_short-fetch_and_op.o -MD -MP -MF $(DEPDIR)/fetch_and_op_short-fetch_and_op.Tpo -c -o fetch_and_op_short-fetch_and_op.o `test -f 'fetch_and_op.c' || echo '$(srcdir)/'`fetch_and_op.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/fetch_and_op_short-fetch_and_op.Tpo $(DEPDIR)/fetch_and_op_short-fetch_and_op.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fetch_and_op.c' object='fetch_and_op_short-fetch_and_op.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fetch_and_op_short_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fetch_and_op_short-fetch_and_op.o `test -f 'fetch_and_op.c' || echo '$(srcdir)/'`fetch_and_op.c fetch_and_op_short-fetch_and_op.obj: fetch_and_op.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fetch_and_op_short_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fetch_and_op_short-fetch_and_op.obj -MD -MP -MF $(DEPDIR)/fetch_and_op_short-fetch_and_op.Tpo -c -o fetch_and_op_short-fetch_and_op.obj `if test -f 'fetch_and_op.c'; then $(CYGPATH_W) 'fetch_and_op.c'; else $(CYGPATH_W) '$(srcdir)/fetch_and_op.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/fetch_and_op_short-fetch_and_op.Tpo $(DEPDIR)/fetch_and_op_short-fetch_and_op.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fetch_and_op.c' object='fetch_and_op_short-fetch_and_op.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fetch_and_op_short_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fetch_and_op_short-fetch_and_op.obj `if test -f 'fetch_and_op.c'; then $(CYGPATH_W) 'fetch_and_op.c'; else $(CYGPATH_W) '$(srcdir)/fetch_and_op.c'; fi` fop_flush_get-wrma_flush_get.o: wrma_flush_get.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fop_flush_get_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fop_flush_get-wrma_flush_get.o -MD -MP -MF $(DEPDIR)/fop_flush_get-wrma_flush_get.Tpo -c -o fop_flush_get-wrma_flush_get.o `test -f 'wrma_flush_get.c' || echo '$(srcdir)/'`wrma_flush_get.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/fop_flush_get-wrma_flush_get.Tpo $(DEPDIR)/fop_flush_get-wrma_flush_get.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='wrma_flush_get.c' object='fop_flush_get-wrma_flush_get.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fop_flush_get_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fop_flush_get-wrma_flush_get.o `test -f 'wrma_flush_get.c' || echo '$(srcdir)/'`wrma_flush_get.c fop_flush_get-wrma_flush_get.obj: wrma_flush_get.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fop_flush_get_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fop_flush_get-wrma_flush_get.obj -MD -MP -MF $(DEPDIR)/fop_flush_get-wrma_flush_get.Tpo -c -o fop_flush_get-wrma_flush_get.obj `if test -f 'wrma_flush_get.c'; then $(CYGPATH_W) 'wrma_flush_get.c'; else $(CYGPATH_W) '$(srcdir)/wrma_flush_get.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/fop_flush_get-wrma_flush_get.Tpo $(DEPDIR)/fop_flush_get-wrma_flush_get.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='wrma_flush_get.c' object='fop_flush_get-wrma_flush_get.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fop_flush_get_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fop_flush_get-wrma_flush_get.obj `if test -f 'wrma_flush_get.c'; then $(CYGPATH_W) 'wrma_flush_get.c'; else $(CYGPATH_W) '$(srcdir)/wrma_flush_get.c'; fi` gacc_flush_get-wrma_flush_get.o: wrma_flush_get.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gacc_flush_get_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gacc_flush_get-wrma_flush_get.o -MD -MP -MF $(DEPDIR)/gacc_flush_get-wrma_flush_get.Tpo -c -o gacc_flush_get-wrma_flush_get.o `test -f 'wrma_flush_get.c' || echo '$(srcdir)/'`wrma_flush_get.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gacc_flush_get-wrma_flush_get.Tpo $(DEPDIR)/gacc_flush_get-wrma_flush_get.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='wrma_flush_get.c' object='gacc_flush_get-wrma_flush_get.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gacc_flush_get_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gacc_flush_get-wrma_flush_get.o `test -f 'wrma_flush_get.c' || echo '$(srcdir)/'`wrma_flush_get.c gacc_flush_get-wrma_flush_get.obj: wrma_flush_get.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gacc_flush_get_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gacc_flush_get-wrma_flush_get.obj -MD -MP -MF $(DEPDIR)/gacc_flush_get-wrma_flush_get.Tpo -c -o gacc_flush_get-wrma_flush_get.obj `if test -f 'wrma_flush_get.c'; then $(CYGPATH_W) 'wrma_flush_get.c'; else $(CYGPATH_W) '$(srcdir)/wrma_flush_get.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gacc_flush_get-wrma_flush_get.Tpo $(DEPDIR)/gacc_flush_get-wrma_flush_get.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='wrma_flush_get.c' object='gacc_flush_get-wrma_flush_get.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gacc_flush_get_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gacc_flush_get-wrma_flush_get.obj `if test -f 'wrma_flush_get.c'; then $(CYGPATH_W) 'wrma_flush_get.c'; else $(CYGPATH_W) '$(srcdir)/wrma_flush_get.c'; fi` get_accumulate_double-get_accumulate.o: get_accumulate.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(get_accumulate_double_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT get_accumulate_double-get_accumulate.o -MD -MP -MF $(DEPDIR)/get_accumulate_double-get_accumulate.Tpo -c -o get_accumulate_double-get_accumulate.o `test -f 'get_accumulate.c' || echo '$(srcdir)/'`get_accumulate.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/get_accumulate_double-get_accumulate.Tpo $(DEPDIR)/get_accumulate_double-get_accumulate.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='get_accumulate.c' object='get_accumulate_double-get_accumulate.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(get_accumulate_double_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o get_accumulate_double-get_accumulate.o `test -f 'get_accumulate.c' || echo '$(srcdir)/'`get_accumulate.c get_accumulate_double-get_accumulate.obj: get_accumulate.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(get_accumulate_double_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT get_accumulate_double-get_accumulate.obj -MD -MP -MF $(DEPDIR)/get_accumulate_double-get_accumulate.Tpo -c -o get_accumulate_double-get_accumulate.obj `if test -f 'get_accumulate.c'; then $(CYGPATH_W) 'get_accumulate.c'; else $(CYGPATH_W) '$(srcdir)/get_accumulate.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/get_accumulate_double-get_accumulate.Tpo $(DEPDIR)/get_accumulate_double-get_accumulate.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='get_accumulate.c' object='get_accumulate_double-get_accumulate.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(get_accumulate_double_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o get_accumulate_double-get_accumulate.obj `if test -f 'get_accumulate.c'; then $(CYGPATH_W) 'get_accumulate.c'; else $(CYGPATH_W) '$(srcdir)/get_accumulate.c'; fi` get_accumulate_double_derived-get_accumulate.o: get_accumulate.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(get_accumulate_double_derived_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT get_accumulate_double_derived-get_accumulate.o -MD -MP -MF $(DEPDIR)/get_accumulate_double_derived-get_accumulate.Tpo -c -o get_accumulate_double_derived-get_accumulate.o `test -f 'get_accumulate.c' || echo '$(srcdir)/'`get_accumulate.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/get_accumulate_double_derived-get_accumulate.Tpo $(DEPDIR)/get_accumulate_double_derived-get_accumulate.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='get_accumulate.c' object='get_accumulate_double_derived-get_accumulate.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(get_accumulate_double_derived_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o get_accumulate_double_derived-get_accumulate.o `test -f 'get_accumulate.c' || echo '$(srcdir)/'`get_accumulate.c get_accumulate_double_derived-get_accumulate.obj: get_accumulate.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(get_accumulate_double_derived_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT get_accumulate_double_derived-get_accumulate.obj -MD -MP -MF $(DEPDIR)/get_accumulate_double_derived-get_accumulate.Tpo -c -o get_accumulate_double_derived-get_accumulate.obj `if test -f 'get_accumulate.c'; then $(CYGPATH_W) 'get_accumulate.c'; else $(CYGPATH_W) '$(srcdir)/get_accumulate.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/get_accumulate_double_derived-get_accumulate.Tpo $(DEPDIR)/get_accumulate_double_derived-get_accumulate.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='get_accumulate.c' object='get_accumulate_double_derived-get_accumulate.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(get_accumulate_double_derived_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o get_accumulate_double_derived-get_accumulate.obj `if test -f 'get_accumulate.c'; then $(CYGPATH_W) 'get_accumulate.c'; else $(CYGPATH_W) '$(srcdir)/get_accumulate.c'; fi` get_accumulate_int-get_accumulate.o: get_accumulate.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(get_accumulate_int_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT get_accumulate_int-get_accumulate.o -MD -MP -MF $(DEPDIR)/get_accumulate_int-get_accumulate.Tpo -c -o get_accumulate_int-get_accumulate.o `test -f 'get_accumulate.c' || echo '$(srcdir)/'`get_accumulate.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/get_accumulate_int-get_accumulate.Tpo $(DEPDIR)/get_accumulate_int-get_accumulate.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='get_accumulate.c' object='get_accumulate_int-get_accumulate.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(get_accumulate_int_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o get_accumulate_int-get_accumulate.o `test -f 'get_accumulate.c' || echo '$(srcdir)/'`get_accumulate.c get_accumulate_int-get_accumulate.obj: get_accumulate.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(get_accumulate_int_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT get_accumulate_int-get_accumulate.obj -MD -MP -MF $(DEPDIR)/get_accumulate_int-get_accumulate.Tpo -c -o get_accumulate_int-get_accumulate.obj `if test -f 'get_accumulate.c'; then $(CYGPATH_W) 'get_accumulate.c'; else $(CYGPATH_W) '$(srcdir)/get_accumulate.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/get_accumulate_int-get_accumulate.Tpo $(DEPDIR)/get_accumulate_int-get_accumulate.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='get_accumulate.c' object='get_accumulate_int-get_accumulate.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(get_accumulate_int_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o get_accumulate_int-get_accumulate.obj `if test -f 'get_accumulate.c'; then $(CYGPATH_W) 'get_accumulate.c'; else $(CYGPATH_W) '$(srcdir)/get_accumulate.c'; fi` get_accumulate_int_derived-get_accumulate.o: get_accumulate.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(get_accumulate_int_derived_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT get_accumulate_int_derived-get_accumulate.o -MD -MP -MF $(DEPDIR)/get_accumulate_int_derived-get_accumulate.Tpo -c -o get_accumulate_int_derived-get_accumulate.o `test -f 'get_accumulate.c' || echo '$(srcdir)/'`get_accumulate.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/get_accumulate_int_derived-get_accumulate.Tpo $(DEPDIR)/get_accumulate_int_derived-get_accumulate.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='get_accumulate.c' object='get_accumulate_int_derived-get_accumulate.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(get_accumulate_int_derived_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o get_accumulate_int_derived-get_accumulate.o `test -f 'get_accumulate.c' || echo '$(srcdir)/'`get_accumulate.c get_accumulate_int_derived-get_accumulate.obj: get_accumulate.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(get_accumulate_int_derived_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT get_accumulate_int_derived-get_accumulate.obj -MD -MP -MF $(DEPDIR)/get_accumulate_int_derived-get_accumulate.Tpo -c -o get_accumulate_int_derived-get_accumulate.obj `if test -f 'get_accumulate.c'; then $(CYGPATH_W) 'get_accumulate.c'; else $(CYGPATH_W) '$(srcdir)/get_accumulate.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/get_accumulate_int_derived-get_accumulate.Tpo $(DEPDIR)/get_accumulate_int_derived-get_accumulate.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='get_accumulate.c' object='get_accumulate_int_derived-get_accumulate.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(get_accumulate_int_derived_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o get_accumulate_int_derived-get_accumulate.obj `if test -f 'get_accumulate.c'; then $(CYGPATH_W) 'get_accumulate.c'; else $(CYGPATH_W) '$(srcdir)/get_accumulate.c'; fi` get_accumulate_long-get_accumulate.o: get_accumulate.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(get_accumulate_long_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT get_accumulate_long-get_accumulate.o -MD -MP -MF $(DEPDIR)/get_accumulate_long-get_accumulate.Tpo -c -o get_accumulate_long-get_accumulate.o `test -f 'get_accumulate.c' || echo '$(srcdir)/'`get_accumulate.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/get_accumulate_long-get_accumulate.Tpo $(DEPDIR)/get_accumulate_long-get_accumulate.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='get_accumulate.c' object='get_accumulate_long-get_accumulate.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(get_accumulate_long_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o get_accumulate_long-get_accumulate.o `test -f 'get_accumulate.c' || echo '$(srcdir)/'`get_accumulate.c get_accumulate_long-get_accumulate.obj: get_accumulate.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(get_accumulate_long_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT get_accumulate_long-get_accumulate.obj -MD -MP -MF $(DEPDIR)/get_accumulate_long-get_accumulate.Tpo -c -o get_accumulate_long-get_accumulate.obj `if test -f 'get_accumulate.c'; then $(CYGPATH_W) 'get_accumulate.c'; else $(CYGPATH_W) '$(srcdir)/get_accumulate.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/get_accumulate_long-get_accumulate.Tpo $(DEPDIR)/get_accumulate_long-get_accumulate.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='get_accumulate.c' object='get_accumulate_long-get_accumulate.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(get_accumulate_long_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o get_accumulate_long-get_accumulate.obj `if test -f 'get_accumulate.c'; then $(CYGPATH_W) 'get_accumulate.c'; else $(CYGPATH_W) '$(srcdir)/get_accumulate.c'; fi` get_accumulate_long_derived-get_accumulate.o: get_accumulate.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(get_accumulate_long_derived_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT get_accumulate_long_derived-get_accumulate.o -MD -MP -MF $(DEPDIR)/get_accumulate_long_derived-get_accumulate.Tpo -c -o get_accumulate_long_derived-get_accumulate.o `test -f 'get_accumulate.c' || echo '$(srcdir)/'`get_accumulate.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/get_accumulate_long_derived-get_accumulate.Tpo $(DEPDIR)/get_accumulate_long_derived-get_accumulate.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='get_accumulate.c' object='get_accumulate_long_derived-get_accumulate.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(get_accumulate_long_derived_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o get_accumulate_long_derived-get_accumulate.o `test -f 'get_accumulate.c' || echo '$(srcdir)/'`get_accumulate.c get_accumulate_long_derived-get_accumulate.obj: get_accumulate.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(get_accumulate_long_derived_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT get_accumulate_long_derived-get_accumulate.obj -MD -MP -MF $(DEPDIR)/get_accumulate_long_derived-get_accumulate.Tpo -c -o get_accumulate_long_derived-get_accumulate.obj `if test -f 'get_accumulate.c'; then $(CYGPATH_W) 'get_accumulate.c'; else $(CYGPATH_W) '$(srcdir)/get_accumulate.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/get_accumulate_long_derived-get_accumulate.Tpo $(DEPDIR)/get_accumulate_long_derived-get_accumulate.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='get_accumulate.c' object='get_accumulate_long_derived-get_accumulate.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(get_accumulate_long_derived_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o get_accumulate_long_derived-get_accumulate.obj `if test -f 'get_accumulate.c'; then $(CYGPATH_W) 'get_accumulate.c'; else $(CYGPATH_W) '$(srcdir)/get_accumulate.c'; fi` get_accumulate_short-get_accumulate.o: get_accumulate.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(get_accumulate_short_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT get_accumulate_short-get_accumulate.o -MD -MP -MF $(DEPDIR)/get_accumulate_short-get_accumulate.Tpo -c -o get_accumulate_short-get_accumulate.o `test -f 'get_accumulate.c' || echo '$(srcdir)/'`get_accumulate.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/get_accumulate_short-get_accumulate.Tpo $(DEPDIR)/get_accumulate_short-get_accumulate.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='get_accumulate.c' object='get_accumulate_short-get_accumulate.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(get_accumulate_short_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o get_accumulate_short-get_accumulate.o `test -f 'get_accumulate.c' || echo '$(srcdir)/'`get_accumulate.c get_accumulate_short-get_accumulate.obj: get_accumulate.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(get_accumulate_short_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT get_accumulate_short-get_accumulate.obj -MD -MP -MF $(DEPDIR)/get_accumulate_short-get_accumulate.Tpo -c -o get_accumulate_short-get_accumulate.obj `if test -f 'get_accumulate.c'; then $(CYGPATH_W) 'get_accumulate.c'; else $(CYGPATH_W) '$(srcdir)/get_accumulate.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/get_accumulate_short-get_accumulate.Tpo $(DEPDIR)/get_accumulate_short-get_accumulate.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='get_accumulate.c' object='get_accumulate_short-get_accumulate.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(get_accumulate_short_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o get_accumulate_short-get_accumulate.obj `if test -f 'get_accumulate.c'; then $(CYGPATH_W) 'get_accumulate.c'; else $(CYGPATH_W) '$(srcdir)/get_accumulate.c'; fi` get_accumulate_short_derived-get_accumulate.o: get_accumulate.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(get_accumulate_short_derived_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT get_accumulate_short_derived-get_accumulate.o -MD -MP -MF $(DEPDIR)/get_accumulate_short_derived-get_accumulate.Tpo -c -o get_accumulate_short_derived-get_accumulate.o `test -f 'get_accumulate.c' || echo '$(srcdir)/'`get_accumulate.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/get_accumulate_short_derived-get_accumulate.Tpo $(DEPDIR)/get_accumulate_short_derived-get_accumulate.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='get_accumulate.c' object='get_accumulate_short_derived-get_accumulate.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(get_accumulate_short_derived_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o get_accumulate_short_derived-get_accumulate.o `test -f 'get_accumulate.c' || echo '$(srcdir)/'`get_accumulate.c get_accumulate_short_derived-get_accumulate.obj: get_accumulate.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(get_accumulate_short_derived_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT get_accumulate_short_derived-get_accumulate.obj -MD -MP -MF $(DEPDIR)/get_accumulate_short_derived-get_accumulate.Tpo -c -o get_accumulate_short_derived-get_accumulate.obj `if test -f 'get_accumulate.c'; then $(CYGPATH_W) 'get_accumulate.c'; else $(CYGPATH_W) '$(srcdir)/get_accumulate.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/get_accumulate_short_derived-get_accumulate.Tpo $(DEPDIR)/get_accumulate_short_derived-get_accumulate.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='get_accumulate.c' object='get_accumulate_short_derived-get_accumulate.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(get_accumulate_short_derived_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o get_accumulate_short_derived-get_accumulate.obj `if test -f 'get_accumulate.c'; then $(CYGPATH_W) 'get_accumulate.c'; else $(CYGPATH_W) '$(srcdir)/get_accumulate.c'; fi` linked_list_bench_lock_shr_nocheck-linked_list_bench_lock_shr.o: linked_list_bench_lock_shr.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(linked_list_bench_lock_shr_nocheck_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT linked_list_bench_lock_shr_nocheck-linked_list_bench_lock_shr.o -MD -MP -MF $(DEPDIR)/linked_list_bench_lock_shr_nocheck-linked_list_bench_lock_shr.Tpo -c -o linked_list_bench_lock_shr_nocheck-linked_list_bench_lock_shr.o `test -f 'linked_list_bench_lock_shr.c' || echo '$(srcdir)/'`linked_list_bench_lock_shr.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/linked_list_bench_lock_shr_nocheck-linked_list_bench_lock_shr.Tpo $(DEPDIR)/linked_list_bench_lock_shr_nocheck-linked_list_bench_lock_shr.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='linked_list_bench_lock_shr.c' object='linked_list_bench_lock_shr_nocheck-linked_list_bench_lock_shr.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(linked_list_bench_lock_shr_nocheck_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o linked_list_bench_lock_shr_nocheck-linked_list_bench_lock_shr.o `test -f 'linked_list_bench_lock_shr.c' || echo '$(srcdir)/'`linked_list_bench_lock_shr.c linked_list_bench_lock_shr_nocheck-linked_list_bench_lock_shr.obj: linked_list_bench_lock_shr.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(linked_list_bench_lock_shr_nocheck_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT linked_list_bench_lock_shr_nocheck-linked_list_bench_lock_shr.obj -MD -MP -MF $(DEPDIR)/linked_list_bench_lock_shr_nocheck-linked_list_bench_lock_shr.Tpo -c -o linked_list_bench_lock_shr_nocheck-linked_list_bench_lock_shr.obj `if test -f 'linked_list_bench_lock_shr.c'; then $(CYGPATH_W) 'linked_list_bench_lock_shr.c'; else $(CYGPATH_W) '$(srcdir)/linked_list_bench_lock_shr.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/linked_list_bench_lock_shr_nocheck-linked_list_bench_lock_shr.Tpo $(DEPDIR)/linked_list_bench_lock_shr_nocheck-linked_list_bench_lock_shr.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='linked_list_bench_lock_shr.c' object='linked_list_bench_lock_shr_nocheck-linked_list_bench_lock_shr.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(linked_list_bench_lock_shr_nocheck_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o linked_list_bench_lock_shr_nocheck-linked_list_bench_lock_shr.obj `if test -f 'linked_list_bench_lock_shr.c'; then $(CYGPATH_W) 'linked_list_bench_lock_shr.c'; else $(CYGPATH_W) '$(srcdir)/linked_list_bench_lock_shr.c'; fi` manyrma2_shm-manyrma2.o: manyrma2.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(manyrma2_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT manyrma2_shm-manyrma2.o -MD -MP -MF $(DEPDIR)/manyrma2_shm-manyrma2.Tpo -c -o manyrma2_shm-manyrma2.o `test -f 'manyrma2.c' || echo '$(srcdir)/'`manyrma2.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/manyrma2_shm-manyrma2.Tpo $(DEPDIR)/manyrma2_shm-manyrma2.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='manyrma2.c' object='manyrma2_shm-manyrma2.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(manyrma2_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o manyrma2_shm-manyrma2.o `test -f 'manyrma2.c' || echo '$(srcdir)/'`manyrma2.c manyrma2_shm-manyrma2.obj: manyrma2.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(manyrma2_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT manyrma2_shm-manyrma2.obj -MD -MP -MF $(DEPDIR)/manyrma2_shm-manyrma2.Tpo -c -o manyrma2_shm-manyrma2.obj `if test -f 'manyrma2.c'; then $(CYGPATH_W) 'manyrma2.c'; else $(CYGPATH_W) '$(srcdir)/manyrma2.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/manyrma2_shm-manyrma2.Tpo $(DEPDIR)/manyrma2_shm-manyrma2.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='manyrma2.c' object='manyrma2_shm-manyrma2.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(manyrma2_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o manyrma2_shm-manyrma2.obj `if test -f 'manyrma2.c'; then $(CYGPATH_W) 'manyrma2.c'; else $(CYGPATH_W) '$(srcdir)/manyrma2.c'; fi` mutex_bench_shared-mutex_bench.o: mutex_bench.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mutex_bench_shared_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mutex_bench_shared-mutex_bench.o -MD -MP -MF $(DEPDIR)/mutex_bench_shared-mutex_bench.Tpo -c -o mutex_bench_shared-mutex_bench.o `test -f 'mutex_bench.c' || echo '$(srcdir)/'`mutex_bench.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/mutex_bench_shared-mutex_bench.Tpo $(DEPDIR)/mutex_bench_shared-mutex_bench.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mutex_bench.c' object='mutex_bench_shared-mutex_bench.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mutex_bench_shared_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mutex_bench_shared-mutex_bench.o `test -f 'mutex_bench.c' || echo '$(srcdir)/'`mutex_bench.c mutex_bench_shared-mutex_bench.obj: mutex_bench.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mutex_bench_shared_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mutex_bench_shared-mutex_bench.obj -MD -MP -MF $(DEPDIR)/mutex_bench_shared-mutex_bench.Tpo -c -o mutex_bench_shared-mutex_bench.obj `if test -f 'mutex_bench.c'; then $(CYGPATH_W) 'mutex_bench.c'; else $(CYGPATH_W) '$(srcdir)/mutex_bench.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/mutex_bench_shared-mutex_bench.Tpo $(DEPDIR)/mutex_bench_shared-mutex_bench.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mutex_bench.c' object='mutex_bench_shared-mutex_bench.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mutex_bench_shared_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mutex_bench_shared-mutex_bench.obj `if test -f 'mutex_bench.c'; then $(CYGPATH_W) 'mutex_bench.c'; else $(CYGPATH_W) '$(srcdir)/mutex_bench.c'; fi` mutex_bench_shared-mcs-mutex.o: mcs-mutex.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mutex_bench_shared_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mutex_bench_shared-mcs-mutex.o -MD -MP -MF $(DEPDIR)/mutex_bench_shared-mcs-mutex.Tpo -c -o mutex_bench_shared-mcs-mutex.o `test -f 'mcs-mutex.c' || echo '$(srcdir)/'`mcs-mutex.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/mutex_bench_shared-mcs-mutex.Tpo $(DEPDIR)/mutex_bench_shared-mcs-mutex.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mcs-mutex.c' object='mutex_bench_shared-mcs-mutex.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mutex_bench_shared_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mutex_bench_shared-mcs-mutex.o `test -f 'mcs-mutex.c' || echo '$(srcdir)/'`mcs-mutex.c mutex_bench_shared-mcs-mutex.obj: mcs-mutex.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mutex_bench_shared_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mutex_bench_shared-mcs-mutex.obj -MD -MP -MF $(DEPDIR)/mutex_bench_shared-mcs-mutex.Tpo -c -o mutex_bench_shared-mcs-mutex.obj `if test -f 'mcs-mutex.c'; then $(CYGPATH_W) 'mcs-mutex.c'; else $(CYGPATH_W) '$(srcdir)/mcs-mutex.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/mutex_bench_shared-mcs-mutex.Tpo $(DEPDIR)/mutex_bench_shared-mcs-mutex.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mcs-mutex.c' object='mutex_bench_shared-mcs-mutex.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mutex_bench_shared_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mutex_bench_shared-mcs-mutex.obj `if test -f 'mcs-mutex.c'; then $(CYGPATH_W) 'mcs-mutex.c'; else $(CYGPATH_W) '$(srcdir)/mcs-mutex.c'; fi` mutex_bench_shm-mutex_bench.o: mutex_bench.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mutex_bench_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mutex_bench_shm-mutex_bench.o -MD -MP -MF $(DEPDIR)/mutex_bench_shm-mutex_bench.Tpo -c -o mutex_bench_shm-mutex_bench.o `test -f 'mutex_bench.c' || echo '$(srcdir)/'`mutex_bench.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/mutex_bench_shm-mutex_bench.Tpo $(DEPDIR)/mutex_bench_shm-mutex_bench.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mutex_bench.c' object='mutex_bench_shm-mutex_bench.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mutex_bench_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mutex_bench_shm-mutex_bench.o `test -f 'mutex_bench.c' || echo '$(srcdir)/'`mutex_bench.c mutex_bench_shm-mutex_bench.obj: mutex_bench.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mutex_bench_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mutex_bench_shm-mutex_bench.obj -MD -MP -MF $(DEPDIR)/mutex_bench_shm-mutex_bench.Tpo -c -o mutex_bench_shm-mutex_bench.obj `if test -f 'mutex_bench.c'; then $(CYGPATH_W) 'mutex_bench.c'; else $(CYGPATH_W) '$(srcdir)/mutex_bench.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/mutex_bench_shm-mutex_bench.Tpo $(DEPDIR)/mutex_bench_shm-mutex_bench.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mutex_bench.c' object='mutex_bench_shm-mutex_bench.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mutex_bench_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mutex_bench_shm-mutex_bench.obj `if test -f 'mutex_bench.c'; then $(CYGPATH_W) 'mutex_bench.c'; else $(CYGPATH_W) '$(srcdir)/mutex_bench.c'; fi` mutex_bench_shm-mcs-mutex.o: mcs-mutex.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mutex_bench_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mutex_bench_shm-mcs-mutex.o -MD -MP -MF $(DEPDIR)/mutex_bench_shm-mcs-mutex.Tpo -c -o mutex_bench_shm-mcs-mutex.o `test -f 'mcs-mutex.c' || echo '$(srcdir)/'`mcs-mutex.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/mutex_bench_shm-mcs-mutex.Tpo $(DEPDIR)/mutex_bench_shm-mcs-mutex.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mcs-mutex.c' object='mutex_bench_shm-mcs-mutex.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mutex_bench_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mutex_bench_shm-mcs-mutex.o `test -f 'mcs-mutex.c' || echo '$(srcdir)/'`mcs-mutex.c mutex_bench_shm-mcs-mutex.obj: mcs-mutex.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mutex_bench_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mutex_bench_shm-mcs-mutex.obj -MD -MP -MF $(DEPDIR)/mutex_bench_shm-mcs-mutex.Tpo -c -o mutex_bench_shm-mcs-mutex.obj `if test -f 'mcs-mutex.c'; then $(CYGPATH_W) 'mcs-mutex.c'; else $(CYGPATH_W) '$(srcdir)/mcs-mutex.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/mutex_bench_shm-mcs-mutex.Tpo $(DEPDIR)/mutex_bench_shm-mcs-mutex.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mcs-mutex.c' object='mutex_bench_shm-mcs-mutex.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mutex_bench_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mutex_bench_shm-mcs-mutex.obj `if test -f 'mcs-mutex.c'; then $(CYGPATH_W) 'mcs-mutex.c'; else $(CYGPATH_W) '$(srcdir)/mcs-mutex.c'; fi` mutex_bench_shm_ordered-mutex_bench.o: mutex_bench.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mutex_bench_shm_ordered_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mutex_bench_shm_ordered-mutex_bench.o -MD -MP -MF $(DEPDIR)/mutex_bench_shm_ordered-mutex_bench.Tpo -c -o mutex_bench_shm_ordered-mutex_bench.o `test -f 'mutex_bench.c' || echo '$(srcdir)/'`mutex_bench.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/mutex_bench_shm_ordered-mutex_bench.Tpo $(DEPDIR)/mutex_bench_shm_ordered-mutex_bench.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mutex_bench.c' object='mutex_bench_shm_ordered-mutex_bench.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mutex_bench_shm_ordered_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mutex_bench_shm_ordered-mutex_bench.o `test -f 'mutex_bench.c' || echo '$(srcdir)/'`mutex_bench.c mutex_bench_shm_ordered-mutex_bench.obj: mutex_bench.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mutex_bench_shm_ordered_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mutex_bench_shm_ordered-mutex_bench.obj -MD -MP -MF $(DEPDIR)/mutex_bench_shm_ordered-mutex_bench.Tpo -c -o mutex_bench_shm_ordered-mutex_bench.obj `if test -f 'mutex_bench.c'; then $(CYGPATH_W) 'mutex_bench.c'; else $(CYGPATH_W) '$(srcdir)/mutex_bench.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/mutex_bench_shm_ordered-mutex_bench.Tpo $(DEPDIR)/mutex_bench_shm_ordered-mutex_bench.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mutex_bench.c' object='mutex_bench_shm_ordered-mutex_bench.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mutex_bench_shm_ordered_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mutex_bench_shm_ordered-mutex_bench.obj `if test -f 'mutex_bench.c'; then $(CYGPATH_W) 'mutex_bench.c'; else $(CYGPATH_W) '$(srcdir)/mutex_bench.c'; fi` mutex_bench_shm_ordered-mcs-mutex.o: mcs-mutex.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mutex_bench_shm_ordered_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mutex_bench_shm_ordered-mcs-mutex.o -MD -MP -MF $(DEPDIR)/mutex_bench_shm_ordered-mcs-mutex.Tpo -c -o mutex_bench_shm_ordered-mcs-mutex.o `test -f 'mcs-mutex.c' || echo '$(srcdir)/'`mcs-mutex.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/mutex_bench_shm_ordered-mcs-mutex.Tpo $(DEPDIR)/mutex_bench_shm_ordered-mcs-mutex.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mcs-mutex.c' object='mutex_bench_shm_ordered-mcs-mutex.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mutex_bench_shm_ordered_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mutex_bench_shm_ordered-mcs-mutex.o `test -f 'mcs-mutex.c' || echo '$(srcdir)/'`mcs-mutex.c mutex_bench_shm_ordered-mcs-mutex.obj: mcs-mutex.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mutex_bench_shm_ordered_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mutex_bench_shm_ordered-mcs-mutex.obj -MD -MP -MF $(DEPDIR)/mutex_bench_shm_ordered-mcs-mutex.Tpo -c -o mutex_bench_shm_ordered-mcs-mutex.obj `if test -f 'mcs-mutex.c'; then $(CYGPATH_W) 'mcs-mutex.c'; else $(CYGPATH_W) '$(srcdir)/mcs-mutex.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/mutex_bench_shm_ordered-mcs-mutex.Tpo $(DEPDIR)/mutex_bench_shm_ordered-mcs-mutex.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mcs-mutex.c' object='mutex_bench_shm_ordered-mcs-mutex.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mutex_bench_shm_ordered_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mutex_bench_shm_ordered-mcs-mutex.obj `if test -f 'mcs-mutex.c'; then $(CYGPATH_W) 'mcs-mutex.c'; else $(CYGPATH_W) '$(srcdir)/mcs-mutex.c'; fi` nullpscw_shm-nullpscw.o: nullpscw.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nullpscw_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nullpscw_shm-nullpscw.o -MD -MP -MF $(DEPDIR)/nullpscw_shm-nullpscw.Tpo -c -o nullpscw_shm-nullpscw.o `test -f 'nullpscw.c' || echo '$(srcdir)/'`nullpscw.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nullpscw_shm-nullpscw.Tpo $(DEPDIR)/nullpscw_shm-nullpscw.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nullpscw.c' object='nullpscw_shm-nullpscw.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nullpscw_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nullpscw_shm-nullpscw.o `test -f 'nullpscw.c' || echo '$(srcdir)/'`nullpscw.c nullpscw_shm-nullpscw.obj: nullpscw.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nullpscw_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nullpscw_shm-nullpscw.obj -MD -MP -MF $(DEPDIR)/nullpscw_shm-nullpscw.Tpo -c -o nullpscw_shm-nullpscw.obj `if test -f 'nullpscw.c'; then $(CYGPATH_W) 'nullpscw.c'; else $(CYGPATH_W) '$(srcdir)/nullpscw.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nullpscw_shm-nullpscw.Tpo $(DEPDIR)/nullpscw_shm-nullpscw.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nullpscw.c' object='nullpscw_shm-nullpscw.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nullpscw_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nullpscw_shm-nullpscw.obj `if test -f 'nullpscw.c'; then $(CYGPATH_W) 'nullpscw.c'; else $(CYGPATH_W) '$(srcdir)/nullpscw.c'; fi` pscw_ordering_shm-pscw_ordering.o: pscw_ordering.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pscw_ordering_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT pscw_ordering_shm-pscw_ordering.o -MD -MP -MF $(DEPDIR)/pscw_ordering_shm-pscw_ordering.Tpo -c -o pscw_ordering_shm-pscw_ordering.o `test -f 'pscw_ordering.c' || echo '$(srcdir)/'`pscw_ordering.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/pscw_ordering_shm-pscw_ordering.Tpo $(DEPDIR)/pscw_ordering_shm-pscw_ordering.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pscw_ordering.c' object='pscw_ordering_shm-pscw_ordering.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pscw_ordering_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o pscw_ordering_shm-pscw_ordering.o `test -f 'pscw_ordering.c' || echo '$(srcdir)/'`pscw_ordering.c pscw_ordering_shm-pscw_ordering.obj: pscw_ordering.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pscw_ordering_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT pscw_ordering_shm-pscw_ordering.obj -MD -MP -MF $(DEPDIR)/pscw_ordering_shm-pscw_ordering.Tpo -c -o pscw_ordering_shm-pscw_ordering.obj `if test -f 'pscw_ordering.c'; then $(CYGPATH_W) 'pscw_ordering.c'; else $(CYGPATH_W) '$(srcdir)/pscw_ordering.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/pscw_ordering_shm-pscw_ordering.Tpo $(DEPDIR)/pscw_ordering_shm-pscw_ordering.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pscw_ordering.c' object='pscw_ordering_shm-pscw_ordering.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pscw_ordering_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o pscw_ordering_shm-pscw_ordering.obj `if test -f 'pscw_ordering.c'; then $(CYGPATH_W) 'pscw_ordering.c'; else $(CYGPATH_W) '$(srcdir)/pscw_ordering.c'; fi` put_flush_get-wrma_flush_get.o: wrma_flush_get.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(put_flush_get_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT put_flush_get-wrma_flush_get.o -MD -MP -MF $(DEPDIR)/put_flush_get-wrma_flush_get.Tpo -c -o put_flush_get-wrma_flush_get.o `test -f 'wrma_flush_get.c' || echo '$(srcdir)/'`wrma_flush_get.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/put_flush_get-wrma_flush_get.Tpo $(DEPDIR)/put_flush_get-wrma_flush_get.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='wrma_flush_get.c' object='put_flush_get-wrma_flush_get.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(put_flush_get_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o put_flush_get-wrma_flush_get.o `test -f 'wrma_flush_get.c' || echo '$(srcdir)/'`wrma_flush_get.c put_flush_get-wrma_flush_get.obj: wrma_flush_get.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(put_flush_get_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT put_flush_get-wrma_flush_get.obj -MD -MP -MF $(DEPDIR)/put_flush_get-wrma_flush_get.Tpo -c -o put_flush_get-wrma_flush_get.obj `if test -f 'wrma_flush_get.c'; then $(CYGPATH_W) 'wrma_flush_get.c'; else $(CYGPATH_W) '$(srcdir)/wrma_flush_get.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/put_flush_get-wrma_flush_get.Tpo $(DEPDIR)/put_flush_get-wrma_flush_get.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='wrma_flush_get.c' object='put_flush_get-wrma_flush_get.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(put_flush_get_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o put_flush_get-wrma_flush_get.obj `if test -f 'wrma_flush_get.c'; then $(CYGPATH_W) 'wrma_flush_get.c'; else $(CYGPATH_W) '$(srcdir)/wrma_flush_get.c'; fi` req_example_shm-req_example.o: req_example.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(req_example_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT req_example_shm-req_example.o -MD -MP -MF $(DEPDIR)/req_example_shm-req_example.Tpo -c -o req_example_shm-req_example.o `test -f 'req_example.c' || echo '$(srcdir)/'`req_example.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/req_example_shm-req_example.Tpo $(DEPDIR)/req_example_shm-req_example.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='req_example.c' object='req_example_shm-req_example.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(req_example_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o req_example_shm-req_example.o `test -f 'req_example.c' || echo '$(srcdir)/'`req_example.c req_example_shm-req_example.obj: req_example.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(req_example_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT req_example_shm-req_example.obj -MD -MP -MF $(DEPDIR)/req_example_shm-req_example.Tpo -c -o req_example_shm-req_example.obj `if test -f 'req_example.c'; then $(CYGPATH_W) 'req_example.c'; else $(CYGPATH_W) '$(srcdir)/req_example.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/req_example_shm-req_example.Tpo $(DEPDIR)/req_example_shm-req_example.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='req_example.c' object='req_example_shm-req_example.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(req_example_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o req_example_shm-req_example.obj `if test -f 'req_example.c'; then $(CYGPATH_W) 'req_example.c'; else $(CYGPATH_W) '$(srcdir)/req_example.c'; fi` test2_am_shm-test2_am.o: test2_am.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test2_am_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test2_am_shm-test2_am.o -MD -MP -MF $(DEPDIR)/test2_am_shm-test2_am.Tpo -c -o test2_am_shm-test2_am.o `test -f 'test2_am.c' || echo '$(srcdir)/'`test2_am.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test2_am_shm-test2_am.Tpo $(DEPDIR)/test2_am_shm-test2_am.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test2_am.c' object='test2_am_shm-test2_am.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test2_am_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test2_am_shm-test2_am.o `test -f 'test2_am.c' || echo '$(srcdir)/'`test2_am.c test2_am_shm-test2_am.obj: test2_am.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test2_am_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test2_am_shm-test2_am.obj -MD -MP -MF $(DEPDIR)/test2_am_shm-test2_am.Tpo -c -o test2_am_shm-test2_am.obj `if test -f 'test2_am.c'; then $(CYGPATH_W) 'test2_am.c'; else $(CYGPATH_W) '$(srcdir)/test2_am.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test2_am_shm-test2_am.Tpo $(DEPDIR)/test2_am_shm-test2_am.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test2_am.c' object='test2_am_shm-test2_am.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test2_am_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test2_am_shm-test2_am.obj `if test -f 'test2_am.c'; then $(CYGPATH_W) 'test2_am.c'; else $(CYGPATH_W) '$(srcdir)/test2_am.c'; fi` test2_shm-test2.o: test2.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test2_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test2_shm-test2.o -MD -MP -MF $(DEPDIR)/test2_shm-test2.Tpo -c -o test2_shm-test2.o `test -f 'test2.c' || echo '$(srcdir)/'`test2.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test2_shm-test2.Tpo $(DEPDIR)/test2_shm-test2.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test2.c' object='test2_shm-test2.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test2_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test2_shm-test2.o `test -f 'test2.c' || echo '$(srcdir)/'`test2.c test2_shm-test2.obj: test2.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test2_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test2_shm-test2.obj -MD -MP -MF $(DEPDIR)/test2_shm-test2.Tpo -c -o test2_shm-test2.obj `if test -f 'test2.c'; then $(CYGPATH_W) 'test2.c'; else $(CYGPATH_W) '$(srcdir)/test2.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test2_shm-test2.Tpo $(DEPDIR)/test2_shm-test2.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test2.c' object='test2_shm-test2.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test2_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test2_shm-test2.obj `if test -f 'test2.c'; then $(CYGPATH_W) 'test2.c'; else $(CYGPATH_W) '$(srcdir)/test2.c'; fi` test3_am_shm-test3_am.o: test3_am.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test3_am_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test3_am_shm-test3_am.o -MD -MP -MF $(DEPDIR)/test3_am_shm-test3_am.Tpo -c -o test3_am_shm-test3_am.o `test -f 'test3_am.c' || echo '$(srcdir)/'`test3_am.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test3_am_shm-test3_am.Tpo $(DEPDIR)/test3_am_shm-test3_am.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test3_am.c' object='test3_am_shm-test3_am.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test3_am_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test3_am_shm-test3_am.o `test -f 'test3_am.c' || echo '$(srcdir)/'`test3_am.c test3_am_shm-test3_am.obj: test3_am.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test3_am_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test3_am_shm-test3_am.obj -MD -MP -MF $(DEPDIR)/test3_am_shm-test3_am.Tpo -c -o test3_am_shm-test3_am.obj `if test -f 'test3_am.c'; then $(CYGPATH_W) 'test3_am.c'; else $(CYGPATH_W) '$(srcdir)/test3_am.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test3_am_shm-test3_am.Tpo $(DEPDIR)/test3_am_shm-test3_am.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test3_am.c' object='test3_am_shm-test3_am.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test3_am_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test3_am_shm-test3_am.obj `if test -f 'test3_am.c'; then $(CYGPATH_W) 'test3_am.c'; else $(CYGPATH_W) '$(srcdir)/test3_am.c'; fi` test3_shm-test3.o: test3.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test3_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test3_shm-test3.o -MD -MP -MF $(DEPDIR)/test3_shm-test3.Tpo -c -o test3_shm-test3.o `test -f 'test3.c' || echo '$(srcdir)/'`test3.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test3_shm-test3.Tpo $(DEPDIR)/test3_shm-test3.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test3.c' object='test3_shm-test3.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test3_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test3_shm-test3.o `test -f 'test3.c' || echo '$(srcdir)/'`test3.c test3_shm-test3.obj: test3.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test3_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test3_shm-test3.obj -MD -MP -MF $(DEPDIR)/test3_shm-test3.Tpo -c -o test3_shm-test3.obj `if test -f 'test3.c'; then $(CYGPATH_W) 'test3.c'; else $(CYGPATH_W) '$(srcdir)/test3.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test3_shm-test3.Tpo $(DEPDIR)/test3_shm-test3.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test3.c' object='test3_shm-test3.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test3_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test3_shm-test3.obj `if test -f 'test3.c'; then $(CYGPATH_W) 'test3.c'; else $(CYGPATH_W) '$(srcdir)/test3.c'; fi` transpose3_shm-transpose3.o: transpose3.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(transpose3_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT transpose3_shm-transpose3.o -MD -MP -MF $(DEPDIR)/transpose3_shm-transpose3.Tpo -c -o transpose3_shm-transpose3.o `test -f 'transpose3.c' || echo '$(srcdir)/'`transpose3.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/transpose3_shm-transpose3.Tpo $(DEPDIR)/transpose3_shm-transpose3.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='transpose3.c' object='transpose3_shm-transpose3.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(transpose3_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o transpose3_shm-transpose3.o `test -f 'transpose3.c' || echo '$(srcdir)/'`transpose3.c transpose3_shm-transpose3.obj: transpose3.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(transpose3_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT transpose3_shm-transpose3.obj -MD -MP -MF $(DEPDIR)/transpose3_shm-transpose3.Tpo -c -o transpose3_shm-transpose3.obj `if test -f 'transpose3.c'; then $(CYGPATH_W) 'transpose3.c'; else $(CYGPATH_W) '$(srcdir)/transpose3.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/transpose3_shm-transpose3.Tpo $(DEPDIR)/transpose3_shm-transpose3.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='transpose3.c' object='transpose3_shm-transpose3.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(transpose3_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o transpose3_shm-transpose3.obj `if test -f 'transpose3.c'; then $(CYGPATH_W) 'transpose3.c'; else $(CYGPATH_W) '$(srcdir)/transpose3.c'; fi` win_shared_acc_flush_load-win_shared_rma_flush_load.o: win_shared_rma_flush_load.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(win_shared_acc_flush_load_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win_shared_acc_flush_load-win_shared_rma_flush_load.o -MD -MP -MF $(DEPDIR)/win_shared_acc_flush_load-win_shared_rma_flush_load.Tpo -c -o win_shared_acc_flush_load-win_shared_rma_flush_load.o `test -f 'win_shared_rma_flush_load.c' || echo '$(srcdir)/'`win_shared_rma_flush_load.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/win_shared_acc_flush_load-win_shared_rma_flush_load.Tpo $(DEPDIR)/win_shared_acc_flush_load-win_shared_rma_flush_load.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='win_shared_rma_flush_load.c' object='win_shared_acc_flush_load-win_shared_rma_flush_load.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(win_shared_acc_flush_load_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win_shared_acc_flush_load-win_shared_rma_flush_load.o `test -f 'win_shared_rma_flush_load.c' || echo '$(srcdir)/'`win_shared_rma_flush_load.c win_shared_acc_flush_load-win_shared_rma_flush_load.obj: win_shared_rma_flush_load.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(win_shared_acc_flush_load_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win_shared_acc_flush_load-win_shared_rma_flush_load.obj -MD -MP -MF $(DEPDIR)/win_shared_acc_flush_load-win_shared_rma_flush_load.Tpo -c -o win_shared_acc_flush_load-win_shared_rma_flush_load.obj `if test -f 'win_shared_rma_flush_load.c'; then $(CYGPATH_W) 'win_shared_rma_flush_load.c'; else $(CYGPATH_W) '$(srcdir)/win_shared_rma_flush_load.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/win_shared_acc_flush_load-win_shared_rma_flush_load.Tpo $(DEPDIR)/win_shared_acc_flush_load-win_shared_rma_flush_load.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='win_shared_rma_flush_load.c' object='win_shared_acc_flush_load-win_shared_rma_flush_load.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(win_shared_acc_flush_load_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win_shared_acc_flush_load-win_shared_rma_flush_load.obj `if test -f 'win_shared_rma_flush_load.c'; then $(CYGPATH_W) 'win_shared_rma_flush_load.c'; else $(CYGPATH_W) '$(srcdir)/win_shared_rma_flush_load.c'; fi` win_shared_cas_flush_load-win_shared_rma_flush_load.o: win_shared_rma_flush_load.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(win_shared_cas_flush_load_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win_shared_cas_flush_load-win_shared_rma_flush_load.o -MD -MP -MF $(DEPDIR)/win_shared_cas_flush_load-win_shared_rma_flush_load.Tpo -c -o win_shared_cas_flush_load-win_shared_rma_flush_load.o `test -f 'win_shared_rma_flush_load.c' || echo '$(srcdir)/'`win_shared_rma_flush_load.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/win_shared_cas_flush_load-win_shared_rma_flush_load.Tpo $(DEPDIR)/win_shared_cas_flush_load-win_shared_rma_flush_load.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='win_shared_rma_flush_load.c' object='win_shared_cas_flush_load-win_shared_rma_flush_load.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(win_shared_cas_flush_load_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win_shared_cas_flush_load-win_shared_rma_flush_load.o `test -f 'win_shared_rma_flush_load.c' || echo '$(srcdir)/'`win_shared_rma_flush_load.c win_shared_cas_flush_load-win_shared_rma_flush_load.obj: win_shared_rma_flush_load.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(win_shared_cas_flush_load_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win_shared_cas_flush_load-win_shared_rma_flush_load.obj -MD -MP -MF $(DEPDIR)/win_shared_cas_flush_load-win_shared_rma_flush_load.Tpo -c -o win_shared_cas_flush_load-win_shared_rma_flush_load.obj `if test -f 'win_shared_rma_flush_load.c'; then $(CYGPATH_W) 'win_shared_rma_flush_load.c'; else $(CYGPATH_W) '$(srcdir)/win_shared_rma_flush_load.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/win_shared_cas_flush_load-win_shared_rma_flush_load.Tpo $(DEPDIR)/win_shared_cas_flush_load-win_shared_rma_flush_load.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='win_shared_rma_flush_load.c' object='win_shared_cas_flush_load-win_shared_rma_flush_load.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(win_shared_cas_flush_load_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win_shared_cas_flush_load-win_shared_rma_flush_load.obj `if test -f 'win_shared_rma_flush_load.c'; then $(CYGPATH_W) 'win_shared_rma_flush_load.c'; else $(CYGPATH_W) '$(srcdir)/win_shared_rma_flush_load.c'; fi` win_shared_create_allocshm-win_shared_create.o: win_shared_create.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(win_shared_create_allocshm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win_shared_create_allocshm-win_shared_create.o -MD -MP -MF $(DEPDIR)/win_shared_create_allocshm-win_shared_create.Tpo -c -o win_shared_create_allocshm-win_shared_create.o `test -f 'win_shared_create.c' || echo '$(srcdir)/'`win_shared_create.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/win_shared_create_allocshm-win_shared_create.Tpo $(DEPDIR)/win_shared_create_allocshm-win_shared_create.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='win_shared_create.c' object='win_shared_create_allocshm-win_shared_create.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(win_shared_create_allocshm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win_shared_create_allocshm-win_shared_create.o `test -f 'win_shared_create.c' || echo '$(srcdir)/'`win_shared_create.c win_shared_create_allocshm-win_shared_create.obj: win_shared_create.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(win_shared_create_allocshm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win_shared_create_allocshm-win_shared_create.obj -MD -MP -MF $(DEPDIR)/win_shared_create_allocshm-win_shared_create.Tpo -c -o win_shared_create_allocshm-win_shared_create.obj `if test -f 'win_shared_create.c'; then $(CYGPATH_W) 'win_shared_create.c'; else $(CYGPATH_W) '$(srcdir)/win_shared_create.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/win_shared_create_allocshm-win_shared_create.Tpo $(DEPDIR)/win_shared_create_allocshm-win_shared_create.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='win_shared_create.c' object='win_shared_create_allocshm-win_shared_create.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(win_shared_create_allocshm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win_shared_create_allocshm-win_shared_create.obj `if test -f 'win_shared_create.c'; then $(CYGPATH_W) 'win_shared_create.c'; else $(CYGPATH_W) '$(srcdir)/win_shared_create.c'; fi` win_shared_fop_flush_load-win_shared_rma_flush_load.o: win_shared_rma_flush_load.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(win_shared_fop_flush_load_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win_shared_fop_flush_load-win_shared_rma_flush_load.o -MD -MP -MF $(DEPDIR)/win_shared_fop_flush_load-win_shared_rma_flush_load.Tpo -c -o win_shared_fop_flush_load-win_shared_rma_flush_load.o `test -f 'win_shared_rma_flush_load.c' || echo '$(srcdir)/'`win_shared_rma_flush_load.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/win_shared_fop_flush_load-win_shared_rma_flush_load.Tpo $(DEPDIR)/win_shared_fop_flush_load-win_shared_rma_flush_load.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='win_shared_rma_flush_load.c' object='win_shared_fop_flush_load-win_shared_rma_flush_load.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(win_shared_fop_flush_load_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win_shared_fop_flush_load-win_shared_rma_flush_load.o `test -f 'win_shared_rma_flush_load.c' || echo '$(srcdir)/'`win_shared_rma_flush_load.c win_shared_fop_flush_load-win_shared_rma_flush_load.obj: win_shared_rma_flush_load.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(win_shared_fop_flush_load_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win_shared_fop_flush_load-win_shared_rma_flush_load.obj -MD -MP -MF $(DEPDIR)/win_shared_fop_flush_load-win_shared_rma_flush_load.Tpo -c -o win_shared_fop_flush_load-win_shared_rma_flush_load.obj `if test -f 'win_shared_rma_flush_load.c'; then $(CYGPATH_W) 'win_shared_rma_flush_load.c'; else $(CYGPATH_W) '$(srcdir)/win_shared_rma_flush_load.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/win_shared_fop_flush_load-win_shared_rma_flush_load.Tpo $(DEPDIR)/win_shared_fop_flush_load-win_shared_rma_flush_load.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='win_shared_rma_flush_load.c' object='win_shared_fop_flush_load-win_shared_rma_flush_load.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(win_shared_fop_flush_load_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win_shared_fop_flush_load-win_shared_rma_flush_load.obj `if test -f 'win_shared_rma_flush_load.c'; then $(CYGPATH_W) 'win_shared_rma_flush_load.c'; else $(CYGPATH_W) '$(srcdir)/win_shared_rma_flush_load.c'; fi` win_shared_gacc_flush_load-win_shared_rma_flush_load.o: win_shared_rma_flush_load.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(win_shared_gacc_flush_load_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win_shared_gacc_flush_load-win_shared_rma_flush_load.o -MD -MP -MF $(DEPDIR)/win_shared_gacc_flush_load-win_shared_rma_flush_load.Tpo -c -o win_shared_gacc_flush_load-win_shared_rma_flush_load.o `test -f 'win_shared_rma_flush_load.c' || echo '$(srcdir)/'`win_shared_rma_flush_load.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/win_shared_gacc_flush_load-win_shared_rma_flush_load.Tpo $(DEPDIR)/win_shared_gacc_flush_load-win_shared_rma_flush_load.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='win_shared_rma_flush_load.c' object='win_shared_gacc_flush_load-win_shared_rma_flush_load.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(win_shared_gacc_flush_load_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win_shared_gacc_flush_load-win_shared_rma_flush_load.o `test -f 'win_shared_rma_flush_load.c' || echo '$(srcdir)/'`win_shared_rma_flush_load.c win_shared_gacc_flush_load-win_shared_rma_flush_load.obj: win_shared_rma_flush_load.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(win_shared_gacc_flush_load_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win_shared_gacc_flush_load-win_shared_rma_flush_load.obj -MD -MP -MF $(DEPDIR)/win_shared_gacc_flush_load-win_shared_rma_flush_load.Tpo -c -o win_shared_gacc_flush_load-win_shared_rma_flush_load.obj `if test -f 'win_shared_rma_flush_load.c'; then $(CYGPATH_W) 'win_shared_rma_flush_load.c'; else $(CYGPATH_W) '$(srcdir)/win_shared_rma_flush_load.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/win_shared_gacc_flush_load-win_shared_rma_flush_load.Tpo $(DEPDIR)/win_shared_gacc_flush_load-win_shared_rma_flush_load.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='win_shared_rma_flush_load.c' object='win_shared_gacc_flush_load-win_shared_rma_flush_load.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(win_shared_gacc_flush_load_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win_shared_gacc_flush_load-win_shared_rma_flush_load.obj `if test -f 'win_shared_rma_flush_load.c'; then $(CYGPATH_W) 'win_shared_rma_flush_load.c'; else $(CYGPATH_W) '$(srcdir)/win_shared_rma_flush_load.c'; fi` win_shared_put_flush_load-win_shared_rma_flush_load.o: win_shared_rma_flush_load.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(win_shared_put_flush_load_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win_shared_put_flush_load-win_shared_rma_flush_load.o -MD -MP -MF $(DEPDIR)/win_shared_put_flush_load-win_shared_rma_flush_load.Tpo -c -o win_shared_put_flush_load-win_shared_rma_flush_load.o `test -f 'win_shared_rma_flush_load.c' || echo '$(srcdir)/'`win_shared_rma_flush_load.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/win_shared_put_flush_load-win_shared_rma_flush_load.Tpo $(DEPDIR)/win_shared_put_flush_load-win_shared_rma_flush_load.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='win_shared_rma_flush_load.c' object='win_shared_put_flush_load-win_shared_rma_flush_load.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(win_shared_put_flush_load_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win_shared_put_flush_load-win_shared_rma_flush_load.o `test -f 'win_shared_rma_flush_load.c' || echo '$(srcdir)/'`win_shared_rma_flush_load.c win_shared_put_flush_load-win_shared_rma_flush_load.obj: win_shared_rma_flush_load.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(win_shared_put_flush_load_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win_shared_put_flush_load-win_shared_rma_flush_load.obj -MD -MP -MF $(DEPDIR)/win_shared_put_flush_load-win_shared_rma_flush_load.Tpo -c -o win_shared_put_flush_load-win_shared_rma_flush_load.obj `if test -f 'win_shared_rma_flush_load.c'; then $(CYGPATH_W) 'win_shared_rma_flush_load.c'; else $(CYGPATH_W) '$(srcdir)/win_shared_rma_flush_load.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/win_shared_put_flush_load-win_shared_rma_flush_load.Tpo $(DEPDIR)/win_shared_put_flush_load-win_shared_rma_flush_load.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='win_shared_rma_flush_load.c' object='win_shared_put_flush_load-win_shared_rma_flush_load.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(win_shared_put_flush_load_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win_shared_put_flush_load-win_shared_rma_flush_load.obj `if test -f 'win_shared_rma_flush_load.c'; then $(CYGPATH_W) 'win_shared_rma_flush_load.c'; else $(CYGPATH_W) '$(srcdir)/win_shared_rma_flush_load.c'; fi` wintest_shm-wintest.o: wintest.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(wintest_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT wintest_shm-wintest.o -MD -MP -MF $(DEPDIR)/wintest_shm-wintest.Tpo -c -o wintest_shm-wintest.o `test -f 'wintest.c' || echo '$(srcdir)/'`wintest.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/wintest_shm-wintest.Tpo $(DEPDIR)/wintest_shm-wintest.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='wintest.c' object='wintest_shm-wintest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(wintest_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o wintest_shm-wintest.o `test -f 'wintest.c' || echo '$(srcdir)/'`wintest.c wintest_shm-wintest.obj: wintest.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(wintest_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT wintest_shm-wintest.obj -MD -MP -MF $(DEPDIR)/wintest_shm-wintest.Tpo -c -o wintest_shm-wintest.obj `if test -f 'wintest.c'; then $(CYGPATH_W) 'wintest.c'; else $(CYGPATH_W) '$(srcdir)/wintest.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/wintest_shm-wintest.Tpo $(DEPDIR)/wintest_shm-wintest.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='wintest.c' object='wintest_shm-wintest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(wintest_shm_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o wintest_shm-wintest.obj `if test -f 'wintest.c'; then $(CYGPATH_W) 'wintest.c'; else $(CYGPATH_W) '$(srcdir)/wintest.c'; fi` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/rma/test4_am.c0000644000175000017500000000551012620254305017024 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "stdio.h" #include "stdlib.h" #include "mpitest.h" #include "squelch.h" /* tests passive target RMA on 2 processes. tests the lock-single_op-unlock optimization. */ /* same as test4.c but uses alloc_mem */ #define SIZE1 100 #define SIZE2 200 int main(int argc, char *argv[]) { int rank, nprocs, *A, *B, i; MPI_Comm CommDeuce; MPI_Win win; int errs = 0; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (nprocs < 2) { printf("Run this program with 2 or more processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_split(MPI_COMM_WORLD, (rank < 2), rank, &CommDeuce); if (rank < 2) { i = MPI_Alloc_mem(SIZE2 * sizeof(int), MPI_INFO_NULL, &A); if (i) { printf("Can't allocate memory in test program\n"); MPI_Abort(MPI_COMM_WORLD, 1); } i = MPI_Alloc_mem(SIZE2 * sizeof(int), MPI_INFO_NULL, &B); if (i) { printf("Can't allocate memory in test program\n"); MPI_Abort(MPI_COMM_WORLD, 1); } if (rank == 0) { for (i = 0; i < SIZE2; i++) A[i] = B[i] = i; MPI_Win_create(NULL, 0, 1, MPI_INFO_NULL, CommDeuce, &win); for (i = 0; i < SIZE1; i++) { MPI_Win_lock(MPI_LOCK_SHARED, 1, 0, win); MPI_Put(A + i, 1, MPI_INT, 1, i, 1, MPI_INT, win); MPI_Win_unlock(1, win); } for (i = 0; i < SIZE1; i++) { MPI_Win_lock(MPI_LOCK_SHARED, 1, 0, win); MPI_Get(B + i, 1, MPI_INT, 1, SIZE1 + i, 1, MPI_INT, win); MPI_Win_unlock(1, win); } MPI_Win_free(&win); for (i = 0; i < SIZE1; i++) if (B[i] != (-4) * (i + SIZE1)) { SQUELCH(printf ("Get Error: B[%d] is %d, should be %d\n", i, B[i], (-4) * (i + SIZE1));); errs++; } } else { /* rank=1 */ for (i = 0; i < SIZE2; i++) B[i] = (-4) * i; MPI_Win_create(B, SIZE2 * sizeof(int), sizeof(int), MPI_INFO_NULL, CommDeuce, &win); MPI_Win_free(&win); for (i = 0; i < SIZE1; i++) { if (B[i] != i) { SQUELCH(printf("Put Error: B[%d] is %d, should be %d\n", i, B[i], i);); errs++; } } } MPI_Free_mem(A); MPI_Free_mem(B); } MPI_Comm_free(&CommDeuce); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/test2_am.c0000644000175000017500000000717612620254305017034 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "stdio.h" #include "mpitest.h" #include "squelch.h" /* tests put and get with post/start/complete/wait on 2 processes */ /* same as test1.c but uses alloc_mem */ #define SIZE1 100 #define SIZE2 200 int main(int argc, char *argv[]) { int rank, destrank, nprocs, *A, *B, i; MPI_Comm CommDeuce; MPI_Group comm_group, group; MPI_Win win; int errs = 0; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (nprocs < 2) { printf("Run this program with 2 or more processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_split(MPI_COMM_WORLD, (rank < 2), rank, &CommDeuce); if (rank < 2) { i = MPI_Alloc_mem(SIZE2 * sizeof(int), MPI_INFO_NULL, &A); if (i) { printf("Can't allocate memory in test program\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_group(CommDeuce, &comm_group); if (rank == 0) { i = MPI_Alloc_mem(SIZE2 * sizeof(int), MPI_INFO_NULL, &B); if (i) { printf("Can't allocate memory in test program\n"); MPI_Abort(MPI_COMM_WORLD, 1); } for (i = 0; i < SIZE2; i++) A[i] = B[i] = i; #ifdef USE_WIN_ALLOCATE char *base_ptr; MPI_Win_allocate(0, 1, MPI_INFO_NULL, CommDeuce, &base_ptr, &win); #else MPI_Win_create(NULL, 0, 1, MPI_INFO_NULL, CommDeuce, &win); #endif destrank = 1; MPI_Group_incl(comm_group, 1, &destrank, &group); MPI_Win_start(group, 0, win); for (i = 0; i < SIZE1; i++) MPI_Put(A + i, 1, MPI_INT, 1, i, 1, MPI_INT, win); for (i = 0; i < SIZE1; i++) MPI_Get(B + i, 1, MPI_INT, 1, SIZE1 + i, 1, MPI_INT, win); MPI_Win_complete(win); for (i = 0; i < SIZE1; i++) if (B[i] != (-4) * (i + SIZE1)) { SQUELCH(printf ("Get Error: B[i] is %d, should be %d\n", B[i], (-4) * (i + SIZE1));); errs++; } MPI_Free_mem(B); } else if (rank == 1) { #ifdef USE_WIN_ALLOCATE MPI_Win_allocate(SIZE2 * sizeof(int), sizeof(int), MPI_INFO_NULL, CommDeuce, &B, &win); #else i = MPI_Alloc_mem(SIZE2 * sizeof(int), MPI_INFO_NULL, &B); if (i) { printf("Can't allocate memory in test program\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Win_create(B, SIZE2 * sizeof(int), sizeof(int), MPI_INFO_NULL, CommDeuce, &win); #endif MPI_Win_lock(MPI_LOCK_SHARED, rank, 0, win); for (i = 0; i < SIZE2; i++) B[i] = (-4) * i; MPI_Win_unlock(rank, win); destrank = 0; MPI_Group_incl(comm_group, 1, &destrank, &group); MPI_Win_post(group, 0, win); MPI_Win_wait(win); for (i = 0; i < SIZE1; i++) { if (B[i] != i) { SQUELCH(printf("Put Error: B[i] is %d, should be %d\n", B[i], i);); errs++; } } #ifndef USE_WIN_ALLOCATE MPI_Free_mem(B); #endif } MPI_Group_free(&group); MPI_Group_free(&comm_group); MPI_Win_free(&win); MPI_Free_mem(A); } MPI_Comm_free(&CommDeuce); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/contention_put.c0000644000175000017500000000520212620254305020352 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /** Contended RMA put test -- James Dinan * * Each process issues COUNT put operations to non-overlapping locations on * every other processs. */ #include #include #include #include "mpi.h" #include "mpitest.h" #define MAXELEMS 6400 #define COUNT 1000 static int me, nproc; static const int verbose = 0; int test_put(void); int test_put(void) { MPI_Win dst_win; double *dst_buf; double src_buf[MAXELEMS]; int i, j; int errs = 0; MPI_Alloc_mem(sizeof(double) * nproc * MAXELEMS, MPI_INFO_NULL, &dst_buf); MPI_Win_create(dst_buf, sizeof(double) * nproc * MAXELEMS, 1, MPI_INFO_NULL, MPI_COMM_WORLD, &dst_win); for (i = 0; i < MAXELEMS; i++) src_buf[i] = me + 1.0; MPI_Win_lock(MPI_LOCK_EXCLUSIVE, me, 0, dst_win); for (i = 0; i < nproc * MAXELEMS; i++) dst_buf[i] = 0.0; MPI_Win_unlock(me, dst_win); MPI_Barrier(MPI_COMM_WORLD); for (i = 0; i < nproc; i++) { /* int target = (me + i) % nproc; */ int target = i; for (j = 0; j < COUNT; j++) { if (verbose) printf("%2d -> %2d [%2d]\n", me, target, j); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, target, 0, dst_win); MPI_Put(&src_buf[j], sizeof(double), MPI_BYTE, target, (me * MAXELEMS + j) * sizeof(double), sizeof(double), MPI_BYTE, dst_win); MPI_Win_unlock(target, dst_win); } } MPI_Barrier(MPI_COMM_WORLD); /* Check that the correct data was returned. This assumes that the * systems have the same data representations */ for (i = 0; i < nproc; i++) { for (j = 0; j < COUNT; j++) { if (dst_buf[i * MAXELEMS + j] != 1.0 + i) { errs++; printf("dst_buf[%d] = %e, expected %e\n", i * MAXELEMS + j, dst_buf[i * MAXELEMS + j], 1.0 + i); } } } MPI_Win_free(&dst_win); MPI_Free_mem(dst_buf); return errs; } int main(int argc, char *argv[]) { int errs = 0; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Comm_rank(MPI_COMM_WORLD, &me); assert(COUNT <= MAXELEMS); if (me == 0 && verbose) { printf("Test starting on %d processes\n", nproc); fflush(stdout); } errs = test_put(); MPI_Barrier(MPI_COMM_WORLD); MTest_Finalize(errs); MPI_Finalize(); return MTestReturnValue(errs); } mpi-testsuite-3.2+dfsg/rma/fetchandadd.c0000644000175000017500000000725012620254305017534 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "stdio.h" #include "stdlib.h" #include "mpitest.h" /* Fetch and add example from Using MPI-2 (the non-scalable version, Fig. 6.12). */ #define NTIMES 20 /* no of times each process calls the counter * routine */ int localvalue = 0; /* contribution of this process to the counter. We * define it as a global variable because attribute * caching on the window is not enabled yet. */ void Get_nextval(MPI_Win win, int *val_array, MPI_Datatype get_type, int rank, int nprocs, int *value); int compar(const void *a, const void *b); int main(int argc, char *argv[]) { int rank, nprocs, i, blens[2], disps[2], *counter_mem, *val_array, *results, *counter_vals; MPI_Datatype get_type; MPI_Win win; int errs = 0; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (rank == 0) { /* allocate counter memory and initialize to 0 */ counter_mem = (int *) calloc(nprocs, sizeof(int)); MPI_Win_create(counter_mem, nprocs * sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &win); MPI_Win_free(&win); free(counter_mem); /* gather the results from other processes, sort them, and check * whether they represent a counter being incremented by 1 */ results = (int *) malloc(NTIMES * nprocs * sizeof(int)); for (i = 0; i < NTIMES * nprocs; i++) results[i] = -1; MPI_Gather(MPI_IN_PLACE, 0, MPI_DATATYPE_NULL, results, NTIMES, MPI_INT, 0, MPI_COMM_WORLD); qsort(results + NTIMES, NTIMES * (nprocs - 1), sizeof(int), compar); for (i = NTIMES + 1; i < (NTIMES * nprocs); i++) if (results[i] != results[i - 1] + 1) errs++; free(results); } else { blens[0] = rank; disps[0] = 0; blens[1] = nprocs - rank - 1; disps[1] = rank + 1; MPI_Type_indexed(2, blens, disps, MPI_INT, &get_type); MPI_Type_commit(&get_type); val_array = (int *) malloc(nprocs * sizeof(int)); /* allocate array to store the values obtained from the * fetch-and-add counter */ counter_vals = (int *) malloc(NTIMES * sizeof(int)); MPI_Win_create(NULL, 0, 1, MPI_INFO_NULL, MPI_COMM_WORLD, &win); for (i = 0; i < NTIMES; i++) { Get_nextval(win, val_array, get_type, rank, nprocs, counter_vals + i); /* printf("Rank %d, counter %d\n", rank, value); */ } MPI_Win_free(&win); free(val_array); MPI_Type_free(&get_type); /* gather the results to the root */ MPI_Gather(counter_vals, NTIMES, MPI_INT, NULL, 0, MPI_DATATYPE_NULL, 0, MPI_COMM_WORLD); free(counter_vals); } MTest_Finalize(errs); MPI_Finalize(); return 0; } void Get_nextval(MPI_Win win, int *val_array, MPI_Datatype get_type, int rank, int nprocs, int *value) { int one = 1, i; MPI_Win_lock(MPI_LOCK_EXCLUSIVE, 0, 0, win); MPI_Accumulate(&one, 1, MPI_INT, 0, rank, 1, MPI_INT, MPI_SUM, win); MPI_Get(val_array, 1, get_type, 0, 0, 1, get_type, win); MPI_Win_unlock(0, win); *value = 0; val_array[rank] = localvalue; for (i = 0; i < nprocs; i++) *value = *value + val_array[i]; localvalue++; } int compar(const void *a, const void *b) { return (*((int *) a) - *((int *) b)); } mpi-testsuite-3.2+dfsg/rma/rma-contig.c0000644000175000017500000001120512620254305017342 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2013 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include #include #define MAX_DATA_SIZE (1024*128*16) #define MAX_NUM_ITERATIONS (8192*4) #define MIN_NUM_ITERATIONS 8 #define NUM_WARMUP_ITER 1 const int verbose = 0; static int rank; void run_test(int lock_mode, int lock_assert) { int nproc, test_iter, target_rank, data_size; int *buf, *win_buf; MPI_Win win; MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); if (rank == 0 && verbose) { printf("Starting one-sided contiguous performance test with %d processes\n", nproc); printf("Synchronization mode: "); switch (lock_mode) { case MPI_LOCK_EXCLUSIVE: printf("Exclusive lock"); break; case MPI_LOCK_SHARED: printf("Shared lock"); break; default: printf("Unknown lock"); break; } if (lock_assert & MPI_MODE_NOCHECK) printf(", MPI_MODE_NOCHECK"); printf("\n"); } MPI_Alloc_mem(MAX_DATA_SIZE, MPI_INFO_NULL, &buf); MPI_Alloc_mem(MAX_DATA_SIZE, MPI_INFO_NULL, &win_buf); memset(buf, rank, MAX_DATA_SIZE); memset(win_buf, rank, MAX_DATA_SIZE); MPI_Win_create(win_buf, MAX_DATA_SIZE, 1, MPI_INFO_NULL, MPI_COMM_WORLD, &win); if (rank == 0 && verbose) printf("%12s %12s %12s %12s %12s %12s %12s %12s\n", "Trg. Rank", "Xfer Size", "Get (usec)", "Put (usec)", "Acc (usec)", "Get (MiB/s)", "Put (MiB/s)", "Acc (MiB/s)"); for (target_rank = 0; rank == 0 && target_rank < nproc; target_rank++) { for (data_size = sizeof(double); data_size <= MAX_DATA_SIZE; data_size *= 2) { double t_get, t_put, t_acc; int num_iter = MAX_NUM_ITERATIONS; /* Scale the number of iterations by log_2 of the data size, so * that we run each test for a reasonable amount of time. */ { int t = data_size, my_log2 = 0; while (t >>= 1) my_log2++; if (my_log2) num_iter = (num_iter / my_log2 < MIN_NUM_ITERATIONS) ? MIN_NUM_ITERATIONS : num_iter / my_log2; } for (test_iter = 0; test_iter < num_iter + NUM_WARMUP_ITER; test_iter++) { if (test_iter == NUM_WARMUP_ITER) t_get = MPI_Wtime(); MPI_Win_lock(lock_mode, target_rank, lock_assert, win); MPI_Get(buf, data_size, MPI_BYTE, target_rank, 0, data_size, MPI_BYTE, win); MPI_Win_unlock(target_rank, win); } t_get = (MPI_Wtime() - t_get) / num_iter; for (test_iter = 0; test_iter < num_iter + NUM_WARMUP_ITER; test_iter++) { if (test_iter == NUM_WARMUP_ITER) t_put = MPI_Wtime(); MPI_Win_lock(lock_mode, target_rank, lock_assert, win); MPI_Put(buf, data_size, MPI_BYTE, target_rank, 0, data_size, MPI_BYTE, win); MPI_Win_unlock(target_rank, win); } t_put = (MPI_Wtime() - t_put) / num_iter; for (test_iter = 0; test_iter < num_iter + NUM_WARMUP_ITER; test_iter++) { if (test_iter == NUM_WARMUP_ITER) t_acc = MPI_Wtime(); MPI_Win_lock(lock_mode, target_rank, lock_assert, win); MPI_Accumulate(buf, data_size / sizeof(int), MPI_INT, target_rank, 0, data_size / sizeof(int), MPI_INT, MPI_SUM, win); MPI_Win_unlock(target_rank, win); } t_acc = (MPI_Wtime() - t_acc) / num_iter; if (rank == 0 && verbose) printf("%12d %12d %12.3f %12.3f %12.3f %12.3f %12.3f %12.3f\n", target_rank, data_size, t_get * 1.0e6, t_put * 1.0e6, t_acc * 1.0e6, data_size / (1024.0 * 1024.0) / t_get, data_size / (1024.0 * 1024.0) / t_put, data_size / (1024.0 * 1024.0) / t_acc); } } MPI_Barrier(MPI_COMM_WORLD); MPI_Win_free(&win); MPI_Free_mem(win_buf); MPI_Free_mem(buf); } int main(int argc, char **argv) { MPI_Init(&argc, &argv); run_test(MPI_LOCK_EXCLUSIVE, 0); run_test(MPI_LOCK_EXCLUSIVE, MPI_MODE_NOCHECK); run_test(MPI_LOCK_SHARED, 0); run_test(MPI_LOCK_SHARED, MPI_MODE_NOCHECK); MPI_Finalize(); if (rank == 0) printf(" No Errors\n"); return 0; } mpi-testsuite-3.2+dfsg/rma/win_shared_create.c0000644000175000017500000001026312620254305020753 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include #include "mpitest.h" #define ELEM_PER_PROC 4 int local_buf[ELEM_PER_PROC]; const int verbose = 0; int main(int argc, char **argv) { int i, rank, nproc; int shm_rank, shm_nproc; MPI_Aint size; int errors = 0, all_errors = 0; int **bases = NULL, *my_base = NULL; int disp_unit; MPI_Win shm_win = MPI_WIN_NULL, win = MPI_WIN_NULL; MPI_Comm shm_comm = MPI_COMM_NULL; MPI_Group shm_group = MPI_GROUP_NULL, world_group = MPI_GROUP_NULL; int dst_shm_rank, dst_world_rank; MPI_Info create_info = MPI_INFO_NULL; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Comm_split_type(MPI_COMM_WORLD, MPI_COMM_TYPE_SHARED, rank, MPI_INFO_NULL, &shm_comm); MPI_Comm_rank(shm_comm, &shm_rank); MPI_Comm_size(shm_comm, &shm_nproc); /* Platform does not support shared memory, just return. */ if (shm_nproc < 2) { goto exit; } /* Specify the last process in the node as the target process */ dst_shm_rank = shm_nproc - 1; MPI_Comm_group(shm_comm, &shm_group); MPI_Comm_group(MPI_COMM_WORLD, &world_group); MPI_Group_translate_ranks(shm_group, 1, &dst_shm_rank, world_group, &dst_world_rank); bases = calloc(shm_nproc, sizeof(int *)); /* Allocate shm window among local processes, then create a global window with * those shm window buffers */ MPI_Win_allocate_shared(sizeof(int) * ELEM_PER_PROC, sizeof(int), MPI_INFO_NULL, shm_comm, &my_base, &shm_win); if (verbose) printf("%d -- allocate shared: my_base = %p, absolute base\n", shm_rank, my_base); for (i = 0; i < shm_nproc; i++) { MPI_Win_shared_query(shm_win, i, &size, &disp_unit, &bases[i]); if (verbose) printf("%d -- shared query: base[%d]=%p, size %ld, unit %d\n", shm_rank, i, bases[i], size, disp_unit); } #ifdef USE_INFO_ALLOC_SHM MPI_Info_create(&create_info); MPI_Info_set(create_info, "alloc_shm", "true"); #else create_info = MPI_INFO_NULL; #endif /* Reset data */ for (i = 0; i < ELEM_PER_PROC; i++) { my_base[i] = 0; local_buf[i] = i + 1; } MPI_Win_create(my_base, sizeof(int) * ELEM_PER_PROC, sizeof(int), create_info, MPI_COMM_WORLD, &win); /* Do RMA through global window, then check value through shared window */ MPI_Win_lock_all(0, win); MPI_Win_lock_all(0, shm_win); if (shm_rank == 0) { MPI_Put(&local_buf[0], 1, MPI_INT, dst_world_rank, 0, 1, MPI_INT, win); MPI_Put(&local_buf[ELEM_PER_PROC - 1], 1, MPI_INT, dst_world_rank, ELEM_PER_PROC - 1, 1, MPI_INT, win); MPI_Win_flush(dst_world_rank, win); } MPI_Win_sync(shm_win); MPI_Barrier(shm_comm); MPI_Win_sync(shm_win); if (bases[dst_shm_rank][0] != local_buf[0]) { errors++; printf("%d -- Got %d at rank %d index %d, expected %d\n", rank, bases[dst_shm_rank][0], dst_shm_rank, 0, local_buf[0]); } if (bases[dst_shm_rank][ELEM_PER_PROC - 1] != local_buf[ELEM_PER_PROC - 1]) { errors++; printf("%d -- Got %d at rank %d index %d, expected %d\n", rank, bases[dst_shm_rank][ELEM_PER_PROC - 1], dst_shm_rank, ELEM_PER_PROC - 1, local_buf[ELEM_PER_PROC - 1]); } MPI_Win_unlock_all(shm_win); MPI_Win_unlock_all(win); MPI_Reduce(&errors, &all_errors, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); MPI_Win_free(&win); MPI_Win_free(&shm_win); exit: if (rank == 0 && all_errors == 0) printf(" No Errors\n"); if (create_info != MPI_INFO_NULL) MPI_Info_free(&create_info); if (shm_comm != MPI_COMM_NULL) MPI_Comm_free(&shm_comm); if (shm_group != MPI_GROUP_NULL) MPI_Group_free(&shm_group); if (world_group != MPI_GROUP_NULL) MPI_Group_free(&world_group); MPI_Finalize(); if (bases) free(bases); return 0; } mpi-testsuite-3.2+dfsg/rma/accfence1.c0000644000175000017500000000723312620254305017120 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Accumulate/Replace with Fence"; */ int main(int argc, char *argv[]) { int errs = 0, err; int rank, size, source, dest; int minsize = 2, count; MPI_Comm comm; MPI_Win win; MPI_Aint extent; MTestDatatype sendtype, recvtype; MTest_Init(&argc, &argv); /* The following illustrates the use of the routines to * run through a selection of communicators and datatypes. * Use subsets of these for tests that do not involve combinations * of communicators, datatypes, and counts of datatypes */ while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; /* Determine the sender and receiver */ MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); source = 0; dest = size - 1; MTEST_DATATYPE_FOR_EACH_COUNT(count) { while (MTestGetDatatypes(&sendtype, &recvtype, count)) { /* Make sure that everyone has a recv buffer */ recvtype.InitBuf(&recvtype); MPI_Type_extent(recvtype.datatype, &extent); MPI_Win_create(recvtype.buf, recvtype.count * extent, (int) extent, MPI_INFO_NULL, comm, &win); MPI_Win_fence(0, win); if (rank == source) { sendtype.InitBuf(&sendtype); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Win_set_errhandler(win, MPI_ERRORS_RETURN); /* MPI_REPLACE on accumulate is almost the same * as MPI_Put; the only difference is in the * handling of overlapping accumulate operations, * which are not tested here */ err = MPI_Accumulate(sendtype.buf, sendtype.count, sendtype.datatype, dest, 0, recvtype.count, recvtype.datatype, MPI_REPLACE, win); if (err) { errs++; if (errs < 10) { printf("Accumulate types: send %s, recv %s\n", MTestGetDatatypeName(&sendtype), MTestGetDatatypeName(&recvtype)); MTestPrintError(err); } } err = MPI_Win_fence(0, win); if (err) { errs++; if (errs < 10) { MTestPrintError(err); } } } else if (rank == dest) { MPI_Win_fence(0, win); /* This should have the same effect, in terms of * transfering data, as a send/recv pair */ err = MTestCheckRecv(0, &recvtype); if (err) { errs += err; } } else { MPI_Win_fence(0, win); } MPI_Win_free(&win); MTestFreeDatatype(&sendtype); MTestFreeDatatype(&recvtype); } } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/acc-loc.c0000644000175000017500000000746512620254305016620 0ustar mbanckmbanck/* * (C) 2006 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. * * Portions of this code were written by Intel Corporation. * Copyright (C) 2011-2012 Intel Corporation. Intel provides this material * to Argonne National Laboratory subject to Software Grant and Corporate * Contributor License Agreement dated February 8, 2012. */ #include #include #include #include "mpitest.h" typedef struct { int val; int loc; } twoint_t; static int errors = 0; int main(int argc, char **argv) { int me, nproc; twoint_t *data = NULL; twoint_t mine; MPI_Win win; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &me); MPI_Comm_size(MPI_COMM_WORLD, &nproc); if (me == 0) { MPI_Alloc_mem(sizeof(twoint_t), MPI_INFO_NULL, &data); } MPI_Win_create(data, me == 0 ? sizeof(twoint_t) : 0, 1, MPI_INFO_NULL, MPI_COMM_WORLD, &win); MPI_Win_fence(MPI_MODE_NOPRECEDE, win); /* All processes perform MAXLOC and MINLOC operations on a 2INT on rank 0. * The loc is the origin process' rank, and the value is (nproc-me). In * the case of MAXLOC, rank 0 should win and in the case of MINLOC, rank * nproc-1 should win. */ /** Test MAXLOC **/ if (me == 0) { data->val = 0; data->loc = -1; } MPI_Win_fence(0, win); mine.loc = me; mine.val = nproc - me; MPI_Accumulate(&mine, 1, MPI_2INT, 0, 0, 1, MPI_2INT, MPI_MAXLOC, win); MPI_Win_fence(0, win); if (me == 0 && (data->loc != 0 || data->val != nproc)) { errors++; printf("Expected: { loc = %d, val = %d } Actual: { loc = %d, val = %d }\n", 0, nproc, data->loc, data->val); } /** Test MINLOC **/ if (me == 0) { data->val = nproc; data->loc = -1; } MPI_Win_fence(0, win); mine.loc = me; mine.val = nproc - me; MPI_Accumulate(&mine, 1, MPI_2INT, 0, 0, 1, MPI_2INT, MPI_MINLOC, win); MPI_Win_fence(0, win); if (me == 0 && (data->loc != nproc - 1 || data->val != 1)) { errors++; printf("Expected: { loc = %d, val = %d } Actual: { loc = %d, val = %d }\n", nproc - 1, 1, data->loc, data->val); } /* All processes perform MAXLOC and MINLOC operations on a 2INT on rank 0. * The loc is the origin process' rank, and the value is 1. In both cases, * rank 0 should win because the values are equal and it has the lowest * loc. */ /** Test MAXLOC **/ if (me == 0) { data->val = 0; data->loc = -1; } MPI_Win_fence(MPI_MODE_NOSUCCEED, win); mine.loc = me; mine.val = 1; MPI_Win_lock(MPI_LOCK_SHARED, 0, MPI_MODE_NOCHECK, win); MPI_Accumulate(&mine, 1, MPI_2INT, 0, 0, 1, MPI_2INT, MPI_MAXLOC, win); MPI_Win_unlock(0, win); MPI_Barrier(MPI_COMM_WORLD); if (me == 0 && (data->loc != 0 || data->val != 1)) { errors++; printf("Expected: { loc = %d, val = %d } Actual: { loc = %d, val = %d }\n", 0, 1, data->loc, data->val); } MPI_Win_fence(MPI_MODE_NOPRECEDE, win); /** Test MINLOC **/ if (me == 0) { data->val = nproc; data->loc = -1; } MPI_Win_fence(MPI_MODE_NOSUCCEED, win); mine.loc = me; mine.val = 1; MPI_Win_lock(MPI_LOCK_SHARED, 0, MPI_MODE_NOCHECK, win); MPI_Accumulate(&mine, 1, MPI_2INT, 0, 0, 1, MPI_2INT, MPI_MINLOC, win); MPI_Win_unlock(0, win); MPI_Barrier(MPI_COMM_WORLD); if (me == 0 && (data->loc != 0 || data->val != 1)) { errors++; printf("Expected: { loc = %d, val = %d } Actual: { loc = %d, val = %d }\n", 0, 1, data->loc, data->val); } MPI_Win_free(&win); if (me == 0) { MPI_Free_mem(data); } MTest_Finalize(errors); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/test1_dt.c0000644000175000017500000000475412620254305017044 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "stdio.h" #include "mpitest.h" #include "squelch.h" /* tests a series of puts, gets, and accumulate on 2 processes using fence */ /* Same as test1.c but uses derived datatypes to receive data */ #define SIZE 100 int main(int argc, char *argv[]) { int rank, nprocs, A[SIZE], B[SIZE], i; MPI_Comm CommDeuce; MPI_Win win; MPI_Datatype contig_2ints; int errs = 0; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (nprocs < 2) { printf("Run this program with 2 or more processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_split(MPI_COMM_WORLD, (rank < 2), rank, &CommDeuce); if (rank < 2) { if (rank == 0) { for (i = 0; i < SIZE; i++) A[i] = B[i] = i; } else { for (i = 0; i < SIZE; i++) { A[i] = (-3) * i; B[i] = (-4) * i; } } MPI_Type_contiguous(2, MPI_INT, &contig_2ints); MPI_Type_commit(&contig_2ints); MPI_Win_create(B, SIZE * sizeof(int), sizeof(int), MPI_INFO_NULL, CommDeuce, &win); MPI_Win_fence(0, win); if (rank == 0) { for (i = 0; i < SIZE - 2; i += 2) MPI_Put(A + i, 2, MPI_INT, 1, i, 1, contig_2ints, win); } else { for (i = 0; i < SIZE - 2; i += 2) MPI_Get(A + i, 2, MPI_INT, 0, i, 1, contig_2ints, win); MPI_Accumulate(A + SIZE - 2, 2, MPI_INT, 0, SIZE - 2, 1, contig_2ints, MPI_SUM, win); } MPI_Win_fence(0, win); if (rank == 1) { for (i = 0; i < SIZE - 2; i++) { if (A[i] != B[i]) { SQUELCH(printf("Put/Get Error: A[i]=%d, B[i]=%d\n", A[i], B[i]);); errs++; } } } else { if (B[SIZE - 1] != SIZE - 1 - 3 * (SIZE - 1)) { SQUELCH(printf ("Accumulate Error: B[SIZE-1] is %d, should be %d\n", B[SIZE - 1], SIZE - 1 - 3 * (SIZE - 1));); errs++; } } MPI_Win_free(&win); MPI_Type_free(&contig_2ints); } MPI_Comm_free(&CommDeuce); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/flush.c0000644000175000017500000000452312620254305016430 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include "mpitest.h" #define ITER 100 int main(int argc, char *argv[]) { int rank, nproc, i; int errors = 0, all_errors = 0; int *buf; MPI_Win window; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); if (nproc < 2) { if (rank == 0) printf("Error: must be run with two or more processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } /** Create using MPI_Win_create() **/ if (rank == 0) { MPI_Alloc_mem(sizeof(int), MPI_INFO_NULL, &buf); *buf = nproc - 1; } else buf = NULL; MPI_Win_create(buf, sizeof(int) * (rank == 0), 1, MPI_INFO_NULL, MPI_COMM_WORLD, &window); /* Test flush of an empty epoch */ MPI_Win_lock(MPI_LOCK_SHARED, 0, 0, window); MPI_Win_flush_all(window); MPI_Win_unlock(0, window); MPI_Barrier(MPI_COMM_WORLD); /* Test third-party communication, through rank 0. */ MPI_Win_lock(MPI_LOCK_SHARED, 0, 0, window); for (i = 0; i < ITER; i++) { int val = -1, exp = -1; /* Processes form a ring. Process 0 starts first, then passes a token * to the right. Each process, in turn, performs third-party * communication via process 0's window. */ if (rank > 0) { MPI_Recv(NULL, 0, MPI_BYTE, rank - 1, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); } MPI_Get_accumulate(&rank, 1, MPI_INT, &val, 1, MPI_INT, 0, 0, 1, MPI_INT, MPI_REPLACE, window); MPI_Win_flush(0, window); exp = (rank + nproc - 1) % nproc; if (val != exp) { printf("%d - Got %d, expected %d\n", rank, val, exp); errors++; } if (rank < nproc - 1) { MPI_Send(NULL, 0, MPI_BYTE, rank + 1, 0, MPI_COMM_WORLD); } MPI_Barrier(MPI_COMM_WORLD); } MPI_Win_unlock(0, window); MPI_Win_free(&window); if (buf) MPI_Free_mem(buf); MPI_Reduce(&errors, &all_errors, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (rank == 0 && all_errors == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/lockcontention2.c0000644000175000017500000002261212620254305020421 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2010 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "stdio.h" #include "stdlib.h" #include "mpitest.h" /* * Tests for lock contention, including special cases within the MPICH code * (any MPI implementation should pass these tests; in the MPICH case, our * coverage analysis showed that the lockcontention.c test was not covering * all cases, and in fact, this test revealed a bug in the code). * * In all of these tests, each process writes (or accesses) the values * rank + i*size_of_world for NELM times. * * This test strives to avoid operations not strictly permitted by MPI RMA, * for example, it doesn't target the same locations with multiple put/get * calls in the same access epoch. */ #define NELM 200 #define NBLOCK 10 #define MAX_ERRS_REPORT 10 /* * Each process writes data into the rmabuf on the process with target rank * trank. The final result in rmabuf are the consecutive integers starting * from 0. Each process, however, does not write a consecutive block. * Instead, they write these locations: * * for i=0,...,NELM-1 * for j=0,...,NBLOCK-1 * j + NBLOCK * (rank + i * wsize) * * The value written is the location. * * In many cases, multiple RMA operations are needed. Where these must not * overlap, the above pattern is replicated at NBLOCK*NELM*wsize. * (NBLOCK is either 1 or NBLOCK in the code below, depending on use) */ static int toterrs = 0; int testValues(int, int, int, int *, const char *); int main(int argc, char *argv[]) { int rank, wsize, i, j, cnt; int *rmabuf, *localbuf, *localbuf2, *vals; MPI_Win win; int trank = 0; int windowsize; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &wsize); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (wsize < 2) { fprintf(stderr, "Run this program with at least 2 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } windowsize = (2 * NBLOCK + 2) * NELM * wsize; rmabuf = (int *) malloc(windowsize * sizeof(int)); localbuf = (int *) malloc(NELM * sizeof(int)); localbuf2 = (int *) malloc(NELM * NBLOCK * sizeof(int)); vals = (int *) malloc(NELM * sizeof(int)); /* * Initialize the buffers */ for (i = 0; i < NELM; i++) { localbuf[i] = rank + i * wsize; } cnt = 0; for (i = 0; i < NELM; i++) { for (j = 0; j < NBLOCK; j++) { localbuf2[cnt++] = j + NBLOCK * (rank + i * wsize); } } for (i = 0; i < windowsize; i++) { rmabuf[i] = -1; } /* Create the window */ MPI_Win_create(rmabuf, windowsize * sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &win); /* Multiple puts, with contention at trank */ MPI_Barrier(MPI_COMM_WORLD); for (i = 0; i < NELM; i++) { MPI_Win_lock(MPI_LOCK_EXCLUSIVE, trank, 0, win); MPI_Put(&localbuf[i], 1, MPI_INT, trank, rank + i * wsize, 1, MPI_INT, win); MPI_Put(&localbuf[i], 1, MPI_INT, trank, rank + (i + NELM) * wsize, 1, MPI_INT, win); MPI_Win_unlock(trank, win); } MPI_Barrier(MPI_COMM_WORLD); if (rank == trank) { MPI_Win_lock(MPI_LOCK_EXCLUSIVE, trank, 0, win); toterrs += testValues(1, NELM, wsize, rmabuf, "Multiple puts (1)"); toterrs += testValues(1, NELM, wsize, rmabuf + wsize * NELM, "Multiple puts (2)"); MPI_Win_unlock(trank, win); } MPI_Barrier(MPI_COMM_WORLD); /* Reinit the rmabuf */ for (i = 0; i < windowsize; i++) { rmabuf[i] = -1; } MPI_Barrier(MPI_COMM_WORLD); /* Single put with contention */ trank = 0; for (i = 0; i < NELM; i++) { MPI_Win_lock(MPI_LOCK_EXCLUSIVE, trank, 0, win); MPI_Put(&localbuf[i], 1, MPI_INT, trank, rank + i * wsize, 1, MPI_INT, win); MPI_Win_unlock(trank, win); } MPI_Barrier(MPI_COMM_WORLD); if (rank == trank) { MPI_Win_lock(MPI_LOCK_EXCLUSIVE, trank, 0, win); toterrs += testValues(1, NELM, wsize, rmabuf, "Single put"); MPI_Win_unlock(trank, win); } /* Reinit the rmabuf */ for (i = 0; i < windowsize; i++) { rmabuf[i] = -1; } /* Longer puts with contention at trank */ MPI_Barrier(MPI_COMM_WORLD); for (i = 0; i < NELM; i++) { MPI_Win_lock(MPI_LOCK_EXCLUSIVE, trank, 0, win); if (rank != trank) { MPI_Put(&localbuf2[i * NBLOCK], NBLOCK, MPI_INT, trank, NELM * wsize + NBLOCK * (rank + i * wsize), NBLOCK, MPI_INT, win); MPI_Put(&localbuf2[i * NBLOCK], NBLOCK, MPI_INT, trank, NELM * wsize + NBLOCK * (rank + (i + NELM) * wsize), NBLOCK, MPI_INT, win); } MPI_Put(&localbuf[i], 1, MPI_INT, trank, rank + i * wsize, 1, MPI_INT, win); MPI_Win_unlock(trank, win); } MPI_Barrier(MPI_COMM_WORLD); if (rank == trank) { /* For simplicity in testing, set the values that rank==trank * would have set. */ for (i = 0; i < NELM; i++) { for (j = 0; j < NBLOCK; j++) { rmabuf[NELM * wsize + NBLOCK * (trank + i * wsize) + j] = j + NBLOCK * (trank + i * wsize); rmabuf[NELM * wsize + NBLOCK * (trank + (i + NELM) * wsize) + j] = j + NBLOCK * (trank + i * wsize); } } MPI_Win_lock(MPI_LOCK_EXCLUSIVE, trank, 0, win); toterrs += testValues(1, NELM, wsize, rmabuf, "Long puts (1)"); toterrs += testValues(NBLOCK, NELM, wsize, rmabuf + NELM * wsize, "Long puts(2)"); toterrs += testValues(NBLOCK, NELM, wsize, rmabuf + NELM * wsize * (1 + NBLOCK), "Long puts(3)"); MPI_Win_unlock(trank, win); } /* Reinit the rmabuf */ for (i = 0; i < windowsize; i++) { rmabuf[i] = -1; } for (i = 0; i < NELM; i++) vals[i] = -2; /* Put mixed with Get */ MPI_Barrier(MPI_COMM_WORLD); for (i = 0; i < NELM; i++) { MPI_Win_lock(MPI_LOCK_EXCLUSIVE, trank, 0, win); if (rank != trank) { MPI_Put(&localbuf2[i], NBLOCK, MPI_INT, trank, NELM * wsize + NBLOCK * (rank + i * wsize), NBLOCK, MPI_INT, win); MPI_Put(&localbuf[i], 1, MPI_INT, trank, rank + i * wsize, 1, MPI_INT, win); } else { MPI_Get(&vals[i], 1, MPI_INT, trank, i, 1, MPI_INT, win); } MPI_Win_unlock(trank, win); } MPI_Barrier(MPI_COMM_WORLD); if (rank == trank) { /* Just test the Get */ for (i = 0; i < wsize; i++) { if (i == trank) { if (vals[i] != -1) { toterrs++; if (toterrs < MAX_ERRS_REPORT) { printf("put/get: vals[%d] = %d, expected -1\n", i, vals[i]); } } } else if (vals[i] != i && vals[i] != -1) { toterrs++; if (toterrs < MAX_ERRS_REPORT) { printf("put/get: vals[%d] = %d, expected -1 or %d\n", i, vals[i], i); } } } } /* Contention only with get */ for (i = 0; i < windowsize; i++) { rmabuf[i] = -i; } for (i = 0; i < NELM; i++) vals[i] = -2; MPI_Barrier(MPI_COMM_WORLD); for (i = 0; i < NELM; i++) { MPI_Win_lock(MPI_LOCK_EXCLUSIVE, trank, 0, win); MPI_Get(&vals[i], 1, MPI_INT, trank, i, 1, MPI_INT, win); MPI_Win_unlock(trank, win); } MPI_Barrier(MPI_COMM_WORLD); if (rank == trank) { for (i = 0; i < NELM; i++) { if (vals[i] != -i) { toterrs++; if (toterrs < MAX_ERRS_REPORT) { printf("single get: vals[%d] = %d, expected %d\n", i, vals[i], -i); } } } } /* Contention with accumulate */ MPI_Barrier(MPI_COMM_WORLD); for (i = 0; i < NELM * wsize; i++) { rmabuf[i] = 0; } MPI_Barrier(MPI_COMM_WORLD); for (i = 0; i < NELM; i++) { MPI_Win_lock(MPI_LOCK_EXCLUSIVE, trank, 0, win); MPI_Accumulate(&localbuf[i], 1, MPI_INT, trank, rank + i * wsize, 1, MPI_INT, MPI_SUM, win); MPI_Accumulate(&localbuf[i], 1, MPI_INT, trank, rank + i * wsize, 1, MPI_INT, MPI_SUM, win); MPI_Win_unlock(trank, win); } MPI_Barrier(MPI_COMM_WORLD); if (rank == trank) { MPI_Win_lock(MPI_LOCK_EXCLUSIVE, trank, 0, win); for (i = 0; i < NELM * wsize; i++) { if (rmabuf[i] != 2 * i) { toterrs++; if (toterrs < MAX_ERRS_REPORT) { printf("2 accumulate: rmabuf[%d] = %d, expected %d\n", i, rmabuf[i], 2 * i); } } } MPI_Win_unlock(trank, win); } MPI_Win_free(&win); free(rmabuf); free(localbuf); free(localbuf2); free(vals); MTest_Finalize(toterrs); MPI_Finalize(); return 0; } /* Test the values in the rmabuf against the expected values. Return the number of errors */ int testValues(int nb, int nelm, int wsize, int *rmabuf, const char *msg) { int i, errs = 0; for (i = 0; i < nb * nelm * wsize; i++) { if (rmabuf[i] != i) { if (toterrs + errs < MAX_ERRS_REPORT) { printf("%s:rmabuf[%d] = %d expected %d\n", msg, i, rmabuf[i], i); } errs++; } } return errs; } mpi-testsuite-3.2+dfsg/rma/linked_list_fop.c0000644000175000017500000001764412620254305020464 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* MPI-3 distributed linked list construction example * -------------------------------------------------- * * Construct a distributed shared linked list using proposed MPI-3 dynamic * windows. Initially process 0 creates the head of the list, attaches it to * the window, and broadcasts the pointer to all processes. All processes then * concurrently append N new elements to the list. When a process attempts to * attach its element to the tail of list it may discover that its tail pointer * is stale and it must chase ahead to the new tail before the element can be * attached. */ #include #include #include #include #include "mpitest.h" #ifdef HAVE_UNISTD_H #include #endif #define NUM_ELEMS 32 #define NPROBE 100 #define ELEM_PER_ROW 16 /* Linked list pointer */ typedef struct { int rank; MPI_Aint disp; } llist_ptr_t; /* Linked list element */ typedef struct { int value; llist_ptr_t next; } llist_elem_t; static const llist_ptr_t nil = { -1, (MPI_Aint) MPI_BOTTOM }; static const int verbose = 0; /* List of locally allocated list elements. */ static llist_elem_t **my_elems = NULL; static int my_elems_size = 0; static int my_elems_count = 0; /* Allocate a new shared linked list element */ MPI_Aint alloc_elem(int value, MPI_Win win) { MPI_Aint disp; llist_elem_t *elem_ptr; /* Allocate the new element and register it with the window */ MPI_Alloc_mem(sizeof(llist_elem_t), MPI_INFO_NULL, &elem_ptr); elem_ptr->value = value; elem_ptr->next = nil; MPI_Win_attach(win, elem_ptr, sizeof(llist_elem_t)); /* Add the element to the list of local elements so we can free it later. */ if (my_elems_size == my_elems_count) { my_elems_size += 100; my_elems = realloc(my_elems, my_elems_size * sizeof(void *)); } my_elems[my_elems_count] = elem_ptr; my_elems_count++; MPI_Get_address(elem_ptr, &disp); return disp; } int main(int argc, char **argv) { int procid, nproc, i; MPI_Win llist_win; llist_ptr_t head_ptr, tail_ptr; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &procid); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Win_create_dynamic(MPI_INFO_NULL, MPI_COMM_WORLD, &llist_win); /* Process 0 creates the head node */ if (procid == 0) head_ptr.disp = alloc_elem(-1, llist_win); /* Broadcast the head pointer to everyone */ head_ptr.rank = 0; MPI_Bcast(&head_ptr.disp, 1, MPI_AINT, 0, MPI_COMM_WORLD); tail_ptr = head_ptr; /* All processes concurrently append NUM_ELEMS elements to the list */ for (i = 0; i < NUM_ELEMS; i++) { llist_ptr_t new_elem_ptr; int success; /* Create a new list element and register it with the window */ new_elem_ptr.rank = procid; new_elem_ptr.disp = alloc_elem(procid, llist_win); /* Append the new node to the list. This might take multiple attempts if * others have already appended and our tail pointer is stale. */ do { llist_ptr_t next_tail_ptr = nil; MPI_Win_lock(MPI_LOCK_SHARED, tail_ptr.rank, MPI_MODE_NOCHECK, llist_win); MPI_Compare_and_swap((void *) &new_elem_ptr.rank, (void *) &nil.rank, (void *) &next_tail_ptr.rank, MPI_INT, tail_ptr.rank, (MPI_Aint) & (((llist_elem_t *) tail_ptr.disp)->next.rank), llist_win); MPI_Win_unlock(tail_ptr.rank, llist_win); success = (next_tail_ptr.rank == nil.rank); if (success) { int i, flag; MPI_Aint result; MPI_Win_lock(MPI_LOCK_SHARED, tail_ptr.rank, MPI_MODE_NOCHECK, llist_win); MPI_Fetch_and_op(&new_elem_ptr.disp, &result, MPI_AINT, tail_ptr.rank, (MPI_Aint) & (((llist_elem_t *) tail_ptr.disp)->next.disp), MPI_REPLACE, llist_win); /* Note: accumulate is faster, since we don't need the result. Replacing with * Fetch_and_op to create a more complete test case. */ /* * MPI_Accumulate(&new_elem_ptr.disp, 1, MPI_AINT, tail_ptr.rank, * (MPI_Aint) &(((llist_elem_t*)tail_ptr.disp)->next.disp), 1, * MPI_AINT, MPI_REPLACE, llist_win); */ MPI_Win_unlock(tail_ptr.rank, llist_win); tail_ptr = new_elem_ptr; /* For implementations that use pt-to-pt messaging, force progress for other threads' * RMA operations. */ for (i = 0; i < NPROBE; i++) MPI_Iprobe(MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &flag, MPI_STATUS_IGNORE); } else { /* Tail pointer is stale, fetch the displacement. May take multiple tries * if it is being updated. */ do { MPI_Win_lock(MPI_LOCK_SHARED, tail_ptr.rank, MPI_MODE_NOCHECK, llist_win); MPI_Fetch_and_op(NULL, &next_tail_ptr.disp, MPI_AINT, tail_ptr.rank, (MPI_Aint) & (((llist_elem_t *) tail_ptr.disp)->next.disp), MPI_NO_OP, llist_win); MPI_Win_unlock(tail_ptr.rank, llist_win); } while (next_tail_ptr.disp == nil.disp); tail_ptr = next_tail_ptr; } } while (!success); } MPI_Barrier(MPI_COMM_WORLD); /* Traverse the list and verify that all processes inserted exactly the correct * number of elements. */ if (procid == 0) { int have_root = 0; int errors = 0; int *counts, count = 0; counts = (int *) malloc(sizeof(int) * nproc); assert(counts != NULL); for (i = 0; i < nproc; i++) counts[i] = 0; tail_ptr = head_ptr; /* Walk the list and tally up the number of elements inserted by each rank */ while (tail_ptr.disp != nil.disp) { llist_elem_t elem; MPI_Win_lock(MPI_LOCK_SHARED, tail_ptr.rank, MPI_MODE_NOCHECK, llist_win); MPI_Get(&elem, sizeof(llist_elem_t), MPI_BYTE, tail_ptr.rank, tail_ptr.disp, sizeof(llist_elem_t), MPI_BYTE, llist_win); MPI_Win_unlock(tail_ptr.rank, llist_win); tail_ptr = elem.next; /* This is not the root */ if (have_root) { assert(elem.value >= 0 && elem.value < nproc); counts[elem.value]++; count++; if (verbose) { int last_elem = tail_ptr.disp == nil.disp; printf("%2d%s", elem.value, last_elem ? "" : " -> "); if (count % ELEM_PER_ROW == 0 && !last_elem) printf("\n"); } } /* This is the root */ else { assert(elem.value == -1); have_root = 1; } } if (verbose) printf("\n\n"); /* Verify the counts we collected */ for (i = 0; i < nproc; i++) { int expected = NUM_ELEMS; if (counts[i] != expected) { printf("Error: Rank %d inserted %d elements, expected %d\n", i, counts[i], expected); errors++; } } printf("%s\n", errors == 0 ? " No Errors" : "FAIL"); free(counts); } MPI_Win_free(&llist_win); /* Free all the elements in the list */ for (; my_elems_count > 0; my_elems_count--) MPI_Free_mem(my_elems[my_elems_count - 1]); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/putfidx.c0000644000175000017500000000577012620254305016777 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" #ifdef HAVE_STDLIB_H #include #endif /* static char MTEST_Descrip[] = "Put with Fence for an indexed datatype"; */ int CheckMPIErr(int err); int main(int argc, char *argv[]) { int errs = 0, err; int i, rank, size, source, dest; int blksize, totsize; int *recvBuf = 0, *srcBuf = 0; MPI_Comm comm; MPI_Win win; MPI_Aint extent; MPI_Datatype originType; int counts[2]; int displs[2]; MTest_Init(&argc, &argv); /* Select the communicator and datatypes */ comm = MPI_COMM_WORLD; /* Create the datatype */ /* One MPI Implementation fails this test with sufficiently large * values of blksize - it appears to convert this type to an * incorrect contiguous move */ blksize = 2048; counts[0] = blksize; counts[1] = blksize; displs[0] = 0; displs[1] = blksize + 1; MPI_Type_indexed(2, counts, displs, MPI_INT, &originType); MPI_Type_commit(&originType); totsize = 2 * blksize; /* Determine the sender and receiver */ MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); source = 0; dest = size - 1; recvBuf = (int *) malloc(totsize * sizeof(int)); srcBuf = (int *) malloc((totsize + 1) * sizeof(int)); if (!recvBuf || !srcBuf) { fprintf(stderr, "Could not allocate buffers\n"); MPI_Abort(MPI_COMM_WORLD, 1); } /* Initialize the send and recv buffers */ for (i = 0; i < totsize; i++) { recvBuf[i] = -1; } for (i = 0; i < blksize; i++) { srcBuf[i] = i; srcBuf[blksize + 1 + i] = blksize + i; } srcBuf[blksize] = -1; MPI_Type_extent(MPI_INT, &extent); MPI_Win_create(recvBuf, totsize * extent, extent, MPI_INFO_NULL, comm, &win); MPI_Win_fence(0, win); if (rank == source) { /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Win_set_errhandler(win, MPI_ERRORS_RETURN); err = MPI_Put(srcBuf, 1, originType, dest, 0, totsize, MPI_INT, win); errs += CheckMPIErr(err); err = MPI_Win_fence(0, win); errs += CheckMPIErr(err); } else if (rank == dest) { MPI_Win_fence(0, win); for (i = 0; i < totsize; i++) { if (recvBuf[i] != i) { errs++; if (errs < 10) { printf("recvBuf[%d] = %d should = %d\n", i, recvBuf[i], i); } } } } else { MPI_Win_fence(0, win); } MPI_Type_free(&originType); MPI_Win_free(&win); free(recvBuf); free(srcBuf); MTest_Finalize(errs); MPI_Finalize(); return 0; } int CheckMPIErr(int err) { int rc = 0; if (err != MPI_SUCCESS) { MTestPrintError(err); rc = 1; } return rc; } mpi-testsuite-3.2+dfsg/rma/put_base.c0000644000175000017500000001122612620254305017107 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* One-Sided MPI 2-D Strided Put Test * * Author: James Dinan * Date : March, 2011 * * This code performs N strided put operations into a 2d patch of a shared * array. The array has dimensions [X, Y] and the subarray has dimensions * [SUB_X, SUB_Y] and begins at index [0, 0]. The input and output buffers are * specified using an MPI datatype. * * This test generates a datatype that is relative to an arbitrary base address * in memory and tests the RMA implementation's ability to perform the correct * transfer. */ #include #include #include #include #include "mpitest.h" #include "squelch.h" #define XDIM 1024 #define YDIM 1024 #define SUB_XDIM 1024 #define SUB_YDIM 1024 #define ITERATIONS 10 int main(int argc, char **argv) { int i, j, rank, nranks, peer, bufsize, errors; double *win_buf, *src_buf, *dst_buf; MPI_Win buf_win; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nranks); bufsize = XDIM * YDIM * sizeof(double); MPI_Alloc_mem(bufsize, MPI_INFO_NULL, &win_buf); /* Alloc_mem is not required for the origin buffers for RMA operations - * just for the Win_create memory */ MPI_Alloc_mem(bufsize, MPI_INFO_NULL, &src_buf); MPI_Alloc_mem(bufsize, MPI_INFO_NULL, &dst_buf); for (i = 0; i < XDIM * YDIM; i++) { *(win_buf + i) = 1.0 + rank; *(src_buf + i) = 1.0 + rank; } MPI_Win_create(win_buf, bufsize, 1, MPI_INFO_NULL, MPI_COMM_WORLD, &buf_win); peer = (rank + 1) % nranks; /* Perform ITERATIONS strided put operations */ for (i = 0; i < ITERATIONS; i++) { MPI_Aint idx_loc[SUB_YDIM]; int idx_rem[SUB_YDIM]; int blk_len[SUB_YDIM]; MPI_Datatype src_type, dst_type; void *base_ptr = dst_buf; MPI_Aint base_int; MPI_Get_address(base_ptr, &base_int); for (j = 0; j < SUB_YDIM; j++) { MPI_Get_address(&src_buf[j * XDIM], &idx_loc[j]); idx_loc[j] = idx_loc[j] - base_int; idx_rem[j] = j * XDIM * sizeof(double); blk_len[j] = SUB_XDIM * sizeof(double); } MPI_Type_create_hindexed(SUB_YDIM, blk_len, idx_loc, MPI_BYTE, &src_type); MPI_Type_create_indexed_block(SUB_YDIM, SUB_XDIM * sizeof(double), idx_rem, MPI_BYTE, &dst_type); MPI_Type_commit(&src_type); MPI_Type_commit(&dst_type); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, peer, 0, buf_win); MPI_Put(base_ptr, 1, src_type, peer, 0, 1, dst_type, buf_win); MPI_Win_unlock(peer, buf_win); MPI_Type_free(&src_type); MPI_Type_free(&dst_type); } MPI_Barrier(MPI_COMM_WORLD); /* Verify that the results are correct */ MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, buf_win); errors = 0; for (i = 0; i < SUB_XDIM; i++) { for (j = 0; j < SUB_YDIM; j++) { const double actual = *(win_buf + i + j * XDIM); const double expected = (1.0 + ((rank + nranks - 1) % nranks)); if (actual - expected > 1e-10) { SQUELCH(printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual);); errors++; fflush(stdout); } } } for (i = SUB_XDIM; i < XDIM; i++) { for (j = 0; j < SUB_YDIM; j++) { const double actual = *(win_buf + i + j * XDIM); const double expected = 1.0 + rank; if (actual - expected > 1e-10) { SQUELCH(printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual);); errors++; fflush(stdout); } } } for (i = 0; i < XDIM; i++) { for (j = SUB_YDIM; j < YDIM; j++) { const double actual = *(win_buf + i + j * XDIM); const double expected = 1.0 + rank; if (actual - expected > 1e-10) { SQUELCH(printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual);); errors++; fflush(stdout); } } } MPI_Win_unlock(rank, buf_win); MPI_Win_free(&buf_win); MPI_Free_mem(win_buf); MPI_Free_mem(src_buf); MPI_Free_mem(dst_buf); MTest_Finalize(errors); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/put_bottom.c0000644000175000017500000001052512620254305017502 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* One-Sided MPI 2-D Strided Put Test * * Author: James Dinan * Date : March, 2011 * * This code performs N strided put operations into a 2d patch of a shared * array. The array has dimensions [X, Y] and the subarray has dimensions * [SUB_X, SUB_Y] and begins at index [0, 0]. The input and output buffers are * specified using an MPI datatype. * * This test generates a datatype that is relative to MPI_BOTTOM and tests the * RMA implementation's ability to perform the correct transfer. */ #include #include #include #include "mpitest.h" #include "squelch.h" #define XDIM 1024 #define YDIM 1024 #define SUB_XDIM 1024 #define SUB_YDIM 1024 #define ITERATIONS 10 int main(int argc, char **argv) { int i, j, rank, nranks, peer, bufsize, errors; double *win_buf, *src_buf, *dst_buf; MPI_Win buf_win; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nranks); bufsize = XDIM * YDIM * sizeof(double); MPI_Alloc_mem(bufsize, MPI_INFO_NULL, &win_buf); MPI_Alloc_mem(bufsize, MPI_INFO_NULL, &src_buf); MPI_Alloc_mem(bufsize, MPI_INFO_NULL, &dst_buf); for (i = 0; i < XDIM * YDIM; i++) { *(win_buf + i) = 1.0 + rank; *(src_buf + i) = 1.0 + rank; } MPI_Win_create(win_buf, bufsize, 1, MPI_INFO_NULL, MPI_COMM_WORLD, &buf_win); peer = (rank + 1) % nranks; /* Perform ITERATIONS strided put operations */ for (i = 0; i < ITERATIONS; i++) { MPI_Aint idx_loc[SUB_YDIM]; int idx_rem[SUB_YDIM]; int blk_len[SUB_YDIM]; MPI_Datatype src_type, dst_type; for (j = 0; j < SUB_YDIM; j++) { MPI_Get_address(&src_buf[j * XDIM], &idx_loc[j]); idx_rem[j] = j * XDIM * sizeof(double); blk_len[j] = SUB_XDIM * sizeof(double); } MPI_Type_create_hindexed(SUB_YDIM, blk_len, idx_loc, MPI_BYTE, &src_type); MPI_Type_create_indexed_block(SUB_YDIM, SUB_XDIM * sizeof(double), idx_rem, MPI_BYTE, &dst_type); MPI_Type_commit(&src_type); MPI_Type_commit(&dst_type); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, peer, 0, buf_win); MPI_Put(MPI_BOTTOM, 1, src_type, peer, 0, 1, dst_type, buf_win); MPI_Win_unlock(peer, buf_win); MPI_Type_free(&src_type); MPI_Type_free(&dst_type); } MPI_Barrier(MPI_COMM_WORLD); /* Verify that the results are correct */ MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, buf_win); errors = 0; for (i = 0; i < SUB_XDIM; i++) { for (j = 0; j < SUB_YDIM; j++) { const double actual = *(win_buf + i + j * XDIM); const double expected = (1.0 + ((rank + nranks - 1) % nranks)); if (actual - expected > 1e-10) { SQUELCH(printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual);); errors++; fflush(stdout); } } } for (i = SUB_XDIM; i < XDIM; i++) { for (j = 0; j < SUB_YDIM; j++) { const double actual = *(win_buf + i + j * XDIM); const double expected = 1.0 + rank; if (actual - expected > 1e-10) { SQUELCH(printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual);); errors++; fflush(stdout); } } } for (i = 0; i < XDIM; i++) { for (j = SUB_YDIM; j < YDIM; j++) { const double actual = *(win_buf + i + j * XDIM); const double expected = 1.0 + rank; if (actual - expected > 1e-10) { SQUELCH(printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual);); errors++; fflush(stdout); } } } MPI_Win_unlock(rank, buf_win); MPI_Win_free(&buf_win); MPI_Free_mem(win_buf); MPI_Free_mem(src_buf); MPI_Free_mem(dst_buf); MTest_Finalize(errors); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/attrorderwin.c0000644000175000017500000000630512620254305020033 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* static char MTestDescrip[] = "Test creating and inserting attributes in \ different orders to ensure that the list management code handles all cases."; */ int checkAttrs(MPI_Win win, int n, int key[], int attrval[]); int checkNoAttrs(MPI_Win win, int n, int key[]); int main(int argc, char *argv[]) { int errs = 0; int key[3], attrval[3]; int i; int buf[1]; MPI_Comm comm; MPI_Win win; MTest_Init(&argc, &argv); { comm = MPI_COMM_WORLD; MPI_Win_create(buf, sizeof(int), sizeof(int), MPI_INFO_NULL, comm, &win); /* Create key values */ for (i = 0; i < 3; i++) { MPI_Win_create_keyval(MPI_NULL_COPY_FN, MPI_NULL_DELETE_FN, &key[i], (void *) 0); attrval[i] = 1024 * i; } /* Insert attribute in several orders. Test after put with get, * then delete, then confirm delete with get. */ MPI_Win_set_attr(win, key[2], &attrval[2]); MPI_Win_set_attr(win, key[1], &attrval[1]); MPI_Win_set_attr(win, key[0], &attrval[0]); errs += checkAttrs(win, 3, key, attrval); MPI_Win_delete_attr(win, key[0]); MPI_Win_delete_attr(win, key[1]); MPI_Win_delete_attr(win, key[2]); errs += checkNoAttrs(win, 3, key); MPI_Win_set_attr(win, key[1], &attrval[1]); MPI_Win_set_attr(win, key[2], &attrval[2]); MPI_Win_set_attr(win, key[0], &attrval[0]); errs += checkAttrs(win, 3, key, attrval); MPI_Win_delete_attr(win, key[2]); MPI_Win_delete_attr(win, key[1]); MPI_Win_delete_attr(win, key[0]); errs += checkNoAttrs(win, 3, key); MPI_Win_set_attr(win, key[0], &attrval[0]); MPI_Win_set_attr(win, key[1], &attrval[1]); MPI_Win_set_attr(win, key[2], &attrval[2]); errs += checkAttrs(win, 3, key, attrval); MPI_Win_delete_attr(win, key[1]); MPI_Win_delete_attr(win, key[2]); MPI_Win_delete_attr(win, key[0]); errs += checkNoAttrs(win, 3, key); for (i = 0; i < 3; i++) { MPI_Win_free_keyval(&key[i]); } MPI_Win_free(&win); } MTest_Finalize(errs); MPI_Finalize(); return 0; } int checkAttrs(MPI_Win win, int n, int key[], int attrval[]) { int errs = 0; int i, flag, *val_p; for (i = 0; i < n; i++) { MPI_Win_get_attr(win, key[i], &val_p, &flag); if (!flag) { errs++; fprintf(stderr, "Attribute for key %d not set\n", i); } else if (val_p != &attrval[i]) { errs++; fprintf(stderr, "Atribute value for key %d not correct\n", i); } } return errs; } int checkNoAttrs(MPI_Win win, int n, int key[]) { int errs = 0; int i, flag, *val_p; for (i = 0; i < n; i++) { MPI_Win_get_attr(win, key[i], &val_p, &flag); if (flag) { errs++; fprintf(stderr, "Attribute for key %d set but should be deleted\n", i); } } return errs; } mpi-testsuite-3.2+dfsg/rma/linked_list.c0000644000175000017500000001656012620254305017614 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* MPI-3 distributed linked list construction example * -------------------------------------------------- * * Construct a distributed shared linked list using proposed MPI-3 dynamic * windows. Initially process 0 creates the head of the list, attaches it to * the window, and broadcasts the pointer to all processes. All processes then * concurrently append N new elements to the list. When a process attempts to * attach its element to the tail of list it may discover that its tail pointer * is stale and it must chase ahead to the new tail before the element can be * attached. */ #include #include #include #include #include "mpitest.h" #ifdef HAVE_UNISTD_H #include #endif #define NUM_ELEMS 32 #define NPROBE 100 #define ELEM_PER_ROW 16 /* Linked list pointer */ typedef struct { int rank; MPI_Aint disp; } llist_ptr_t; /* Linked list element */ typedef struct { int value; llist_ptr_t next; } llist_elem_t; static const llist_ptr_t nil = { -1, (MPI_Aint) MPI_BOTTOM }; static const int verbose = 0; /* List of locally allocated list elements. */ static llist_elem_t **my_elems = NULL; static int my_elems_size = 0; static int my_elems_count = 0; /* Allocate a new shared linked list element */ MPI_Aint alloc_elem(int value, MPI_Win win) { MPI_Aint disp; llist_elem_t *elem_ptr; /* Allocate the new element and register it with the window */ MPI_Alloc_mem(sizeof(llist_elem_t), MPI_INFO_NULL, &elem_ptr); elem_ptr->value = value; elem_ptr->next = nil; MPI_Win_attach(win, elem_ptr, sizeof(llist_elem_t)); /* Add the element to the list of local elements so we can free it later. */ if (my_elems_size == my_elems_count) { my_elems_size += 100; my_elems = realloc(my_elems, my_elems_size * sizeof(void *)); } my_elems[my_elems_count] = elem_ptr; my_elems_count++; MPI_Get_address(elem_ptr, &disp); return disp; } int main(int argc, char **argv) { int procid, nproc, i; MPI_Win llist_win; llist_ptr_t head_ptr, tail_ptr; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &procid); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Win_create_dynamic(MPI_INFO_NULL, MPI_COMM_WORLD, &llist_win); /* Process 0 creates the head node */ if (procid == 0) head_ptr.disp = alloc_elem(-1, llist_win); /* Broadcast the head pointer to everyone */ head_ptr.rank = 0; MPI_Bcast(&head_ptr.disp, 1, MPI_AINT, 0, MPI_COMM_WORLD); tail_ptr = head_ptr; /* All processes concurrently append NUM_ELEMS elements to the list */ for (i = 0; i < NUM_ELEMS; i++) { llist_ptr_t new_elem_ptr; int success; /* Create a new list element and register it with the window */ new_elem_ptr.rank = procid; new_elem_ptr.disp = alloc_elem(procid, llist_win); /* Append the new node to the list. This might take multiple attempts if * others have already appended and our tail pointer is stale. */ do { llist_ptr_t next_tail_ptr = nil; MPI_Win_lock(MPI_LOCK_EXCLUSIVE, tail_ptr.rank, 0, llist_win); MPI_Compare_and_swap((void *) &new_elem_ptr.rank, (void *) &nil.rank, (void *) &next_tail_ptr.rank, MPI_INT, tail_ptr.rank, (MPI_Aint) & (((llist_elem_t *) tail_ptr.disp)->next.rank), llist_win); MPI_Win_unlock(tail_ptr.rank, llist_win); success = (next_tail_ptr.rank == nil.rank); if (success) { int i, flag; MPI_Win_lock(MPI_LOCK_EXCLUSIVE, tail_ptr.rank, 0, llist_win); MPI_Put(&new_elem_ptr.disp, 1, MPI_AINT, tail_ptr.rank, (MPI_Aint) & (((llist_elem_t *) tail_ptr.disp)->next.disp), 1, MPI_AINT, llist_win); MPI_Win_unlock(tail_ptr.rank, llist_win); tail_ptr = new_elem_ptr; /* For implementations that use pt-to-pt messaging, force progress for other threads' * RMA operations. */ for (i = 0; i < NPROBE; i++) MPI_Iprobe(MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &flag, MPI_STATUS_IGNORE); } else { /* Tail pointer is stale, fetch the displacement. May take multiple tries * if it is being updated. */ do { MPI_Win_lock(MPI_LOCK_EXCLUSIVE, tail_ptr.rank, 0, llist_win); MPI_Get(&next_tail_ptr.disp, 1, MPI_AINT, tail_ptr.rank, (MPI_Aint) & (((llist_elem_t *) tail_ptr.disp)->next.disp), 1, MPI_AINT, llist_win); MPI_Win_unlock(tail_ptr.rank, llist_win); } while (next_tail_ptr.disp == nil.disp); tail_ptr = next_tail_ptr; } } while (!success); } MPI_Barrier(MPI_COMM_WORLD); /* Traverse the list and verify that all processes inserted exactly the correct * number of elements. */ if (procid == 0) { int have_root = 0; int errors = 0; int *counts, count = 0; counts = (int *) malloc(sizeof(int) * nproc); assert(counts != NULL); for (i = 0; i < nproc; i++) counts[i] = 0; tail_ptr = head_ptr; /* Walk the list and tally up the number of elements inserted by each rank */ while (tail_ptr.disp != nil.disp) { llist_elem_t elem; MPI_Win_lock(MPI_LOCK_EXCLUSIVE, tail_ptr.rank, 0, llist_win); MPI_Get(&elem, sizeof(llist_elem_t), MPI_BYTE, tail_ptr.rank, tail_ptr.disp, sizeof(llist_elem_t), MPI_BYTE, llist_win); MPI_Win_unlock(tail_ptr.rank, llist_win); tail_ptr = elem.next; /* This is not the root */ if (have_root) { assert(elem.value >= 0 && elem.value < nproc); counts[elem.value]++; count++; if (verbose) { int last_elem = tail_ptr.disp == nil.disp; printf("%2d%s", elem.value, last_elem ? "" : " -> "); if (count % ELEM_PER_ROW == 0 && !last_elem) printf("\n"); } } /* This is the root */ else { assert(elem.value == -1); have_root = 1; } } if (verbose) printf("\n\n"); /* Verify the counts we collected */ for (i = 0; i < nproc; i++) { int expected = NUM_ELEMS; if (counts[i] != expected) { printf("Error: Rank %d inserted %d elements, expected %d\n", i, counts[i], expected); errors++; } } printf("%s\n", errors == 0 ? " No Errors" : "FAIL"); free(counts); } MPI_Win_free(&llist_win); /* Free all the elements in the list */ for (; my_elems_count > 0; my_elems_count--) MPI_Free_mem(my_elems[my_elems_count - 1]); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/mcs-mutex.h0000644000175000017500000000156312620254305017237 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2013 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #if !defined MCSMUTEX_H_INCLUDED #define MCSMUTEX_H_INCLUDED #include #define MCS_MUTEX_TAG 100 #ifdef ENABLE_DEBUG #define debug_print(...) do { printf(__VA_ARGS__); } while (0) #else #define debug_print(...) #endif struct mcs_mutex_s { int tail_rank; MPI_Comm comm; MPI_Win window; int *base; MPI_Info win_info; }; typedef struct mcs_mutex_s *MCS_Mutex; #define MCS_MTX_ELEM_DISP 0 #define MCS_MTX_TAIL_DISP 1 int MCS_Mutex_create(int tail_rank, MPI_Comm comm, MCS_Mutex * hdl_out); int MCS_Mutex_free(MCS_Mutex * hdl_ptr); int MCS_Mutex_lock(MCS_Mutex hdl); int MCS_Mutex_trylock(MCS_Mutex hdl, int *success); int MCS_Mutex_unlock(MCS_Mutex hdl); #endif /* MCSMUTEX_H_INCLUDED */ mpi-testsuite-3.2+dfsg/rma/win_large_shm.c0000644000175000017500000000577112620254305020133 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* test MPI_WIN_ALLOCATE and MPI_WIN_ALLOCATE_SHARED when allocating SHM memory with size of 1GB per process */ #include "mpi.h" #include #include int main(int argc, char **argv) { int my_rank, shared_rank; void *mybase = NULL; MPI_Win win; MPI_Info win_info; MPI_Comm shared_comm; int i; int shm_win_size = 1024 * 1024 * 1024 * sizeof(char); /* 1GB */ MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &my_rank); for (i = 0; i < 2; i++) { if (i == 0) { MPI_Info_create(&win_info); MPI_Info_set(win_info, (char *) "alloc_shm", (char *) "true"); } else { win_info = MPI_INFO_NULL; } MPI_Comm_split_type(MPI_COMM_WORLD, MPI_COMM_TYPE_SHARED, my_rank, MPI_INFO_NULL, &shared_comm); MPI_Comm_rank(shared_comm, &shared_rank); /* every processes allocate 1GB window memory */ MPI_Win_allocate(shm_win_size, sizeof(char), win_info, MPI_COMM_WORLD, &mybase, &win); MPI_Win_free(&win); MPI_Win_allocate_shared(shm_win_size, sizeof(char), win_info, shared_comm, &mybase, &win); MPI_Win_free(&win); /* some processes allocate 1GB and some processes allocate zero bytes */ if (my_rank % 2 == 0) MPI_Win_allocate(shm_win_size, sizeof(char), win_info, MPI_COMM_WORLD, &mybase, &win); else MPI_Win_allocate(0, sizeof(char), win_info, MPI_COMM_WORLD, &mybase, &win); MPI_Win_free(&win); if (shared_rank % 2 == 0) MPI_Win_allocate_shared(shm_win_size, sizeof(char), win_info, shared_comm, &mybase, &win); else MPI_Win_allocate_shared(0, sizeof(char), win_info, shared_comm, &mybase, &win); MPI_Win_free(&win); /* some processes allocate 1GB and some processes allocate smaller bytes */ if (my_rank % 2 == 0) MPI_Win_allocate(shm_win_size, sizeof(char), win_info, MPI_COMM_WORLD, &mybase, &win); else MPI_Win_allocate(shm_win_size / 2, sizeof(char), win_info, MPI_COMM_WORLD, &mybase, &win); MPI_Win_free(&win); /* some processes allocate 1GB and some processes allocate smaller bytes */ if (shared_rank % 2 == 0) MPI_Win_allocate_shared(shm_win_size, sizeof(char), win_info, shared_comm, &mybase, &win); else MPI_Win_allocate_shared(shm_win_size / 2, sizeof(char), win_info, shared_comm, &mybase, &win); MPI_Win_free(&win); MPI_Comm_free(&shared_comm); if (i == 0) MPI_Info_free(&win_info); } if (my_rank == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/win_shared_noncontig.c0000644000175000017500000000427112620254305021510 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include #include "mpitest.h" #define ELEM_PER_PROC 10000 const int verbose = 0; int main(int argc, char **argv) { int i, j, rank, nproc; int shm_rank, shm_nproc; MPI_Info alloc_shared_info; int errors = 0, all_errors = 0; int disp_unit; int *my_base; MPI_Win shm_win; MPI_Comm shm_comm; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Info_create(&alloc_shared_info); MPI_Info_set(alloc_shared_info, "alloc_shared_noncontig", "true"); MPI_Comm_split_type(MPI_COMM_WORLD, MPI_COMM_TYPE_SHARED, rank, MPI_INFO_NULL, &shm_comm); MPI_Comm_rank(shm_comm, &shm_rank); MPI_Comm_size(shm_comm, &shm_nproc); /* Allocate ELEM_PER_PROC integers for each process */ MPI_Win_allocate_shared(sizeof(int) * ELEM_PER_PROC, sizeof(int), alloc_shared_info, shm_comm, &my_base, &shm_win); MPI_Win_lock_all(MPI_MODE_NOCHECK, shm_win); /* Write to all my data */ for (i = 0; i < ELEM_PER_PROC; i++) { my_base[i] = i; } MPI_Win_sync(shm_win); MPI_Barrier(shm_comm); MPI_Win_sync(shm_win); /* Read and verify everyone's data */ for (i = 0; i < shm_nproc; i++) { int *base; MPI_Aint size; MPI_Win_shared_query(shm_win, i, &size, &disp_unit, &base); assert(size >= ELEM_PER_PROC * sizeof(int)); for (j = 0; j < ELEM_PER_PROC; j++) { if (base[j] != j) { errors++; printf("%d -- Got %d at rank %d index %d, expected %d\n", shm_rank, base[j], i, j, j); } } } MPI_Win_unlock_all(shm_win); MPI_Win_free(&shm_win); MPI_Comm_free(&shm_comm); MPI_Info_free(&alloc_shared_info); MPI_Reduce(&errors, &all_errors, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (rank == 0 && all_errors == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/test3.c0000644000175000017500000000757512620254305016363 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "stdio.h" #include "stdlib.h" #include "mpitest.h" #include "squelch.h" /* Tests the example in Fig 6.8, pg 142, MPI-2 standard. Process 1 has a blocking MPI_Recv between the Post and Wait. Therefore, this example will not run if the one-sided operations are simply implemented on top of MPI_Isends and Irecvs. They either need to be implemented inside the progress engine or using threads with Isends and Irecvs. In MPICH-2, they are implemented in the progress engine. */ #define SIZE 1048576 int main(int argc, char *argv[]) { int rank, destrank, nprocs, *A, *B, i; MPI_Comm CommDeuce; MPI_Group comm_group, group; MPI_Win win; int errs = 0; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (nprocs < 2) { printf("Run this program with 2 or more processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_split(MPI_COMM_WORLD, (rank < 2), rank, &CommDeuce); if (rank < 2) { A = (int *) malloc(SIZE * sizeof(int)); if (!A) { printf("Can't allocate memory in test program\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_group(CommDeuce, &comm_group); if (rank == 0) { B = (int *) malloc(SIZE * sizeof(int)); if (!B) { printf("Can't allocate memory in test program\n"); MPI_Abort(MPI_COMM_WORLD, 1); } for (i = 0; i < SIZE; i++) { A[i] = i; B[i] = SIZE + i; } #ifdef USE_WIN_ALLOCATE char *base_ptr; MPI_Win_allocate(0, 1, MPI_INFO_NULL, CommDeuce, &base_ptr, &win); #else MPI_Win_create(NULL, 0, 1, MPI_INFO_NULL, CommDeuce, &win); #endif destrank = 1; MPI_Group_incl(comm_group, 1, &destrank, &group); MPI_Win_start(group, 0, win); MPI_Put(A, SIZE, MPI_INT, 1, 0, SIZE, MPI_INT, win); MPI_Win_complete(win); MPI_Send(B, SIZE, MPI_INT, 1, 100, MPI_COMM_WORLD); free(B); } else if (rank == 1) { #ifdef USE_WIN_ALLOCATE MPI_Win_allocate(SIZE * sizeof(int), sizeof(int), MPI_INFO_NULL, CommDeuce, &B, &win); #else B = (int *) malloc(SIZE * sizeof(int)); if (!B) { printf("Can't allocate memory in test program\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Win_create(B, SIZE * sizeof(int), sizeof(int), MPI_INFO_NULL, CommDeuce, &win); #endif MPI_Win_lock(MPI_LOCK_SHARED, rank, 0, win); for (i = 0; i < SIZE; i++) A[i] = B[i] = (-4) * i; MPI_Win_unlock(rank, win); destrank = 0; MPI_Group_incl(comm_group, 1, &destrank, &group); MPI_Win_post(group, 0, win); MPI_Recv(A, SIZE, MPI_INT, 0, 100, MPI_COMM_WORLD, MPI_STATUS_IGNORE); MPI_Win_wait(win); for (i = 0; i < SIZE; i++) { if (B[i] != i) { SQUELCH(printf("Rank 1: Put Error: B[i] is %d, should be %d\n", B[i], i);); errs++; } if (A[i] != SIZE + i) { SQUELCH(printf ("Rank 1: Send/Recv Error: A[i] is %d, should be %d\n", A[i], SIZE + i);); errs++; } } #ifndef USE_WIN_ALLOCATE free(B); #endif } MPI_Group_free(&group); MPI_Group_free(&comm_group); MPI_Win_free(&win); free(A); } MPI_Comm_free(&CommDeuce); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/lockall_dt_flushlocal.c0000644000175000017500000001041712620254305021632 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test for streaming ACC-like operations with lock_all+flush_local"; */ int main(int argc, char *argv[]) { int errs = 0; int rank, size; int minsize = 2, count; MPI_Comm comm; MPI_Win win; MPI_Aint lb, extent; MTestDatatype sendtype, recvtype; MTest_Init(&argc, &argv); while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); int source = 0; MTEST_DATATYPE_FOR_EACH_COUNT(count) { while (MTestGetDatatypes(&sendtype, &recvtype, count)) { recvtype.printErrors = 1; recvtype.InitBuf(&recvtype); MPI_Type_get_extent(recvtype.datatype, &lb, &extent); MPI_Win_create(recvtype.buf, lb + recvtype.count * extent, (int) extent, MPI_INFO_NULL, comm, &win); if (rank == source) { int dest; MPI_Aint slb, sextent; MPI_Type_get_extent(sendtype.datatype, &slb, &sextent); sendtype.InitBuf(&sendtype); MPI_Win_lock_all(0, win); for (dest = 0; dest < size; dest++) if (dest != source) { MPI_Accumulate(sendtype.buf, sendtype.count, sendtype.datatype, dest, 0, recvtype.count, recvtype.datatype, MPI_REPLACE, win); MPI_Win_flush_local(dest, win); } /* reset the send buffer to test local completion */ memset(sendtype.buf, 0, slb + sextent * sendtype.count); MPI_Win_unlock_all(win); MPI_Barrier(comm); sendtype.InitBuf(&sendtype); char *resbuf = (char *) calloc(lb + extent * recvtype.count, sizeof(char)); /*wait for the destinations to finish checking and reinitializing the buffers */ MPI_Barrier(comm); MPI_Win_lock_all(0, win); for (dest = 0; dest < size; dest++) if (dest != source) { MPI_Get_accumulate(sendtype.buf, sendtype.count, sendtype.datatype, resbuf, recvtype.count, recvtype.datatype, dest, 0, recvtype.count, recvtype.datatype, MPI_REPLACE, win); MPI_Win_flush_local(dest, win); } /* reset the send buffer to test local completion */ memset(sendtype.buf, 0, slb + sextent * sendtype.count); MPI_Win_unlock_all(win); MPI_Barrier(comm); free(resbuf); } else { int err; MPI_Barrier(comm); MPI_Win_lock(MPI_LOCK_SHARED, rank, 0, win); err = MTestCheckRecv(0, &recvtype); if (err) errs++; recvtype.InitBuf(&recvtype); MPI_Win_unlock(rank, win); /*signal the source that checking and reinitialization is done */ MPI_Barrier(comm); MPI_Barrier(comm); MPI_Win_lock(MPI_LOCK_SHARED, rank, 0, win); err = MTestCheckRecv(0, &recvtype); if (err) errs++; MPI_Win_unlock(rank, win); } MPI_Win_free(&win); MTestFreeDatatype(&sendtype); MTestFreeDatatype(&recvtype); } } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/Makefile.am0000644000175000017500000002424712620254305017204 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile.mtest EXTRA_DIST = testlist.in ## for all programs that are just built from the single corresponding source ## file, we don't need per-target _SOURCES rules, automake will infer them ## correctly noinst_PROGRAMS = \ allocmem \ test1 \ test2 \ test2_shm \ test3 \ test3_shm \ test4 \ test5 \ lockcontention \ lockcontention2 \ lockcontention3 \ lockopts \ lock_dt \ lock_dt_flush \ lock_dt_flushlocal \ lockall_dt \ lockall_dt_flush \ lockall_dt_flushall \ lockall_dt_flushlocal \ lockall_dt_flushlocalall\ lock_contention_dt \ contention_put \ contention_putget \ put_base \ put_bottom \ locknull \ wintest \ wintest_shm \ transpose1 \ transpose2 \ transpose3 \ transpose3_shm \ transpose4 \ transpose5 \ transpose6 \ transpose7 \ fetchandadd \ fetchandadd_tree \ winname \ putfence1 \ putfidx \ epochtest \ getfence1 \ accfence1 \ accfence2 \ adlb_mimic1 \ putpscw1 \ accpscw1 \ getgroup \ contig_displ \ test1_am \ test2_am \ test2_am_shm \ test3_am \ test3_am_shm \ test4_am \ test5_am \ fetchandadd_am \ fetchandadd_tree_am \ accfence2_am \ test1_dt \ attrorderwin \ wincall \ fkeyvalwin \ baseattrwin \ nullpscw \ nullpscw_shm \ rmanull \ rmazero \ mixedsync \ manyrma2 \ manyrma2_shm \ manyrma3 \ selfrma \ strided_acc_onelock \ strided_putget_indexed \ strided_putget_indexed_shared \ strided_acc_indexed \ strided_acc_subarray \ strided_get_indexed \ strided_getacc_indexed \ strided_getacc_indexed_shared \ window_creation \ win_flavors \ win_shared \ win_shared_noncontig \ win_shared_noncontig_put \ win_shared_zerobyte \ win_shared_create_allocshm \ win_shared_create_no_allocshm \ win_zero \ win_large_shm \ win_dynamic_acc \ get_acc_local \ compare_and_swap \ linked_list \ linked_list_fop \ linked_list_lockall \ linked_list_bench_lock_all \ linked_list_bench_lock_excl \ linked_list_bench_lock_shr \ linked_list_bench_lock_shr_nocheck \ fetch_and_op_char \ fetch_and_op_short \ fetch_and_op_int \ fetch_and_op_long \ fetch_and_op_double \ fetch_and_op_long_double \ get_accumulate_short \ get_accumulate_long \ get_accumulate_double \ get_accumulate_int \ get_accumulate_short_derived \ get_accumulate_long_derived \ get_accumulate_double_derived \ get_accumulate_int_derived \ flush \ win_shared_put_flush_get \ reqops \ req_example \ req_example_shm \ win_info \ pscw_ordering \ pscw_ordering_shm \ mutex_bench \ mutex_bench_shared \ mutex_bench_shm \ mutex_bench_shm_ordered\ rma-contig \ badrma \ nb_test \ acc-loc \ fence_shm \ get-struct \ rput_local_comp \ racc_local_comp \ at_complete \ atomic_rmw_fop \ atomic_rmw_cas \ atomic_rmw_gacc \ atomic_get \ acc-pairtype \ manyget \ derived-acc-flush_local\ large-acc-flush_local \ large-small-acc \ put_flush_get \ acc_flush_get \ gacc_flush_get \ fop_flush_get \ cas_flush_get \ win_shared_put_flush_load \ win_shared_acc_flush_load \ win_shared_gacc_flush_load \ win_shared_fop_flush_load \ win_shared_cas_flush_load if BUILD_MPIX_TESTS noinst_PROGRAMS += aint endif strided_acc_indexed_LDADD = $(LDADD) -lm strided_acc_onelock_LDADD = $(LDADD) -lm strided_acc_subarray_LDADD = $(LDADD) -lm strided_get_indexed_LDADD = $(LDADD) -lm strided_getacc_indexed_LDADD = $(LDADD) -lm strided_putget_indexed_LDADD = $(LDADD) -lm strided_getacc_indexed_shared_LDADD = $(LDADD) -lm strided_putget_indexed_shared_LDADD = $(LDADD) -lm fetch_and_op_char_CPPFLAGS = -DFOP_TYPE_CHAR $(AM_CPPFLAGS) fetch_and_op_short_CPPFLAGS = -DFOP_TYPE_SHORT $(AM_CPPFLAGS) fetch_and_op_int_CPPFLAGS = -DFOP_TYPE_INT $(AM_CPPFLAGS) fetch_and_op_long_CPPFLAGS = -DFOP_TYPE_LONG $(AM_CPPFLAGS) fetch_and_op_double_CPPFLAGS = -DFOP_TYPE_DOUBLE $(AM_CPPFLAGS) fetch_and_op_long_double_CPPFLAGS= -DFOP_TYPE_LONG_DOUBLE $(AM_CPPFLAGS) fetch_and_op_char_SOURCES = fetch_and_op.c fetch_and_op_short_SOURCES = fetch_and_op.c fetch_and_op_int_SOURCES = fetch_and_op.c fetch_and_op_long_SOURCES = fetch_and_op.c fetch_and_op_double_SOURCES = fetch_and_op.c fetch_and_op_long_double_SOURCES = fetch_and_op.c get_accumulate_short_CPPFLAGS = -DGACC_TYPE_SHORT $(AM_CPPFLAGS) get_accumulate_long_CPPFLAGS = -DGACC_TYPE_LONG $(AM_CPPFLAGS) get_accumulate_double_CPPFLAGS = -DGACC_TYPE_DOUBLE $(AM_CPPFLAGS) get_accumulate_int_CPPFLAGS = -DGACC_TYPE_INT $(AM_CPPFLAGS) get_accumulate_short_derived_CPPFLAGS = -DGACC_TYPE_SHORT -DGACC_TYPE_DERIVED $(AM_CPPFLAGS) get_accumulate_long_derived_CPPFLAGS = -DGACC_TYPE_LONG -DGACC_TYPE_DERIVED $(AM_CPPFLAGS) get_accumulate_double_derived_CPPFLAGS = -DGACC_TYPE_DOUBLE -DGACC_TYPE_DERIVED $(AM_CPPFLAGS) get_accumulate_int_derived_CPPFLAGS = -DGACC_TYPE_INT -DGACC_TYPE_DERIVED $(AM_CPPFLAGS) get_accumulate_short_SOURCES = get_accumulate.c get_accumulate_long_SOURCES = get_accumulate.c get_accumulate_double_SOURCES = get_accumulate.c get_accumulate_int_SOURCES = get_accumulate.c get_accumulate_short_derived_SOURCES = get_accumulate.c get_accumulate_long_derived_SOURCES = get_accumulate.c get_accumulate_double_derived_SOURCES = get_accumulate.c get_accumulate_int_derived_SOURCES = get_accumulate.c req_example_shm_CPPFLAGS = -DUSE_WIN_ALLOC_SHM $(AM_CPPFLAGS) req_example_shm_SOURCES = req_example.c manyrma2_shm_CPPFLAGS = -DUSE_WIN_ALLOCATE $(AM_CPPFLAGS) wintest_shm_CPPFLAGS = -DUSE_WIN_ALLOCATE $(AM_CPPFLAGS) transpose3_shm_CPPFLAGS = -DUSE_WIN_ALLOCATE $(AM_CPPFLAGS) nullpscw_shm_CPPFLAGS = -DUSE_WIN_ALLOCATE $(AM_CPPFLAGS) pscw_ordering_shm_CPPFLAGS = -DUSE_WIN_ALLOCATE $(AM_CPPFLAGS) test2_shm_CPPFLAGS = -DUSE_WIN_ALLOCATE $(AM_CPPFLAGS) test2_am_shm_CPPFLAGS = -DUSE_WIN_ALLOCATE $(AM_CPPFLAGS) test3_shm_CPPFLAGS = -DUSE_WIN_ALLOCATE $(AM_CPPFLAGS) test3_am_shm_CPPFLAGS = -DUSE_WIN_ALLOCATE $(AM_CPPFLAGS) manyrma2_shm_SOURCES = manyrma2.c wintest_shm_SOURCES = wintest.c transpose3_shm_SOURCES = transpose3.c nullpscw_shm_SOURCES = nullpscw.c pscw_ordering_shm_SOURCES = pscw_ordering.c test2_shm_SOURCES = test2.c test2_am_shm_SOURCES = test2_am.c test3_shm_SOURCES = test3.c test3_am_shm_SOURCES = test3_am.c mutex_bench_SOURCES = mutex_bench.c mcs-mutex.c mcs-mutex.h mutex_bench_shared_CPPFLAGS = -DUSE_WIN_SHARED $(AM_CPPFLAGS) mutex_bench_shared_SOURCES = mutex_bench.c mcs-mutex.c mcs-mutex.h mutex_bench_shm_CPPFLAGS = -DUSE_WIN_ALLOC_SHM $(AM_CPPFLAGS) mutex_bench_shm_SOURCES = mutex_bench.c mcs-mutex.c mcs-mutex.h mutex_bench_shm_ordered_CPPFLAGS = -DUSE_WIN_ALLOC_SHM -DUSE_CONTIGUOUS_RANK $(AM_CPPFLAGS) mutex_bench_shm_ordered_SOURCES = mutex_bench.c mcs-mutex.c mcs-mutex.h linked_list_bench_lock_shr_nocheck_SOURCES = linked_list_bench_lock_shr.c linked_list_bench_lock_shr_nocheck_CPPFLAGS = -DUSE_MODE_NOCHECK $(AM_CPPFLAGS) win_shared_create_allocshm_SOURCES = win_shared_create.c win_shared_create_no_allocshm_SOURCES = win_shared_create.c win_shared_create_allocshm_CPPFLAGS = -DUSE_INFO_ALLOC_SHM $(AM_CPPFLAGS) put_flush_get_SOURCES = wrma_flush_get.c acc_flush_get_SOURCES = wrma_flush_get.c gacc_flush_get_SOURCES = wrma_flush_get.c fop_flush_get_SOURCES = wrma_flush_get.c cas_flush_get_SOURCES = wrma_flush_get.c put_flush_get_CPPFLAGS = -DTEST_PUT $(AM_CPPFLAGS) acc_flush_get_CPPFLAGS = -DTEST_ACC $(AM_CPPFLAGS) gacc_flush_get_CPPFLAGS = -DTEST_GACC $(AM_CPPFLAGS) fop_flush_get_CPPFLAGS = -DTEST_FOP $(AM_CPPFLAGS) cas_flush_get_CPPFLAGS = -DTEST_CAS $(AM_CPPFLAGS) win_shared_put_flush_load_SOURCES = win_shared_rma_flush_load.c win_shared_acc_flush_load_SOURCES = win_shared_rma_flush_load.c win_shared_gacc_flush_load_SOURCES = win_shared_rma_flush_load.c win_shared_fop_flush_load_SOURCES = win_shared_rma_flush_load.c win_shared_cas_flush_load_SOURCES = win_shared_rma_flush_load.c win_shared_put_flush_load_CPPFLAGS = -DTEST_PUT $(AM_CPPFLAGS) win_shared_acc_flush_load_CPPFLAGS = -DTEST_ACC $(AM_CPPFLAGS) win_shared_gacc_flush_load_CPPFLAGS = -DTEST_GACC $(AM_CPPFLAGS) win_shared_fop_flush_load_CPPFLAGS = -DTEST_FOP $(AM_CPPFLAGS) win_shared_cas_flush_load_CPPFLAGS = -DTEST_CAS $(AM_CPPFLAGS)mpi-testsuite-3.2+dfsg/rma/transpose6.c0000644000175000017500000000401712620254305017411 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "stdio.h" #include "mpitest.h" /* This does a local transpose-cum-accumulate operation. Uses vector and hvector datatypes (Example 3.32 from MPI 1.1 Standard). Run on 1 process. */ #define NROWS 100 #define NCOLS 100 int main(int argc, char *argv[]) { int rank, nprocs, A[NROWS][NCOLS], B[NROWS][NCOLS], i, j; MPI_Win win; MPI_Datatype column, xpose; int errs = 0; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); if (rank == 0) { for (i = 0; i < NROWS; i++) for (j = 0; j < NCOLS; j++) A[i][j] = B[i][j] = i * NCOLS + j; /* create datatype for one column */ MPI_Type_vector(NROWS, 1, NCOLS, MPI_INT, &column); /* create datatype for matrix in column-major order */ MPI_Type_hvector(NCOLS, 1, sizeof(int), column, &xpose); MPI_Type_commit(&xpose); MPI_Win_create(B, NROWS * NCOLS * sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_SELF, &win); MPI_Win_fence(0, win); MPI_Accumulate(A, NROWS * NCOLS, MPI_INT, 0, 0, 1, xpose, MPI_SUM, win); MPI_Type_free(&column); MPI_Type_free(&xpose); MPI_Win_fence(0, win); for (j = 0; j < NCOLS; j++) { for (i = 0; i < NROWS; i++) { if (B[j][i] != i * NCOLS + j + j * NCOLS + i) { if (errs < 20) { printf("Error: B[%d][%d]=%d should be %d\n", j, i, B[j][i], i * NCOLS + j + j * NCOLS + i); } errs++; } } } if (errs >= 20) { printf("Total number of errors: %d\n", errs); } MPI_Win_free(&win); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/atomic_rmw_gacc.c0000644000175000017500000002076312620254305020431 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* This test is going to test the atomicity for "read-modify-write" in GACC * operations */ /* This test is similiar with atomic_rmw_fop.c. * There are three processes involved in this test: P0 (origin_shm), P1 (origin_am), * and P2 (dest). P0 and P1 issues multiple GACC with MPI_SUM and OP_COUNT integers * (value 1) to P2 via SHM and AM respectively. The correct results should be that the * results on P0 and P1 never be the same for intergers on the corresponding index * in [0...OP_COUNT-1]. */ #include "mpi.h" #include #define OP_COUNT 10 #define AM_BUF_NUM 10 #define SHM_BUF_NUM 10000 #define WIN_BUF_NUM 1 #define LOOP_SIZE 15 #define CHECK_TAG 123 int rank, size; int dest, origin_shm, origin_am; int *orig_buf = NULL, *result_buf = NULL, *target_buf = NULL, *check_buf = NULL; MPI_Win win; void checkResults(int loop_k, int *errors) { int i, j, m; MPI_Status status; if (rank != dest) { /* check results on P0 and P2 (origin) */ if (rank == origin_am) { MPI_Send(result_buf, AM_BUF_NUM * OP_COUNT, MPI_INT, origin_shm, CHECK_TAG, MPI_COMM_WORLD); } else if (rank == origin_shm) { MPI_Alloc_mem(sizeof(int) * AM_BUF_NUM * OP_COUNT, MPI_INFO_NULL, &check_buf); MPI_Recv(check_buf, AM_BUF_NUM * OP_COUNT, MPI_INT, origin_am, CHECK_TAG, MPI_COMM_WORLD, &status); for (i = 0; i < AM_BUF_NUM; i++) { for (j = 0; j < SHM_BUF_NUM; j++) { for (m = 0; m < OP_COUNT; m++) { if (check_buf[i * OP_COUNT + m] == result_buf[j * OP_COUNT + m]) { printf ("LOOP=%d, rank=%d, FOP, both check_buf[%d] and result_buf[%d] equal to %d, expected to be different. \n", loop_k, rank, i * OP_COUNT + m, j * OP_COUNT + m, check_buf[i * OP_COUNT + m]); (*errors)++; } } } } MPI_Free_mem(check_buf); } } else { MPI_Win_lock(MPI_LOCK_SHARED, rank, 0, win); /* check results on P1 */ for (i = 0; i < OP_COUNT; i++) { if (target_buf[i] != AM_BUF_NUM + SHM_BUF_NUM) { printf("LOOP=%d, rank=%d, FOP, target_buf[%d] = %d, expected %d. \n", loop_k, rank, i, target_buf[i], AM_BUF_NUM + SHM_BUF_NUM); (*errors)++; } } MPI_Win_unlock(rank, win); } } int main(int argc, char *argv[]) { int i, k; int errors = 0, all_errors = 0; int my_buf_num; MPI_Datatype origin_dtp, target_dtp; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); if (size != 3) { /* run this test with three processes */ goto exit_test; } MPI_Type_contiguous(OP_COUNT, MPI_INT, &origin_dtp); MPI_Type_commit(&origin_dtp); MPI_Type_contiguous(OP_COUNT, MPI_INT, &target_dtp); MPI_Type_commit(&target_dtp); /* this works when MPIR_PARAM_CH3_ODD_EVEN_CLIQUES is set */ dest = 2; origin_shm = 0; origin_am = 1; if (rank == origin_am) my_buf_num = AM_BUF_NUM; else if (rank == origin_shm) my_buf_num = SHM_BUF_NUM; if (rank != dest) { MPI_Alloc_mem(sizeof(int) * my_buf_num * OP_COUNT, MPI_INFO_NULL, &orig_buf); MPI_Alloc_mem(sizeof(int) * my_buf_num * OP_COUNT, MPI_INFO_NULL, &result_buf); } MPI_Win_allocate(sizeof(int) * WIN_BUF_NUM * OP_COUNT, sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &target_buf, &win); for (k = 0; k < LOOP_SIZE; k++) { /* ====== Part 1: test basic datatypes ======== */ /* init buffers */ if (rank != dest) { for (i = 0; i < my_buf_num * OP_COUNT; i++) { orig_buf[i] = 1; result_buf[i] = 0; } } else { MPI_Win_lock(MPI_LOCK_SHARED, rank, 0, win); for (i = 0; i < WIN_BUF_NUM * OP_COUNT; i++) { target_buf[i] = 0; } MPI_Win_unlock(rank, win); } MPI_Barrier(MPI_COMM_WORLD); MPI_Win_lock_all(0, win); if (rank != dest) { for (i = 0; i < my_buf_num; i++) { MPI_Get_accumulate(&(orig_buf[i * OP_COUNT]), OP_COUNT, MPI_INT, &(result_buf[i * OP_COUNT]), OP_COUNT, MPI_INT, dest, 0, OP_COUNT, MPI_INT, MPI_SUM, win); MPI_Win_flush(dest, win); } } MPI_Win_unlock_all(win); MPI_Barrier(MPI_COMM_WORLD); checkResults(k, &errors); /* ====== Part 2: test derived datatypes (origin derived, target derived) ======== */ /* init buffers */ if (rank != dest) { for (i = 0; i < my_buf_num * OP_COUNT; i++) { orig_buf[i] = 1; result_buf[i] = 0; } } else { MPI_Win_lock(MPI_LOCK_SHARED, rank, 0, win); for (i = 0; i < WIN_BUF_NUM * OP_COUNT; i++) { target_buf[i] = 0; } MPI_Win_unlock(rank, win); } MPI_Barrier(MPI_COMM_WORLD); MPI_Win_lock_all(0, win); if (rank != dest) { for (i = 0; i < my_buf_num; i++) { MPI_Get_accumulate(&(orig_buf[i * OP_COUNT]), 1, origin_dtp, &(result_buf[i * OP_COUNT]), 1, origin_dtp, dest, 0, 1, target_dtp, MPI_SUM, win); MPI_Win_flush(dest, win); } } MPI_Win_unlock_all(win); MPI_Barrier(MPI_COMM_WORLD); checkResults(k, &errors); /* ====== Part 3: test derived datatypes (origin basic, target derived) ======== */ /* init buffers */ if (rank != dest) { for (i = 0; i < my_buf_num * OP_COUNT; i++) { orig_buf[i] = 1; result_buf[i] = 0; } } else { MPI_Win_lock(MPI_LOCK_SHARED, rank, 0, win); for (i = 0; i < WIN_BUF_NUM * OP_COUNT; i++) { target_buf[i] = 0; } MPI_Win_unlock(rank, win); } MPI_Barrier(MPI_COMM_WORLD); MPI_Win_lock_all(0, win); if (rank != dest) { for (i = 0; i < my_buf_num; i++) { MPI_Get_accumulate(&(orig_buf[i * OP_COUNT]), OP_COUNT, MPI_INT, &(result_buf[i * OP_COUNT]), OP_COUNT, MPI_INT, dest, 0, 1, target_dtp, MPI_SUM, win); MPI_Win_flush(dest, win); } } MPI_Win_unlock_all(win); MPI_Barrier(MPI_COMM_WORLD); checkResults(k, &errors); /* ====== Part 4: test derived datatypes (origin derived target basic) ======== */ /* init buffers */ if (rank != dest) { for (i = 0; i < my_buf_num * OP_COUNT; i++) { orig_buf[i] = 1; result_buf[i] = 0; } } else { MPI_Win_lock(MPI_LOCK_SHARED, rank, 0, win); for (i = 0; i < WIN_BUF_NUM * OP_COUNT; i++) { target_buf[i] = 0; } MPI_Win_unlock(rank, win); } MPI_Barrier(MPI_COMM_WORLD); MPI_Win_lock_all(0, win); if (rank != dest) { for (i = 0; i < my_buf_num; i++) { MPI_Get_accumulate(&(orig_buf[i * OP_COUNT]), 1, origin_dtp, &(result_buf[i * OP_COUNT]), 1, origin_dtp, dest, 0, OP_COUNT, MPI_INT, MPI_SUM, win); MPI_Win_flush(dest, win); } } MPI_Win_unlock_all(win); MPI_Barrier(MPI_COMM_WORLD); checkResults(k, &errors); } MPI_Win_free(&win); if (rank == origin_am || rank == origin_shm) { MPI_Free_mem(orig_buf); MPI_Free_mem(result_buf); } MPI_Type_free(&origin_dtp); MPI_Type_free(&target_dtp); exit_test: MPI_Reduce(&errors, &all_errors, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (rank == 0 && all_errors == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/lock_dt_flush.c0000644000175000017500000001003412620254305020121 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test for streaming ACC-like operations with lock+flush"; */ int main(int argc, char *argv[]) { int errs = 0; int err = 0; int rank, size, source, dest; int minsize = 2, count; MPI_Comm comm; MPI_Win win; MPI_Aint lb, extent; MTestDatatype sendtype, recvtype; MTest_Init(&argc, &argv); while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); source = 0; dest = size - 1; MTEST_DATATYPE_FOR_EACH_COUNT(count) { while (MTestGetDatatypes(&sendtype, &recvtype, count)) { recvtype.printErrors = 1; recvtype.InitBuf(&recvtype); MPI_Type_get_extent(recvtype.datatype, &lb, &extent); MPI_Win_create(recvtype.buf, lb + recvtype.count * extent, (int) extent, MPI_INFO_NULL, comm, &win); if (rank == source) { sendtype.InitBuf(&sendtype); MPI_Win_lock(MPI_LOCK_SHARED, dest, 0, win); MPI_Accumulate(sendtype.buf, sendtype.count, sendtype.datatype, dest, 0, recvtype.count, recvtype.datatype, MPI_REPLACE, win); MPI_Win_flush(dest, win); /*signal to dest that the ops are flushed so that it starts checking the result */ MPI_Barrier(comm); /*make sure dest finishes checking the result before issuing unlock */ MPI_Barrier(comm); MPI_Win_unlock(dest, win); char *resbuf = (char *) calloc(lb + extent * recvtype.count, sizeof(char)); /*wait for the destination to finish checking and reinitializing the buffer */ MPI_Barrier(comm); MPI_Win_lock(MPI_LOCK_SHARED, dest, 0, win); MPI_Get_accumulate(sendtype.buf, sendtype.count, sendtype.datatype, resbuf, recvtype.count, recvtype.datatype, dest, 0, recvtype.count, recvtype.datatype, MPI_REPLACE, win); MPI_Win_flush(dest, win); /*signal to dest that the ops are flushed so that it starts checking the result */ MPI_Barrier(comm); /*make sure dest finishes checking the result before issuing unlock */ MPI_Barrier(comm); MPI_Win_unlock(dest, win); free(resbuf); } else if (rank == dest) { MPI_Barrier(comm); MPI_Win_lock(MPI_LOCK_SHARED, dest, 0, win); err = MTestCheckRecv(0, &recvtype); if (err) errs++; recvtype.InitBuf(&recvtype); MPI_Barrier(comm); MPI_Win_unlock(dest, win); /*signal the source that checking and reinitialization is done */ MPI_Barrier(comm); MPI_Barrier(comm); MPI_Win_lock(MPI_LOCK_SHARED, dest, 0, win); err = MTestCheckRecv(0, &recvtype); if (err) errs++; MPI_Barrier(comm); MPI_Win_unlock(dest, win); } MPI_Win_free(&win); MTestFreeDatatype(&sendtype); MTestFreeDatatype(&recvtype); } } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/wintest.c0000644000175000017500000000574412620254305017012 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "stdio.h" #include "mpitest.h" /* tests put and get with post/start/complete/test on 2 processes */ /* Same as test2.c, but uses win_test instead of win_wait */ #define SIZE1 10 #define SIZE2 20 int main(int argc, char *argv[]) { int rank, destrank, nprocs, A[SIZE2], i; MPI_Comm CommDeuce; MPI_Group comm_group, group; MPI_Win win; int errs = 0, flag; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (nprocs < 2) { printf("Run this program with 2 or more processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_split(MPI_COMM_WORLD, (rank < 2), rank, &CommDeuce); if (rank < 2) { MPI_Comm_group(CommDeuce, &comm_group); if (rank == 0) { int B[SIZE2]; for (i = 0; i < SIZE2; i++) A[i] = B[i] = i; #ifdef USE_WIN_ALLOCATE int *base_ptr = NULL; MPI_Win_allocate(0, 1, MPI_INFO_NULL, CommDeuce, &base_ptr, &win); #else MPI_Win_create(NULL, 0, 1, MPI_INFO_NULL, CommDeuce, &win); #endif destrank = 1; MPI_Group_incl(comm_group, 1, &destrank, &group); MPI_Win_start(group, 0, win); for (i = 0; i < SIZE1; i++) MPI_Put(A + i, 1, MPI_INT, 1, i, 1, MPI_INT, win); for (i = 0; i < SIZE1; i++) MPI_Get(B + i, 1, MPI_INT, 1, SIZE1 + i, 1, MPI_INT, win); MPI_Win_complete(win); for (i = 0; i < SIZE1; i++) if (B[i] != (-4) * (i + SIZE1)) { printf("Get Error: B[i] is %d, should be %d\n", B[i], (-4) * (i + SIZE1)); errs++; } } else { /* rank=1 */ #ifdef USE_WIN_ALLOCATE int *B; MPI_Win_allocate(SIZE2 * sizeof(int), sizeof(int), MPI_INFO_NULL, CommDeuce, &B, &win); #else int B[SIZE2]; MPI_Win_create(B, SIZE2 * sizeof(int), sizeof(int), MPI_INFO_NULL, CommDeuce, &win); #endif MPI_Win_lock(MPI_LOCK_SHARED, rank, 0, win); for (i = 0; i < SIZE2; i++) B[i] = (-4) * i; MPI_Win_unlock(rank, win); destrank = 0; MPI_Group_incl(comm_group, 1, &destrank, &group); MPI_Win_post(group, 0, win); flag = 0; while (!flag) MPI_Win_test(win, &flag); for (i = 0; i < SIZE1; i++) { if (B[i] != i) { printf("Put Error: B[i] is %d, should be %d\n", B[i], i); errs++; } } } MPI_Group_free(&group); MPI_Group_free(&comm_group); MPI_Win_free(&win); } MPI_Comm_free(&CommDeuce); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/manyrma3.c0000644000175000017500000000136112620254305017033 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2013 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #define MAX_COUNT 4096 int main(int argc, char *argv[]) { int i, winbuf, one = 1, rank; MPI_Win win; MPI_Init(NULL, NULL); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Win_create(&winbuf, sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &win); MPI_Win_fence(0, win); for (i = 0; i < MAX_COUNT; i++) MPI_Accumulate(&one, 1, MPI_INT, 0, 0, 1, MPI_INT, MPI_SUM, win); MPI_Win_fence(0, win); MPI_Win_free(&win); if (rank == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/testlist.in0000644000175000017500000001034212620254305017342 0ustar mbanckmbanckwinname 2 allocmem 2 putfence1 2 putfidx 4 getfence1 2 accfence1 4 adlb_mimic1 3 accfence2 4 putpscw1 4 accpscw1 4 getgroup 4 transpose1 2 transpose2 2 transpose3 2 transpose3_shm 2 transpose5 2 transpose6 1 transpose7 2 test1 2 test2 2 test2_shm 2 test3 2 test3_shm 2 test4 2 test5 2 lockcontention 3 lockcontention2 4 lockcontention2 8 lockcontention3 8 lockopts 2 lock_dt 2 lock_dt_flush 2 lock_dt_flushlocal 2 lockall_dt 4 timeLimit=240 lockall_dt_flush 4 timeLimit=240 lockall_dt_flushall 4 timeLimit=240 lockall_dt_flushlocal 4 timeLimit=240 lockall_dt_flushlocalall 4 timeLimit=240 lock_contention_dt 4 timeLimit=240 transpose4 2 fetchandadd 7 fetchandadd_tree 7 wintest 2 wintest_shm 2 contig_displ 1 test1_am 2 test2_am 2 test2_am_shm 2 test3_am 2 test3_am_shm 2 test4_am 2 test5_am 2 fetchandadd_am 7 fetchandadd_tree_am 7 accfence2_am 4 test1_dt 2 timeLimit=30 nullpscw 7 nullpscw_shm 7 attrorderwin 1 wincall 2 baseattrwin 1 fkeyvalwin 1 selfrma 1 mixedsync 4 epochtest 4 timeLimit=300 locknull 2 rmanull 2 rmazero 2 strided_acc_indexed 2 strided_acc_onelock 2 strided_acc_subarray 2 strided_get_indexed 2 strided_putget_indexed 4 strided_putget_indexed_shared 4 mpiversion=3.0 strided_getacc_indexed 4 mpiversion=3.0 strided_getacc_indexed_shared 4 mpiversion=3.0 window_creation 2 contention_put 4 contention_putget 4 put_base 2 put_bottom 2 win_flavors 4 mpiversion=3.0 win_flavors 3 mpiversion=3.0 manyrma2 2 timeLimit=500 manyrma2_shm 2 timeLimit=500 manyrma3 2 win_shared 4 mpiversion=3.0 win_shared_create_allocshm 4 mpiversion=3.0 win_shared_create_no_allocshm 4 mpiversion=3.0 win_shared_noncontig 4 mpiversion=3.0 win_shared_noncontig_put 4 mpiversion=3.0 win_zero 4 mpiversion=3.0 @largetest@win_large_shm 4 mpiversion=3.0 @largetest@win_large_shm 3 mpiversion=3.0 win_dynamic_acc 4 mpiversion=3.0 get_acc_local 1 mpiversion=3.0 linked_list 4 mpiversion=3.0 linked_list_fop 4 mpiversion=3.0 compare_and_swap 4 mpiversion=3.0 fetch_and_op_char 4 mpiversion=3.0 fetch_and_op_short 4 mpiversion=3.0 fetch_and_op_int 4 mpiversion=3.0 fetch_and_op_long 4 mpiversion=3.0 fetch_and_op_double 4 mpiversion=3.0 fetch_and_op_long_double 4 mpiversion=3.0 get_accumulate_double 4 mpiversion=3.0 get_accumulate_double_derived 4 mpiversion=3.0 get_accumulate_int 4 mpiversion=3.0 get_accumulate_int_derived 4 mpiversion=3.0 get_accumulate_long 4 mpiversion=3.0 get_accumulate_long_derived 4 mpiversion=3.0 get_accumulate_short 4 mpiversion=3.0 get_accumulate_short_derived 4 mpiversion=3.0 flush 4 mpiversion=3.0 reqops 4 mpiversion=3.0 req_example 4 mpiversion=3.0 req_example_shm 4 mpiversion=3.0 rput_local_comp 2 mpiversion=3.0 racc_local_comp 2 mpiversion=3.0 win_info 4 mpiversion=3.0 linked_list_lockall 4 mpiversion=3.0 pscw_ordering 4 mpiversion=3.0 pscw_ordering_shm 4 mpiversion=3.0 linked_list_bench_lock_all 4 mpiversion=3.0 linked_list_bench_lock_excl 4 mpiversion=3.0 linked_list_bench_lock_shr 4 mpiversion=3.0 linked_list_bench_lock_shr_nocheck 4 mpiversion=3.0 mutex_bench 4 mpiversion=3.0 mutex_bench_shared 4 mpiversion=3.0 mutex_bench_shm 4 mpiversion=3.0 mutex_bench_shm_ordered 4 mpiversion=3.0 rma-contig 2 mpiversion=3.0 timeLimit=720 badrma 2 mpiversion=3.0 acc-loc 4 fence_shm 2 mpiversion=3.0 win_shared_zerobyte 4 mpiversion=3.0 win_shared_put_flush_get 4 mpiversion=3.0 get-struct 2 at_complete 2 atomic_rmw_fop 3 atomic_rmw_cas 3 atomic_rmw_gacc 3 atomic_get 3 mpiversion=3.0 timeLimit=300 aint 2 mpiversion=3.1 acc-pairtype 2 manyget 2 derived-acc-flush_local 3 mpiversion=3.0 large-acc-flush_local 3 mpiversion=3.0 large-small-acc 2 win_shared_put_flush_load 3 mpiversion=3.0 win_shared_acc_flush_load 3 mpiversion=3.0 win_shared_gacc_flush_load 3 mpiversion=3.0 win_shared_fop_flush_load 3 mpiversion=3.0 win_shared_cas_flush_load 3 mpiversion=3.0 put_flush_get 3 mpiversion=3.0 acc_flush_get 3 mpiversion=3.0 gacc_flush_get 3 mpiversion=3.0 fop_flush_get 3 mpiversion=3.0 cas_flush_get 3 mpiversion=3.0 ## This test is not strictly correct. This was meant to test out the ## case when MPI_Test is not nonblocking. However, we ended up ## assuming that MPI_Win_lock will be nonblocking. That is not ## specified by the standard and might not be true. Commenting this ## out till be find a better way to test the original problem with ## MPI_Test. # nb_test 2 mpiversion=3.0 mpi-testsuite-3.2+dfsg/rma/rmanull.c0000644000175000017500000002400512620254305016756 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2010 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* Test the given operation within a Fence epoch */ #define TEST_FENCE_OP(op_name_, fcn_call_) \ do { \ err = fcn_call_ \ if (err) { \ errs++; \ if (errs < 10) { \ MTestPrintErrorMsg("PROC_NULL to " op_name_, err); \ } \ } \ err = MPI_Win_fence(0, win); \ if (err) { \ errs++; \ if (errs < 10) { \ MTestPrintErrorMsg("Fence after " op_name_, err); \ } \ } \ } while (0) /* Test the given operation within a passive target epoch */ #define TEST_PT_OP(op_name_, fcn_call_) \ do { \ err = MPI_Win_lock(MPI_LOCK_EXCLUSIVE, MPI_PROC_NULL, 0, win); \ if (err) { \ errs++; \ if (errs < 10) { \ MTestPrintErrorMsg("Lock before" op_name_, err); \ } \ } \ err = fcn_call_ \ if (err) { \ errs++; \ if (errs < 10) { \ MTestPrintErrorMsg("PROC_NULL to " op_name_, err); \ } \ } \ err = MPI_Win_unlock(MPI_PROC_NULL, win); \ if (err) { \ errs++; \ if (errs < 10) { \ MTestPrintErrorMsg("Unlock after " op_name_, err); \ } \ } \ } while (0) /* Test the given request-based operation within a passive target epoch */ #define TEST_REQ_OP(op_name_, req_, fcn_call_) \ do { \ err = MPI_Win_lock(MPI_LOCK_EXCLUSIVE, MPI_PROC_NULL, 0, win); \ if (err) { \ errs++; \ if (errs < 10) { \ MTestPrintErrorMsg("Lock before" op_name_, err); \ } \ } \ err = fcn_call_ \ if (err) { \ errs++; \ if (errs < 10) { \ MTestPrintErrorMsg("PROC_NULL to " op_name_, err); \ } \ } \ err = MPI_Win_unlock(MPI_PROC_NULL, win); \ if (err) { \ errs++; \ if (errs < 10) { \ MTestPrintErrorMsg("Unlock after " op_name_, err); \ } \ } \ err = MPI_Wait(&req_, MPI_STATUS_IGNORE); \ if (err) { \ errs++; \ if (errs < 10) { \ MTestPrintErrorMsg("Wait after " op_name_, err); \ } \ } \ } while (0) /* static char MTEST_Descrip[] = "Test the MPI_PROC_NULL is a valid target"; */ int main(int argc, char *argv[]) { int errs = 0, err; int rank, size; int *buf, bufsize; int *result; int *rmabuf, rsize, rcount; MPI_Comm comm; MPI_Win win; MPI_Request req; MTest_Init(&argc, &argv); bufsize = 256 * sizeof(int); buf = (int *) malloc(bufsize); if (!buf) { fprintf(stderr, "Unable to allocated %d bytes\n", bufsize); MPI_Abort(MPI_COMM_WORLD, 1); } result = (int *) malloc(bufsize); if (!result) { fprintf(stderr, "Unable to allocated %d bytes\n", bufsize); MPI_Abort(MPI_COMM_WORLD, 1); } rcount = 16; rsize = rcount * sizeof(int); rmabuf = (int *) malloc(rsize); if (!rmabuf) { fprintf(stderr, "Unable to allocated %d bytes\n", rsize); MPI_Abort(MPI_COMM_WORLD, 1); } /* The following illustrates the use of the routines to * run through a selection of communicators and datatypes. * Use subsets of these for tests that do not involve combinations * of communicators, datatypes, and counts of datatypes */ while (MTestGetIntracommGeneral(&comm, 1, 1)) { if (comm == MPI_COMM_NULL) continue; /* Determine the sender and receiver */ MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); MPI_Win_create(buf, bufsize, sizeof(int), MPI_INFO_NULL, comm, &win); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Win_set_errhandler(win, MPI_ERRORS_RETURN); /** TEST OPERATIONS USING ACTIVE TARGET (FENCE) SYNCHRONIZATION **/ MPI_Win_fence(0, win); TEST_FENCE_OP("Put", MPI_Put(rmabuf, rcount, MPI_INT, MPI_PROC_NULL, 0, rcount, MPI_INT, win); ); TEST_FENCE_OP("Get", MPI_Get(rmabuf, rcount, MPI_INT, MPI_PROC_NULL, 0, rcount, MPI_INT, win); ); TEST_FENCE_OP("Accumulate", MPI_Accumulate(rmabuf, rcount, MPI_INT, MPI_PROC_NULL, 0, rcount, MPI_INT, MPI_SUM, win); ); TEST_FENCE_OP("Get accumulate", MPI_Get_accumulate(rmabuf, rcount, MPI_INT, result, rcount, MPI_INT, MPI_PROC_NULL, 0, rcount, MPI_INT, MPI_SUM, win); ); TEST_FENCE_OP("Fetch and op", MPI_Fetch_and_op(rmabuf, result, MPI_INT, MPI_PROC_NULL, 0, MPI_SUM, win); ); TEST_FENCE_OP("Compare and swap", MPI_Compare_and_swap(rmabuf, &rank, result, MPI_INT, MPI_PROC_NULL, 0, win); ); /** TEST OPERATIONS USING PASSIVE TARGET SYNCHRONIZATION **/ TEST_PT_OP("Put", MPI_Put(rmabuf, rcount, MPI_INT, MPI_PROC_NULL, 0, rcount, MPI_INT, win); ); TEST_PT_OP("Get", MPI_Get(rmabuf, rcount, MPI_INT, MPI_PROC_NULL, 0, rcount, MPI_INT, win); ); TEST_PT_OP("Accumulate", MPI_Accumulate(rmabuf, rcount, MPI_INT, MPI_PROC_NULL, 0, rcount, MPI_INT, MPI_SUM, win); ); TEST_PT_OP("Get accumulate", MPI_Get_accumulate(rmabuf, rcount, MPI_INT, result, rcount, MPI_INT, MPI_PROC_NULL, 0, rcount, MPI_INT, MPI_SUM, win); ); TEST_PT_OP("Fetch and op", MPI_Fetch_and_op(rmabuf, result, MPI_INT, MPI_PROC_NULL, 0, MPI_SUM, win); ); TEST_PT_OP("Compare and swap", MPI_Compare_and_swap(rmabuf, &rank, result, MPI_INT, MPI_PROC_NULL, 0, win); ); /** TEST REQUEST-BASED OPERATIONS (PASSIVE TARGET ONLY) **/ TEST_REQ_OP("Rput", req, MPI_Rput(rmabuf, rcount, MPI_INT, MPI_PROC_NULL, 0, rcount, MPI_INT, win, &req); ); TEST_REQ_OP("Rget", req, MPI_Rget(rmabuf, rcount, MPI_INT, MPI_PROC_NULL, 0, rcount, MPI_INT, win, &req); ); TEST_REQ_OP("Raccumulate", req, MPI_Raccumulate(rmabuf, rcount, MPI_INT, MPI_PROC_NULL, 0, rcount, MPI_INT, MPI_SUM, win, &req); ); TEST_REQ_OP("Rget_accumulate", req, MPI_Rget_accumulate(rmabuf, rcount, MPI_INT, result, rcount, MPI_INT, MPI_PROC_NULL, 0, rcount, MPI_INT, MPI_SUM, win, &req); ); MPI_Win_free(&win); MTestFreeComm(&comm); } free(result); free(buf); free(rmabuf); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/linked_list_lockall.c0000644000175000017500000001662412620254305021316 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* MPI-3 distributed linked list construction example * -------------------------------------------------- * * Construct a distributed shared linked list using proposed MPI-3 dynamic * windows. Initially process 0 creates the head of the list, attaches it to * the window, and broadcasts the pointer to all processes. All processes then * concurrently append N new elements to the list. When a process attempts to * attach its element to the tail of list it may discover that its tail pointer * is stale and it must chase ahead to the new tail before the element can be * attached. */ #include #include #include #include #include "mpitest.h" #ifdef HAVE_UNISTD_H #include #endif #define NUM_ELEMS 32 #define NPROBE 100 #define ELEM_PER_ROW 16 /* Linked list pointer */ typedef struct { int rank; MPI_Aint disp; } llist_ptr_t; /* Linked list element */ typedef struct { int value; llist_ptr_t next; } llist_elem_t; static const llist_ptr_t nil = { -1, (MPI_Aint) MPI_BOTTOM }; static const int verbose = 0; /* List of locally allocated list elements. */ static llist_elem_t **my_elems = NULL; static int my_elems_size = 0; static int my_elems_count = 0; /* Allocate a new shared linked list element */ MPI_Aint alloc_elem(int value, MPI_Win win) { MPI_Aint disp; llist_elem_t *elem_ptr; /* Allocate the new element and register it with the window */ MPI_Alloc_mem(sizeof(llist_elem_t), MPI_INFO_NULL, &elem_ptr); elem_ptr->value = value; elem_ptr->next = nil; MPI_Win_attach(win, elem_ptr, sizeof(llist_elem_t)); /* Add the element to the list of local elements so we can free it later. */ if (my_elems_size == my_elems_count) { my_elems_size += 100; my_elems = realloc(my_elems, my_elems_size * sizeof(void *)); } my_elems[my_elems_count] = elem_ptr; my_elems_count++; MPI_Get_address(elem_ptr, &disp); return disp; } int main(int argc, char **argv) { int procid, nproc, i; MPI_Win llist_win; llist_ptr_t head_ptr, tail_ptr; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &procid); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Win_create_dynamic(MPI_INFO_NULL, MPI_COMM_WORLD, &llist_win); /* Process 0 creates the head node */ if (procid == 0) head_ptr.disp = alloc_elem(-1, llist_win); /* Broadcast the head pointer to everyone */ head_ptr.rank = 0; MPI_Bcast(&head_ptr.disp, 1, MPI_AINT, 0, MPI_COMM_WORLD); tail_ptr = head_ptr; /* Lock the window for shared access to all targets */ MPI_Win_lock_all(0, llist_win); /* All processes concurrently append NUM_ELEMS elements to the list */ for (i = 0; i < NUM_ELEMS; i++) { llist_ptr_t new_elem_ptr; int success; /* Create a new list element and register it with the window */ new_elem_ptr.rank = procid; new_elem_ptr.disp = alloc_elem(procid, llist_win); /* Append the new node to the list. This might take multiple attempts if * others have already appended and our tail pointer is stale. */ do { llist_ptr_t next_tail_ptr = nil; MPI_Compare_and_swap((void *) &new_elem_ptr.rank, (void *) &nil.rank, (void *) &next_tail_ptr.rank, MPI_INT, tail_ptr.rank, (MPI_Aint) & (((llist_elem_t *) tail_ptr.disp)->next.rank), llist_win); MPI_Win_flush(tail_ptr.rank, llist_win); success = (next_tail_ptr.rank == nil.rank); if (success) { int i, flag; MPI_Accumulate(&new_elem_ptr.disp, 1, MPI_AINT, tail_ptr.rank, (MPI_Aint) & (((llist_elem_t *) tail_ptr.disp)->next.disp), 1, MPI_AINT, MPI_REPLACE, llist_win); MPI_Win_flush(tail_ptr.rank, llist_win); tail_ptr = new_elem_ptr; /* For implementations that use pt-to-pt messaging, force progress for other threads' * RMA operations. */ for (i = 0; i < NPROBE; i++) MPI_Iprobe(MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &flag, MPI_STATUS_IGNORE); } else { /* Tail pointer is stale, fetch the displacement. May take multiple tries * if it is being updated. */ do { MPI_Get_accumulate(NULL, 0, MPI_DATATYPE_NULL, &next_tail_ptr.disp, 1, MPI_AINT, tail_ptr.rank, (MPI_Aint) & (((llist_elem_t *) tail_ptr.disp)->next.disp), 1, MPI_AINT, MPI_NO_OP, llist_win); MPI_Win_flush(tail_ptr.rank, llist_win); } while (next_tail_ptr.disp == nil.disp); tail_ptr = next_tail_ptr; } } while (!success); } MPI_Win_unlock_all(llist_win); MPI_Barrier(MPI_COMM_WORLD); /* Traverse the list and verify that all processes inserted exactly the correct * number of elements. */ if (procid == 0) { int have_root = 0; int errors = 0; int *counts, count = 0; counts = (int *) malloc(sizeof(int) * nproc); assert(counts != NULL); for (i = 0; i < nproc; i++) counts[i] = 0; tail_ptr = head_ptr; MPI_Win_lock_all(0, llist_win); /* Walk the list and tally up the number of elements inserted by each rank */ while (tail_ptr.disp != nil.disp) { llist_elem_t elem; MPI_Get(&elem, sizeof(llist_elem_t), MPI_BYTE, tail_ptr.rank, tail_ptr.disp, sizeof(llist_elem_t), MPI_BYTE, llist_win); MPI_Win_flush(tail_ptr.rank, llist_win); tail_ptr = elem.next; /* This is not the root */ if (have_root) { assert(elem.value >= 0 && elem.value < nproc); counts[elem.value]++; count++; if (verbose) { int last_elem = tail_ptr.disp == nil.disp; printf("%2d%s", elem.value, last_elem ? "" : " -> "); if (count % ELEM_PER_ROW == 0 && !last_elem) printf("\n"); } } /* This is the root */ else { assert(elem.value == -1); have_root = 1; } } MPI_Win_unlock_all(llist_win); if (verbose) printf("\n\n"); /* Verify the counts we collected */ for (i = 0; i < nproc; i++) { int expected = NUM_ELEMS; if (counts[i] != expected) { printf("Error: Rank %d inserted %d elements, expected %d\n", i, counts[i], expected); errors++; } } printf("%s\n", errors == 0 ? " No Errors" : "FAIL"); free(counts); } MPI_Win_free(&llist_win); /* Free all the elements in the list */ for (; my_elems_count > 0; my_elems_count--) MPI_Free_mem(my_elems[my_elems_count - 1]); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/lock_contention_dt.c0000644000175000017500000000665412620254305021175 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test lock contention while streaming ACC-like operations"; */ int main(int argc, char *argv[]) { int errs = 0; int rank, size; int target = 1; int minsize = 2, count; MPI_Comm comm; MPI_Win win; MPI_Aint lb, extent; MTestDatatype sendtype, recvtype; MTest_Init(&argc, &argv); while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); MTEST_DATATYPE_FOR_EACH_COUNT(count) { while (MTestGetDatatypes(&sendtype, &recvtype, count)) { recvtype.printErrors = 1; recvtype.InitBuf(&recvtype); MPI_Type_get_extent(recvtype.datatype, &lb, &extent); MPI_Win_create(recvtype.buf, lb + recvtype.count * extent, (int) extent, MPI_INFO_NULL, comm, &win); if (rank != target) { sendtype.InitBuf(&sendtype); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, target, 0, win); MPI_Accumulate(sendtype.buf, sendtype.count, sendtype.datatype, target, 0, recvtype.count, recvtype.datatype, MPI_REPLACE, win); MPI_Win_unlock(target, win); MPI_Barrier(comm); char *resbuf = (char *) calloc(lb + extent * recvtype.count, sizeof(char)); /*wait for the destination to finish checking and reinitializing the buffer */ MPI_Barrier(comm); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, target, 0, win); MPI_Get_accumulate(sendtype.buf, sendtype.count, sendtype.datatype, resbuf, recvtype.count, recvtype.datatype, target, 0, recvtype.count, recvtype.datatype, MPI_REPLACE, win); MPI_Win_unlock(target, win); MPI_Barrier(comm); free(resbuf); } else { /* Target checks the result */ int err; MPI_Barrier(comm); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, win); err = MTestCheckRecv(0, &recvtype); if (err) errs++; recvtype.InitBuf(&recvtype); MPI_Win_unlock(rank, win); /*signal the source that checking and reinitialization is done */ MPI_Barrier(comm); MPI_Barrier(comm); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, win); err = MTestCheckRecv(0, &recvtype); if (err) errs++; MPI_Win_unlock(rank, win); } MPI_Win_free(&win); MTestFreeDatatype(&sendtype); MTestFreeDatatype(&recvtype); } } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/allocmem.c0000644000175000017500000000220112620254305017067 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Simple test that alloc_mem and free_mem work together"; */ int main(int argc, char *argv[]) { int errs = 0, err; int j, count; char *ap; MTest_Init(&argc, &argv); MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_RETURN); for (count = 1; count < 128000; count *= 2) { err = MPI_Alloc_mem(count, MPI_INFO_NULL, &ap); if (err) { int errclass; /* An error of MPI_ERR_NO_MEM is allowed */ MPI_Error_class(err, &errclass); if (errclass != MPI_ERR_NO_MEM) { errs++; MTestPrintError(err); } } else { /* Access all of this memory */ for (j = 0; j < count; j++) { ap[j] = (char) (j & 0x7f); } MPI_Free_mem(ap); } } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/lockopts.c0000644000175000017500000001402612620254305017144 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "stdio.h" #include "stdlib.h" #include "mpitest.h" /* tests passive target RMA on 2 processes. tests the lock-single_op-unlock optimization for less common cases: origin datatype derived, target datatype predefined */ int main(int argc, char *argv[]) { int wrank, nprocs, *srcbuf, *rmabuf, i; int memsize; MPI_Datatype vectype; MPI_Win win; int errs = 0; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &wrank); if (nprocs < 2) { printf("Run this program with 2 or more processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } memsize = 10 * 4 * nprocs; /* Create and initialize data areas */ srcbuf = (int *) malloc(sizeof(int) * memsize); MPI_Alloc_mem(sizeof(int) * memsize, MPI_INFO_NULL, &rmabuf); if (!srcbuf || !rmabuf) { printf("Unable to allocate srcbuf and rmabuf of size %d\n", memsize); MPI_Abort(MPI_COMM_WORLD, 1); } for (i = 0; i < memsize; i++) { rmabuf[i] = -i; srcbuf[i] = i; } MPI_Win_create(rmabuf, memsize * sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &win); /* Vector of 10 elements, separated by 4 */ MPI_Type_vector(10, 1, 4, MPI_INT, &vectype); MPI_Type_commit(&vectype); /* Accumulate with a derived origin type and target predefined type */ if (wrank == 0) { MPI_Barrier(MPI_COMM_WORLD); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, 0, 0, win); for (i = 0; i < 10; i++) { if (rmabuf[i] != -i + 4 * i) { errs++; printf("Acc: expected rmabuf[%d] = %d but saw %d\n", i, -i + 4 * i, rmabuf[i]); } rmabuf[i] = -i; } for (i = 10; i < memsize; i++) { if (rmabuf[i] != -i) { errs++; printf("Acc: expected rmabuf[%d] = %d but saw %d\n", i, -i, rmabuf[i]); rmabuf[i] = -i; } } MPI_Win_unlock(0, win); } else if (wrank == 1) { MPI_Win_lock(MPI_LOCK_SHARED, 0, 0, win); MPI_Accumulate(srcbuf, 1, vectype, 0, 0, 10, MPI_INT, MPI_SUM, win); MPI_Win_unlock(0, win); MPI_Barrier(MPI_COMM_WORLD); } else { MPI_Barrier(MPI_COMM_WORLD); } MPI_Barrier(MPI_COMM_WORLD); /* Put with a derived origin type and target predefined type */ if (wrank == 0) { MPI_Barrier(MPI_COMM_WORLD); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, 0, 0, win); for (i = 0; i < 10; i++) { if (rmabuf[i] != 4 * i) { errs++; printf("Put: expected rmabuf[%d] = %d but saw %d\n", i, 4 * i, rmabuf[i]); } rmabuf[i] = -i; } for (i = 10; i < memsize; i++) { if (rmabuf[i] != -i) { errs++; printf("Put: expected rmabuf[%d] = %d but saw %d\n", i, -i, rmabuf[i]); rmabuf[i] = -i; } } MPI_Win_unlock(0, win); } else if (wrank == 1) { MPI_Win_lock(MPI_LOCK_SHARED, 0, 0, win); MPI_Put(srcbuf, 1, vectype, 0, 0, 10, MPI_INT, win); MPI_Win_unlock(0, win); MPI_Barrier(MPI_COMM_WORLD); } else { MPI_Barrier(MPI_COMM_WORLD); } MPI_Barrier(MPI_COMM_WORLD); /* Put with a derived origin type and target predefined type, with * a get (see the move-to-end optimization) */ if (wrank == 0) { MPI_Barrier(MPI_COMM_WORLD); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, 0, 0, win); for (i = 0; i < 10; i++) { if (rmabuf[i] != 4 * i) { errs++; printf("Put: expected rmabuf[%d] = %d but saw %d\n", i, 4 * i, rmabuf[i]); } rmabuf[i] = -i; } for (i = 10; i < memsize; i++) { if (rmabuf[i] != -i) { errs++; printf("Put: expected rmabuf[%d] = %d but saw %d\n", i, -i, rmabuf[i]); rmabuf[i] = -i; } } MPI_Win_unlock(0, win); } else if (wrank == 1) { int val; MPI_Win_lock(MPI_LOCK_SHARED, 0, 0, win); MPI_Get(&val, 1, MPI_INT, 0, 10, 1, MPI_INT, win); MPI_Put(srcbuf, 1, vectype, 0, 0, 10, MPI_INT, win); MPI_Win_unlock(0, win); MPI_Barrier(MPI_COMM_WORLD); if (val != -10) { errs++; printf("Get: Expected -10, got %d\n", val); } } else { MPI_Barrier(MPI_COMM_WORLD); } MPI_Barrier(MPI_COMM_WORLD); /* Put with a derived origin type and target predefined type, with * a get already at the end (see the move-to-end optimization) */ if (wrank == 0) { MPI_Barrier(MPI_COMM_WORLD); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, 0, 0, win); for (i = 0; i < 10; i++) { if (rmabuf[i] != 4 * i) { errs++; printf("Put: expected rmabuf[%d] = %d but saw %d\n", i, 4 * i, rmabuf[i]); } rmabuf[i] = -i; } for (i = 10; i < memsize; i++) { if (rmabuf[i] != -i) { errs++; printf("Put: expected rmabuf[%d] = %d but saw %d\n", i, -i, rmabuf[i]); rmabuf[i] = -i; } } MPI_Win_unlock(0, win); } else if (wrank == 1) { int val; MPI_Win_lock(MPI_LOCK_SHARED, 0, 0, win); MPI_Put(srcbuf, 1, vectype, 0, 0, 10, MPI_INT, win); MPI_Get(&val, 1, MPI_INT, 0, 10, 1, MPI_INT, win); MPI_Win_unlock(0, win); MPI_Barrier(MPI_COMM_WORLD); if (val != -10) { errs++; printf("Get: Expected -10, got %d\n", val); } } else { MPI_Barrier(MPI_COMM_WORLD); } MPI_Win_free(&win); MPI_Free_mem(rmabuf); free(srcbuf); MPI_Type_free(&vectype); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/fetchandadd_tree_am.c0000644000175000017500000001347112620254305021232 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "stdio.h" #include "stdlib.h" #include "mpitest.h" /* This is the tree-based scalable version of the fetch-and-add example from Using MPI-2, pg 206-207. The code in the book (Fig 6.16) has bugs that are fixed below. */ /* same as fetchandadd_tree.c but uses alloc_mem */ #define NTIMES 20 /* no of times each process calls the counter * routine */ int localvalue = 0; /* contribution of this process to the counter. We * define it as a global variable because attribute * caching on the window is not enabled yet. */ void Get_nextval_tree(MPI_Win win, int *get_array, MPI_Datatype get_type, MPI_Datatype acc_type, int nlevels, int *value); int compar(const void *a, const void *b); int main(int argc, char *argv[]) { int rank, nprocs, i, *counter_mem, *get_array, *get_idx, *acc_idx, mask, nlevels, level, idx, tmp_rank, pof2; MPI_Datatype get_type, acc_type; MPI_Win win; int errs = 0, *results, *counter_vals; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (rank == 0) { /* allocate counter memory and initialize to 0 */ /* find the next power-of-two >= nprocs */ pof2 = 1; while (pof2 < nprocs) pof2 *= 2; /* counter_mem = (int *) calloc(pof2*2, sizeof(int)); */ i = MPI_Alloc_mem(pof2 * 2 * sizeof(int), MPI_INFO_NULL, &counter_mem); if (i) { printf("Can't allocate memory in test program\n"); MPI_Abort(MPI_COMM_WORLD, 1); } for (i = 0; i < (pof2 * 2); i++) counter_mem[i] = 0; MPI_Win_create(counter_mem, pof2 * 2 * sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &win); MPI_Win_free(&win); /* free(counter_mem) */ MPI_Free_mem(counter_mem); /* gather the results from other processes, sort them, and check * whether they represent a counter being incremented by 1 */ results = (int *) malloc(NTIMES * nprocs * sizeof(int)); for (i = 0; i < NTIMES * nprocs; i++) results[i] = -1; MPI_Gather(MPI_IN_PLACE, 0, MPI_DATATYPE_NULL, results, NTIMES, MPI_INT, 0, MPI_COMM_WORLD); qsort(results + NTIMES, NTIMES * (nprocs - 1), sizeof(int), compar); for (i = NTIMES + 1; i < (NTIMES * nprocs); i++) if (results[i] != results[i - 1] + 1) errs++; free(results); } else { /* Get the largest power of two smaller than nprocs */ mask = 1; nlevels = 0; while (mask < nprocs) { mask <<= 1; nlevels++; } mask >>= 1; get_array = (int *) malloc(nlevels * sizeof(int)); get_idx = (int *) malloc(nlevels * sizeof(int)); acc_idx = (int *) malloc(nlevels * sizeof(int)); level = 0; idx = 0; tmp_rank = rank; while (mask >= 1) { if (tmp_rank < mask) { /* go to left for acc_idx, go to right for * get_idx. set idx=acc_idx for next iteration */ acc_idx[level] = idx + 1; get_idx[level] = idx + mask * 2; idx = idx + 1; } else { /* go to right for acc_idx, go to left for * get_idx. set idx=acc_idx for next iteration */ acc_idx[level] = idx + mask * 2; get_idx[level] = idx + 1; idx = idx + mask * 2; } level++; tmp_rank = tmp_rank % mask; mask >>= 1; } /* for (i=0; i #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Put with Fences used to separate epochs"; */ #define MAX_PERR 10 int PrintRecvedError(const char *, MTestDatatype *, MTestDatatype *); int main(int argc, char **argv) { int errs = 0, err; int rank, size, source, dest; int minsize = 2, count; MPI_Comm comm; MPI_Win win; MPI_Aint extent; MTestDatatype sendtype, recvtype; int onlyInt = 0; MTest_Init(&argc, &argv); /* Check for a simple choice of communicator and datatypes */ if (getenv("MTEST_SIMPLE")) onlyInt = 1; while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; /* Determine the sender and receiver */ MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); source = 0; dest = size - 1; MTEST_DATATYPE_FOR_EACH_COUNT(count) { while (MTestGetDatatypes(&sendtype, &recvtype, count)) { MTestPrintfMsg(1, "Putting count = %d of sendtype %s receive type %s\n", count, MTestGetDatatypeName(&sendtype), MTestGetDatatypeName(&recvtype)); /* Make sure that everyone has a recv buffer */ recvtype.InitBuf(&recvtype); MPI_Type_extent(recvtype.datatype, &extent); MPI_Win_create(recvtype.buf, recvtype.count * extent, extent, MPI_INFO_NULL, comm, &win); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Win_set_errhandler(win, MPI_ERRORS_RETURN); /* At this point, we have all of the elements that we * need to begin the multiple fence and put tests */ /* Fence 1 */ err = MPI_Win_fence(MPI_MODE_NOPRECEDE, win); if (err) { if (errs++ < MAX_PERR) MTestPrintError(err); } /* Source puts */ if (rank == source) { sendtype.InitBuf(&sendtype); err = MPI_Put(sendtype.buf, sendtype.count, sendtype.datatype, dest, 0, recvtype.count, recvtype.datatype, win); if (err) { if (errs++ < MAX_PERR) MTestPrintError(err); } } /* Fence 2 */ err = MPI_Win_fence(0, win); if (err) { if (errs++ < MAX_PERR) MTestPrintError(err); } /* dest checks data, then Dest puts */ if (rank == dest) { err = MTestCheckRecv(0, &recvtype); if (err) { if (errs++ < MAX_PERR) { PrintRecvedError("fence 2", &sendtype, &recvtype); } } sendtype.InitBuf(&sendtype); err = MPI_Put(sendtype.buf, sendtype.count, sendtype.datatype, source, 0, recvtype.count, recvtype.datatype, win); if (err) { if (errs++ < MAX_PERR) MTestPrintError(err); } } /* Fence 3 */ err = MPI_Win_fence(0, win); if (err) { if (errs++ < MAX_PERR) MTestPrintError(err); } /* src checks data, then Src and dest puts */ if (rank == source) { err = MTestCheckRecv(0, &recvtype); if (err) { if (errs++ < MAX_PERR) { PrintRecvedError("fence 3", &sendtype, &recvtype); } } sendtype.InitBuf(&sendtype); err = MPI_Put(sendtype.buf, sendtype.count, sendtype.datatype, dest, 0, recvtype.count, recvtype.datatype, win); if (err) { if (errs++ < MAX_PERR) MTestPrintError(err); } } if (rank == dest) { sendtype.InitBuf(&sendtype); err = MPI_Put(sendtype.buf, sendtype.count, sendtype.datatype, source, 0, recvtype.count, recvtype.datatype, win); if (err) { if (errs++ < MAX_PERR) MTestPrintError(err); } } /* Fence 4 */ err = MPI_Win_fence(MPI_MODE_NOSUCCEED, win); if (err) { if (errs++ < MAX_PERR) MTestPrintError(err); } /* src and dest checks data */ if (rank == source) { err = MTestCheckRecv(0, &recvtype); if (err) { if (errs++ < MAX_PERR) { PrintRecvedError("src fence4", &sendtype, &recvtype); } } } if (rank == dest) { err = MTestCheckRecv(0, &recvtype); if (err) { if (errs++ < MAX_PERR) { PrintRecvedError("dest fence4", &sendtype, &recvtype); } } } MPI_Win_free(&win); MTestFreeDatatype(&sendtype); MTestFreeDatatype(&recvtype); /* Only do one datatype in the simple case */ if (onlyInt) break; } /* Only do one count in the simple case */ if (onlyInt) break; } MTestFreeComm(&comm); /* Only do one communicator in the simple case */ if (onlyInt) break; } MTest_Finalize(errs); MPI_Finalize(); return 0; } int PrintRecvedError(const char *msg, MTestDatatype * sendtypePtr, MTestDatatype * recvtypePtr) { printf ("At step %s, Data in target buffer did not match for destination datatype %s (put with source datatype %s)\n", msg, MTestGetDatatypeName(recvtypePtr), MTestGetDatatypeName(sendtypePtr)); /* Redo the test, with the errors printed */ recvtypePtr->printErrors = 1; (void) MTestCheckRecv(0, recvtypePtr); return 0; } mpi-testsuite-3.2+dfsg/rma/mixedsync.c0000644000175000017500000002000412620254305017302 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include /* static char MTEST_Descrip[] = "Mix synchronization types"; */ void delay(double time); void delay(double time) { double t1; t1 = MPI_Wtime(); while (MPI_Wtime() - t1 < time); } int main(int argc, char *argv[]) { int errs = 0; int crank, csize, source, dest, loop; int *buf0, *buf1, *buf2, *inbuf2, count0, count1, count2, count, i; MPI_Comm comm; MPI_Win win; int *winbuf; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; count0 = 1000; count1 = 1; count2 = 100; count = count0 + count1 + count2 + 2; /* Allocate and initialize the local buffers */ buf0 = (int *) malloc(count0 * sizeof(int)); buf1 = (int *) malloc(count1 * sizeof(int)); buf2 = (int *) malloc(count2 * sizeof(int)); inbuf2 = (int *) malloc(count2 * sizeof(int)); if (!buf0 || !buf1 || !buf2 || !inbuf2) { fprintf(stderr, "Unable to allocated buf0-2\n"); MPI_Abort(MPI_COMM_WORLD, 1); } for (i = 0; i < count0; i++) buf0[i] = i; for (i = 0; i < count1; i++) buf1[i] = i + count0; for (i = 0; i < count2; i++) buf2[i] = i + count0 + count1; /* Allocate the window buffer and create the memory window. */ MPI_Alloc_mem(count * sizeof(int), MPI_INFO_NULL, &winbuf); if (!winbuf) { fprintf(stderr, "Unable to allocate %d words\n", count); MPI_Abort(MPI_COMM_WORLD, 0); } MPI_Win_create(winbuf, count * sizeof(int), sizeof(int), MPI_INFO_NULL, comm, &win); MPI_Comm_size(comm, &csize); MPI_Comm_rank(comm, &crank); dest = 0; source = 1; for (loop = 0; loop < 2; loop++) { /* Perform several communication operations, mixing synchronization * types. Use multiple communication to avoid the single-operation * optimization that may be present. */ MTestPrintfMsg(3, "Beginning loop %d of mixed sync put operations\n", loop); MPI_Barrier(comm); if (crank == source) { MTestPrintfMsg(3, "About to perform exclusive lock\n"); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, dest, 0, win); MPI_Put(buf0, count0, MPI_INT, dest, 0, count0, MPI_INT, win); MPI_Put(buf1, count1, MPI_INT, dest, count0, count1, MPI_INT, win); MPI_Put(buf2, count2, MPI_INT, dest, count0 + count1, count2, MPI_INT, win); MPI_Win_unlock(dest, win); MTestPrintfMsg(3, "Released exclusive lock\n"); } else if (crank == dest) { /* Just delay a bit */ delay(0.0001); } /* The synchronization mode can only be changed when the process * memory and public copy are guaranteed to have the same values * (See 11.7, Semantics and Correctness). This barrier ensures that * the lock/unlock completes before the fence call. */ MPI_Barrier(comm); MTestPrintfMsg(3, "About to start fence\n"); MPI_Win_fence(0, win); if (crank == source) { MPI_Put(buf0, count0, MPI_INT, dest, 1, count0, MPI_INT, win); MPI_Put(buf1, count1, MPI_INT, dest, 1 + count0, count1, MPI_INT, win); MPI_Put(buf2, count2, MPI_INT, dest, 1 + count0 + count1, count2, MPI_INT, win); } MPI_Win_fence(0, win); MTestPrintfMsg(3, "Finished with fence sync\n"); /* Check results */ if (crank == dest) { for (i = 0; i < count0 + count1 + count2; i++) { if (winbuf[1 + i] != i) { errs++; if (errs < 10) { fprintf(stderr, "winbuf[%d] = %d, expected %d\n", 1 + i, winbuf[1 + i], i); fflush(stderr); } } } } /* End of test loop */ } /* Use mixed put and accumulate */ for (loop = 0; loop < 2; loop++) { /* Perform several communication operations, mixing synchronization * types. Use multiple communication to avoid the single-operation * optimization that may be present. */ MTestPrintfMsg(3, "Begining loop %d of mixed sync put/acc operations\n", loop); memset(winbuf, 0, count * sizeof(int)); MPI_Barrier(comm); if (crank == source) { MPI_Win_lock(MPI_LOCK_EXCLUSIVE, dest, 0, win); MPI_Accumulate(buf0, count0, MPI_INT, dest, 0, count0, MPI_INT, MPI_SUM, win); MPI_Accumulate(buf1, count1, MPI_INT, dest, count0, count1, MPI_INT, MPI_SUM, win); MPI_Put(buf2, count2, MPI_INT, dest, count0 + count1, count2, MPI_INT, win); MPI_Win_unlock(dest, win); } else if (crank == dest) { /* Just delay a bit */ delay(0.0001); } /* See above - the fence should not start until the unlock completes */ MPI_Barrier(comm); MPI_Win_fence(0, win); if (crank == source) { MPI_Accumulate(buf0, count0, MPI_INT, dest, 1, count0, MPI_INT, MPI_REPLACE, win); MPI_Accumulate(buf1, count1, MPI_INT, dest, 1 + count0, count1, MPI_INT, MPI_REPLACE, win); MPI_Put(buf2, count2, MPI_INT, dest, 1 + count0 + count1, count2, MPI_INT, win); } MPI_Win_fence(0, win); /* Check results */ if (crank == dest) { for (i = 0; i < count0 + count1 + count2; i++) { if (winbuf[1 + i] != i) { errs++; if (errs < 10) { fprintf(stderr, "winbuf[%d] = %d, expected %d\n", 1 + i, winbuf[1 + i], i); fflush(stderr); } } } } /* End of test loop */ } /* Use mixed accumulate and get */ for (loop = 0; loop < 2; loop++) { /* Perform several communication operations, mixing synchronization * types. Use multiple communication to avoid the single-operation * optimization that may be present. */ MTestPrintfMsg(3, "Begining loop %d of mixed sync put/get/acc operations\n", loop); MPI_Barrier(comm); if (crank == source) { MPI_Win_lock(MPI_LOCK_EXCLUSIVE, dest, 0, win); MPI_Accumulate(buf0, count0, MPI_INT, dest, 0, count0, MPI_INT, MPI_REPLACE, win); MPI_Put(buf1, count1, MPI_INT, dest, count0, count1, MPI_INT, win); MPI_Get(inbuf2, count2, MPI_INT, dest, count0 + count1, count2, MPI_INT, win); MPI_Win_unlock(dest, win); } else if (crank == dest) { /* Just delay a bit */ delay(0.0001); } /* See above - the fence should not start until the unlock completes */ MPI_Barrier(comm); MPI_Win_fence(0, win); if (crank == source) { MPI_Accumulate(buf0, count0, MPI_INT, dest, 1, count0, MPI_INT, MPI_REPLACE, win); MPI_Put(buf1, count1, MPI_INT, dest, 1 + count0, count1, MPI_INT, win); MPI_Get(inbuf2, count2, MPI_INT, dest, 1 + count0 + count1, count2, MPI_INT, win); } MPI_Win_fence(0, win); /* Check results */ if (crank == dest) { /* Do the put/accumulate parts */ for (i = 0; i < count0 + count1; i++) { if (winbuf[1 + i] != i) { errs++; if (errs < 10) { fprintf(stderr, "winbuf[%d] = %d, expected %d\n", 1 + i, winbuf[1 + i], i); fflush(stderr); } } } } /* End of test loop */ } MTestPrintfMsg(3, "Freeing the window\n"); MPI_Barrier(comm); MPI_Win_free(&win); MPI_Free_mem(winbuf); free(buf0); free(buf1); free(buf2); free(inbuf2); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/contention_putget.c0000644000175000017500000000511712620254305021057 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /** Contended RMA put/get test -- James Dinan * * Each process issues COUNT put and get operations to non-overlapping * locations on every other processs. */ #include #include #include #include "mpi.h" #define MAXELEMS 6400 #define COUNT 1000 static int me, nproc; static const int verbose = 0; void test_put(void); void test_put(void) { MPI_Win dst_win; double *dst_buf; double src_buf[MAXELEMS]; int i, j; MPI_Alloc_mem(sizeof(double) * nproc * MAXELEMS, MPI_INFO_NULL, &dst_buf); MPI_Win_create(dst_buf, sizeof(double) * nproc * MAXELEMS, 1, MPI_INFO_NULL, MPI_COMM_WORLD, &dst_win); for (i = 0; i < MAXELEMS; i++) src_buf[i] = me + 1.0; MPI_Win_lock(MPI_LOCK_EXCLUSIVE, me, 0, dst_win); for (i = 0; i < nproc * MAXELEMS; i++) dst_buf[i] = 0.0; MPI_Win_unlock(me, dst_win); MPI_Barrier(MPI_COMM_WORLD); for (i = 0; i < nproc; i++) { int target = i; for (j = 0; j < COUNT; j++) { if (verbose) printf("%2d -> %2d [%2d]\n", me, target, j); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, target, 0, dst_win); MPI_Put(&src_buf[j], sizeof(double), MPI_BYTE, target, (me * MAXELEMS + j) * sizeof(double), sizeof(double), MPI_BYTE, dst_win); MPI_Win_unlock(target, dst_win); } for (j = 0; j < COUNT; j++) { if (verbose) printf("%2d <- %2d [%2d]\n", me, target, j); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, target, 0, dst_win); MPI_Get(&src_buf[j], sizeof(double), MPI_BYTE, target, (me * MAXELEMS + j) * sizeof(double), sizeof(double), MPI_BYTE, dst_win); MPI_Win_unlock(target, dst_win); } } MPI_Barrier(MPI_COMM_WORLD); MPI_Win_free(&dst_win); MPI_Free_mem(dst_buf); } int main(int argc, char *argv[]) { MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Comm_rank(MPI_COMM_WORLD, &me); assert(COUNT <= MAXELEMS); if (me == 0 && verbose) { printf("Test starting on %d processes\n", nproc); fflush(stdout); } test_put(); MPI_Barrier(MPI_COMM_WORLD); MPI_Finalize(); if (me == 0 && verbose) { printf("Test completed.\n"); fflush(stdout); } if (me == 0) printf(" No Errors\n"); return 0; } mpi-testsuite-3.2+dfsg/rma/lockall_dt_flush.c0000644000175000017500000001046512620254305020622 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test for streaming ACC-like operations with lock_all+flush"; */ int main(int argc, char *argv[]) { int errs = 0; int rank, size; int minsize = 2, count; MPI_Comm comm; MPI_Win win; MPI_Aint lb, extent; MTestDatatype sendtype, recvtype; MTest_Init(&argc, &argv); while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); int source = 0; MTEST_DATATYPE_FOR_EACH_COUNT(count) { while (MTestGetDatatypes(&sendtype, &recvtype, count)) { recvtype.printErrors = 1; recvtype.InitBuf(&recvtype); MPI_Type_get_extent(recvtype.datatype, &lb, &extent); MPI_Win_create(recvtype.buf, lb + recvtype.count * extent, (int) extent, MPI_INFO_NULL, comm, &win); if (rank == source) { int dest; sendtype.InitBuf(&sendtype); MPI_Win_lock_all(0, win); for (dest = 0; dest < size; dest++) if (dest != source) { MPI_Accumulate(sendtype.buf, sendtype.count, sendtype.datatype, dest, 0, recvtype.count, recvtype.datatype, MPI_REPLACE, win); MPI_Win_flush(dest, win); } /*signal to dest that the ops are flushed so that it starts checking the result */ MPI_Barrier(comm); /*make sure dest finishes checking the result before issuing unlock */ MPI_Barrier(comm); MPI_Win_unlock_all(win); char *resbuf = (char *) calloc(lb + extent * recvtype.count, sizeof(char)); /*wait for the destinations to finish checking and reinitializing the buffers */ MPI_Barrier(comm); MPI_Win_lock_all(0, win); for (dest = 0; dest < size; dest++) if (dest != source) { MPI_Get_accumulate(sendtype.buf, sendtype.count, sendtype.datatype, resbuf, recvtype.count, recvtype.datatype, dest, 0, recvtype.count, recvtype.datatype, MPI_REPLACE, win); MPI_Win_flush(dest, win); } /*signal to dest that the ops are flushed so that it starts checking the result */ MPI_Barrier(comm); /*make sure dest finishes checking the result before issuing unlock */ MPI_Barrier(comm); MPI_Win_unlock_all(win); free(resbuf); } else { int err; MPI_Barrier(comm); MPI_Win_lock(MPI_LOCK_SHARED, rank, 0, win); err = MTestCheckRecv(0, &recvtype); if (err) errs++; recvtype.InitBuf(&recvtype); MPI_Barrier(comm); MPI_Win_unlock(rank, win); /*signal the source that checking and reinitialization is done */ MPI_Barrier(comm); MPI_Barrier(comm); MPI_Win_lock(MPI_LOCK_SHARED, rank, 0, win); err = MTestCheckRecv(0, &recvtype); if (err) errs++; MPI_Barrier(comm); MPI_Win_unlock(rank, win); } MPI_Win_free(&win); MTestFreeDatatype(&sendtype); MTestFreeDatatype(&recvtype); } } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/strided_getacc_indexed_shared.c0000644000175000017500000001122012620254305023271 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; -*- */ /* * (C) 2011 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* One-Sided MPI 2-D Strided Accumulate Test * * Author: James Dinan * Date : November, 2012 * * This code performs N strided put operations followed by get operations into * a 2d patch of a shared array. The array has dimensions [X, Y] and the * subarray has dimensions [SUB_X, SUB_Y] and begins at index [0, 0]. The * input and output buffers are specified using an MPI indexed type. */ #include #include #include #include #include "mpitest.h" #include "squelch.h" #define XDIM 8 #define YDIM 1024 #define SUB_XDIM 1 #define SUB_YDIM 2 #define ITERATIONS 10 int main(int argc, char **argv) { int rank, nranks, rank_world, nranks_world; int i, j, peer, bufsize, errors; double *win_buf, *src_buf, *dst_buf; MPI_Win buf_win; MPI_Comm shr_comm; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank_world); MPI_Comm_size(MPI_COMM_WORLD, &nranks_world); MPI_Comm_split_type(MPI_COMM_WORLD, MPI_COMM_TYPE_SHARED, rank, MPI_INFO_NULL, &shr_comm); MPI_Comm_rank(shr_comm, &rank); MPI_Comm_size(shr_comm, &nranks); bufsize = XDIM * YDIM * sizeof(double); MPI_Alloc_mem(bufsize, MPI_INFO_NULL, &src_buf); MPI_Alloc_mem(bufsize, MPI_INFO_NULL, &dst_buf); MPI_Win_allocate_shared(bufsize, 1, MPI_INFO_NULL, shr_comm, &win_buf, &buf_win); MPI_Win_fence(0, buf_win); for (i = 0; i < XDIM * YDIM; i++) { *(win_buf + i) = -1.0; *(src_buf + i) = 1.0 + rank; } MPI_Win_fence(0, buf_win); peer = (rank + 1) % nranks; /* Perform ITERATIONS strided accumulate operations */ for (i = 0; i < ITERATIONS; i++) { int idx_rem[SUB_YDIM]; int blk_len[SUB_YDIM]; MPI_Datatype src_type, dst_type; for (j = 0; j < SUB_YDIM; j++) { idx_rem[j] = j * XDIM; blk_len[j] = SUB_XDIM; } MPI_Type_indexed(SUB_YDIM, blk_len, idx_rem, MPI_DOUBLE, &src_type); MPI_Type_indexed(SUB_YDIM, blk_len, idx_rem, MPI_DOUBLE, &dst_type); MPI_Type_commit(&src_type); MPI_Type_commit(&dst_type); /* PUT */ MPI_Win_lock(MPI_LOCK_EXCLUSIVE, peer, 0, buf_win); MPI_Get_accumulate(src_buf, 1, src_type, dst_buf, 1, src_type, peer, 0, 1, dst_type, MPI_REPLACE, buf_win); MPI_Win_unlock(peer, buf_win); /* GET */ MPI_Win_lock(MPI_LOCK_EXCLUSIVE, peer, 0, buf_win); MPI_Get_accumulate(src_buf, 1, src_type, dst_buf, 1, src_type, peer, 0, 1, dst_type, MPI_NO_OP, buf_win); MPI_Win_unlock(peer, buf_win); MPI_Type_free(&src_type); MPI_Type_free(&dst_type); } MPI_Barrier(MPI_COMM_WORLD); /* Verify that the results are correct */ MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, buf_win); errors = 0; for (i = 0; i < SUB_XDIM; i++) { for (j = 0; j < SUB_YDIM; j++) { const double actual = *(win_buf + i + j * XDIM); const double expected = (1.0 + ((rank + nranks - 1) % nranks)); if (fabs(actual - expected) > 1.0e-10) { SQUELCH(printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual);); errors++; fflush(stdout); } } } for (i = SUB_XDIM; i < XDIM; i++) { for (j = 0; j < SUB_YDIM; j++) { const double actual = *(win_buf + i + j * XDIM); const double expected = -1.0; if (fabs(actual - expected) > 1.0e-10) { SQUELCH(printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual);); errors++; fflush(stdout); } } } for (i = 0; i < XDIM; i++) { for (j = SUB_YDIM; j < YDIM; j++) { const double actual = *(win_buf + i + j * XDIM); const double expected = -1.0; if (fabs(actual - expected) > 1.0e-10) { SQUELCH(printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual);); errors++; fflush(stdout); } } } MPI_Win_unlock(rank, buf_win); MPI_Win_free(&buf_win); MPI_Free_mem(src_buf); MPI_Free_mem(dst_buf); MPI_Comm_free(&shr_comm); MTest_Finalize(errors); MPI_Finalize(); return MTestReturnValue(errors); } mpi-testsuite-3.2+dfsg/rma/req_example.c0000644000175000017500000000474212620254305017614 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include "mpitest.h" #define NSTEPS 100 #define N 1000 #define M 10 /* This is example 11.21 from the MPI 3.0 spec: * * The following example shows how request-based operations can be used to * overlap communication with computation. Each process fetches, processes, * and writes the result for NSTEPS chunks of data. Instead of a single * buffer, M local buffers are used to allow up to M communication operations * to overlap with computation. */ /* Use a global variable to inhibit compiler optimizations in the compute * function. */ double junk = 0.0; void compute(int step, double *data) { int i; for (i = 0; i < N; i++) junk += data[i] * (double) step; } int main(int argc, char *argv[]) { int i, rank, nproc; int errors = 0, all_errors = 0; MPI_Win win; MPI_Request put_req[M] = { MPI_REQUEST_NULL }; MPI_Request get_req; double *baseptr; double data[M][N]; /* M buffers of length N */ MPI_Info win_info; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); assert(M < NSTEPS); MPI_Info_create(&win_info); #ifdef USE_WIN_ALLOC_SHM MPI_Info_set(win_info, "alloc_shm", "true"); #else MPI_Info_set(win_info, "alloc_shm", "false"); #endif MPI_Win_allocate(NSTEPS * N * sizeof(double), sizeof(double), win_info, MPI_COMM_WORLD, &baseptr, &win); MPI_Win_lock_all(0, win); for (i = 0; i < NSTEPS; i++) { int target = (rank + 1) % nproc; int j; /* Find a free put request */ if (i < M) { j = i; } else { MPI_Waitany(M, put_req, &j, MPI_STATUS_IGNORE); } MPI_Rget(data[j], N, MPI_DOUBLE, target, i * N, N, MPI_DOUBLE, win, &get_req); MPI_Wait(&get_req, MPI_STATUS_IGNORE); compute(i, data[j]); MPI_Rput(data[j], N, MPI_DOUBLE, target, i * N, N, MPI_DOUBLE, win, &put_req[j]); } MPI_Waitall(M, put_req, MPI_STATUSES_IGNORE); MPI_Win_unlock_all(win); MPI_Win_free(&win); MPI_Info_free(&win_info); MPI_Reduce(&errors, &all_errors, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (rank == 0 && all_errors == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/lockall_dt_flushall.c0000644000175000017500000001044412620254305021310 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test for streaming ACC-like operations with lock_all+flush_all"; */ int main(int argc, char *argv[]) { int errs = 0; int rank, size; int minsize = 2, count; MPI_Comm comm; MPI_Win win; MPI_Aint lb, extent; MTestDatatype sendtype, recvtype; MTest_Init(&argc, &argv); while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); int source = 0; MTEST_DATATYPE_FOR_EACH_COUNT(count) { while (MTestGetDatatypes(&sendtype, &recvtype, count)) { recvtype.printErrors = 1; recvtype.InitBuf(&recvtype); MPI_Type_get_extent(recvtype.datatype, &lb, &extent); MPI_Win_create(recvtype.buf, lb + recvtype.count * extent, (int) extent, MPI_INFO_NULL, comm, &win); if (rank == source) { int dest; sendtype.InitBuf(&sendtype); MPI_Win_lock_all(0, win); for (dest = 0; dest < size; dest++) if (dest != source) { MPI_Accumulate(sendtype.buf, sendtype.count, sendtype.datatype, dest, 0, recvtype.count, recvtype.datatype, MPI_REPLACE, win); } MPI_Win_flush_all(win); /*signal to dest that the ops are flushed so that it starts checking the result */ MPI_Barrier(comm); /*make sure dest finishes checking the result before issuing unlock */ MPI_Barrier(comm); MPI_Win_unlock_all(win); char *resbuf = (char *) calloc(lb + extent * recvtype.count, sizeof(char)); /*wait for the destination to finish checking and reinitializing the buffer */ MPI_Barrier(comm); MPI_Win_lock_all(0, win); for (dest = 0; dest < size; dest++) if (dest != source) { MPI_Get_accumulate(sendtype.buf, sendtype.count, sendtype.datatype, resbuf, recvtype.count, recvtype.datatype, dest, 0, recvtype.count, recvtype.datatype, MPI_REPLACE, win); } MPI_Win_flush_all(win); /*signal to dest that the ops are flushed so that it starts checking the result */ MPI_Barrier(comm); /*make sure dest finishes checking the result before issuing unlock */ MPI_Barrier(comm); MPI_Win_unlock_all(win); free(resbuf); } else { int err; MPI_Barrier(comm); MPI_Win_lock(MPI_LOCK_SHARED, rank, 0, win); err = MTestCheckRecv(0, &recvtype); if (err) errs++; recvtype.InitBuf(&recvtype); MPI_Barrier(comm); MPI_Win_unlock(rank, win); /*signal the source that checking and reinitialization is done */ MPI_Barrier(comm); MPI_Barrier(comm); MPI_Win_lock(MPI_LOCK_SHARED, rank, 0, win); err = MTestCheckRecv(0, &recvtype); if (err) errs++; MPI_Barrier(comm); MPI_Win_unlock(rank, win); } MPI_Win_free(&win); MTestFreeDatatype(&sendtype); MTestFreeDatatype(&recvtype); } } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/test4.c0000644000175000017500000000477712620254305016365 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "stdio.h" #include "stdlib.h" #include "mpitest.h" #include "squelch.h" /* tests passive target RMA on 2 processes. tests the lock-single_op-unlock optimization. */ #define SIZE1 100 #define SIZE2 200 int main(int argc, char *argv[]) { int rank, nprocs, A[SIZE2], B[SIZE2], i, j; MPI_Comm CommDeuce; MPI_Win win; int errs = 0; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (nprocs < 2) { printf("Run this program with 2 or more processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_split(MPI_COMM_WORLD, (rank < 2), rank, &CommDeuce); if (rank < 2) { if (rank == 0) { for (i = 0; i < SIZE2; i++) A[i] = B[i] = i; MPI_Win_create(NULL, 0, 1, MPI_INFO_NULL, CommDeuce, &win); for (j = 0; j < 2; j++) { for (i = 0; i < SIZE1; i++) { MPI_Win_lock(MPI_LOCK_SHARED, 1, j == 0 ? 0 : MPI_MODE_NOCHECK, win); MPI_Put(A + i, 1, MPI_INT, 1, i, 1, MPI_INT, win); MPI_Win_unlock(1, win); } for (i = 0; i < SIZE1; i++) { MPI_Win_lock(MPI_LOCK_SHARED, 1, j == 0 ? 0 : MPI_MODE_NOCHECK, win); MPI_Get(B + i, 1, MPI_INT, 1, SIZE1 + i, 1, MPI_INT, win); MPI_Win_unlock(1, win); } } MPI_Win_free(&win); for (i = 0; i < SIZE1; i++) if (B[i] != (-4) * (i + SIZE1)) { SQUELCH(printf ("Get Error: B[%d] is %d, should be %d\n", i, B[i], (-4) * (i + SIZE1));); errs++; } } else { /* rank=1 */ for (i = 0; i < SIZE2; i++) B[i] = (-4) * i; MPI_Win_create(B, SIZE2 * sizeof(int), sizeof(int), MPI_INFO_NULL, CommDeuce, &win); MPI_Win_free(&win); for (i = 0; i < SIZE1; i++) { if (B[i] != i) { SQUELCH(printf("Put Error: B[%d] is %d, should be %d\n", i, B[i], i);); errs++; } } } } MPI_Comm_free(&CommDeuce); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/contig_displ.c0000644000175000017500000000602512620254305017764 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include "mpitest.h" /* Run with 1 process. This program does an MPI_Get with an indexed datatype. The datatype comprises a single integer at an initial displacement of 1 integer. That is, the first integer in the array is to be skipped. This program found a bug in IBM's MPI in which MPI_Get ignored the displacement and got the first integer instead of the second. */ int main(int argc, char **argv) { int rank, nprocs, mpi_err, *array; int getval, disp, errs = 0; MPI_Win win; MPI_Datatype type; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); if (rank == 0) { /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(MPI_COMM_SELF, MPI_ERRORS_RETURN); /* create an indexed datatype that points to the second integer * in an array (the first integer is skipped). */ disp = 1; mpi_err = MPI_Type_create_indexed_block(1, 1, &disp, MPI_INT, &type); if (mpi_err != MPI_SUCCESS) goto err_return; mpi_err = MPI_Type_commit(&type); if (mpi_err != MPI_SUCCESS) goto err_return; /* allocate window of size 2 integers */ mpi_err = MPI_Alloc_mem(2 * sizeof(int), MPI_INFO_NULL, &array); if (mpi_err != MPI_SUCCESS) goto err_return; /* create window object */ mpi_err = MPI_Win_create(array, 2 * sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_SELF, &win); if (mpi_err != MPI_SUCCESS) goto err_return; /* initialize array */ array[0] = 100; array[1] = 200; getval = 0; /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Win_set_errhandler(win, MPI_ERRORS_RETURN); mpi_err = MPI_Win_lock(MPI_LOCK_EXCLUSIVE, 0, 0, win); if (mpi_err != MPI_SUCCESS) goto err_return; /* get the current value of element array[1] */ mpi_err = MPI_Get(&getval, 1, MPI_INT, 0, 0, 1, type, win); if (mpi_err != MPI_SUCCESS) goto err_return; mpi_err = MPI_Win_unlock(0, win); if (mpi_err != MPI_SUCCESS) goto err_return; /* getval should contain the value of array[1] */ if (getval != array[1]) { errs++; printf("getval=%d, should be %d\n", getval, array[1]); } MPI_Free_mem(array); MPI_Win_free(&win); MPI_Type_free(&type); } MTest_Finalize(errs); MPI_Finalize(); return 0; err_return: printf("MPI function error returned an error\n"); MTestPrintError(mpi_err); errs++; MTest_Finalize(errs); MPI_Finalize(); return 1; } mpi-testsuite-3.2+dfsg/rma/putpscw1.c0000644000175000017500000000754612620254305017105 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Put with Post/Start/Complete/Wait"; */ int main(int argc, char *argv[]) { int errs = 0, err; int rank, size, source, dest; int minsize = 2, count; MPI_Comm comm; MPI_Win win; MPI_Aint extent; MPI_Group wingroup, neighbors; MTestDatatype sendtype, recvtype; MTest_Init(&argc, &argv); /* The following illustrates the use of the routines to * run through a selection of communicators and datatypes. * Use subsets of these for tests that do not involve combinations * of communicators, datatypes, and counts of datatypes */ while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; /* Determine the sender and receiver */ MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); source = 0; dest = size - 1; MTEST_DATATYPE_FOR_EACH_COUNT(count) { while (MTestGetDatatypes(&sendtype, &recvtype, count)) { /* Make sure that everyone has a recv buffer */ recvtype.InitBuf(&recvtype); MPI_Type_extent(recvtype.datatype, &extent); MPI_Win_create(recvtype.buf, recvtype.count * extent, (int) extent, MPI_INFO_NULL, comm, &win); MPI_Win_get_group(win, &wingroup); if (rank == source) { /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Win_set_errhandler(win, MPI_ERRORS_RETURN); sendtype.InitBuf(&sendtype); /* Neighbor is dest only */ MPI_Group_incl(wingroup, 1, &dest, &neighbors); err = MPI_Win_start(neighbors, 0, win); if (err) { errs++; if (errs < 10) { MTestPrintError(err); } } MPI_Group_free(&neighbors); err = MPI_Put(sendtype.buf, sendtype.count, sendtype.datatype, dest, 0, recvtype.count, recvtype.datatype, win); if (err) { errs++; MTestPrintError(err); } err = MPI_Win_complete(win); if (err) { errs++; if (errs < 10) { MTestPrintError(err); } } } else if (rank == dest) { MPI_Group_incl(wingroup, 1, &source, &neighbors); MPI_Win_post(neighbors, 0, win); MPI_Group_free(&neighbors); MPI_Win_wait(win); /* This should have the same effect, in terms of * transfering data, as a send/recv pair */ err = MTestCheckRecv(0, &recvtype); if (err) { errs += errs; } } else { /* Nothing; the other processes need not call any * MPI routines */ ; } MPI_Win_free(&win); MTestFreeDatatype(&sendtype); MTestFreeDatatype(&recvtype); MPI_Group_free(&wingroup); } } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/test5_am.c0000644000175000017500000000520012620254305017021 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "stdio.h" #include "mpitest.h" #include "squelch.h" /* tests a series of Gets. Run on 2 processes. */ /* same as test5.c but uses alloc_mem */ #define SIZE 2000 int main(int argc, char *argv[]) { int rank, nprocs, i, *A, *B; MPI_Comm CommDeuce; MPI_Win win; int errs = 0; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (nprocs < 2) { printf("Run this program with 2 or more processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_split(MPI_COMM_WORLD, (rank < 2), rank, &CommDeuce); if (rank < 2) { i = MPI_Alloc_mem(SIZE * sizeof(int), MPI_INFO_NULL, &A); if (i) { printf("Can't allocate memory in test program\n"); MPI_Abort(MPI_COMM_WORLD, 1); } i = MPI_Alloc_mem(SIZE * sizeof(int), MPI_INFO_NULL, &B); if (i) { printf("Can't allocate memory in test program\n"); MPI_Abort(MPI_COMM_WORLD, 1); } if (rank == 0) { for (i = 0; i < SIZE; i++) B[i] = 500 + i; MPI_Win_create(B, SIZE * sizeof(int), sizeof(int), MPI_INFO_NULL, CommDeuce, &win); MPI_Win_fence(0, win); for (i = 0; i < SIZE; i++) { A[i] = i + 100; MPI_Get(&A[i], 1, MPI_INT, 1, i, 1, MPI_INT, win); } MPI_Win_fence(0, win); for (i = 0; i < SIZE; i++) if (A[i] != 1000 + i) { SQUELCH(printf("Rank 0: A[%d] is %d, should be %d\n", i, A[i], 1000 + i);); errs++; } } if (rank == 1) { for (i = 0; i < SIZE; i++) A[i] = 1000 + i; MPI_Win_create(A, SIZE * sizeof(int), sizeof(int), MPI_INFO_NULL, CommDeuce, &win); MPI_Win_fence(0, win); for (i = 0; i < SIZE; i++) { B[i] = i + 200; MPI_Get(&B[i], 1, MPI_INT, 0, i, 1, MPI_INT, win); } MPI_Win_fence(0, win); for (i = 0; i < SIZE; i++) if (B[i] != 500 + i) { SQUELCH(printf("Rank 1: B[%d] is %d, should be %d\n", i, B[i], 500 + i);); errs++; } } MPI_Win_free(&win); MPI_Free_mem(A); MPI_Free_mem(B); } MPI_Comm_free(&CommDeuce); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/test1.c0000644000175000017500000000434012620254305016344 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "stdio.h" #include "mpitest.h" #include "squelch.h" /* tests a series of puts, gets, and accumulate on 2 processes using fence */ #define SIZE 100 int main(int argc, char *argv[]) { int rank, nprocs, A[SIZE], B[SIZE], i; MPI_Comm CommDeuce; MPI_Win win; int errs = 0; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (nprocs < 2) { printf("Run this program with 2 or more processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_split(MPI_COMM_WORLD, (rank < 2), rank, &CommDeuce); if (rank < 2) { if (rank == 0) { for (i = 0; i < SIZE; i++) A[i] = B[i] = i; } else { for (i = 0; i < SIZE; i++) { A[i] = (-3) * i; B[i] = (-4) * i; } } MPI_Win_create(B, SIZE * sizeof(int), sizeof(int), MPI_INFO_NULL, CommDeuce, &win); MPI_Win_fence(0, win); if (rank == 0) { for (i = 0; i < SIZE - 1; i++) MPI_Put(A + i, 1, MPI_INT, 1, i, 1, MPI_INT, win); } else { for (i = 0; i < SIZE - 1; i++) MPI_Get(A + i, 1, MPI_INT, 0, i, 1, MPI_INT, win); MPI_Accumulate(A + i, 1, MPI_INT, 0, i, 1, MPI_INT, MPI_SUM, win); } MPI_Win_fence(0, win); if (rank == 1) { for (i = 0; i < SIZE - 1; i++) { if (A[i] != B[i]) { SQUELCH(printf("Put/Get Error: A[i]=%d, B[i]=%d\n", A[i], B[i]);); errs++; } } } else { if (B[SIZE - 1] != SIZE - 1 - 3 * (SIZE - 1)) { SQUELCH(printf ("Accumulate Error: B[SIZE-1] is %d, should be %d\n", B[SIZE - 1], SIZE - 1 - 3 * (SIZE - 1));); errs++; } } MPI_Win_free(&win); } MPI_Comm_free(&CommDeuce); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/lock_dt_flushlocal.c0000644000175000017500000001004512620254305021136 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test for streaming ACC-like operations with lock+flush_local"; */ int main(int argc, char *argv[]) { int errs = 0; int err = 0; int rank, size, source, dest; int minsize = 2, count; MPI_Comm comm; MPI_Win win; MPI_Aint lb, extent; MTestDatatype sendtype, recvtype; MTest_Init(&argc, &argv); while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; /* Determine the sender and receiver */ MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); source = 0; dest = size - 1; MTEST_DATATYPE_FOR_EACH_COUNT(count) { while (MTestGetDatatypes(&sendtype, &recvtype, count)) { recvtype.printErrors = 1; recvtype.InitBuf(&recvtype); MPI_Type_get_extent(recvtype.datatype, &lb, &extent); MPI_Win_create(recvtype.buf, lb + recvtype.count * extent, (int) extent, MPI_INFO_NULL, comm, &win); if (rank == source) { MPI_Aint slb, sextent; MPI_Type_get_extent(sendtype.datatype, &slb, &sextent); sendtype.InitBuf(&sendtype); MPI_Win_lock(MPI_LOCK_SHARED, dest, 0, win); MPI_Accumulate(sendtype.buf, sendtype.count, sendtype.datatype, dest, 0, recvtype.count, recvtype.datatype, MPI_REPLACE, win); MPI_Win_flush_local(dest, win); /* reset the send buffer to test local completion */ memset(sendtype.buf, 0, slb + sextent * sendtype.count); MPI_Win_unlock(dest, win); MPI_Barrier(comm); sendtype.InitBuf(&sendtype); char *resbuf = (char *) calloc(lb + extent * recvtype.count, sizeof(char)); /*wait for the destination to finish checking and reinitializing the buffer */ MPI_Barrier(comm); MPI_Win_lock(MPI_LOCK_SHARED, dest, 0, win); MPI_Get_accumulate(sendtype.buf, sendtype.count, sendtype.datatype, resbuf, recvtype.count, recvtype.datatype, dest, 0, recvtype.count, recvtype.datatype, MPI_REPLACE, win); MPI_Win_flush_local(dest, win); /* reset the send buffer to test local completion */ memset(sendtype.buf, 0, slb + sextent * sendtype.count); MPI_Win_unlock(dest, win); MPI_Barrier(comm); free(resbuf); } else if (rank == dest) { MPI_Barrier(comm); MPI_Win_lock(MPI_LOCK_SHARED, dest, 0, win); err = MTestCheckRecv(0, &recvtype); if (err) errs++; recvtype.InitBuf(&recvtype); MPI_Win_unlock(dest, win); /*signal the source that checking and reinitialization is done */ MPI_Barrier(comm); MPI_Barrier(comm); MPI_Win_lock(MPI_LOCK_SHARED, dest, 0, win); err = MTestCheckRecv(0, &recvtype); if (err) errs++; MPI_Win_unlock(dest, win); } MPI_Win_free(&win); MTestFreeDatatype(&sendtype); MTestFreeDatatype(&recvtype); } } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/derived-acc-flush_local.c0000644000175000017500000000606312620254305021747 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* This code tests the case when one process issues large number * of MPI_Accumulate operations (with large derived datatype) and * issues a MPI_Win_flush_local at end. */ /* FIXME: we should merge this into a comprehensive test for RMA * operations + MPI_Win_flush_local. */ #include "mpi.h" #include #include #include #define DATA_SIZE 1000000 #define COUNT 5000 #define BLOCKLENGTH (DATA_SIZE/COUNT) #define STRIDE BLOCKLENGTH #define OPS_NUM 500 int main(int argc, char *argv[]) { int rank, nproc; int i; MPI_Win win; int *tar_buf = NULL; int *orig_buf = NULL; MPI_Datatype derived_dtp; int errors = 0; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Alloc_mem(sizeof(int) * DATA_SIZE, MPI_INFO_NULL, &orig_buf); MPI_Alloc_mem(sizeof(int) * DATA_SIZE, MPI_INFO_NULL, &tar_buf); for (i = 0; i < DATA_SIZE; i++) { orig_buf[i] = 1; tar_buf[i] = 0; } MPI_Type_vector(COUNT, BLOCKLENGTH - 1, STRIDE, MPI_INT, &derived_dtp); MPI_Type_commit(&derived_dtp); MPI_Win_create(tar_buf, sizeof(int) * DATA_SIZE, sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &win); /***** test between rank 0 and rank 1 *****/ if (rank == 1) { MPI_Win_lock(MPI_LOCK_SHARED, 0, 0, win); for (i = 0; i < OPS_NUM; i++) { MPI_Accumulate(orig_buf, 1, derived_dtp, 0, 0, DATA_SIZE - COUNT, MPI_INT, MPI_SUM, win); MPI_Win_flush_local(0, win); } MPI_Win_unlock(0, win); } MPI_Barrier(MPI_COMM_WORLD); /* check results */ if (rank == 0) { for (i = 0; i < DATA_SIZE - COUNT; i++) { if (tar_buf[i] != OPS_NUM) { printf("tar_buf[%d] = %d, expected %d\n", i, tar_buf[i], OPS_NUM); errors++; } } } for (i = 0; i < DATA_SIZE; i++) { tar_buf[i] = 0; } MPI_Barrier(MPI_COMM_WORLD); /***** test between rank 0 and rank 2 *****/ if (rank == 2) { MPI_Win_lock(MPI_LOCK_SHARED, 0, 0, win); for (i = 0; i < OPS_NUM; i++) { MPI_Accumulate(orig_buf, 1, derived_dtp, 0, 0, DATA_SIZE - COUNT, MPI_INT, MPI_SUM, win); MPI_Win_flush_local(0, win); } MPI_Win_unlock(0, win); } MPI_Barrier(MPI_COMM_WORLD); /* check results */ if (rank == 0) { for (i = 0; i < DATA_SIZE - COUNT; i++) { if (tar_buf[i] != OPS_NUM) { printf("tar_buf[%d] = %d, expected %d\n", i, tar_buf[i], OPS_NUM); errors++; } } if (errors == 0) printf(" No Errors\n"); } MPI_Win_free(&win); MPI_Type_free(&derived_dtp); MPI_Free_mem(orig_buf); MPI_Free_mem(tar_buf); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/win_info.c0000644000175000017500000000714612620254305017123 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include "mpitest.h" #define VERBOSE 0 int main(int argc, char **argv) { int rank, nproc; MPI_Info info_in, info_out; int errors = 0, all_errors = 0; MPI_Win win; void *base; char invalid_key[] = "invalid_test_key"; char buf[MPI_MAX_INFO_VAL]; int flag; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Win_allocate(sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &base, &win); /* Test#1: setting and getting invalid key */ MPI_Info_create(&info_in); MPI_Info_set(info_in, invalid_key, "true"); MPI_Win_set_info(win, info_in); MPI_Win_get_info(win, &info_out); MPI_Info_get(info_out, invalid_key, MPI_MAX_INFO_VAL, buf, &flag); #ifndef USE_STRICT_MPI /* Check if our invalid key was ignored. Note, this check's MPICH's * behavior, but this behavior may not be required for a standard * conforming MPI implementation. */ if (flag) { printf("%d: %s was not ignored\n", rank, invalid_key); errors++; } #endif MPI_Info_free(&info_in); MPI_Info_free(&info_out); /* Test#2: setting info key "no_lock" to false and getting the key */ MPI_Info_create(&info_in); MPI_Info_set(info_in, "no_locks", "false"); MPI_Win_set_info(win, info_in); MPI_Win_get_info(win, &info_out); MPI_Info_get(info_out, "no_locks", MPI_MAX_INFO_VAL, buf, &flag); if (!flag || strncmp(buf, "false", strlen("false")) != 0) { if (!flag) printf("%d: no_locks is not defined\n", rank); else printf("%d: no_locks = %s, expected false\n", rank, buf); errors++; } if (flag && VERBOSE) printf("%d: no_locks = %s\n", rank, buf); MPI_Info_free(&info_in); MPI_Info_free(&info_out); /* Test#3: setting info key "no_lock" to true and getting the key */ MPI_Info_create(&info_in); MPI_Info_set(info_in, "no_locks", "true"); MPI_Win_set_info(win, info_in); MPI_Win_get_info(win, &info_out); MPI_Info_get(info_out, "no_locks", MPI_MAX_INFO_VAL, buf, &flag); if (!flag || strncmp(buf, "true", strlen("true")) != 0) { if (!flag) printf("%d: no_locks is not defined\n", rank); else printf("%d: no_locks = %s, expected true\n", rank, buf); errors++; } if (flag && VERBOSE) printf("%d: no_locks = %s\n", rank, buf); MPI_Info_free(&info_in); MPI_Info_free(&info_out); /* Test#4: getting other info keys */ MPI_Win_get_info(win, &info_out); MPI_Info_get(info_out, "accumulate_ordering", MPI_MAX_INFO_VAL, buf, &flag); if (flag && VERBOSE) printf("%d: accumulate_ordering = %s\n", rank, buf); MPI_Info_get(info_out, "accumulate_ops", MPI_MAX_INFO_VAL, buf, &flag); if (flag && VERBOSE) printf("%d: accumulate_ops = %s\n", rank, buf); MPI_Info_get(info_out, "same_size", MPI_MAX_INFO_VAL, buf, &flag); if (flag && VERBOSE) printf("%d: same_size = %s\n", rank, buf); MPI_Info_get(info_out, "alloc_shm", MPI_MAX_INFO_VAL, buf, &flag); if (flag && VERBOSE) printf("%d: alloc_shm = %s\n", rank, buf); MPI_Info_free(&info_out); MPI_Win_free(&win); MPI_Reduce(&errors, &all_errors, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (rank == 0 && all_errors == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/test5.c0000644000175000017500000000423612620254305016354 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "stdio.h" #include "mpitest.h" #include "squelch.h" /* tests a series of Gets. Run on 2 processes. */ #define SIZE 2000 int main(int argc, char *argv[]) { int rank, nprocs, i, A[SIZE], B[SIZE]; MPI_Comm CommDeuce; MPI_Win win; int errs = 0; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (nprocs < 2) { printf("Run this program with 2 or more processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_split(MPI_COMM_WORLD, (rank < 2), rank, &CommDeuce); if (rank < 2) { if (rank == 0) { for (i = 0; i < SIZE; i++) B[i] = 500 + i; MPI_Win_create(B, SIZE * sizeof(int), sizeof(int), MPI_INFO_NULL, CommDeuce, &win); MPI_Win_fence(0, win); for (i = 0; i < SIZE; i++) { A[i] = i + 100; MPI_Get(&A[i], 1, MPI_INT, 1, i, 1, MPI_INT, win); } MPI_Win_fence(0, win); for (i = 0; i < SIZE; i++) if (A[i] != 1000 + i) { SQUELCH(printf("Rank 0: A[%d] is %d, should be %d\n", i, A[i], 1000 + i);); errs++; } } if (rank == 1) { for (i = 0; i < SIZE; i++) A[i] = 1000 + i; MPI_Win_create(A, SIZE * sizeof(int), sizeof(int), MPI_INFO_NULL, CommDeuce, &win); MPI_Win_fence(0, win); for (i = 0; i < SIZE; i++) { B[i] = i + 200; MPI_Get(&B[i], 1, MPI_INT, 0, i, 1, MPI_INT, win); } MPI_Win_fence(0, win); for (i = 0; i < SIZE; i++) if (B[i] != 500 + i) { SQUELCH(printf("Rank 1: B[%d] is %d, should be %d\n", i, B[i], 500 + i);); errs++; } } MPI_Win_free(&win); } MPI_Comm_free(&CommDeuce); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/strided_putget_indexed.c0000644000175000017500000001036312620254305022034 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* One-Sided MPI 2-D Strided Accumulate Test * * Author: James Dinan * Date : December, 2010 * * This code performs N strided put operations followed by get operations into * a 2d patch of a shared array. The array has dimensions [X, Y] and the * subarray has dimensions [SUB_X, SUB_Y] and begins at index [0, 0]. The * input and output buffers are specified using an MPI indexed type. */ #include #include #include #include #include "mpitest.h" #include "squelch.h" #define XDIM 8 #define YDIM 1024 #define SUB_XDIM 8 #define SUB_YDIM 255 #define ITERATIONS 10 int main(int argc, char **argv) { int i, j, rank, nranks, peer, bufsize, errors; double *win_buf, *src_buf, *dst_buf; MPI_Win buf_win; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nranks); bufsize = XDIM * YDIM * sizeof(double); MPI_Alloc_mem(bufsize, MPI_INFO_NULL, &win_buf); MPI_Alloc_mem(bufsize, MPI_INFO_NULL, &src_buf); MPI_Alloc_mem(bufsize, MPI_INFO_NULL, &dst_buf); for (i = 0; i < XDIM * YDIM; i++) { *(win_buf + i) = -1.0; *(src_buf + i) = 1.0 + rank; } MPI_Win_create(win_buf, bufsize, 1, MPI_INFO_NULL, MPI_COMM_WORLD, &buf_win); peer = (rank + 1) % nranks; /* Perform ITERATIONS strided accumulate operations */ for (i = 0; i < ITERATIONS; i++) { int idx_rem[SUB_YDIM]; int blk_len[SUB_YDIM]; MPI_Datatype src_type, dst_type; for (j = 0; j < SUB_YDIM; j++) { idx_rem[j] = j * XDIM; blk_len[j] = SUB_XDIM; } MPI_Type_indexed(SUB_YDIM, blk_len, idx_rem, MPI_DOUBLE, &src_type); MPI_Type_indexed(SUB_YDIM, blk_len, idx_rem, MPI_DOUBLE, &dst_type); MPI_Type_commit(&src_type); MPI_Type_commit(&dst_type); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, peer, 0, buf_win); MPI_Put(src_buf, 1, src_type, peer, 0, 1, dst_type, buf_win); MPI_Win_unlock(peer, buf_win); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, peer, 0, buf_win); MPI_Get(dst_buf, 1, src_type, peer, 0, 1, dst_type, buf_win); MPI_Win_unlock(peer, buf_win); MPI_Type_free(&src_type); MPI_Type_free(&dst_type); } MPI_Barrier(MPI_COMM_WORLD); /* Verify that the results are correct */ MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, buf_win); errors = 0; for (i = 0; i < SUB_XDIM; i++) { for (j = 0; j < SUB_YDIM; j++) { const double actual = *(win_buf + i + j * XDIM); const double expected = (1.0 + ((rank + nranks - 1) % nranks)); if (fabs(actual - expected) > 1.0e-10) { SQUELCH(printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual);); errors++; fflush(stdout); } } } for (i = SUB_XDIM; i < XDIM; i++) { for (j = 0; j < SUB_YDIM; j++) { const double actual = *(win_buf + i + j * XDIM); const double expected = -1.0; if (fabs(actual - expected) > 1.0e-10) { SQUELCH(printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual);); errors++; fflush(stdout); } } } for (i = 0; i < XDIM; i++) { for (j = SUB_YDIM; j < YDIM; j++) { const double actual = *(win_buf + i + j * XDIM); const double expected = -1.0; if (fabs(actual - expected) > 1.0e-10) { SQUELCH(printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual);); errors++; fflush(stdout); } } } MPI_Win_unlock(rank, buf_win); MPI_Win_free(&buf_win); MPI_Free_mem(win_buf); MPI_Free_mem(src_buf); MPI_Free_mem(dst_buf); MTest_Finalize(errors); MPI_Finalize(); return MTestReturnValue(errors); } mpi-testsuite-3.2+dfsg/rma/mutex_bench.c0000644000175000017500000000341712620254305017611 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2013 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include #include "mpitest.h" #include "mcs-mutex.h" #define NUM_ITER 1000 #define NUM_MUTEXES 1 const int verbose = 0; double delay_ctr = 0.0; int main(int argc, char **argv) { int rank, nproc, i; double t_mcs_mtx; MPI_Comm mtx_comm; MCS_Mutex mcs_mtx; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); #ifdef USE_WIN_SHARED MPI_Comm_split_type(MPI_COMM_WORLD, MPI_COMM_TYPE_SHARED, rank, MPI_INFO_NULL, &mtx_comm); #else mtx_comm = MPI_COMM_WORLD; #endif MCS_Mutex_create(0, mtx_comm, &mcs_mtx); MPI_Barrier(MPI_COMM_WORLD); t_mcs_mtx = MPI_Wtime(); for (i = 0; i < NUM_ITER; i++) { /* Combining trylock and lock here is helpful for testing because it makes * CAS and Fetch-and-op contend for the tail pointer. */ #ifdef USE_CONTIGUOUS_RANK if (rank < nproc / 2) { #else if (rank % 2) { #endif int success = 0; while (!success) { MCS_Mutex_trylock(mcs_mtx, &success); } } else { MCS_Mutex_lock(mcs_mtx); } MCS_Mutex_unlock(mcs_mtx); } MPI_Barrier(MPI_COMM_WORLD); t_mcs_mtx = MPI_Wtime() - t_mcs_mtx; MCS_Mutex_free(&mcs_mtx); if (rank == 0) { if (verbose) { printf("Nproc %d, MCS Mtx = %f us\n", nproc, t_mcs_mtx / NUM_ITER * 1.0e6); } } if (mtx_comm != MPI_COMM_WORLD) MPI_Comm_free(&mtx_comm); MTest_Finalize(0); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/test3_am.c0000644000175000017500000000776112620254305017035 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "stdio.h" #include "stdlib.h" #include "mpitest.h" #include "squelch.h" /* Tests the example in Fig 6.8, pg 142, MPI-2 standard. Process 1 has a blocking MPI_Recv between the Post and Wait. Therefore, this example will not run if the one-sided operations are simply implemented on top of MPI_Isends and Irecvs. They either need to be implemented inside the progress engine or using threads with Isends and Irecvs. In MPICH-2, they are implemented in the progress engine. */ /* same as test3.c but uses alloc_mem */ #define SIZE 1048576 int main(int argc, char *argv[]) { int rank, destrank, nprocs, *A, *B, i; MPI_Comm CommDeuce; MPI_Group comm_group, group; MPI_Win win; int errs = 0; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (nprocs < 2) { printf("Run this program with 2 or more processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_split(MPI_COMM_WORLD, (rank < 2), rank, &CommDeuce); if (rank < 2) { i = MPI_Alloc_mem(SIZE * sizeof(int), MPI_INFO_NULL, &A); if (i) { printf("Can't allocate memory in test program\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_group(CommDeuce, &comm_group); if (rank == 0) { i = MPI_Alloc_mem(SIZE * sizeof(int), MPI_INFO_NULL, &B); if (i) { printf("Can't allocate memory in test program\n"); MPI_Abort(MPI_COMM_WORLD, 1); } for (i = 0; i < SIZE; i++) { A[i] = i; B[i] = SIZE + i; } #ifdef USE_WIN_ALLOCATE char *base_ptr; MPI_Win_allocate(0, 1, MPI_INFO_NULL, CommDeuce, &base_ptr, &win); #else MPI_Win_create(NULL, 0, 1, MPI_INFO_NULL, CommDeuce, &win); #endif destrank = 1; MPI_Group_incl(comm_group, 1, &destrank, &group); MPI_Win_start(group, 0, win); MPI_Put(A, SIZE, MPI_INT, 1, 0, SIZE, MPI_INT, win); MPI_Win_complete(win); MPI_Send(B, SIZE, MPI_INT, 1, 100, MPI_COMM_WORLD); MPI_Free_mem(B); } else { /* rank=1 */ #ifdef USE_WIN_ALLOCATE MPI_Win_allocate(SIZE * sizeof(int), sizeof(int), MPI_INFO_NULL, CommDeuce, &B, &win); #else i = MPI_Alloc_mem(SIZE * sizeof(int), MPI_INFO_NULL, &B); if (i) { printf("Can't allocate memory in test program\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Win_create(B, SIZE * sizeof(int), sizeof(int), MPI_INFO_NULL, CommDeuce, &win); #endif MPI_Win_lock(MPI_LOCK_SHARED, rank, 0, win); for (i = 0; i < SIZE; i++) A[i] = B[i] = (-4) * i; MPI_Win_unlock(rank, win); destrank = 0; MPI_Group_incl(comm_group, 1, &destrank, &group); MPI_Win_post(group, 0, win); MPI_Recv(A, SIZE, MPI_INT, 0, 100, MPI_COMM_WORLD, MPI_STATUS_IGNORE); MPI_Win_wait(win); for (i = 0; i < SIZE; i++) { if (B[i] != i) { SQUELCH(printf("Rank 1: Put Error: B[i] is %d, should be %d\n", B[i], i);); errs++; } if (A[i] != SIZE + i) { SQUELCH(printf ("Rank 1: Send/Recv Error: A[i] is %d, should be %d\n", A[i], SIZE + i);); errs++; } } #ifndef USE_WIN_ALLOCATE MPI_Free_mem(B); #endif } MPI_Group_free(&group); MPI_Group_free(&comm_group); MPI_Win_free(&win); MPI_Free_mem(A); } MPI_Comm_free(&CommDeuce); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/wrma_flush_get.c0000644000175000017500000001363712620254305020323 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include "mpitest.h" #define ITER 10000 #define BUF_CNT 1 int local_buf[BUF_CNT], result_addr[BUF_CNT], check_addr[BUF_CNT]; #ifdef TEST_CAS int compare_buf[BUF_CNT]; #endif const int verbose = 0; /* This test checks the remote completion of flush with RMA write-like operations * (PUT, ACC, GET_ACC, FOP, CAS), and confirms result by GET issued from another * process. * 1. Three processes create window by Win_allocate. * 2. P(origin) issues RMA operations and flush to P(target), then call * send-recv to synchronize with P(checker). * 3. P(checker) then issues get to P(target) to check the results. */ int rank = -1, nproc = 0; int origin = -1, target = -1, checker = -1; MPI_Win win = MPI_WIN_NULL; int *my_base = NULL; /* Define operation name for error message */ #ifdef TEST_PUT const char *rma_name = "Put"; #elif defined(TEST_ACC) const char *rma_name = "Accumulate"; #elif defined(TEST_GACC) const char *rma_name = "Get_accumulate"; #elif defined(TEST_FOP) const char *rma_name = "Fetch_and_op"; #elif defined(TEST_CAS) const char *rma_name = "Compare_and_swap"; #else const char *rma_name = "None"; #endif /* Issue functions for different RMA operations */ #ifdef TEST_PUT static inline void issue_rma_op(int i) { MPI_Put(&local_buf[i], 1, MPI_INT, target, i, 1, MPI_INT, win); } #elif defined(TEST_ACC) static inline void issue_rma_op(int i) { MPI_Accumulate(&local_buf[i], 1, MPI_INT, target, i, 1, MPI_INT, MPI_REPLACE, win); } #elif defined(TEST_GACC) static inline void issue_rma_op(int i) { MPI_Get_accumulate(&local_buf[i], 1, MPI_INT, &result_addr[i], 1, MPI_INT, target, i, 1, MPI_INT, MPI_REPLACE, win); } #elif defined(TEST_FOP) static inline void issue_rma_op(int i) { MPI_Fetch_and_op(&local_buf[i], &result_addr[i], MPI_INT, target, i, MPI_REPLACE, win); } #elif defined(TEST_CAS) static inline void issue_rma_op(int i) { compare_buf[i] = i; /* always equal to window value, thus swap happens */ MPI_Compare_and_swap(&local_buf[i], &compare_buf[i], &result_addr[i], MPI_INT, target, i, win); } #endif /* Local check function for GET-like operations */ #if defined(TEST_GACC) || defined(TEST_FOP) || defined(TEST_CAS) /* Check local result buffer for GET-like operations */ static int check_local_result(int iter) { int i = 0; int errors = 0; for (i = 0; i < BUF_CNT; i++) { if (result_addr[i] != i) { printf("rank %d (iter %d) - check %s, got result_addr[%d] = %d, expected %d\n", rank, iter, rma_name, i, result_addr[i], i); errors++; } } return errors; } #else #define check_local_result(iter) (0) #endif static int run_test() { int i = 0, x = 0; int errors = 0; int sbuf = 0, rbuf = 0; MPI_Status stat; for (x = 0; x < ITER; x++) { /* 1. Target resets window data */ if (rank == target) { for (i = 0; i < BUF_CNT; i++) my_base[i] = i; MPI_Win_sync(win); /* write is done on window */ } MPI_Barrier(MPI_COMM_WORLD); /* 2. Every one resets local data */ for (i = 0; i < BUF_CNT; i++) { local_buf[i] = BUF_CNT + x * BUF_CNT + i; result_addr[i] = 0; } /* 3. Origin issues RMA operation to target */ if (rank == origin) { /* 3-1. Issue RMA. */ for (i = 0; i < BUF_CNT; i++) { issue_rma_op(i); } MPI_Win_flush(target, win); /* 3-2. Sync with checker */ MPI_Send(&sbuf, 1, MPI_INT, checker, 999, MPI_COMM_WORLD); /* 3-3. Check local result buffer */ errors += check_local_result(x); } /* 4. Checker issues GET to target and checks result */ if (rank == checker) { /* 4-1. Sync with origin */ MPI_Recv(&rbuf, 1, MPI_INT, origin, 999, MPI_COMM_WORLD, &stat); /* 4-2. Get result and check */ MPI_Get(check_addr, BUF_CNT, MPI_INT, target, 0, BUF_CNT, MPI_INT, win); MPI_Win_flush(target, win); for (i = 0; i < BUF_CNT; i++) { if (check_addr[i] != local_buf[i]) { printf("rank %d (iter %d) - check %s, got check_addr[%d] = %d, expected %d\n", rank, x, rma_name, i, check_addr[i], local_buf[i]); errors++; } } } MPI_Barrier(MPI_COMM_WORLD); } return errors; } int main(int argc, char *argv[]) { int errors = 0, all_errors = 0; int win_size = sizeof(int) * BUF_CNT; int win_unit = sizeof(int); MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); if (nproc != 3) { if (rank == 0) printf("Error: must be run with three processes\n"); MPI_Barrier(MPI_COMM_WORLD); MPI_Abort(MPI_COMM_WORLD, 1); } #if !defined(TEST_PUT) && !defined(TEST_ACC) && !defined(TEST_GACC) && !defined(TEST_FOP) && !defined(TEST_CAS) if (rank == 0) printf("Error: must specify operation type at compile time\n"); MPI_Barrier(MPI_COMM_WORLD); MPI_Abort(MPI_COMM_WORLD, 1); #endif /* Identify origin, target and checker ranks. */ target = 0; checker = 2; origin = 1; MPI_Win_allocate(win_size, win_unit, MPI_INFO_NULL, MPI_COMM_WORLD, &my_base, &win); /* Start checking. */ MPI_Win_lock_all(0, win); errors = run_test(); MPI_Win_unlock_all(win); MPI_Reduce(&errors, &all_errors, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (rank == 0 && all_errors == 0) printf(" No Errors\n"); if (win != MPI_WIN_NULL) MPI_Win_free(&win); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/atomic_get.c0000644000175000017500000001472012620254305017422 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* This test is going to test atomic GET (GACC/FOP+MPI_NO_OP). * * There are totally three processes involved in this test. Both * rank 1 and rank 2 issue RMA operations to rank 0. Rank 2 issues * atomic PUT (ACC+MPI_REPLACE), whereas rank 1 issues atomic * GET (GACC/FOP+MPI_NO_OP). The datatype used in the test is * pair-type. The initial value of pair-type data in origin buffer * of atomic PUT is set so that the two basic values equal with * each other. Due to the atomicity of GET, the expected resulting * data should also have equivalent basic values. */ #include "mpi.h" #include #define LOOP 100 #define DATA_SIZE 100 #define OPS_NUM 10000 #define GACC_SZ 10 typedef struct pair_struct { long double a; int b; } pair_struct_t; int main(int argc, char *argv[]) { int rank, nproc; int i, j, k; int errors = 0, curr_errors = 0; MPI_Win win; pair_struct_t *tar_buf = NULL; pair_struct_t *orig_buf = NULL; pair_struct_t *result_buf = NULL; /* This test needs to work with 3 processes. */ MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Alloc_mem(sizeof(pair_struct_t) * DATA_SIZE, MPI_INFO_NULL, &orig_buf); MPI_Alloc_mem(sizeof(pair_struct_t) * DATA_SIZE, MPI_INFO_NULL, &result_buf); MPI_Win_allocate(sizeof(pair_struct_t) * DATA_SIZE, sizeof(pair_struct_t), MPI_INFO_NULL, MPI_COMM_WORLD, &tar_buf, &win); for (j = 0; j < LOOP * 6; j++) { MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, win); /* initialize data */ for (i = 0; i < DATA_SIZE; i++) { tar_buf[i].a = 0.0; tar_buf[i].b = 0; result_buf[i].a = 0.0; result_buf[i].b = 0; } MPI_Win_unlock(rank, win); MPI_Barrier(MPI_COMM_WORLD); MPI_Win_fence(0, win); if (rank == 2) { if (j < 2 * LOOP) { /* Work with FOP test (Test #1 to Test #2) */ for (i = 0; i < OPS_NUM; i++) { int curr_val = j * OPS_NUM + i; orig_buf[0].a = (long double) (curr_val); orig_buf[0].b = curr_val; MPI_Accumulate(orig_buf, 1, MPI_LONG_DOUBLE_INT, 0, 0, 1, MPI_LONG_DOUBLE_INT, MPI_REPLACE, win); } } else { /* Work with GACC test (Test #3 to Test #6) */ for (i = 0; i < OPS_NUM / GACC_SZ; i++) { for (k = 0; k < GACC_SZ; k++) { int curr_val = j * OPS_NUM + i * GACC_SZ + k; orig_buf[k].a = (long double) (curr_val); orig_buf[k].b = curr_val; } MPI_Accumulate(orig_buf, GACC_SZ, MPI_LONG_DOUBLE_INT, 0, 0, GACC_SZ, MPI_LONG_DOUBLE_INT, MPI_REPLACE, win); } } } else if (rank == 1) { /* equals to an atomic GET */ if (j < LOOP) { for (i = 0; i < DATA_SIZE; i++) { /* Test #1: FOP + MPI_NO_OP */ MPI_Fetch_and_op(orig_buf, &(result_buf[i]), MPI_LONG_DOUBLE_INT, 0, 0, MPI_NO_OP, win); } } else if (j < 2 * LOOP) { for (i = 0; i < DATA_SIZE; i++) { /* Test #2: FOP + MPI_NO_OP + NULL origin buffer address */ MPI_Fetch_and_op(NULL, &(result_buf[i]), MPI_LONG_DOUBLE_INT, 0, 0, MPI_NO_OP, win); } } else if (j < 3 * LOOP) { for (i = 0; i < DATA_SIZE / GACC_SZ; i++) { /* Test #3: GACC + MPI_NO_OP */ MPI_Get_accumulate(orig_buf, GACC_SZ, MPI_LONG_DOUBLE_INT, &(result_buf[i * GACC_SZ]), GACC_SZ, MPI_LONG_DOUBLE_INT, 0, 0, GACC_SZ, MPI_LONG_DOUBLE_INT, MPI_NO_OP, win); } } else if (j < 4 * LOOP) { for (i = 0; i < DATA_SIZE / GACC_SZ; i++) { /* Test #4: GACC + MPI_NO_OP + NULL origin buffer address */ MPI_Get_accumulate(NULL, GACC_SZ, MPI_LONG_DOUBLE_INT, &(result_buf[i * GACC_SZ]), GACC_SZ, MPI_LONG_DOUBLE_INT, 0, 0, GACC_SZ, MPI_LONG_DOUBLE_INT, MPI_NO_OP, win); } } else if (j < 5 * LOOP) { for (i = 0; i < DATA_SIZE / GACC_SZ; i++) { /* Test #5: GACC + MPI_NO_OP + zero origin count */ MPI_Get_accumulate(orig_buf, 0, MPI_LONG_DOUBLE_INT, &(result_buf[i * GACC_SZ]), GACC_SZ, MPI_LONG_DOUBLE_INT, 0, 0, GACC_SZ, MPI_LONG_DOUBLE_INT, MPI_NO_OP, win); } } else if (j < 6 * LOOP) { for (i = 0; i < DATA_SIZE / GACC_SZ; i++) { /* Test #5: GACC + MPI_NO_OP + NULL origin datatype */ MPI_Get_accumulate(orig_buf, GACC_SZ, MPI_DATATYPE_NULL, &(result_buf[i * GACC_SZ]), GACC_SZ, MPI_LONG_DOUBLE_INT, 0, 0, GACC_SZ, MPI_LONG_DOUBLE_INT, MPI_NO_OP, win); } } } MPI_Win_fence(0, win); /* check results */ if (rank == 1) { for (i = 0; i < DATA_SIZE; i++) { if (result_buf[i].a != (long double) (result_buf[i].b)) { if (curr_errors < 10) { printf("LOOP %d: result_buf[%d].a = %Lf, result_buf[%d].b = %d\n", j, i, result_buf[i].a, i, result_buf[i].b); } curr_errors++; } } } if (j % LOOP == 0) { errors += curr_errors; curr_errors = 0; } } MPI_Win_free(&win); MPI_Free_mem(orig_buf); MPI_Free_mem(result_buf); if (rank == 1) { if (errors == 0) printf(" No Errors\n"); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/squelch.h0000644000175000017500000000071612620254305016760 0ustar mbanckmbanck#ifndef SQUELCH_H_INCLUDED #define SQUELCH_H_INCLUDED static const int SQ_LIMIT = 10; static int SQ_COUNT = 0; static int SQ_VERBOSE = 0; #define SQUELCH(X) \ do { \ if (SQ_COUNT < SQ_LIMIT || SQ_VERBOSE) { \ SQ_COUNT++; \ X \ } \ } while (0) #endif mpi-testsuite-3.2+dfsg/rma/linked_list_bench_lock_shr.c0000644000175000017500000002020112620254305022622 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* MPI-3 distributed linked list construction example * -------------------------------------------------- * * Construct a distributed shared linked list using proposed MPI-3 dynamic * windows. Initially process 0 creates the head of the list, attaches it to * the window, and broadcasts the pointer to all processes. Each process p then * appends N new elements to the list when the tail reaches process p-1. */ #include #include #include #include #include "mpitest.h" #ifdef HAVE_UNISTD_H #include #endif #define NUM_ELEMS 1000 #define MAX_NPROBE nproc #define MIN_NPROBE 1 #define ELEM_PER_ROW 16 #define MIN(X,Y) ((X < Y) ? (X) : (Y)) #define MAX(X,Y) ((X > Y) ? (X) : (Y)) /* Linked list pointer */ typedef struct { int rank; MPI_Aint disp; } llist_ptr_t; /* Linked list element */ typedef struct { int value; llist_ptr_t next; } llist_elem_t; static const llist_ptr_t nil = { -1, (MPI_Aint) MPI_BOTTOM }; static const int verbose = 0; static const int print_perf = 0; /* List of locally allocated list elements. */ static llist_elem_t **my_elems = NULL; static int my_elems_size = 0; static int my_elems_count = 0; /* Allocate a new shared linked list element */ MPI_Aint alloc_elem(int value, MPI_Win win) { MPI_Aint disp; llist_elem_t *elem_ptr; /* Allocate the new element and register it with the window */ MPI_Alloc_mem(sizeof(llist_elem_t), MPI_INFO_NULL, &elem_ptr); elem_ptr->value = value; elem_ptr->next = nil; MPI_Win_attach(win, elem_ptr, sizeof(llist_elem_t)); /* Add the element to the list of local elements so we can free it later. */ if (my_elems_size == my_elems_count) { my_elems_size += 100; my_elems = realloc(my_elems, my_elems_size * sizeof(void *)); } my_elems[my_elems_count] = elem_ptr; my_elems_count++; MPI_Get_address(elem_ptr, &disp); return disp; } int main(int argc, char **argv) { int procid, nproc, i, j, my_nelem; int pollint = 0; double time; MPI_Win llist_win; llist_ptr_t head_ptr, tail_ptr; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &procid); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Win_create_dynamic(MPI_INFO_NULL, MPI_COMM_WORLD, &llist_win); /* Process 0 creates the head node */ if (procid == 0) head_ptr.disp = alloc_elem(procid, llist_win); /* Broadcast the head pointer to everyone */ head_ptr.rank = 0; MPI_Bcast(&head_ptr.disp, 1, MPI_AINT, 0, MPI_COMM_WORLD); tail_ptr = head_ptr; /* All processes append NUM_ELEMS elements to the list; rank 0 has already * appended an element. */ if (procid == 0) i = 1; else i = 0; my_nelem = NUM_ELEMS / nproc; if (procid < NUM_ELEMS % nproc) my_nelem++; MPI_Barrier(MPI_COMM_WORLD); time = MPI_Wtime(); for (; i < my_nelem; i++) { llist_ptr_t new_elem_ptr; int success = 0; /* Create a new list element and register it with the window */ new_elem_ptr.rank = procid; new_elem_ptr.disp = alloc_elem(procid, llist_win); /* Append the new node to the list. This might take multiple attempts if * others have already appended and our tail pointer is stale. */ do { int flag; /* The tail is at my left neighbor, append my element. */ if (tail_ptr.rank == (procid + nproc - 1) % nproc) { if (verbose) printf("%d: Appending to <%d, %p>\n", procid, tail_ptr.rank, (void *) tail_ptr.disp); #ifdef USE_MODE_NOCHECK MPI_Win_lock(MPI_LOCK_SHARED, tail_ptr.rank, MPI_MODE_NOCHECK, llist_win); #else MPI_Win_lock(MPI_LOCK_SHARED, tail_ptr.rank, 0, llist_win); #endif MPI_Accumulate(&new_elem_ptr, sizeof(llist_ptr_t), MPI_BYTE, tail_ptr.rank, (MPI_Aint) & (((llist_elem_t *) tail_ptr.disp)->next), sizeof(llist_ptr_t), MPI_BYTE, MPI_REPLACE, llist_win); MPI_Win_unlock(tail_ptr.rank, llist_win); success = 1; tail_ptr = new_elem_ptr; } /* Otherwise, chase the tail. */ else { llist_ptr_t next_tail_ptr; #ifdef USE_MODE_NOCHECK MPI_Win_lock(MPI_LOCK_SHARED, tail_ptr.rank, MPI_MODE_NOCHECK, llist_win); #else MPI_Win_lock(MPI_LOCK_SHARED, tail_ptr.rank, 0, llist_win); #endif MPI_Get_accumulate(NULL, 0, MPI_DATATYPE_NULL, &next_tail_ptr, sizeof(llist_ptr_t), MPI_BYTE, tail_ptr.rank, (MPI_Aint) & (((llist_elem_t *) tail_ptr.disp)->next), sizeof(llist_ptr_t), MPI_BYTE, MPI_NO_OP, llist_win); MPI_Win_unlock(tail_ptr.rank, llist_win); if (next_tail_ptr.rank != nil.rank) { if (verbose) printf("%d: Chasing to <%d, %p>\n", procid, next_tail_ptr.rank, (void *) next_tail_ptr.disp); tail_ptr = next_tail_ptr; pollint = MAX(MIN_NPROBE, pollint / 2); } else { for (j = 0; j < pollint; j++) MPI_Iprobe(MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &flag, MPI_STATUS_IGNORE); pollint = MIN(MAX_NPROBE, pollint * 2); } } } while (!success); } MPI_Barrier(MPI_COMM_WORLD); time = MPI_Wtime() - time; /* Traverse the list and verify that all processes inserted exactly the correct * number of elements. */ if (procid == 0) { int errors = 0; int *counts, count = 0; counts = (int *) malloc(sizeof(int) * nproc); assert(counts != NULL); for (i = 0; i < nproc; i++) counts[i] = 0; tail_ptr = head_ptr; MPI_Win_lock_all(0, llist_win); /* Walk the list and tally up the number of elements inserted by each rank */ while (tail_ptr.disp != nil.disp) { llist_elem_t elem; MPI_Get(&elem, sizeof(llist_elem_t), MPI_BYTE, tail_ptr.rank, tail_ptr.disp, sizeof(llist_elem_t), MPI_BYTE, llist_win); MPI_Win_flush(tail_ptr.rank, llist_win); tail_ptr = elem.next; assert(elem.value >= 0 && elem.value < nproc); counts[elem.value]++; count++; if (verbose) { int last_elem = tail_ptr.disp == nil.disp; printf("%2d%s", elem.value, last_elem ? "" : " -> "); if (count % ELEM_PER_ROW == 0 && !last_elem) printf("\n"); } } MPI_Win_unlock_all(llist_win); if (verbose) printf("\n\n"); /* Verify the counts we collected */ for (i = 0; i < nproc; i++) { int expected; expected = NUM_ELEMS / nproc; if (i < NUM_ELEMS % nproc) expected++; if (counts[i] != expected) { printf("Error: Rank %d inserted %d elements, expected %d\n", i, counts[i], expected); errors++; } } printf("%s\n", errors == 0 ? " No Errors" : "FAIL"); free(counts); } if (print_perf) { double max_time; MPI_Reduce(&time, &max_time, 1, MPI_DOUBLE, MPI_MAX, 0, MPI_COMM_WORLD); if (procid == 0) { printf("Total time = %0.2f sec, elem/sec = %0.2f, sec/elem = %0.2f usec\n", max_time, NUM_ELEMS / max_time, max_time / NUM_ELEMS * 1.0e6); } } MPI_Win_free(&llist_win); /* Free all the elements in the list */ for (; my_elems_count > 0; my_elems_count--) MPI_Free_mem(my_elems[my_elems_count - 1]); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/adlb_mimic1.c0000644000175000017500000001302612620254305017446 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include "mpi.h" #include "mpitest.h" #define NUM_TIMES 500 #define MAX_BUF_SIZE (400 * 1024 * 1024) /* 400 MB */ #define PUT_SIZE (1024 * 1024) /* 1MB */ /* static char MTEST_Descrip[] = "ADLB mimic test"; */ /* * ALGORITHM: * This test uses one server process (S), one target process (T) * and a bunch of origin processes (O). 'O' PUTs (LOCK/PUT/UNLOCK) * data to a distinct part of the window, and sends a message to * 'S' once the UNLOCK has completed. The server forwards this * message to 'T'. 'T' GETS the data from this buffer after it * receives the message from 'S', to see if it contains the correct * contents. * * ------- * | S | * ------- * ^ \ * step 2 / \ step 3 * SEND / \ SEND * / v * ------- step 1 ------- * | | --------> | | * | | PUT | | * | O | | T | * | | step 4 | | * | | <-------- | | * ------- SEND ------- * */ int main(int argc, char **argv) { int comm_size, comm_rank, i, by_rank, errs = 0; int rc; char *rma_win_addr, *local_buf; char check; MPI_Win win; MPI_Status status; int max_buf_size = 0, put_size = PUT_SIZE; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &comm_size); MPI_Comm_rank(MPI_COMM_WORLD, &comm_rank); if (comm_size <= 2) { fprintf(stderr, "This test requires at least 3 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } max_buf_size = comm_size * put_size; if (max_buf_size > MAX_BUF_SIZE) { fprintf(stderr, "Too many processes in COMM_WORLD (max is %d)\n", MAX_BUF_SIZE / put_size); MPI_Abort(MPI_COMM_WORLD, 1); } /* If alloc mem returns an error (because too much memory is requested */ MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_RETURN); rc = MPI_Alloc_mem(max_buf_size, MPI_INFO_NULL, (void *) &rma_win_addr); if (rc) { MTestPrintErrorMsg("Unable to MPI_Alloc_mem space (not an error)", rc); MPI_Abort(MPI_COMM_WORLD, 0); } memset(rma_win_addr, 0, max_buf_size); MPI_Win_create((void *) rma_win_addr, max_buf_size, 1, MPI_INFO_NULL, MPI_COMM_WORLD, &win); /* Note that it is not necessary to use MPI_Alloc_mem for the memory that * is not part of the MPI_Win. */ rc = MPI_Alloc_mem(put_size, MPI_INFO_NULL, (void *) &local_buf); if (rc) { MTestPrintErrorMsg("Unable to MPI_Alloc_mem space (not an error)", rc); MPI_Abort(MPI_COMM_WORLD, 0); } for (i = 0; i < put_size; i++) local_buf[i] = 1; MPI_Barrier(MPI_COMM_WORLD); if (comm_rank == 0) { /* target */ for (i = 0; i < (NUM_TIMES * (comm_size - 2)); i++) { /* Wait for a message from the server to notify me that * someone put some data in my window */ MPI_Recv(&by_rank, 1, MPI_INT, 1, 0, MPI_COMM_WORLD, &status); /* Got a message from the server that 'by_rank' put some * data in my local window. Check the last byte to make * sure we got it correctly. */ MPI_Win_lock(MPI_LOCK_SHARED, 0, 0, win); MPI_Get((void *) &check, 1, MPI_CHAR, 0, ((by_rank + 1) * put_size) - 1, 1, MPI_CHAR, win); MPI_Win_unlock(0, win); /* If this is not the value I expect, count it as an error */ if (check != 1) errs++; /* Reset the buffer to zero for the next round */ memset((void *) (rma_win_addr + (by_rank * put_size)), 0, put_size); /* Tell the origin that I am ready for the next round */ MPI_Send(NULL, 0, MPI_INT, by_rank, 0, MPI_COMM_WORLD); } } else if (comm_rank == 1) { /* server */ for (i = 0; i < (NUM_TIMES * (comm_size - 2)); i++) { /* Wait for a message from any of the origin processes * informing me that it has put data to the target * process */ MPI_Recv(NULL, 0, MPI_INT, MPI_ANY_SOURCE, 0, MPI_COMM_WORLD, &status); by_rank = status.MPI_SOURCE; /* Tell the target process that it should be seeing some * data in its local buffer */ MPI_Send(&by_rank, 1, MPI_INT, 0, 0, MPI_COMM_WORLD); } } else { /* origin */ for (i = 0; i < NUM_TIMES; i++) { /* Put some data in the target window */ MPI_Win_lock(MPI_LOCK_SHARED, 0, 0, win); MPI_Put(local_buf, put_size, MPI_CHAR, 0, comm_rank * put_size, put_size, MPI_CHAR, win); MPI_Win_unlock(0, win); /* Tell the server that the put has completed */ MPI_Send(NULL, 0, MPI_INT, 1, 0, MPI_COMM_WORLD); /* Wait for a message from the target that it is ready for * the next round */ MPI_Recv(NULL, 0, MPI_INT, 0, 0, MPI_COMM_WORLD, &status); } } MPI_Win_free(&win); MPI_Free_mem(rma_win_addr); MPI_Free_mem(local_buf); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/win_zero.c0000644000175000017500000000375112620254305017145 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* test MPI_WIN_ALLOCATE_SHARED when size of total shared memory region is 0. */ #include "mpi.h" #include #include int main(int argc, char **argv) { MPI_Win win; void *win_buf = NULL; int world_rank, shm_rank; MPI_Comm shm_comm; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); MPI_Comm_split_type(MPI_COMM_WORLD, MPI_COMM_TYPE_SHARED, world_rank, MPI_INFO_NULL, &shm_comm); MPI_Comm_rank(shm_comm, &shm_rank); /* Some ranks allocate zero bytes */ if (shm_rank % 2 == 0) MPI_Win_allocate_shared(0, sizeof(char), MPI_INFO_NULL, shm_comm, &win_buf, &win); else MPI_Win_allocate_shared(1, sizeof(char), MPI_INFO_NULL, shm_comm, &win_buf, &win); MPI_Win_free(&win); if (world_rank % 2 == 0) MPI_Win_allocate(0, sizeof(char), MPI_INFO_NULL, MPI_COMM_WORLD, &win_buf, &win); else MPI_Win_allocate(1, sizeof(char), MPI_INFO_NULL, MPI_COMM_WORLD, &win_buf, &win); MPI_Win_free(&win); win_buf = NULL; if (world_rank % 2 == 0) MPI_Win_create(NULL, 0, sizeof(char), MPI_INFO_NULL, MPI_COMM_WORLD, &win); else { win_buf = (void *) malloc(sizeof(char)); MPI_Win_create(win_buf, 1, sizeof(char), MPI_INFO_NULL, MPI_COMM_WORLD, &win); } MPI_Win_free(&win); if (win_buf) free(win_buf); /* All ranks allocate zero bytes */ MPI_Win_allocate_shared(0, sizeof(char), MPI_INFO_NULL, shm_comm, &win_buf, &win); MPI_Win_free(&win); MPI_Win_allocate(0, sizeof(char), MPI_INFO_NULL, MPI_COMM_WORLD, &win_buf, &win); MPI_Win_free(&win); MPI_Win_create(NULL, 0, sizeof(char), MPI_INFO_NULL, MPI_COMM_WORLD, &win); MPI_Win_free(&win); MPI_Comm_free(&shm_comm); if (world_rank == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/strided_acc_onelock.c0000644000175000017500000000453612620254305021271 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* One-Sided MPI 2-D Strided Accumulate Test * * Author: James Dinan * Date : December, 2010 * * This code performs one-sided accumulate into a 2d patch of a shared array. */ #include #include #include #include #include "mpitest.h" #include "squelch.h" #define XDIM 1024 #define YDIM 1024 #define ITERATIONS 10 int main(int argc, char **argv) { int i, j, rank, nranks, peer, bufsize, errors; double *buffer, *src_buf; MPI_Win buf_win; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nranks); bufsize = XDIM * YDIM * sizeof(double); MPI_Alloc_mem(bufsize, MPI_INFO_NULL, &buffer); MPI_Alloc_mem(bufsize, MPI_INFO_NULL, &src_buf); for (i = 0; i < XDIM * YDIM; i++) { *(buffer + i) = 1.0 + rank; *(src_buf + i) = 1.0 + rank; } MPI_Win_create(buffer, bufsize, 1, MPI_INFO_NULL, MPI_COMM_WORLD, &buf_win); peer = (rank + 1) % nranks; for (i = 0; i < ITERATIONS; i++) { MPI_Win_lock(MPI_LOCK_EXCLUSIVE, peer, 0, buf_win); for (j = 0; j < YDIM; j++) { MPI_Accumulate(src_buf + j * XDIM, XDIM, MPI_DOUBLE, peer, j * XDIM * sizeof(double), XDIM, MPI_DOUBLE, MPI_SUM, buf_win); } MPI_Win_unlock(peer, buf_win); } MPI_Barrier(MPI_COMM_WORLD); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, buf_win); for (i = errors = 0; i < XDIM; i++) { for (j = 0; j < YDIM; j++) { const double actual = *(buffer + i + j * XDIM); const double expected = (1.0 + rank) + (1.0 + ((rank + nranks - 1) % nranks)) * (ITERATIONS); if (fabs(actual - expected) > 1.0e-10) { SQUELCH(printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual);); errors++; fflush(stdout); } } } MPI_Win_unlock(rank, buf_win); MPI_Win_free(&buf_win); MPI_Free_mem(buffer); MPI_Free_mem(src_buf); MTest_Finalize(errors); MPI_Finalize(); return MTestReturnValue(errors); } mpi-testsuite-3.2+dfsg/rma/win_shared.c0000644000175000017500000000470412620254305017433 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include #include "mpitest.h" #define ELEM_PER_PROC 10000 const int verbose = 0; int main(int argc, char **argv) { int i, j, rank, nproc; int shm_rank, shm_nproc; MPI_Aint size; int errors = 0, all_errors = 0; int *base, *my_base; int disp_unit; MPI_Win shm_win; MPI_Comm shm_comm; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Comm_split_type(MPI_COMM_WORLD, MPI_COMM_TYPE_SHARED, rank, MPI_INFO_NULL, &shm_comm); MPI_Comm_rank(shm_comm, &shm_rank); MPI_Comm_size(shm_comm, &shm_nproc); /* Allocate ELEM_PER_PROC integers for each process */ MPI_Win_allocate_shared(sizeof(int) * ELEM_PER_PROC, sizeof(int), MPI_INFO_NULL, shm_comm, &my_base, &shm_win); /* Locate absolute base */ MPI_Win_shared_query(shm_win, MPI_PROC_NULL, &size, &disp_unit, &base); /* make sure the query returned the right values */ if (disp_unit != sizeof(int)) errors++; if (size != ELEM_PER_PROC * sizeof(int)) errors++; if ((shm_rank == 0) && (base != my_base)) errors++; if (shm_rank && (base == my_base)) errors++; if (verbose) printf("%d -- size = %d baseptr = %p my_baseptr = %p\n", shm_rank, (int) size, (void *) base, (void *) my_base); MPI_Win_lock_all(MPI_MODE_NOCHECK, shm_win); /* Write to all my data */ for (i = 0; i < ELEM_PER_PROC; i++) { my_base[i] = i; } MPI_Win_sync(shm_win); MPI_Barrier(shm_comm); MPI_Win_sync(shm_win); /* Read and verify everyone's data */ for (i = 0; i < shm_nproc; i++) { for (j = 0; j < ELEM_PER_PROC; j++) { if (base[i * ELEM_PER_PROC + j] != j) { errors++; printf("%d -- Got %d at rank %d index %d, expected %d\n", shm_rank, base[i * ELEM_PER_PROC + j], i, j, j); } } } MPI_Win_unlock_all(shm_win); MPI_Win_free(&shm_win); MPI_Comm_free(&shm_comm); MPI_Reduce(&errors, &all_errors, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (rank == 0 && all_errors == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/accfence2_am.c0000644000175000017500000000620412620254305017573 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #ifndef MAX_INT #define MAX_INT 0x7fffffff #endif /* static char MTEST_Descrip[] = "Test MPI_Accumulate with fence"; */ /* same as accfence2.c, but uses alloc_mem */ int main(int argc, char *argv[]) { int errs = 0; int rank, size, source; int minsize = 2, count, i; MPI_Comm comm; MPI_Win win; int *winbuf, *sbuf; MTest_Init(&argc, &argv); /* The following illustrates the use of the routines to * run through a selection of communicators and datatypes. * Use subsets of these for tests that do not involve combinations * of communicators, datatypes, and counts of datatypes */ while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; /* Determine the sender and receiver */ MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); source = 0; for (count = 32768; count < 65000; count = count * 2) { /* We compare with an integer value that can be as large as * size * (count * count + (1/2)*(size-1)) * For large machines (size large), this can exceed the * maximum integer for some large values of count. We check * that in advance and break this loop if the above value * would exceed MAX_INT. Specifically, * * size*count*count + (1/2)*size*(size-1) > MAX_INT * count*count > (MAX_INT/size - (1/2)*(size-1)) */ if (count * count > (MAX_INT / size - (size - 1) / 2)) break; MPI_Alloc_mem(count * sizeof(int), MPI_INFO_NULL, &winbuf); MPI_Alloc_mem(count * sizeof(int), MPI_INFO_NULL, &sbuf); for (i = 0; i < count; i++) winbuf[i] = 0; for (i = 0; i < count; i++) sbuf[i] = rank + i * count; MPI_Win_create(winbuf, count * sizeof(int), sizeof(int), MPI_INFO_NULL, comm, &win); MPI_Win_fence(0, win); MPI_Accumulate(sbuf, count, MPI_INT, source, 0, count, MPI_INT, MPI_SUM, win); MPI_Win_fence(0, win); if (rank == source) { /* Check the results */ for (i = 0; i < count; i++) { int result = i * count * size + (size * (size - 1)) / 2; if (winbuf[i] != result) { if (errs < 10) { fprintf(stderr, "Winbuf[%d] = %d, expected %d (count = %d, size = %d)\n", i, winbuf[i], result, count, size); } errs++; } } } MPI_Win_free(&win); MPI_Free_mem(winbuf); MPI_Free_mem(sbuf); } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/pscw_ordering.c0000644000175000017500000001056412620254305020156 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* This test checks an oddball case for generalized active target * synchronization where the start occurs before the post. Since start can * block until the corresponding post, the group passed to start must be * disjoint from the group passed to post and processes must avoid a circular * wait. Here, odd/even groups are used to accomplish this and the even group * reverses its start/post calls. */ #include #include #include #include "mpitest.h" #include "squelch.h" int main(int argc, char **argv) { int i, rank, nproc, errors = 0; int *win_buf; MPI_Win win; int odd_nproc, even_nproc; int *odd_ranks, *even_ranks; MPI_Group odd_group, even_group, world_group; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); if (nproc < 2) { if (rank == 0) printf("Error: this test requires two or more processes\n"); MPI_Abort(MPI_COMM_WORLD, 100); } /* Set up odd/even groups and buffers */ odd_nproc = nproc / 2; even_nproc = nproc / 2 + ((nproc % 2 == 0) ? 0 : 1); odd_ranks = malloc(sizeof(int) * odd_nproc); even_ranks = malloc(sizeof(int) * even_nproc); for (i = 0; i < even_nproc; i++) even_ranks[i] = i * 2; for (i = 0; i < odd_nproc; i++) odd_ranks[i] = i * 2 + 1; MPI_Comm_group(MPI_COMM_WORLD, &world_group); MPI_Group_incl(world_group, odd_nproc, odd_ranks, &odd_group); MPI_Group_incl(world_group, even_nproc, even_ranks, &even_group); /* Create the window */ #ifdef USE_WIN_ALLOCATE MPI_Win_allocate(nproc * sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &win_buf, &win); #else MPI_Alloc_mem(nproc * sizeof(int), MPI_INFO_NULL, &win_buf); MPI_Win_create(win_buf, nproc * sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &win); #endif MPI_Win_lock(MPI_LOCK_SHARED, rank, 0, win); for (i = 0; i < nproc; i++) win_buf[i] = -1; MPI_Win_unlock(rank, win); /* Perform PSCW communication: Odd/even matchup */ if (rank % 2 == 0) { MPI_Win_start(odd_group, 0, win); /* Even-numbered procs target odd procs */ MPI_Win_post(odd_group, 0, win); /* Even procs are targeted by odd procs */ /* Write to my slot at each target */ for (i = 0; i < odd_nproc; i++) MPI_Put(&rank, 1, MPI_INT, odd_ranks[i], rank, 1, MPI_INT, win); } else { MPI_Win_post(even_group, 0, win); /* Odd procs are targeted by even procs */ MPI_Win_start(even_group, 0, win); /* Odd-numbered procs target even procs */ /* Write to my slot at each target */ for (i = 0; i < even_nproc; i++) MPI_Put(&rank, 1, MPI_INT, even_ranks[i], rank, 1, MPI_INT, win); } MPI_Win_complete(win); MPI_Win_wait(win); /* Perform PSCW communication: Odd/odd and even/even matchup */ if (rank % 2 == 0) { MPI_Win_post(even_group, 0, win); /* Even procs are targeted by even procs */ MPI_Win_start(even_group, 0, win); /* Even-numbered procs target even procs */ /* Write to my slot at each target */ for (i = 0; i < even_nproc; i++) MPI_Put(&rank, 1, MPI_INT, even_ranks[i], rank, 1, MPI_INT, win); } else { MPI_Win_post(odd_group, 0, win); /* Odd procs are targeted by odd procs */ MPI_Win_start(odd_group, 0, win); /* Odd-numbered procs target odd procs */ /* Write to my slot at each target */ for (i = 0; i < odd_nproc; i++) MPI_Put(&rank, 1, MPI_INT, odd_ranks[i], rank, 1, MPI_INT, win); } MPI_Win_complete(win); MPI_Win_wait(win); for (i = 0; i < nproc; i++) { if (win_buf[i] != i) { errors++; SQUELCH(printf("%d: Error -- win_buf[%d] = %d, expected %d\n", rank, i, win_buf[i], i); ); } } MPI_Win_free(&win); #ifndef USE_WIN_ALLOCATE MPI_Free_mem(win_buf); #endif MPI_Group_free(&world_group); MPI_Group_free(&odd_group); MPI_Group_free(&even_group); free(odd_ranks); free(even_ranks); MTest_Finalize(errors); MPI_Finalize(); return MTestReturnValue(errors); } mpi-testsuite-3.2+dfsg/rma/transpose3.c0000644000175000017500000000716712620254305017417 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "stdio.h" #include "mpitest.h" #include "squelch.h" /* transposes a matrix using post/start/complete/wait and derived datatypes. Uses vector and hvector (Example 3.32 from MPI 1.1 Standard). Run on 2 processes */ #define NROWS 100 #define NCOLS 100 int main(int argc, char *argv[]) { int rank, nprocs, i, j, destrank; MPI_Comm CommDeuce; MPI_Win win; MPI_Datatype column, xpose; MPI_Group comm_group, group; int errs = 0; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (nprocs < 2) { printf("Run this program with 2 or more processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_split(MPI_COMM_WORLD, (rank < 2), rank, &CommDeuce); if (rank < 2) { MPI_Comm_group(CommDeuce, &comm_group); if (rank == 0) { int A[NROWS][NCOLS]; for (i = 0; i < NROWS; i++) for (j = 0; j < NCOLS; j++) A[i][j] = i * NCOLS + j; /* create datatype for one column */ MPI_Type_vector(NROWS, 1, NCOLS, MPI_INT, &column); /* create datatype for matrix in column-major order */ MPI_Type_hvector(NCOLS, 1, sizeof(int), column, &xpose); MPI_Type_commit(&xpose); #ifdef USE_WIN_ALLOCATE int *base_ptr = NULL; MPI_Win_allocate(0, 1, MPI_INFO_NULL, CommDeuce, &base_ptr, &win); #else MPI_Win_create(NULL, 0, 1, MPI_INFO_NULL, CommDeuce, &win); #endif destrank = 1; MPI_Group_incl(comm_group, 1, &destrank, &group); MPI_Win_start(group, 0, win); MPI_Put(A, NROWS * NCOLS, MPI_INT, 1, 0, 1, xpose, win); MPI_Type_free(&column); MPI_Type_free(&xpose); MPI_Win_complete(win); } else { /* rank=1 */ int *A; #ifdef USE_WIN_ALLOCATE MPI_Win_allocate(NROWS * NCOLS * sizeof(int), sizeof(int), MPI_INFO_NULL, CommDeuce, &A, &win); #else MPI_Alloc_mem(NROWS * NCOLS * sizeof(int), MPI_INFO_NULL, &A); MPI_Win_create(A, NROWS * NCOLS * sizeof(int), sizeof(int), MPI_INFO_NULL, CommDeuce, &win); #endif MPI_Win_lock(MPI_LOCK_SHARED, rank, 0, win); for (i = 0; i < NROWS; i++) for (j = 0; j < NCOLS; j++) A[i * NCOLS + j] = -1; MPI_Win_unlock(rank, win); destrank = 0; MPI_Group_incl(comm_group, 1, &destrank, &group); MPI_Win_post(group, 0, win); MPI_Win_wait(win); for (j = 0; j < NCOLS; j++) { for (i = 0; i < NROWS; i++) { if (A[j * NROWS + i] != i * NCOLS + j) { if (errs < 50) { SQUELCH(printf("Error: A[%d][%d]=%d should be %d\n", j, i, A[j * NROWS + i], i * NCOLS + j);); } errs++; } } } if (errs >= 50) { printf("Total number of errors: %d\n", errs); } #ifndef USE_WIN_ALLOCATE MPI_Free_mem(A); #endif } MPI_Group_free(&group); MPI_Group_free(&comm_group); MPI_Win_free(&win); } MPI_Comm_free(&CommDeuce); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/transpose2.c0000644000175000017500000000574112620254305017412 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "stdio.h" #include "mpitest.h" /* transposes a matrix using put, fence, and derived datatypes. Uses vector and struct (Example 3.33 from MPI 1.1 Standard). We could use vector and type_create_resized instead. Run on 2 processes */ #define NROWS 100 #define NCOLS 100 int main(int argc, char *argv[]) { int rank, nprocs, A[NROWS][NCOLS], i, j, blocklen[2]; MPI_Comm CommDeuce; MPI_Aint disp[2]; MPI_Win win; MPI_Datatype column, column1, type[2]; int errs = 0; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (nprocs < 2) { printf("Run this program with 2 or more processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_split(MPI_COMM_WORLD, (rank < 2), rank, &CommDeuce); if (rank < 2) { if (rank == 0) { for (i = 0; i < NROWS; i++) for (j = 0; j < NCOLS; j++) A[i][j] = i * NCOLS + j; /* create datatype for one column */ MPI_Type_vector(NROWS, 1, NCOLS, MPI_INT, &column); /* create datatype for one column, with the extent of one * integer. we could use type_create_resized instead. */ disp[0] = 0; disp[1] = sizeof(int); type[0] = column; type[1] = MPI_UB; blocklen[0] = 1; blocklen[1] = 1; MPI_Type_struct(2, blocklen, disp, type, &column1); MPI_Type_commit(&column1); MPI_Win_create(NULL, 0, 1, MPI_INFO_NULL, CommDeuce, &win); MPI_Win_fence(0, win); MPI_Put(A, NROWS * NCOLS, MPI_INT, 1, 0, NCOLS, column1, win); MPI_Type_free(&column); MPI_Type_free(&column1); MPI_Win_fence(0, win); } else { /* rank=1 */ for (i = 0; i < NROWS; i++) for (j = 0; j < NCOLS; j++) A[i][j] = -1; MPI_Win_create(A, NROWS * NCOLS * sizeof(int), sizeof(int), MPI_INFO_NULL, CommDeuce, &win); MPI_Win_fence(0, win); MPI_Win_fence(0, win); for (j = 0; j < NCOLS; j++) { for (i = 0; i < NROWS; i++) { if (A[j][i] != i * NCOLS + j) { if (errs < 50) { printf("Error: A[%d][%d]=%d should be %d\n", j, i, A[j][i], i * NCOLS + j); } errs++; } } } if (errs >= 50) { printf("Total number of errors: %d\n", errs); } } MPI_Win_free(&win); } MPI_Comm_free(&CommDeuce); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/fetch_and_op.c0000644000175000017500000002321112620254305017713 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include #include "mpitest.h" #include "squelch.h" #define ITER 100 #if defined (FOP_TYPE_CHAR) # define TYPE_C char # define TYPE_MPI MPI_CHAR # define TYPE_FMT "%d" #elif defined (FOP_TYPE_SHORT) # define TYPE_C short # define TYPE_MPI MPI_SHORT # define TYPE_FMT "%d" #elif defined (FOP_TYPE_LONG) # define TYPE_C long # define TYPE_MPI MPI_LONG # define TYPE_FMT "%ld" #elif defined (FOP_TYPE_DOUBLE) # define TYPE_C double # define TYPE_MPI MPI_DOUBLE # define TYPE_FMT "%f" #elif defined (FOP_TYPE_LONG_DOUBLE) # define TYPE_C long double # define TYPE_MPI MPI_LONG_DOUBLE # define TYPE_FMT "%Lf" #else # define TYPE_C int # define TYPE_MPI MPI_INT # define TYPE_FMT "%d" #endif #define CMP(x, y) ((x - ((TYPE_C) (y))) > 1.0e-9) void reset_vars(TYPE_C * val_ptr, TYPE_C * res_ptr, MPI_Win win) { int i, rank, nproc; MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, win); for (i = 0; i < nproc; i++) { val_ptr[i] = 0; res_ptr[i] = -1; } MPI_Win_unlock(rank, win); MPI_Barrier(MPI_COMM_WORLD); } int main(int argc, char **argv) { int i, rank, nproc, mpi_type_size; int errors = 0, all_errors = 0; TYPE_C *val_ptr, *res_ptr; MPI_Win win; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Type_size(TYPE_MPI, &mpi_type_size); assert(mpi_type_size == sizeof(TYPE_C)); val_ptr = malloc(sizeof(TYPE_C) * nproc); res_ptr = malloc(sizeof(TYPE_C) * nproc); MPI_Win_create(val_ptr, sizeof(TYPE_C) * nproc, sizeof(TYPE_C), MPI_INFO_NULL, MPI_COMM_WORLD, &win); /* Test self communication */ reset_vars(val_ptr, res_ptr, win); for (i = 0; i < ITER; i++) { TYPE_C one = 1, result = -1; MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, win); MPI_Fetch_and_op(&one, &result, TYPE_MPI, rank, 0, MPI_SUM, win); MPI_Win_unlock(rank, win); } MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, win); if (CMP(val_ptr[0], ITER)) { SQUELCH(printf ("%d->%d -- SELF: expected " TYPE_FMT ", got " TYPE_FMT "\n", rank, rank, (TYPE_C) ITER, val_ptr[0]);); errors++; } MPI_Win_unlock(rank, win); /* Test neighbor communication */ reset_vars(val_ptr, res_ptr, win); for (i = 0; i < ITER; i++) { TYPE_C one = 1, result = -1; MPI_Win_lock(MPI_LOCK_EXCLUSIVE, (rank + 1) % nproc, 0, win); MPI_Fetch_and_op(&one, &result, TYPE_MPI, (rank + 1) % nproc, 0, MPI_SUM, win); MPI_Win_unlock((rank + 1) % nproc, win); if (CMP(result, i)) { SQUELCH(printf ("%d->%d -- NEIGHBOR[%d]: expected result " TYPE_FMT ", got " TYPE_FMT "\n", (rank + 1) % nproc, rank, i, (TYPE_C) i, result);); errors++; } } MPI_Barrier(MPI_COMM_WORLD); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, win); if (CMP(val_ptr[0], ITER)) { SQUELCH(printf ("%d->%d -- NEIGHBOR: expected " TYPE_FMT ", got " TYPE_FMT "\n", (rank + 1) % nproc, rank, (TYPE_C) ITER, val_ptr[0]);); errors++; } MPI_Win_unlock(rank, win); /* Test contention */ reset_vars(val_ptr, res_ptr, win); if (rank != 0) { for (i = 0; i < ITER; i++) { TYPE_C one = 1, result; MPI_Win_lock(MPI_LOCK_EXCLUSIVE, 0, 0, win); MPI_Fetch_and_op(&one, &result, TYPE_MPI, 0, 0, MPI_SUM, win); MPI_Win_unlock(0, win); } } MPI_Barrier(MPI_COMM_WORLD); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, win); if (rank == 0 && nproc > 1) { if (CMP(val_ptr[0], ITER * (nproc - 1))) { SQUELCH(printf ("*->%d - CONTENTION: expected=" TYPE_FMT " val=" TYPE_FMT "\n", rank, (TYPE_C) ITER * (nproc - 1), val_ptr[0]);); errors++; } } MPI_Win_unlock(rank, win); /* Test all-to-all communication (fence) */ reset_vars(val_ptr, res_ptr, win); for (i = 0; i < ITER; i++) { int j; MPI_Win_fence(MPI_MODE_NOPRECEDE, win); for (j = 0; j < nproc; j++) { TYPE_C rank_cnv = (TYPE_C) rank; MPI_Fetch_and_op(&rank_cnv, &res_ptr[j], TYPE_MPI, j, rank, MPI_SUM, win); } MPI_Win_fence(MPI_MODE_NOSUCCEED, win); MPI_Barrier(MPI_COMM_WORLD); for (j = 0; j < nproc; j++) { if (CMP(res_ptr[j], i * rank)) { SQUELCH(printf ("%d->%d -- ALL-TO-ALL (FENCE) [%d]: expected result " TYPE_FMT ", got " TYPE_FMT "\n", rank, j, i, (TYPE_C) i * rank, res_ptr[j]);); errors++; } } } MPI_Barrier(MPI_COMM_WORLD); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, win); for (i = 0; i < nproc; i++) { if (CMP(val_ptr[i], ITER * i)) { SQUELCH(printf ("%d->%d -- ALL-TO-ALL (FENCE): expected " TYPE_FMT ", got " TYPE_FMT "\n", i, rank, (TYPE_C) ITER * i, val_ptr[i]);); errors++; } } MPI_Win_unlock(rank, win); /* Test all-to-all communication (lock-all) */ reset_vars(val_ptr, res_ptr, win); for (i = 0; i < ITER; i++) { int j; MPI_Win_lock_all(0, win); for (j = 0; j < nproc; j++) { TYPE_C rank_cnv = (TYPE_C) rank; MPI_Fetch_and_op(&rank_cnv, &res_ptr[j], TYPE_MPI, j, rank, MPI_SUM, win); } MPI_Win_unlock_all(win); MPI_Barrier(MPI_COMM_WORLD); for (j = 0; j < nproc; j++) { if (CMP(res_ptr[j], i * rank)) { SQUELCH(printf ("%d->%d -- ALL-TO-ALL (LOCK-ALL) [%d]: expected result " TYPE_FMT ", got " TYPE_FMT "\n", rank, j, i, (TYPE_C) i * rank, res_ptr[j]);); errors++; } } } MPI_Barrier(MPI_COMM_WORLD); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, win); for (i = 0; i < nproc; i++) { if (CMP(val_ptr[i], ITER * i)) { SQUELCH(printf ("%d->%d -- ALL-TO-ALL (LOCK-ALL): expected " TYPE_FMT ", got " TYPE_FMT "\n", i, rank, (TYPE_C) ITER * i, val_ptr[i]);); errors++; } } MPI_Win_unlock(rank, win); /* Test all-to-all communication (lock-all+flush) */ reset_vars(val_ptr, res_ptr, win); for (i = 0; i < ITER; i++) { int j; MPI_Win_lock_all(0, win); for (j = 0; j < nproc; j++) { TYPE_C rank_cnv = (TYPE_C) rank; MPI_Fetch_and_op(&rank_cnv, &res_ptr[j], TYPE_MPI, j, rank, MPI_SUM, win); MPI_Win_flush(j, win); } MPI_Win_unlock_all(win); MPI_Barrier(MPI_COMM_WORLD); for (j = 0; j < nproc; j++) { if (CMP(res_ptr[j], i * rank)) { SQUELCH(printf ("%d->%d -- ALL-TO-ALL (LOCK-ALL+FLUSH) [%d]: expected result " TYPE_FMT ", got " TYPE_FMT "\n", rank, j, i, (TYPE_C) i * rank, res_ptr[j]);); errors++; } } } MPI_Barrier(MPI_COMM_WORLD); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, win); for (i = 0; i < nproc; i++) { if (CMP(val_ptr[i], ITER * i)) { SQUELCH(printf ("%d->%d -- ALL-TO-ALL (LOCK-ALL+FLUSH): expected " TYPE_FMT ", got " TYPE_FMT "\n", i, rank, (TYPE_C) ITER * i, val_ptr[i]);); errors++; } } MPI_Win_unlock(rank, win); /* Test NO_OP (neighbor communication) */ MPI_Barrier(MPI_COMM_WORLD); reset_vars(val_ptr, res_ptr, win); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, win); for (i = 0; i < nproc; i++) val_ptr[i] = (TYPE_C) rank; MPI_Win_unlock(rank, win); MPI_Barrier(MPI_COMM_WORLD); for (i = 0; i < ITER; i++) { int target = (rank + 1) % nproc; MPI_Win_lock(MPI_LOCK_EXCLUSIVE, target, 0, win); MPI_Fetch_and_op(NULL, res_ptr, TYPE_MPI, target, 0, MPI_NO_OP, win); MPI_Win_unlock(target, win); if (res_ptr[0] != (TYPE_C) target) { SQUELCH(printf("%d->%d -- NOP[%d]: expected " TYPE_FMT ", got " TYPE_FMT "\n", target, rank, i, (TYPE_C) target, res_ptr[0]);); errors++; } } /* Test NO_OP (self communication) */ MPI_Barrier(MPI_COMM_WORLD); reset_vars(val_ptr, res_ptr, win); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, win); for (i = 0; i < nproc; i++) val_ptr[i] = (TYPE_C) rank; MPI_Win_unlock(rank, win); MPI_Barrier(MPI_COMM_WORLD); for (i = 0; i < ITER; i++) { int target = rank; MPI_Win_lock(MPI_LOCK_EXCLUSIVE, target, 0, win); MPI_Fetch_and_op(NULL, res_ptr, TYPE_MPI, target, 0, MPI_NO_OP, win); MPI_Win_unlock(target, win); if (res_ptr[0] != (TYPE_C) target) { SQUELCH(printf("%d->%d -- NOP_SELF[%d]: expected " TYPE_FMT ", got " TYPE_FMT "\n", target, rank, i, (TYPE_C) target, res_ptr[0]);); errors++; } } MPI_Win_free(&win); MPI_Reduce(&errors, &all_errors, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (rank == 0 && all_errors == 0) printf(" No Errors\n"); free(val_ptr); free(res_ptr); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/large-small-acc.c0000644000175000017500000000463312620254305020235 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* This code tests the case when a large ACC is issued, and then * several small ACCs is issued between the same origin and target. * The purpose of this test is to check if the ordering of ACCs * is guaranteed. */ #include "mpi.h" #include #include #define LOOP 5 #define DATA_COUNT 8192 int main(int argc, char *argv[]) { int rank, nprocs; MPI_Win win; uint64_t buf[DATA_COUNT], orig_buf[DATA_COUNT]; uint64_t small_orig_buf_1 = 2, small_orig_buf_2[2] = { 3, 3 }; int i, j, error = 0; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &rank); for (j = 0; j < LOOP; j++) { error = 0; for (i = 0; i < DATA_COUNT; i++) { buf[i] = 0; orig_buf[i] = 1; } MPI_Win_create(buf, sizeof(uint64_t) * DATA_COUNT, sizeof(uint64_t), MPI_INFO_NULL, MPI_COMM_WORLD, &win); MPI_Win_fence(0, win); if (rank == 0) { /* ACC (atomic PUT) to win_buf[0...DATA_COUNT-1] */ MPI_Accumulate(orig_buf, DATA_COUNT, MPI_UINT64_T, 1, 0, DATA_COUNT, MPI_UINT64_T, MPI_REPLACE, win); /* ACC (atomic PUT) to win_buf[0] */ MPI_Accumulate(&small_orig_buf_1, 1, MPI_UINT64_T, 1, 0, 1, MPI_UINT64_T, MPI_REPLACE, win); /* ACC (atomic PUT) to win_buf[1,2] */ MPI_Accumulate(&small_orig_buf_2, 2, MPI_UINT64_T, 1, 1, 2, MPI_UINT64_T, MPI_REPLACE, win); } MPI_Win_fence(0, win); if (rank == 1) { for (i = 0; i < DATA_COUNT; i++) { if (i == 0) { if (buf[i] != 2) { error++; } } else if (i == 1 || i == 2) { if (buf[i] != 3) { error++; } } else { if (buf[i] != 1) { error++; } } } } MPI_Win_free(&win); } if (rank == 1 && error == 0) { printf(" No Errors\n"); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/putfence1.c0000644000175000017500000001102512620254305017174 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* These counts allow reasonable sizes for the large tests */ #define LARGE_CNT_CONTIG 550000000 #define LARGE_CNT_NONCONTIG 150000000 /* static char MTEST_Descrip[] = "Put with Fence"; */ static inline int test(MPI_Comm comm, int rank, int source, int dest, MTestDatatype * sendtype, MTestDatatype * recvtype) { int errs = 0, err; MPI_Aint extent; MPI_Win win; MTestPrintfMsg(1, "Putting count = %ld of sendtype %s - count = %ld receive type %s\n", sendtype->count, MTestGetDatatypeName(sendtype), recvtype->count, MTestGetDatatypeName(recvtype)); /* Make sure that everyone has a recv buffer */ recvtype->InitBuf(recvtype); MPI_Type_extent(recvtype->datatype, &extent); MPI_Win_create(recvtype->buf, recvtype->count * extent, extent, MPI_INFO_NULL, comm, &win); MPI_Win_fence(0, win); if (rank == source) { /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Win_set_errhandler(win, MPI_ERRORS_RETURN); sendtype->InitBuf(sendtype); err = MPI_Put(sendtype->buf, sendtype->count, sendtype->datatype, dest, 0, recvtype->count, recvtype->datatype, win); if (err) { errs++; if (errs < 10) { MTestPrintError(err); } } err = MPI_Win_fence(0, win); if (err) { errs++; if (errs < 10) { MTestPrintError(err); } } } else if (rank == dest) { MPI_Win_fence(0, win); /* This should have the same effect, in terms of * transfering data, as a send/recv pair */ err = MTestCheckRecv(0, recvtype); if (err) { if (errs < 10) { printf ("Data in target buffer did not match for destination datatype %s (put with source datatype %s)\n", MTestGetDatatypeName(recvtype), MTestGetDatatypeName(sendtype)); /* Redo the test, with the errors printed */ recvtype->printErrors = 1; (void) MTestCheckRecv(0, recvtype); } errs += err; } } else { MPI_Win_fence(0, win); } MPI_Win_free(&win); return errs; } int main(int argc, char *argv[]) { int errs = 0; int rank, size, source, dest; int minsize = 2, count; MPI_Comm comm; MTestDatatype sendtype, recvtype; MTest_Init(&argc, &argv); /* The following illustrates the use of the routines to * run through a selection of communicators and datatypes. * Use subsets of these for tests that do not involve combinations * of communicators, datatypes, and counts of datatypes */ while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; /* Determine the sender and receiver */ MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); source = 0; dest = size - 1; MTEST_DATATYPE_FOR_EACH_COUNT(count) { while (MTestGetDatatypes(&sendtype, &recvtype, count)) { errs += test(comm, rank, source, dest, &sendtype, &recvtype); MTestFreeDatatype(&sendtype); MTestFreeDatatype(&recvtype); } } MTestFreeComm(&comm); } /* Part #2: simple large size test - contiguous and noncontiguous */ if (sizeof(void *) > 4) { /* Only if > 32-bit architecture */ MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); source = 0; dest = size - 1; MTestGetDatatypes(&sendtype, &recvtype, LARGE_CNT_CONTIG); errs += test(MPI_COMM_WORLD, rank, source, dest, &sendtype, &recvtype); do { MTestFreeDatatype(&sendtype); MTestFreeDatatype(&recvtype); MTestGetDatatypes(&sendtype, &recvtype, LARGE_CNT_NONCONTIG); } while (strstr(MTestGetDatatypeName(&sendtype), "vector") == NULL); errs += test(MPI_COMM_WORLD, rank, source, dest, &sendtype, &recvtype); MTestFreeDatatype(&sendtype); MTestFreeDatatype(&recvtype); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/strided_acc_indexed.c0000644000175000017500000001047312620254305021254 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* One-Sided MPI 2-D Strided Accumulate Test * * Author: James Dinan * Date : December, 2010 * * This code performs N accumulates into a 2d patch of a shared array. The * array has dimensions [X, Y] and the subarray has dimensions [SUB_X, SUB_Y] * and begins at index [0, 0]. The input and output buffers are specified * using an MPI indexed type. */ #include #include #include #include #include "mpitest.h" #include "squelch.h" #define XDIM 16 #define YDIM 16 #define SUB_XDIM 8 #define SUB_YDIM 8 #define ITERATIONS 1 int main(int argc, char **argv) { int itr, i, j, rank, nranks, peer, bufsize, errors; double *win_buf, *src_buf; MPI_Win buf_win; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nranks); bufsize = XDIM * YDIM * sizeof(double); MPI_Alloc_mem(bufsize, MPI_INFO_NULL, &win_buf); MPI_Alloc_mem(bufsize, MPI_INFO_NULL, &src_buf); for (i = 0; i < XDIM * YDIM; i++) { *(win_buf + i) = -1.0; *(src_buf + i) = 1.0 + rank; } MPI_Win_create(win_buf, bufsize, 1, MPI_INFO_NULL, MPI_COMM_WORLD, &buf_win); peer = (rank + 1) % nranks; /* Perform ITERATIONS strided accumulate operations */ for (itr = 0; itr < ITERATIONS; itr++) { MPI_Aint idx_loc[SUB_YDIM]; int idx_rem[SUB_YDIM]; int blk_len[SUB_YDIM]; MPI_Datatype src_type, dst_type; for (i = 0; i < SUB_YDIM; i++) { MPI_Get_address(&src_buf[i * XDIM], &idx_loc[i]); idx_rem[i] = i * XDIM; blk_len[i] = SUB_XDIM; } #ifdef ABSOLUTE MPI_Type_hindexed(SUB_YDIM, blk_len, idx_loc, MPI_DOUBLE, &src_type); #else MPI_Type_indexed(SUB_YDIM, blk_len, idx_rem, MPI_DOUBLE, &src_type); #endif MPI_Type_indexed(SUB_YDIM, blk_len, idx_rem, MPI_DOUBLE, &dst_type); MPI_Type_commit(&src_type); MPI_Type_commit(&dst_type); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, peer, 0, buf_win); #ifdef ABSOLUTE MPI_Accumulate(MPI_BOTTOM, 1, src_type, peer, 0, 1, dst_type, MPI_SUM, buf_win); #else MPI_Accumulate(src_buf, 1, src_type, peer, 0, 1, dst_type, MPI_SUM, buf_win); #endif MPI_Win_unlock(peer, buf_win); MPI_Type_free(&src_type); MPI_Type_free(&dst_type); } MPI_Barrier(MPI_COMM_WORLD); /* Verify that the results are correct */ MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, buf_win); errors = 0; for (i = 0; i < SUB_XDIM; i++) { for (j = 0; j < SUB_YDIM; j++) { const double actual = *(win_buf + i + j * XDIM); const double expected = -1.0 + (1.0 + ((rank + nranks - 1) % nranks)) * (ITERATIONS); if (fabs(actual - expected) > 1.0e-10) { SQUELCH(printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual);); errors++; fflush(stdout); } } } for (i = SUB_XDIM; i < XDIM; i++) { for (j = 0; j < SUB_YDIM; j++) { const double actual = *(win_buf + i + j * XDIM); const double expected = -1.0; if (fabs(actual - expected) > 1.0e-10) { SQUELCH(printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual);); errors++; fflush(stdout); } } } for (i = 0; i < XDIM; i++) { for (j = SUB_YDIM; j < YDIM; j++) { const double actual = *(win_buf + i + j * XDIM); const double expected = -1.0; if (fabs(actual - expected) > 1.0e-10) { SQUELCH(printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual);); errors++; fflush(stdout); } } } MPI_Win_unlock(rank, buf_win); MPI_Win_free(&buf_win); MPI_Free_mem(win_buf); MPI_Free_mem(src_buf); MTest_Finalize(errors); MPI_Finalize(); return MTestReturnValue(errors); } mpi-testsuite-3.2+dfsg/rma/transpose5.c0000644000175000017500000000572412620254305017416 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "stdio.h" #include #include "mpitest.h" /* This does a transpose-cum-accumulate operation. Uses vector and hvector datatypes (Example 3.32 from MPI 1.1 Standard). Run on 2 processes */ #define NROWS 1000 #define NCOLS 1000 int main(int argc, char *argv[]) { int rank, nprocs, **A, *A_data, i, j; MPI_Comm CommDeuce; MPI_Win win; MPI_Datatype column, xpose; int errs = 0; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (nprocs < 2) { printf("Run this program with 2 or more processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_split(MPI_COMM_WORLD, (rank < 2), rank, &CommDeuce); if (rank < 2) { A_data = (int *) malloc(NROWS * NCOLS * sizeof(int)); A = (int **) malloc(NROWS * sizeof(int *)); A[0] = A_data; for (i = 1; i < NROWS; i++) A[i] = A[i - 1] + NCOLS; if (rank == 0) { for (i = 0; i < NROWS; i++) for (j = 0; j < NCOLS; j++) A[i][j] = i * NCOLS + j; /* create datatype for one column */ MPI_Type_vector(NROWS, 1, NCOLS, MPI_INT, &column); /* create datatype for matrix in column-major order */ MPI_Type_hvector(NCOLS, 1, sizeof(int), column, &xpose); MPI_Type_commit(&xpose); MPI_Win_create(NULL, 0, 1, MPI_INFO_NULL, CommDeuce, &win); MPI_Win_fence(0, win); MPI_Accumulate(&A[0][0], NROWS * NCOLS, MPI_INT, 1, 0, 1, xpose, MPI_SUM, win); MPI_Type_free(&column); MPI_Type_free(&xpose); MPI_Win_fence(0, win); } else { /* rank=1 */ for (i = 0; i < NROWS; i++) for (j = 0; j < NCOLS; j++) A[i][j] = i * NCOLS + j; MPI_Win_create(&A[0][0], NROWS * NCOLS * sizeof(int), sizeof(int), MPI_INFO_NULL, CommDeuce, &win); MPI_Win_fence(0, win); MPI_Win_fence(0, win); for (j = 0; j < NCOLS; j++) { for (i = 0; i < NROWS; i++) { if (A[j][i] != i * NCOLS + j + j * NCOLS + i) { if (errs < 50) { printf("Error: A[%d][%d]=%d should be %d\n", j, i, A[j][i], i * NCOLS + j + j * NCOLS + i); } errs++; } } } if (errs >= 50) { printf("Total number of errors: %d\n", errs); } } MPI_Win_free(&win); free(A_data); free(A); } MPI_Comm_free(&CommDeuce); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/accfence2.c0000644000175000017500000000604112620254305017115 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #ifndef MAX_INT #define MAX_INT 0x7fffffff #endif /* static char MTEST_Descrip[] = "Test MPI_Accumulate with fence"; */ int main(int argc, char *argv[]) { int errs = 0; int rank, size, source; int minsize = 2, count, i; MPI_Comm comm; MPI_Win win; int *winbuf, *sbuf; MTest_Init(&argc, &argv); /* The following illustrates the use of the routines to * run through a selection of communicators and datatypes. * Use subsets of these for tests that do not involve combinations * of communicators, datatypes, and counts of datatypes */ while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; /* Determine the sender and receiver */ MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); source = 0; for (count = 1; count < 65000; count = count * 2) { /* We compare with an integer value that can be as large as * size * (count * count + (1/2)*(size-1)) * For large machines (size large), this can exceed the * maximum integer for some large values of count. We check * that in advance and break this loop if the above value * would exceed MAX_INT. Specifically, * * size*count*count + (1/2)*size*(size-1) > MAX_INT * count*count > (MAX_INT/size - (1/2)*(size-1)) */ if (count * count > (MAX_INT / size - (size - 1) / 2)) break; winbuf = (int *) malloc(count * sizeof(int)); sbuf = (int *) malloc(count * sizeof(int)); for (i = 0; i < count; i++) winbuf[i] = 0; for (i = 0; i < count; i++) sbuf[i] = rank + i * count; MPI_Win_create(winbuf, count * sizeof(int), sizeof(int), MPI_INFO_NULL, comm, &win); MPI_Win_fence(0, win); MPI_Accumulate(sbuf, count, MPI_INT, source, 0, count, MPI_INT, MPI_SUM, win); MPI_Win_fence(0, win); if (rank == source) { /* Check the results */ for (i = 0; i < count; i++) { int result = i * count * size + (size * (size - 1)) / 2; if (winbuf[i] != result) { if (errs < 10) { fprintf(stderr, "Winbuf[%d] = %d, expected %d (count = %d, size = %d)\n", i, winbuf[i], result, count, size); } errs++; } } } free(winbuf); free(sbuf); MPI_Win_free(&win); } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/getgroup.c0000644000175000017500000000264312620254305017144 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test of Win_get_group"; */ int main(int argc, char *argv[]) { int errs = 0; int result; int buf[10]; MPI_Win win; MPI_Group group, wingroup; int minsize = 2; MPI_Comm comm; MTest_Init(&argc, &argv); /* The following illustrates the use of the routines to * run through a selection of communicators and datatypes. * Use subsets of these for tests that do not involve combinations * of communicators, datatypes, and counts of datatypes */ while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; MPI_Win_create(buf, sizeof(int) * 10, sizeof(int), MPI_INFO_NULL, comm, &win); MPI_Win_get_group(win, &wingroup); MPI_Comm_group(comm, &group); MPI_Group_compare(group, wingroup, &result); if (result != MPI_IDENT) { errs++; fprintf(stderr, "Group returned by Win_get_group not the same as the input group\n"); } MPI_Group_free(&wingroup); MPI_Group_free(&group); MPI_Win_free(&win); MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/acc-pairtype.c0000644000175000017500000000416212620254305017667 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* This test is going to test when Accumulate operation is working * with pair types. */ #include "mpi.h" #include #define DATA_SIZE 25 typedef struct long_double_int { long double a; int b; } long_double_int_t; int main(int argc, char *argv[]) { MPI_Win win; int errors = 0; int rank, nproc, i; long_double_int_t *orig_buf; long_double_int_t *tar_buf; MPI_Datatype vector_dtp; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Alloc_mem(sizeof(long_double_int_t) * DATA_SIZE, MPI_INFO_NULL, &orig_buf); MPI_Alloc_mem(sizeof(long_double_int_t) * DATA_SIZE, MPI_INFO_NULL, &tar_buf); for (i = 0; i < DATA_SIZE; i++) { orig_buf[i].a = 1.0; orig_buf[i].b = 1; tar_buf[i].a = 0; tar_buf[i].b = 0; } MPI_Type_vector(5 /* count */ , 3 /* blocklength */ , 5 /* stride */ , MPI_LONG_DOUBLE_INT, &vector_dtp); MPI_Type_commit(&vector_dtp); MPI_Win_create(tar_buf, sizeof(long_double_int_t) * DATA_SIZE, sizeof(long_double_int_t), MPI_INFO_NULL, MPI_COMM_WORLD, &win); if (rank == 0) { MPI_Win_lock(MPI_LOCK_SHARED, 1, 0, win); MPI_Accumulate(orig_buf, 1, vector_dtp, 1, 0, 1, vector_dtp, MPI_MAXLOC, win); MPI_Win_unlock(1, win); } MPI_Win_free(&win); if (rank == 1) { for (i = 0; i < DATA_SIZE; i++) { if (i % 5 < 3) { if (tar_buf[i].a != 1.0 || tar_buf[i].b != 1) { errors++; } } else { if (tar_buf[i].a != 0.0 || tar_buf[i].b != 0) { errors++; } } } } MPI_Type_free(&vector_dtp); MPI_Free_mem(orig_buf); MPI_Free_mem(tar_buf); if (rank == 1) { if (errors == 0) printf(" No Errors\n"); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/lockall_dt.c0000644000175000017500000000724312620254305017421 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test for streaming ACC-like operations with lock_all"; */ int main(int argc, char *argv[]) { int errs = 0; int rank, size; int minsize = 2, count; MPI_Comm comm; MPI_Win win; MPI_Aint lb, extent; MTestDatatype sendtype, recvtype; MTest_Init(&argc, &argv); while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); int source = 0; MTEST_DATATYPE_FOR_EACH_COUNT(count) { while (MTestGetDatatypes(&sendtype, &recvtype, count)) { recvtype.printErrors = 1; recvtype.InitBuf(&recvtype); MPI_Type_get_extent(recvtype.datatype, &lb, &extent); MPI_Win_create(recvtype.buf, lb + recvtype.count * extent, (int) extent, MPI_INFO_NULL, comm, &win); if (rank == source) { int dest; sendtype.InitBuf(&sendtype); MPI_Win_lock_all(0, win); for (dest = 0; dest < size; dest++) if (dest != source) { MPI_Accumulate(sendtype.buf, sendtype.count, sendtype.datatype, dest, 0, recvtype.count, recvtype.datatype, MPI_REPLACE, win); } MPI_Win_unlock_all(win); MPI_Barrier(comm); char *resbuf = (char *) calloc(lb + extent * recvtype.count, sizeof(char)); /*wait for the destinations to finish checking and reinitializing the buffers */ MPI_Barrier(comm); MPI_Win_lock_all(0, win); for (dest = 0; dest < size; dest++) if (dest != source) { MPI_Get_accumulate(sendtype.buf, sendtype.count, sendtype.datatype, resbuf, recvtype.count, recvtype.datatype, dest, 0, recvtype.count, recvtype.datatype, MPI_REPLACE, win); } MPI_Win_unlock_all(win); MPI_Barrier(comm); free(resbuf); } else { int err; MPI_Barrier(comm); MPI_Win_lock(MPI_LOCK_SHARED, rank, 0, win); err = MTestCheckRecv(0, &recvtype); if (err) errs++; recvtype.InitBuf(&recvtype); MPI_Win_unlock(rank, win); /*signal the source that checking and reinitialization is done */ MPI_Barrier(comm); MPI_Barrier(comm); MPI_Win_lock(MPI_LOCK_SHARED, rank, 0, win); err = MTestCheckRecv(0, &recvtype); if (err) errs++; MPI_Win_unlock(rank, win); } MPI_Win_free(&win); MTestFreeDatatype(&sendtype); MTestFreeDatatype(&recvtype); } } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/win_dynamic_acc.c0000644000175000017500000000321212620254305020410 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include #include "mpitest.h" #define ITER_PER_RANK 25 const int verbose = 0; int main(int argc, char **argv) { int i, rank, nproc; int errors = 0, all_errors = 0; int val = 0, one = 1; int iter; MPI_Aint *val_ptrs; MPI_Win dyn_win; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); iter = ITER_PER_RANK * nproc; val_ptrs = malloc(nproc * sizeof(MPI_Aint)); MPI_Get_address(&val, &val_ptrs[rank]); MPI_Allgather(MPI_IN_PLACE, 0, MPI_DATATYPE_NULL, val_ptrs, 1, MPI_AINT, MPI_COMM_WORLD); MPI_Win_create_dynamic(MPI_INFO_NULL, MPI_COMM_WORLD, &dyn_win); MPI_Win_attach(dyn_win, &val, sizeof(int)); for (i = 0; i < iter; i++) { MPI_Win_fence(MPI_MODE_NOPRECEDE, dyn_win); MPI_Accumulate(&one, 1, MPI_INT, i % nproc, val_ptrs[i % nproc], 1, MPI_INT, MPI_SUM, dyn_win); MPI_Win_fence(MPI_MODE_NOSUCCEED, dyn_win); } MPI_Barrier(MPI_COMM_WORLD); /* Read and verify my data */ if (val != iter) { errors++; printf("%d -- Got %d, expected %d\n", rank, val, iter); } MPI_Win_detach(dyn_win, &val); MPI_Win_free(&dyn_win); MPI_Reduce(&errors, &all_errors, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (rank == 0 && all_errors == 0) printf(" No Errors\n"); free(val_ptrs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/rmazero.c0000644000175000017500000002404112620254305016763 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2010 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #define TARGET 0 /* Test the given operation within a Fence epoch */ #define TEST_FENCE_OP(op_name_, fcn_call_) \ do { \ err = fcn_call_ \ if (err) { \ errs++; \ if (errs < 10) { \ MTestPrintErrorMsg("Zero-byte op " op_name_, err); \ } \ } \ err = MPI_Win_fence(0, win); \ if (err) { \ errs++; \ if (errs < 10) { \ MTestPrintErrorMsg("Fence after " op_name_, err); \ } \ } \ } while (0) /* Test the given operation within a passive target epoch */ #define TEST_PT_OP(op_name_, fcn_call_) \ do { \ err = MPI_Win_lock(MPI_LOCK_EXCLUSIVE, TARGET, 0, win); \ if (err) { \ errs++; \ if (errs < 10) { \ MTestPrintErrorMsg("Lock before" op_name_, err); \ } \ } \ err = fcn_call_ \ if (err) { \ errs++; \ if (errs < 10) { \ MTestPrintErrorMsg("Zero-byte op " op_name_, err); \ } \ } \ err = MPI_Win_unlock(TARGET, win); \ if (err) { \ errs++; \ if (errs < 10) { \ MTestPrintErrorMsg("Unlock after " op_name_, err); \ } \ } \ } while (0) /* Test the given request-based operation within a passive target epoch */ #define TEST_REQ_OP(op_name_, req_, fcn_call_) \ do { \ err = MPI_Win_lock(MPI_LOCK_EXCLUSIVE, TARGET, 0, win); \ if (err) { \ errs++; \ if (errs < 10) { \ MTestPrintErrorMsg("Lock before" op_name_, err); \ } \ } \ err = fcn_call_ \ if (err) { \ errs++; \ if (errs < 10) { \ MTestPrintErrorMsg("Zero-byte op " op_name_, err); \ } \ } \ err = MPI_Win_unlock(TARGET, win); \ if (err) { \ errs++; \ if (errs < 10) { \ MTestPrintErrorMsg("Unlock after " op_name_, err); \ } \ } \ err = MPI_Wait(&req_, MPI_STATUS_IGNORE); \ if (err) { \ errs++; \ if (errs < 10) { \ MTestPrintErrorMsg("Wait after " op_name_, err); \ } \ } \ } while (0) /* static char MTEST_Descrip[] = "Test handling of zero-byte transfers"; */ int main(int argc, char *argv[]) { int errs = 0, err; int rank, size; int *buf, bufsize; int *result; int *rmabuf, rsize, rcount; MPI_Comm comm; MPI_Win win; MPI_Request req; MPI_Datatype derived_dtp; MTest_Init(&argc, &argv); bufsize = 256 * sizeof(int); buf = (int *) malloc(bufsize); if (!buf) { fprintf(stderr, "Unable to allocated %d bytes\n", bufsize); MPI_Abort(MPI_COMM_WORLD, 1); } result = (int *) malloc(bufsize); if (!result) { fprintf(stderr, "Unable to allocated %d bytes\n", bufsize); MPI_Abort(MPI_COMM_WORLD, 1); } rcount = 16; rsize = rcount * sizeof(int); rmabuf = (int *) malloc(rsize); if (!rmabuf) { fprintf(stderr, "Unable to allocated %d bytes\n", rsize); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Type_contiguous(2, MPI_INT, &derived_dtp); MPI_Type_commit(&derived_dtp); /* The following loop is used to run through a series of communicators * that are subsets of MPI_COMM_WORLD, of size 1 or greater. */ while (MTestGetIntracommGeneral(&comm, 1, 1)) { int count = 0; if (comm == MPI_COMM_NULL) continue; /* Determine the sender and receiver */ MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); MPI_Win_create(buf, bufsize, 2 * sizeof(int), MPI_INFO_NULL, comm, &win); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Win_set_errhandler(win, MPI_ERRORS_RETURN); /** TEST OPERATIONS USING ACTIVE TARGET (FENCE) SYNCHRONIZATION **/ MPI_Win_fence(0, win); TEST_FENCE_OP("Put", MPI_Put(rmabuf, count, MPI_INT, TARGET, 0, count, MPI_INT, win); ); TEST_FENCE_OP("Get", MPI_Get(rmabuf, count, MPI_INT, TARGET, 0, count, MPI_INT, win); ); TEST_FENCE_OP("Accumulate", MPI_Accumulate(rmabuf, count, MPI_INT, TARGET, 0, count, MPI_INT, MPI_SUM, win); ); TEST_FENCE_OP("Accumulate_derived", MPI_Accumulate(rmabuf, count, derived_dtp, TARGET, 0, count, derived_dtp, MPI_SUM, win); ); TEST_FENCE_OP("Get accumulate", MPI_Get_accumulate(rmabuf, count, MPI_INT, result, count, MPI_INT, TARGET, 0, count, MPI_INT, MPI_SUM, win); ); /* Note: It's not possible to generate a zero-byte FOP or CAS */ /** TEST OPERATIONS USING PASSIVE TARGET SYNCHRONIZATION **/ TEST_PT_OP("Put", MPI_Put(rmabuf, count, MPI_INT, TARGET, 0, count, MPI_INT, win); ); TEST_PT_OP("Get", MPI_Get(rmabuf, count, MPI_INT, TARGET, 0, count, MPI_INT, win); ); TEST_PT_OP("Accumulate", MPI_Accumulate(rmabuf, count, MPI_INT, TARGET, 0, count, MPI_INT, MPI_SUM, win); ); TEST_PT_OP("Accumulate_derived", MPI_Accumulate(rmabuf, count, derived_dtp, TARGET, 0, count, derived_dtp, MPI_SUM, win); ); TEST_PT_OP("Get accumulate", MPI_Get_accumulate(rmabuf, count, MPI_INT, result, count, MPI_INT, TARGET, 0, count, MPI_INT, MPI_SUM, win); ); /* Note: It's not possible to generate a zero-byte FOP or CAS */ /** TEST REQUEST-BASED OPERATIONS (PASSIVE TARGET ONLY) **/ TEST_REQ_OP("Rput", req, MPI_Rput(rmabuf, count, MPI_INT, TARGET, 0, count, MPI_INT, win, &req); ); TEST_REQ_OP("Rget", req, MPI_Rget(rmabuf, count, MPI_INT, TARGET, 0, count, MPI_INT, win, &req); ); TEST_REQ_OP("Raccumulate", req, MPI_Raccumulate(rmabuf, count, MPI_INT, TARGET, 0, count, MPI_INT, MPI_SUM, win, &req); ); TEST_REQ_OP("Raccumulate_derived", req, MPI_Raccumulate(rmabuf, count, derived_dtp, TARGET, 0, count, derived_dtp, MPI_SUM, win, &req); ); TEST_REQ_OP("Rget_accumulate", req, MPI_Rget_accumulate(rmabuf, count, MPI_INT, result, count, MPI_INT, TARGET, 0, count, MPI_INT, MPI_SUM, win, &req); ); MPI_Win_free(&win); MTestFreeComm(&comm); } MPI_Type_free(&derived_dtp); free(result); free(buf); free(rmabuf); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/compare_and_swap.c0000644000175000017500000000542112620254305020607 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include #include "mpitest.h" #include "squelch.h" #define ITER 100 int main(int argc, char **argv) { int i, rank, nproc; int errors = 0, all_errors = 0; int *val_ptr; MPI_Win win; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); val_ptr = malloc(sizeof(int)); *val_ptr = 0; MPI_Win_create(val_ptr, sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &win); /* Test self communication */ for (i = 0; i < ITER; i++) { int next = i + 1, result = -1; MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, win); MPI_Compare_and_swap(&next, &i, &result, MPI_INT, rank, 0, win); MPI_Win_unlock(rank, win); if (result != i) { SQUELCH(printf("%d->%d -- Error: next=%d compare=%d result=%d val=%d\n", rank, rank, next, i, result, *val_ptr);); errors++; } } MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, win); *val_ptr = 0; MPI_Win_unlock(rank, win); MPI_Barrier(MPI_COMM_WORLD); /* Test neighbor communication */ for (i = 0; i < ITER; i++) { int next = i + 1, result = -1; MPI_Win_lock(MPI_LOCK_EXCLUSIVE, (rank + 1) % nproc, 0, win); MPI_Compare_and_swap(&next, &i, &result, MPI_INT, (rank + 1) % nproc, 0, win); MPI_Win_unlock((rank + 1) % nproc, win); if (result != i) { SQUELCH(printf("%d->%d -- Error: next=%d compare=%d result=%d val=%d\n", rank, (rank + 1) % nproc, next, i, result, *val_ptr);); errors++; } } fflush(NULL); MPI_Barrier(MPI_COMM_WORLD); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, win); *val_ptr = 0; MPI_Win_unlock(rank, win); MPI_Barrier(MPI_COMM_WORLD); /* Test contention */ if (rank != 0) { for (i = 0; i < ITER; i++) { int next = i + 1, result = -1; MPI_Win_lock(MPI_LOCK_EXCLUSIVE, 0, 0, win); MPI_Compare_and_swap(&next, &i, &result, MPI_INT, 0, 0, win); MPI_Win_unlock(0, win); } } MPI_Barrier(MPI_COMM_WORLD); if (rank == 0 && nproc > 1) { if (*val_ptr != ITER) { SQUELCH(printf("%d - Error: expected=%d val=%d\n", rank, ITER, *val_ptr);); errors++; } } MPI_Win_free(&win); MPI_Reduce(&errors, &all_errors, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (rank == 0 && all_errors == 0) printf(" No Errors\n"); free(val_ptr); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/win_flavors.c0000644000175000017500000000661312620254305017642 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include "mpitest.h" #define ELEM_SIZE 8 int main(int argc, char *argv[]) { int rank; int errors = 0, all_errors = 0; int *flavor, *model, flag; void *buf; MPI_Win window; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); /** Create using MPI_Win_create() **/ if (rank > 0) MPI_Alloc_mem(rank * ELEM_SIZE, MPI_INFO_NULL, &buf); else buf = NULL; MPI_Win_create(buf, rank * ELEM_SIZE, 1, MPI_INFO_NULL, MPI_COMM_WORLD, &window); MPI_Win_get_attr(window, MPI_WIN_CREATE_FLAVOR, &flavor, &flag); if (!flag) { printf("%d: MPI_Win_create - Error, no flavor\n", rank); errors++; } else if (*flavor != MPI_WIN_FLAVOR_CREATE) { printf("%d: MPI_Win_create - Error, bad flavor (%d)\n", rank, *flavor); errors++; } MPI_Win_get_attr(window, MPI_WIN_MODEL, &model, &flag); if (!flag) { printf("%d: MPI_Win_create - Error, no model\n", rank); errors++; } else if (!(*model == MPI_WIN_SEPARATE || *model == MPI_WIN_UNIFIED)) { printf("%d: MPI_Win_create - Error, bad model (%d)\n", rank, *model); errors++; } MPI_Win_free(&window); if (buf) MPI_Free_mem(buf); /** Create using MPI_Win_allocate() **/ MPI_Win_allocate(rank * ELEM_SIZE, 1, MPI_INFO_NULL, MPI_COMM_WORLD, &buf, &window); if (rank > 0 && buf == NULL) { printf("%d: MPI_Win_allocate - Error, bad base pointer\n", rank); errors++; } MPI_Win_get_attr(window, MPI_WIN_CREATE_FLAVOR, &flavor, &flag); if (!flag) { printf("%d: MPI_Win_allocate - Error, no flavor\n", rank); errors++; } else if (*flavor != MPI_WIN_FLAVOR_ALLOCATE) { printf("%d: MPI_Win_allocate - Error, bad flavor (%d)\n", rank, *flavor); errors++; } MPI_Win_get_attr(window, MPI_WIN_MODEL, &model, &flag); if (!flag) { printf("%d: MPI_Win_allocate - Error, no model\n", rank); errors++; } else if (*model != MPI_WIN_SEPARATE && *model != MPI_WIN_UNIFIED) { printf("%d: MPI_Win_allocate - Error, bad model (%d)\n", rank, *model); errors++; } MPI_Win_free(&window); /** Create using MPI_Win_create_dynamic() **/ MPI_Win_create_dynamic(MPI_INFO_NULL, MPI_COMM_WORLD, &window); MPI_Win_get_attr(window, MPI_WIN_CREATE_FLAVOR, &flavor, &flag); if (!flag) { printf("%d: MPI_Win_create_dynamic - Error, no flavor\n", rank); errors++; } else if (*flavor != MPI_WIN_FLAVOR_DYNAMIC) { printf("%d: MPI_Win_create_dynamic - Error, bad flavor (%d)\n", rank, *flavor); errors++; } MPI_Win_get_attr(window, MPI_WIN_MODEL, &model, &flag); if (!flag) { printf("%d: MPI_Win_create_dynamic - Error, no model\n", rank); errors++; } else if (*model != MPI_WIN_SEPARATE && *model != MPI_WIN_UNIFIED) { printf("%d: MPI_Win_create_dynamic - Error, bad model (%d)\n", rank, *model); errors++; } MPI_Win_free(&window); MPI_Reduce(&errors, &all_errors, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (rank == 0 && all_errors == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/fetchandadd_am.c0000644000175000017500000000777712620254305020227 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "stdio.h" #include "stdlib.h" #include "mpitest.h" /* Fetch and add example from Using MPI-2 (the non-scalable version, Fig. 6.12). */ /* same as fetchandadd.c but uses alloc_mem */ #define NTIMES 20 /* no of times each process calls the counter * routine */ int localvalue = 0; /* contribution of this process to the counter. We * define it as a global variable because attribute * caching on the window is not enabled yet. */ void Get_nextval(MPI_Win win, int *val_array, MPI_Datatype get_type, int rank, int nprocs, int *value); int compar(const void *a, const void *b); int main(int argc, char *argv[]) { int rank, nprocs, i, blens[2], disps[2], *counter_mem, *val_array, *results, *counter_vals; MPI_Datatype get_type; MPI_Win win; int errs = 0; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (rank == 0) { /* allocate counter memory and initialize to 0 */ /* counter_mem = (int *) calloc(nprocs, sizeof(int)); */ i = MPI_Alloc_mem(nprocs * sizeof(int), MPI_INFO_NULL, &counter_mem); if (i) { printf("Can't allocate memory in test program\n"); MPI_Abort(MPI_COMM_WORLD, 1); } for (i = 0; i < nprocs; i++) counter_mem[i] = 0; MPI_Win_create(counter_mem, nprocs * sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &win); MPI_Win_free(&win); MPI_Free_mem(counter_mem); /* gather the results from other processes, sort them, and check * whether they represent a counter being incremented by 1 */ results = (int *) malloc(NTIMES * nprocs * sizeof(int)); for (i = 0; i < NTIMES * nprocs; i++) results[i] = -1; MPI_Gather(MPI_IN_PLACE, 0, MPI_DATATYPE_NULL, results, NTIMES, MPI_INT, 0, MPI_COMM_WORLD); qsort(results + NTIMES, NTIMES * (nprocs - 1), sizeof(int), compar); for (i = NTIMES + 1; i < (NTIMES * nprocs); i++) if (results[i] != results[i - 1] + 1) errs++; free(results); } else { blens[0] = rank; disps[0] = 0; blens[1] = nprocs - rank - 1; disps[1] = rank + 1; MPI_Type_indexed(2, blens, disps, MPI_INT, &get_type); MPI_Type_commit(&get_type); val_array = (int *) malloc(nprocs * sizeof(int)); /* allocate array to store the values obtained from the * fetch-and-add counter */ counter_vals = (int *) malloc(NTIMES * sizeof(int)); MPI_Win_create(NULL, 0, 1, MPI_INFO_NULL, MPI_COMM_WORLD, &win); for (i = 0; i < NTIMES; i++) { Get_nextval(win, val_array, get_type, rank, nprocs, counter_vals + i); /* printf("Rank %d, counter %d\n", rank, value); */ } MPI_Win_free(&win); free(val_array); MPI_Type_free(&get_type); /* gather the results to the root */ MPI_Gather(counter_vals, NTIMES, MPI_INT, NULL, 0, MPI_DATATYPE_NULL, 0, MPI_COMM_WORLD); free(counter_vals); } MTest_Finalize(errs); MPI_Finalize(); return 0; } void Get_nextval(MPI_Win win, int *val_array, MPI_Datatype get_type, int rank, int nprocs, int *value) { int one = 1, i; MPI_Win_lock(MPI_LOCK_EXCLUSIVE, 0, 0, win); MPI_Accumulate(&one, 1, MPI_INT, 0, rank, 1, MPI_INT, MPI_SUM, win); MPI_Get(val_array, 1, get_type, 0, 0, 1, get_type, win); MPI_Win_unlock(0, win); *value = 0; val_array[rank] = localvalue; for (i = 0; i < nprocs; i++) *value = *value + val_array[i]; localvalue++; } int compar(const void *a, const void *b) { return (*((int *) a) - *((int *) b)); } mpi-testsuite-3.2+dfsg/rma/lock_dt.c0000644000175000017500000000674512620254305016736 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test for streaming ACC-like operations with lock"; */ int main(int argc, char *argv[]) { int errs = 0; int rank, size, source, dest; int minsize = 2, count; MPI_Comm comm; MPI_Win win; MPI_Aint lb, extent; MTestDatatype sendtype, recvtype; MTest_Init(&argc, &argv); while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); source = 0; dest = size - 1; MTEST_DATATYPE_FOR_EACH_COUNT(count) { while (MTestGetDatatypes(&sendtype, &recvtype, count)) { recvtype.printErrors = 1; /* Make sure that everyone has a recv buffer */ recvtype.InitBuf(&recvtype); MPI_Type_get_extent(recvtype.datatype, &lb, &extent); MPI_Win_create(recvtype.buf, lb + recvtype.count * extent, (int) extent, MPI_INFO_NULL, comm, &win); if (rank == source) { sendtype.InitBuf(&sendtype); MPI_Win_lock(MPI_LOCK_SHARED, dest, 0, win); MPI_Accumulate(sendtype.buf, sendtype.count, sendtype.datatype, dest, 0, recvtype.count, recvtype.datatype, MPI_REPLACE, win); MPI_Win_unlock(dest, win); MPI_Barrier(comm); char *resbuf = (char *) calloc(lb + extent * recvtype.count, sizeof(char)); /*wait for the destination to finish checking and reinitializing the buffer */ MPI_Barrier(comm); MPI_Win_lock(MPI_LOCK_SHARED, dest, 0, win); MPI_Get_accumulate(sendtype.buf, sendtype.count, sendtype.datatype, resbuf, recvtype.count, recvtype.datatype, dest, 0, recvtype.count, recvtype.datatype, MPI_REPLACE, win); MPI_Win_unlock(dest, win); MPI_Barrier(comm); free(resbuf); } else if (rank == dest) { int err; MPI_Barrier(comm); MPI_Win_lock(MPI_LOCK_SHARED, dest, 0, win); err = MTestCheckRecv(0, &recvtype); if (err) errs++; recvtype.InitBuf(&recvtype); MPI_Win_unlock(dest, win); /*signal the source that checking and reinitialization is done */ MPI_Barrier(comm); MPI_Barrier(comm); MPI_Win_lock(MPI_LOCK_SHARED, dest, 0, win); err = MTestCheckRecv(0, &recvtype); if (err) errs++; MPI_Win_unlock(dest, win); } MPI_Win_free(&win); MTestFreeDatatype(&sendtype); MTestFreeDatatype(&recvtype); } } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/rput_local_comp.c0000644000175000017500000000761212620254305020473 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include "mpitest.h" #define ITER 100 #define MAX_SIZE 65536 int main(int argc, char *argv[]) { int rank, nproc, i; int errors = 0, all_errors = 0; int *buf = NULL, *winbuf = NULL; MPI_Win window; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); if (nproc < 2) { if (rank == 0) printf("Error: must be run with two or more processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Alloc_mem(MAX_SIZE * sizeof(int), MPI_INFO_NULL, &buf); MPI_Alloc_mem(MAX_SIZE * sizeof(int), MPI_INFO_NULL, &winbuf); MPI_Win_create(winbuf, MAX_SIZE * sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &window); MPI_Win_lock_all(0, window); /* Test Rput local completion with small data. * Small data is always copied to header packet as immediate data. */ if (rank == 1) { for (i = 0; i < ITER; i++) { MPI_Request put_req; int val = -1; buf[0] = rank; MPI_Rput(&buf[0], 1, MPI_INT, 0, 0, 1, MPI_INT, window, &put_req); MPI_Wait(&put_req, MPI_STATUS_IGNORE); /* reset local buffer to check local completion */ buf[0] = 0; MPI_Win_flush(0, window); MPI_Get(&val, 1, MPI_INT, 0, 0, 1, MPI_INT, window); MPI_Win_flush(0, window); if (val != rank) { printf("%d - Got %d in small Rput test, expected %d\n", rank, val, rank); errors++; } } } MPI_Barrier(MPI_COMM_WORLD); /* Test Rput local completion with large data . * Large data is not suitable for 1-copy optimization, and always sent out * from user buffer. */ if (rank == 1) { for (i = 0; i < ITER; i++) { MPI_Request put_req; int val0 = -1, val1 = -1, val2 = -1; int j; /* initialize data */ for (j = 0; j < MAX_SIZE; j++) { buf[j] = rank + j + i; } MPI_Rput(buf, MAX_SIZE, MPI_INT, 0, 0, MAX_SIZE, MPI_INT, window, &put_req); MPI_Wait(&put_req, MPI_STATUS_IGNORE); /* reset local buffer to check local completion */ buf[0] = 0; buf[MAX_SIZE - 1] = 0; buf[MAX_SIZE / 2] = 0; MPI_Win_flush(0, window); /* get remote values which are modified in local buffer after wait */ MPI_Get(&val0, 1, MPI_INT, 0, 0, 1, MPI_INT, window); MPI_Get(&val1, 1, MPI_INT, 0, MAX_SIZE - 1, 1, MPI_INT, window); MPI_Get(&val2, 1, MPI_INT, 0, MAX_SIZE / 2, 1, MPI_INT, window); MPI_Win_flush(0, window); if (val0 != rank + i) { printf("%d - Got %d in large Rput test, expected %d\n", rank, val0, rank + i); errors++; } if (val1 != rank + MAX_SIZE - 1 + i) { printf("%d - Got %d in large Rput test, expected %d\n", rank, val1, rank + MAX_SIZE - 1 + i); errors++; } if (val2 != rank + MAX_SIZE / 2 + i) { printf("%d - Got %d in large Rput test, expected %d\n", rank, val2, rank + MAX_SIZE / 2 + i); errors++; } } } MPI_Win_unlock_all(window); MPI_Barrier(MPI_COMM_WORLD); MPI_Win_free(&window); if (buf) MPI_Free_mem(buf); if (winbuf) MPI_Free_mem(winbuf); MPI_Reduce(&errors, &all_errors, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (rank == 0 && all_errors == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/win_shared_zerobyte.c0000644000175000017500000000556212620254305021361 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include #include "mpitest.h" const int verbose = 0; int main(int argc, char **argv) { int i, rank, nproc; int shm_rank, shm_nproc; MPI_Aint size; int errors = 0, all_errors = 0; int **bases = NULL, *abs_base, *my_base; int disp_unit; MPI_Win shm_win; MPI_Comm shm_comm; int ELEM_PER_PROC = 0; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Comm_split_type(MPI_COMM_WORLD, MPI_COMM_TYPE_SHARED, rank, MPI_INFO_NULL, &shm_comm); MPI_Comm_rank(shm_comm, &shm_rank); MPI_Comm_size(shm_comm, &shm_nproc); /* Platform does not support shared memory, just return. */ if (shm_nproc < 2) { goto exit; } bases = calloc(shm_nproc, sizeof(int *)); if (shm_rank == 0 || shm_rank == shm_nproc - 1) { ELEM_PER_PROC = 16; } /* Allocate ELEM_PER_PROC integers for each process */ MPI_Win_allocate_shared(sizeof(int) * ELEM_PER_PROC, sizeof(int), MPI_INFO_NULL, shm_comm, &my_base, &shm_win); /* Locate absolute base */ MPI_Win_shared_query(shm_win, MPI_PROC_NULL, &size, &disp_unit, &abs_base); if (verbose) printf("%d -- allocate shared: my_base = %p, absolute base = %p\n", shm_rank, my_base, abs_base); for (i = 0; i < shm_nproc; i++) { MPI_Win_shared_query(shm_win, i, &size, &disp_unit, &bases[i]); if (verbose) printf("%d -- shared query: base[%d]=%p, size %ld, unit %d\n", shm_rank, i, bases[i], size, disp_unit); } MPI_Win_lock_all(MPI_MODE_NOCHECK, shm_win); /* Reset data */ for (i = 0; i < ELEM_PER_PROC; i++) { my_base[i] = 0; } MPI_Win_sync(shm_win); MPI_Barrier(shm_comm); MPI_Win_sync(shm_win); /* Read and verify everyone's data */ if (shm_rank == 0) { bases[0][0] = 1; } MPI_Win_sync(shm_win); MPI_Barrier(shm_comm); MPI_Win_sync(shm_win); if (bases[0][0] != 1) { errors++; printf("%d -- Got %d at rank %d index %d, expected %d\n", shm_rank, bases[0][0], 0, 0, 1); } if (bases[shm_nproc - 1][0] != 0) { errors++; printf("%d -- Got %d at rank %d index %d, expected %d\n", shm_rank, bases[shm_nproc - 1][0], shm_nproc - 1, 0, 0); } MPI_Win_unlock_all(shm_win); MPI_Win_free(&shm_win); MPI_Reduce(&errors, &all_errors, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); exit: if (rank == 0 && all_errors == 0) printf(" No Errors\n"); MPI_Comm_free(&shm_comm); MPI_Finalize(); if (bases) free(bases); return 0; } mpi-testsuite-3.2+dfsg/rma/linked_list_bench_lock_all.c0000644000175000017500000002014412620254305022604 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* MPI-3 distributed linked list construction example * -------------------------------------------------- * * Construct a distributed shared linked list using proposed MPI-3 dynamic * windows. Initially process 0 creates the head of the list, attaches it to * the window, and broadcasts the pointer to all processes. Each process p then * appends N new elements to the list when the tail reaches process p-1. */ #include #include #include #include #include "mpitest.h" #ifdef HAVE_UNISTD_H #include #endif #define NUM_ELEMS 1000 #define MAX_NPROBE nproc #define MIN_NPROBE 1 #define ELEM_PER_ROW 16 #define MIN(X,Y) ((X < Y) ? (X) : (Y)) #define MAX(X,Y) ((X > Y) ? (X) : (Y)) /* Linked list pointer */ typedef struct { int rank; MPI_Aint disp; } llist_ptr_t; /* Linked list element */ typedef struct { int value; llist_ptr_t next; } llist_elem_t; static const llist_ptr_t nil = { -1, (MPI_Aint) MPI_BOTTOM }; static const int verbose = 0; static const int print_perf = 0; /* List of locally allocated list elements. */ static llist_elem_t **my_elems = NULL; static int my_elems_size = 0; static int my_elems_count = 0; /* Allocate a new shared linked list element */ MPI_Aint alloc_elem(int value, MPI_Win win) { MPI_Aint disp; llist_elem_t *elem_ptr; /* Allocate the new element and register it with the window */ MPI_Alloc_mem(sizeof(llist_elem_t), MPI_INFO_NULL, &elem_ptr); elem_ptr->value = value; elem_ptr->next = nil; MPI_Win_attach(win, elem_ptr, sizeof(llist_elem_t)); /* Add the element to the list of local elements so we can free it later. */ if (my_elems_size == my_elems_count) { my_elems_size += 100; my_elems = realloc(my_elems, my_elems_size * sizeof(void *)); } my_elems[my_elems_count] = elem_ptr; my_elems_count++; MPI_Get_address(elem_ptr, &disp); return disp; } int main(int argc, char **argv) { int procid, nproc, i, j, my_nelem; int pollint = 0; double time; MPI_Win llist_win; llist_ptr_t head_ptr, tail_ptr; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &procid); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Win_create_dynamic(MPI_INFO_NULL, MPI_COMM_WORLD, &llist_win); /* Process 0 creates the head node */ if (procid == 0) head_ptr.disp = alloc_elem(procid, llist_win); /* Broadcast the head pointer to everyone */ head_ptr.rank = 0; MPI_Bcast(&head_ptr.disp, 1, MPI_AINT, 0, MPI_COMM_WORLD); tail_ptr = head_ptr; /* All processes append NUM_ELEMS elements to the list; rank 0 has already * appended an element. */ if (procid == 0) i = 1; else i = 0; my_nelem = NUM_ELEMS / nproc; if (procid < NUM_ELEMS % nproc) my_nelem++; MPI_Barrier(MPI_COMM_WORLD); time = MPI_Wtime(); /* Lock the window for shared access to all targets */ MPI_Win_lock_all(0, llist_win); for (; i < my_nelem; i++) { llist_ptr_t new_elem_ptr; int success = 0; /* Create a new list element and register it with the window */ new_elem_ptr.rank = procid; new_elem_ptr.disp = alloc_elem(procid, llist_win); /* Append the new node to the list. This might take multiple attempts if * others have already appended and our tail pointer is stale. */ do { int flag; /* The tail is at my left neighbor, append my element. */ if (tail_ptr.rank == (procid + nproc - 1) % nproc) { if (verbose) printf("%d: Appending to <%d, %p>\n", procid, tail_ptr.rank, (void *) tail_ptr.disp); #if 1 MPI_Accumulate(&new_elem_ptr, sizeof(llist_ptr_t), MPI_BYTE, tail_ptr.rank, (MPI_Aint) & (((llist_elem_t *) tail_ptr.disp)->next), sizeof(llist_ptr_t), MPI_BYTE, MPI_REPLACE, llist_win); #else MPI_Put(&new_elem_ptr, sizeof(llist_ptr_t), MPI_BYTE, tail_ptr.rank, (MPI_Aint) & (((llist_elem_t *) tail_ptr.disp)->next), sizeof(llist_ptr_t), MPI_BYTE, llist_win); #endif MPI_Win_flush(tail_ptr.rank, llist_win); success = 1; tail_ptr = new_elem_ptr; } /* Otherwise, chase the tail. */ else { llist_ptr_t next_tail_ptr; MPI_Get_accumulate(NULL, 0, MPI_DATATYPE_NULL, &next_tail_ptr, sizeof(llist_ptr_t), MPI_BYTE, tail_ptr.rank, (MPI_Aint) & (((llist_elem_t *) tail_ptr.disp)->next), sizeof(llist_ptr_t), MPI_BYTE, MPI_NO_OP, llist_win); MPI_Win_flush(tail_ptr.rank, llist_win); if (next_tail_ptr.rank != nil.rank) { if (verbose) printf("%d: Chasing to <%d, %p>\n", procid, next_tail_ptr.rank, (void *) next_tail_ptr.disp); tail_ptr = next_tail_ptr; pollint = MAX(MIN_NPROBE, pollint / 2); } else { for (j = 0; j < pollint; j++) MPI_Iprobe(MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &flag, MPI_STATUS_IGNORE); pollint = MIN(MAX_NPROBE, pollint * 2); } } } while (!success); } MPI_Win_unlock_all(llist_win); MPI_Barrier(MPI_COMM_WORLD); time = MPI_Wtime() - time; /* Traverse the list and verify that all processes inserted exactly the correct * number of elements. */ if (procid == 0) { int errors = 0; int *counts, count = 0; counts = (int *) malloc(sizeof(int) * nproc); assert(counts != NULL); for (i = 0; i < nproc; i++) counts[i] = 0; tail_ptr = head_ptr; MPI_Win_lock_all(0, llist_win); /* Walk the list and tally up the number of elements inserted by each rank */ while (tail_ptr.disp != nil.disp) { llist_elem_t elem; MPI_Get(&elem, sizeof(llist_elem_t), MPI_BYTE, tail_ptr.rank, tail_ptr.disp, sizeof(llist_elem_t), MPI_BYTE, llist_win); MPI_Win_flush(tail_ptr.rank, llist_win); tail_ptr = elem.next; assert(elem.value >= 0 && elem.value < nproc); counts[elem.value]++; count++; if (verbose) { int last_elem = tail_ptr.disp == nil.disp; printf("%2d%s", elem.value, last_elem ? "" : " -> "); if (count % ELEM_PER_ROW == 0 && !last_elem) printf("\n"); } } MPI_Win_unlock_all(llist_win); if (verbose) printf("\n\n"); /* Verify the counts we collected */ for (i = 0; i < nproc; i++) { int expected; expected = NUM_ELEMS / nproc; if (i < NUM_ELEMS % nproc) expected++; if (counts[i] != expected) { printf("Error: Rank %d inserted %d elements, expected %d\n", i, counts[i], expected); errors++; } } printf("%s\n", errors == 0 ? " No Errors" : "FAIL"); free(counts); } if (print_perf) { double max_time; MPI_Reduce(&time, &max_time, 1, MPI_DOUBLE, MPI_MAX, 0, MPI_COMM_WORLD); if (procid == 0) { printf("Total time = %0.2f sec, elem/sec = %0.2f, sec/elem = %0.2f usec\n", max_time, NUM_ELEMS / max_time, max_time / NUM_ELEMS * 1.0e6); } } MPI_Win_free(&llist_win); /* Free all the elements in the list */ for (; my_elems_count > 0; my_elems_count--) MPI_Free_mem(my_elems[my_elems_count - 1]); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/aint.c0000644000175000017500000000407312620254305016242 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * This program tests MPI_Aint_add/diff in MPI-3.1. * The two functions are often used in RMA code. * See https://svn.mpi-forum.org/trac/mpi-forum-web/ticket/349 */ #include #include #include "mpitest.h" int main(int argc, char **argv) { int rank, nproc; int errs = 0; int array[1024]; int val = 0; int target_rank; MPI_Aint bases[2]; MPI_Aint disp, offset; MPI_Win win; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); if (rank == 0 && nproc != 2) { MTestError("Must run with 2 ranks\n"); } /* Get the base address in the middle of the array */ if (rank == 0) { target_rank = 1; array[0] = 1234; MPI_Get_address(&array[512], &bases[0]); } else if (rank == 1) { target_rank = 0; array[1023] = 1234; MPI_Get_address(&array[512], &bases[1]); } /* Exchange bases */ MPI_Allgather(MPI_IN_PLACE, 0, MPI_DATATYPE_NULL, bases, 1, MPI_AINT, MPI_COMM_WORLD); MPI_Win_create_dynamic(MPI_INFO_NULL, MPI_COMM_WORLD, &win); MPI_Win_attach(win, array, sizeof(int) * 1024); /* Do MPI_Aint addressing arithmetic */ if (rank == 0) { disp = sizeof(int) * 511; offset = MPI_Aint_add(bases[1], disp); /* offset points to array[1023] */ } else if (rank == 1) { disp = sizeof(int) * 512; offset = MPI_Aint_diff(bases[0], disp); /* offset points to array[0] */ } /* Get val and verify it */ MPI_Win_fence(MPI_MODE_NOPRECEDE, win); MPI_Get(&val, 1, MPI_INT, target_rank, offset, 1, MPI_INT, win); MPI_Win_fence(MPI_MODE_NOSUCCEED, win); if (val != 1234) { errs++; printf("%d -- Got %d, expected 1234\n", rank, val); } MPI_Win_detach(win, array); MPI_Win_free(&win); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/fkeyvalwin.c0000644000175000017500000000501412620254305017462 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitestconf.h" #include "mpitest.h" #ifdef HAVE_STRING_H #include #endif /* static char MTestDescrip[] = "Test freeing keyvals while still attached to \ a win, then make sure that the keyval delete code are still \ executed"; */ /* Copy increments the attribute value */ /* Note that we can really ignore this because there is no win dup */ int copy_fn(MPI_Win oldwin, int keyval, void *extra_state, void *attribute_val_in, void *attribute_val_out, int *flag); int copy_fn(MPI_Win oldwin, int keyval, void *extra_state, void *attribute_val_in, void *attribute_val_out, int *flag) { /* Copy the address of the attribute */ *(void **) attribute_val_out = attribute_val_in; /* Change the value */ *(int *) attribute_val_in = *(int *) attribute_val_in + 1; *flag = 1; return MPI_SUCCESS; } /* Delete decrements the attribute value */ int delete_fn(MPI_Win win, int keyval, void *attribute_val, void *extra_state); int delete_fn(MPI_Win win, int keyval, void *attribute_val, void *extra_state) { *(int *) attribute_val = *(int *) attribute_val - 1; return MPI_SUCCESS; } int main(int argc, char *argv[]) { int errs = 0; int attrval; int i, key[32], keyval; MPI_Win win; MTest_Init(&argc, &argv); while (MTestGetWin(&win, 0)) { if (win == MPI_WIN_NULL) continue; MPI_Win_create_keyval(copy_fn, delete_fn, &keyval, (void *) 0); attrval = 1; MPI_Win_set_attr(win, keyval, (void *) &attrval); /* See MPI-1, 5.7.1. Freeing the keyval does not remove it if it * is in use in an attribute */ MPI_Win_free_keyval(&keyval); /* We create some dummy keyvals here in case the same keyval * is reused */ for (i = 0; i < 32; i++) { MPI_Win_create_keyval(MPI_NULL_COPY_FN, MPI_NULL_DELETE_FN, &key[i], (void *) 0); } MTestFreeWin(&win); /* Check that the original attribute was freed */ if (attrval != 0) { errs++; printf("Attribute not decremented when win %s freed\n", MTestGetWinName()); } /* Free those other keyvals */ for (i = 0; i < 32; i++) { MPI_Win_free_keyval(&key[i]); } } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/strided_getacc_indexed.c0000644000175000017500000001061612620254305021753 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* One-Sided MPI 2-D Strided Accumulate Test * * Author: James Dinan * Date : December, 2010 * * This code performs N strided put operations followed by get operations into * a 2d patch of a shared array. The array has dimensions [X, Y] and the * subarray has dimensions [SUB_X, SUB_Y] and begins at index [0, 0]. The * input and output buffers are specified using an MPI indexed type. */ #include #include #include #include #include "mpitest.h" #include "squelch.h" #define XDIM 8 #define YDIM 1024 #define SUB_XDIM 1 #define SUB_YDIM 2 #define ITERATIONS 10 int main(int argc, char **argv) { int i, j, rank, nranks, peer, bufsize, errors; double *win_buf, *src_buf, *dst_buf; MPI_Win buf_win; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nranks); bufsize = XDIM * YDIM * sizeof(double); MPI_Alloc_mem(bufsize, MPI_INFO_NULL, &win_buf); MPI_Alloc_mem(bufsize, MPI_INFO_NULL, &src_buf); MPI_Alloc_mem(bufsize, MPI_INFO_NULL, &dst_buf); for (i = 0; i < XDIM * YDIM; i++) { *(win_buf + i) = -1.0; *(src_buf + i) = 1.0 + rank; } MPI_Win_create(win_buf, bufsize, 1, MPI_INFO_NULL, MPI_COMM_WORLD, &buf_win); peer = (rank + 1) % nranks; /* Perform ITERATIONS strided accumulate operations */ for (i = 0; i < ITERATIONS; i++) { int idx_rem[SUB_YDIM]; int blk_len[SUB_YDIM]; MPI_Datatype src_type, dst_type; for (j = 0; j < SUB_YDIM; j++) { idx_rem[j] = j * XDIM; blk_len[j] = SUB_XDIM; } MPI_Type_indexed(SUB_YDIM, blk_len, idx_rem, MPI_DOUBLE, &src_type); MPI_Type_indexed(SUB_YDIM, blk_len, idx_rem, MPI_DOUBLE, &dst_type); MPI_Type_commit(&src_type); MPI_Type_commit(&dst_type); /* PUT */ MPI_Win_lock(MPI_LOCK_EXCLUSIVE, peer, 0, buf_win); MPI_Get_accumulate(src_buf, 1, src_type, dst_buf, 1, src_type, peer, 0, 1, dst_type, MPI_REPLACE, buf_win); MPI_Win_unlock(peer, buf_win); /* GET */ MPI_Win_lock(MPI_LOCK_EXCLUSIVE, peer, 0, buf_win); MPI_Get_accumulate(src_buf, 1, src_type, dst_buf, 1, src_type, peer, 0, 1, dst_type, MPI_NO_OP, buf_win); MPI_Win_unlock(peer, buf_win); MPI_Type_free(&src_type); MPI_Type_free(&dst_type); } MPI_Barrier(MPI_COMM_WORLD); /* Verify that the results are correct */ MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, buf_win); errors = 0; for (i = 0; i < SUB_XDIM; i++) { for (j = 0; j < SUB_YDIM; j++) { const double actual = *(win_buf + i + j * XDIM); const double expected = (1.0 + ((rank + nranks - 1) % nranks)); if (fabs(actual - expected) > 1.0e-10) { SQUELCH(printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual);); errors++; fflush(stdout); } } } for (i = SUB_XDIM; i < XDIM; i++) { for (j = 0; j < SUB_YDIM; j++) { const double actual = *(win_buf + i + j * XDIM); const double expected = -1.0; if (fabs(actual - expected) > 1.0e-10) { SQUELCH(printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual);); errors++; fflush(stdout); } } } for (i = 0; i < XDIM; i++) { for (j = SUB_YDIM; j < YDIM; j++) { const double actual = *(win_buf + i + j * XDIM); const double expected = -1.0; if (fabs(actual - expected) > 1.0e-10) { SQUELCH(printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual);); errors++; fflush(stdout); } } } MPI_Win_unlock(rank, buf_win); MPI_Win_free(&buf_win); MPI_Free_mem(win_buf); MPI_Free_mem(src_buf); MPI_Free_mem(dst_buf); MTest_Finalize(errors); MPI_Finalize(); return MTestReturnValue(errors); } mpi-testsuite-3.2+dfsg/rma/baseattrwin.c0000644000175000017500000000367212620254305017636 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include "mpi.h" #include "mpitest.h" int main(int argc, char **argv) { int errs = 0; void *v; int flag; int rank, size; int base[1024]; MPI_Aint n; int disp; MPI_Win win; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); /* Create a window; then extract the values */ n = 1024; disp = 4; MPI_Win_create(base, n, disp, MPI_INFO_NULL, MPI_COMM_WORLD, &win); MPI_Win_get_attr(win, MPI_WIN_BASE, &v, &flag); if (!flag) { errs++; fprintf(stderr, "Could not get WIN_BASE\n"); } else { /* MPI 2.1, section 11.2.2. v must be a pointer to the start of the * window. It is not a pointer to a pointer to the start of the window. */ if ((int *) v != base) { errs++; fprintf(stderr, "Got incorrect value for WIN_BASE (%p, should be %p)", v, base); } } MPI_Win_get_attr(win, MPI_WIN_SIZE, &v, &flag); if (!flag) { errs++; fprintf(stderr, "Could not get WIN_SIZE\n"); } else { MPI_Aint vval = *(MPI_Aint *) v; if (vval != n) { errs++; fprintf(stderr, "Got wrong value for WIN_SIZE (%ld, should be %ld)\n", (long) vval, (long) n); } } MPI_Win_get_attr(win, MPI_WIN_DISP_UNIT, &v, &flag); if (!flag) { errs++; fprintf(stderr, "Could not get WIN_DISP_UNIT\n"); } else { int vval = *(int *) v; if (vval != disp) { errs++; fprintf(stderr, "Got wrong value for WIN_DISP_UNIT (%d, should be %d)\n", vval, disp); } } MPI_Win_free(&win); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/strided_get_indexed.c0000644000175000017500000000760512620254305021310 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* One-Sided MPI 2-D Strided Get Test * * Author: James Dinan * Date : December, 2010 * * This code performs N strided get operations from a 2d patch of a shared * array. The array has dimensions [X, Y] and the subarray has dimensions * [SUB_X, SUB_Y] and begins at index [0, 0]. The input and output buffers are * specified using an MPI indexed type. */ #include #include #include #include #include "mpitest.h" #include "squelch.h" #define XDIM 8 #define YDIM 1024 #define SUB_XDIM 8 #define SUB_YDIM 256 int main(int argc, char **argv) { int i, j, rank, nranks, peer, bufsize, errors; double *win_buf, *loc_buf; MPI_Win buf_win; int idx_rem[SUB_YDIM]; int blk_len[SUB_YDIM]; MPI_Datatype loc_type, rem_type; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nranks); bufsize = XDIM * YDIM * sizeof(double); MPI_Alloc_mem(bufsize, MPI_INFO_NULL, &win_buf); MPI_Alloc_mem(bufsize, MPI_INFO_NULL, &loc_buf); for (i = 0; i < XDIM * YDIM; i++) { *(win_buf + i) = 1.0 + rank; *(loc_buf + i) = -1.0; } MPI_Win_create(win_buf, bufsize, 1, MPI_INFO_NULL, MPI_COMM_WORLD, &buf_win); peer = (rank + 1) % nranks; /* Build the datatype */ for (i = 0; i < SUB_YDIM; i++) { idx_rem[i] = i * XDIM; blk_len[i] = SUB_XDIM; } MPI_Type_indexed(SUB_YDIM, blk_len, idx_rem, MPI_DOUBLE, &loc_type); MPI_Type_indexed(SUB_YDIM, blk_len, idx_rem, MPI_DOUBLE, &rem_type); MPI_Type_commit(&loc_type); MPI_Type_commit(&rem_type); /* Perform get operation */ MPI_Win_lock(MPI_LOCK_EXCLUSIVE, peer, 0, buf_win); MPI_Get(loc_buf, 1, loc_type, peer, 0, 1, rem_type, buf_win); /* Use the datatype only on the remote side (must have SUB_XDIM == XDIM) */ /* MPI_Get(loc_buf, SUB_XDIM*SUB_YDIM, MPI_DOUBLE, peer, 0, 1, rem_type, buf_win); */ MPI_Win_unlock(peer, buf_win); MPI_Type_free(&loc_type); MPI_Type_free(&rem_type); MPI_Barrier(MPI_COMM_WORLD); /* Verify that the results are correct */ errors = 0; for (i = 0; i < SUB_XDIM; i++) { for (j = 0; j < SUB_YDIM; j++) { const double actual = *(loc_buf + i + j * XDIM); const double expected = (1.0 + peer); if (fabs(actual - expected) > 1.0e-10) { SQUELCH(printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual);); errors++; fflush(stdout); } } } for (i = SUB_XDIM; i < XDIM; i++) { for (j = 0; j < SUB_YDIM; j++) { const double actual = *(loc_buf + i + j * XDIM); const double expected = -1.0; if (fabs(actual - expected) > 1.0e-10) { SQUELCH(printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual);); errors++; fflush(stdout); } } } for (i = 0; i < XDIM; i++) { for (j = SUB_YDIM; j < YDIM; j++) { const double actual = *(loc_buf + i + j * XDIM); const double expected = -1.0; if (fabs(actual - expected) > 1.0e-10) { SQUELCH(printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual);); errors++; fflush(stdout); } } } MPI_Win_free(&buf_win); MPI_Free_mem(win_buf); MPI_Free_mem(loc_buf); MTest_Finalize(errors); MPI_Finalize(); return MTestReturnValue(errors); } mpi-testsuite-3.2+dfsg/rma/manyrma2.c0000644000175000017500000002506112620254305017035 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2010 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* This test is a simplification of the one in perf/manyrma.c that tests for correct handling of the case where many RMA operations occur between synchronization events. This is one of the ways that RMA may be used, and is used in the reference implementation of the graph500 benchmark. */ #include "mpi.h" #include #include #include #define MAX_COUNT 65536*4/16 #define MAX_RMA_SIZE 2 /* 16 in manyrma performance test */ #define MAX_RUNS 8 #define MAX_ITER_TIME 5.0 /* seconds */ typedef enum { SYNC_NONE = 0, SYNC_ALL = -1, SYNC_FENCE = 1, SYNC_LOCK = 2, SYNC_PSCW = 4 } sync_t; typedef enum { RMA_NONE = 0, RMA_ALL = -1, RMA_PUT = 1, RMA_ACC = 2, RMA_GET = 4 } rma_t; /* Note GET not yet implemented */ /* By default, run only a subset of the available tests, to keep the total runtime reasonably short. Command line arguments may be used to run other tests. */ sync_t syncChoice = SYNC_FENCE; rma_t rmaChoice = RMA_ACC; static int verbose = 0; void RunAccFence(MPI_Win win, int destRank, int cnt, int sz); void RunAccLock(MPI_Win win, int destRank, int cnt, int sz); void RunPutFence(MPI_Win win, int destRank, int cnt, int sz); void RunPutLock(MPI_Win win, int destRank, int cnt, int sz); void RunAccPSCW(MPI_Win win, int destRank, int cnt, int sz, MPI_Group exposureGroup, MPI_Group accessGroup); void RunPutPSCW(MPI_Win win, int destRank, int cnt, int sz, MPI_Group exposureGroup, MPI_Group accessGroup); int main(int argc, char *argv[]) { int arraysize, i, cnt, sz, maxCount = MAX_COUNT, *arraybuffer; int wrank, wsize, destRank, srcRank; MPI_Win win; MPI_Group wgroup, accessGroup, exposureGroup; int maxSz = MAX_RMA_SIZE; double start, end; MPI_Init(&argc, &argv); for (i = 1; i < argc; i++) { if (strcmp(argv[i], "-put") == 0) { if (rmaChoice == RMA_ALL) rmaChoice = RMA_NONE; rmaChoice |= RMA_PUT; } else if (strcmp(argv[i], "-acc") == 0) { if (rmaChoice == RMA_ALL) rmaChoice = RMA_NONE; rmaChoice |= RMA_ACC; } else if (strcmp(argv[i], "-fence") == 0) { if (syncChoice == SYNC_ALL) syncChoice = SYNC_NONE; syncChoice |= SYNC_FENCE; } else if (strcmp(argv[i], "-lock") == 0) { if (syncChoice == SYNC_ALL) syncChoice = SYNC_NONE; syncChoice |= SYNC_LOCK; } else if (strcmp(argv[i], "-pscw") == 0) { if (syncChoice == SYNC_ALL) syncChoice = SYNC_NONE; syncChoice |= SYNC_PSCW; } else if (strcmp(argv[i], "-maxsz") == 0) { i++; maxSz = atoi(argv[i]); } else if (strcmp(argv[i], "-maxcount") == 0) { i++; maxCount = atoi(argv[i]); } else { fprintf(stderr, "Unrecognized argument %s\n", argv[i]); fprintf(stderr, "%s [ -put ] [ -acc ] [ -lock ] [ -fence ] [ -pscw ] [ -maxsz msgsize ]\n", argv[0]); MPI_Abort(MPI_COMM_WORLD, 1); } } MPI_Comm_rank(MPI_COMM_WORLD, &wrank); MPI_Comm_size(MPI_COMM_WORLD, &wsize); destRank = wrank + 1; while (destRank >= wsize) destRank = destRank - wsize; srcRank = wrank - 1; if (srcRank < 0) srcRank += wsize; /* Create groups for PSCW */ MPI_Comm_group(MPI_COMM_WORLD, &wgroup); MPI_Group_incl(wgroup, 1, &destRank, &accessGroup); MPI_Group_incl(wgroup, 1, &srcRank, &exposureGroup); MPI_Group_free(&wgroup); arraysize = maxSz * MAX_COUNT; #ifdef USE_WIN_ALLOCATE MPI_Win_allocate(arraysize * sizeof(int), (int) sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &arraybuffer, &win); if (!arraybuffer) { fprintf(stderr, "Unable to allocate %d words\n", arraysize); MPI_Abort(MPI_COMM_WORLD, 1); } #else arraybuffer = (int *) malloc(arraysize * sizeof(int)); if (!arraybuffer) { fprintf(stderr, "Unable to allocate %d words\n", arraysize); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Win_create(arraybuffer, arraysize * sizeof(int), (int) sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &win); #endif if (maxCount > MAX_COUNT) { fprintf(stderr, "MaxCount must not exceed %d\n", MAX_COUNT); MPI_Abort(MPI_COMM_WORLD, 1); } if ((syncChoice & SYNC_FENCE) && (rmaChoice & RMA_ACC)) { for (sz = 1; sz <= maxSz; sz = sz + sz) { if (wrank == 0 && verbose) printf("Accumulate with fence, %d elements\n", sz); for (cnt = 1; cnt <= maxCount; cnt *= 2) { start = MPI_Wtime(); RunAccFence(win, destRank, cnt, sz); end = MPI_Wtime(); if (end - start > MAX_ITER_TIME) break; } } } if ((syncChoice & SYNC_LOCK) && (rmaChoice & RMA_ACC)) { for (sz = 1; sz <= maxSz; sz = sz + sz) { if (wrank == 0 && verbose) printf("Accumulate with lock, %d elements\n", sz); for (cnt = 1; cnt <= maxCount; cnt *= 2) { start = MPI_Wtime(); RunAccLock(win, destRank, cnt, sz); end = MPI_Wtime(); if (end - start > MAX_ITER_TIME) break; } } } if ((syncChoice & SYNC_FENCE) && (rmaChoice & RMA_PUT)) { for (sz = 1; sz <= maxSz; sz = sz + sz) { if (wrank == 0 && verbose) printf("Put with fence, %d elements\n", sz); for (cnt = 1; cnt <= maxCount; cnt *= 2) { start = MPI_Wtime(); RunPutFence(win, destRank, cnt, sz); end = MPI_Wtime(); if (end - start > MAX_ITER_TIME) break; } } } if ((syncChoice & SYNC_LOCK) && (rmaChoice & RMA_PUT)) { for (sz = 1; sz <= maxSz; sz = sz + sz) { if (wrank == 0 && verbose) printf("Put with lock, %d elements\n", sz); for (cnt = 1; cnt <= maxCount; cnt *= 2) { start = MPI_Wtime(); RunPutLock(win, destRank, cnt, sz); end = MPI_Wtime(); if (end - start > MAX_ITER_TIME) break; } } } if ((syncChoice & SYNC_PSCW) && (rmaChoice & RMA_PUT)) { for (sz = 1; sz <= maxSz; sz = sz + sz) { if (wrank == 0 && verbose) printf("Put with pscw, %d elements\n", sz); for (cnt = 1; cnt <= maxCount; cnt *= 2) { start = MPI_Wtime(); RunPutPSCW(win, destRank, cnt, sz, exposureGroup, accessGroup); end = MPI_Wtime(); if (end - start > MAX_ITER_TIME) break; } } } if ((syncChoice & SYNC_PSCW) && (rmaChoice & RMA_ACC)) { for (sz = 1; sz <= maxSz; sz = sz + sz) { if (wrank == 0 && verbose) printf("Accumulate with pscw, %d elements\n", sz); for (cnt = 1; cnt <= maxCount; cnt *= 2) { start = MPI_Wtime(); RunAccPSCW(win, destRank, cnt, sz, exposureGroup, accessGroup); end = MPI_Wtime(); if (end - start > MAX_ITER_TIME) break; } } } MPI_Win_free(&win); #ifndef USE_WIN_ALLOCATE free(arraybuffer); #endif MPI_Group_free(&accessGroup); MPI_Group_free(&exposureGroup); /* If we get here without timing out or failing, we succeeded */ if (wrank == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } void RunAccFence(MPI_Win win, int destRank, int cnt, int sz) { int k, i, j, one = 1; for (k = 0; k < MAX_RUNS; k++) { MPI_Barrier(MPI_COMM_WORLD); MPI_Win_fence(0, win); j = 0; for (i = 0; i < cnt; i++) { MPI_Accumulate(&one, sz, MPI_INT, destRank, j, sz, MPI_INT, MPI_SUM, win); j += sz; } MPI_Win_fence(0, win); } } void RunAccLock(MPI_Win win, int destRank, int cnt, int sz) { int k, i, j, one = 1; for (k = 0; k < MAX_RUNS; k++) { MPI_Barrier(MPI_COMM_WORLD); MPI_Win_lock(MPI_LOCK_SHARED, destRank, 0, win); j = 0; for (i = 0; i < cnt; i++) { MPI_Accumulate(&one, sz, MPI_INT, destRank, j, sz, MPI_INT, MPI_SUM, win); j += sz; } MPI_Win_unlock(destRank, win); } } void RunPutFence(MPI_Win win, int destRank, int cnt, int sz) { int k, i, j, one = 1; for (k = 0; k < MAX_RUNS; k++) { MPI_Barrier(MPI_COMM_WORLD); MPI_Win_fence(0, win); j = 0; for (i = 0; i < cnt; i++) { MPI_Put(&one, sz, MPI_INT, destRank, j, sz, MPI_INT, win); j += sz; } MPI_Win_fence(0, win); } } void RunPutLock(MPI_Win win, int destRank, int cnt, int sz) { int k, i, j, one = 1; for (k = 0; k < MAX_RUNS; k++) { MPI_Barrier(MPI_COMM_WORLD); MPI_Win_lock(MPI_LOCK_SHARED, destRank, 0, win); j = 0; for (i = 0; i < cnt; i++) { MPI_Put(&one, sz, MPI_INT, destRank, j, sz, MPI_INT, win); j += sz; } MPI_Win_unlock(destRank, win); } } void RunPutPSCW(MPI_Win win, int destRank, int cnt, int sz, MPI_Group exposureGroup, MPI_Group accessGroup) { int k, i, j, one = 1; for (k = 0; k < MAX_RUNS; k++) { MPI_Barrier(MPI_COMM_WORLD); MPI_Win_post(exposureGroup, 0, win); MPI_Win_start(accessGroup, 0, win); j = 0; for (i = 0; i < cnt; i++) { MPI_Put(&one, sz, MPI_INT, destRank, j, sz, MPI_INT, win); j += sz; } MPI_Win_complete(win); MPI_Win_wait(win); } } void RunAccPSCW(MPI_Win win, int destRank, int cnt, int sz, MPI_Group exposureGroup, MPI_Group accessGroup) { int k, i, j, one = 1; for (k = 0; k < MAX_RUNS; k++) { MPI_Barrier(MPI_COMM_WORLD); MPI_Win_post(exposureGroup, 0, win); MPI_Win_start(accessGroup, 0, win); j = 0; for (i = 0; i < cnt; i++) { MPI_Accumulate(&one, sz, MPI_INT, destRank, j, sz, MPI_INT, MPI_SUM, win); j += sz; } MPI_Win_complete(win); MPI_Win_wait(win); } } mpi-testsuite-3.2+dfsg/rma/racc_local_comp.c0000644000175000017500000001010112620254305020374 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include "mpitest.h" #define ITER 100 #define MAX_SIZE 65536 int main(int argc, char *argv[]) { int rank, nproc, i; int errors = 0, all_errors = 0; int *buf = NULL, *winbuf = NULL; MPI_Win window; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); if (nproc < 2) { if (rank == 0) printf("Error: must be run with two or more processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Alloc_mem(MAX_SIZE * sizeof(int), MPI_INFO_NULL, &buf); MPI_Alloc_mem(MAX_SIZE * sizeof(int), MPI_INFO_NULL, &winbuf); MPI_Win_create(winbuf, MAX_SIZE * sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &window); MPI_Win_lock_all(0, window); /* Test Raccumulate local completion with small data. * Small data is always copied to header packet as immediate data. */ if (rank == 1) { for (i = 0; i < ITER; i++) { MPI_Request acc_req; int val = -1; buf[0] = rank * i; MPI_Raccumulate(&buf[0], 1, MPI_INT, 0, 0, 1, MPI_INT, MPI_MAX, window, &acc_req); MPI_Wait(&acc_req, MPI_STATUS_IGNORE); /* reset local buffer to check local completion */ buf[0] = 0; MPI_Win_flush(0, window); MPI_Get(&val, 1, MPI_INT, 0, 0, 1, MPI_INT, window); MPI_Win_flush(0, window); if (val != rank * i) { printf("%d - Got %d in small Raccumulate test, expected %d (%d * %d)\n", rank, val, rank * i, rank, i); errors++; } } } MPI_Barrier(MPI_COMM_WORLD); /* Test Raccumulate local completion with large data . * Large data is not suitable for 1-copy optimization, and always sent out * from user buffer. */ if (rank == 1) { for (i = 0; i < ITER; i++) { MPI_Request acc_req; int val0 = -1, val1 = -1, val2 = -1; int j; /* initialize data */ for (j = 0; j < MAX_SIZE; j++) { buf[j] = rank + j + i; } MPI_Raccumulate(buf, MAX_SIZE, MPI_INT, 0, 0, MAX_SIZE, MPI_INT, MPI_REPLACE, window, &acc_req); MPI_Wait(&acc_req, MPI_STATUS_IGNORE); /* reset local buffer to check local completion */ buf[0] = 0; buf[MAX_SIZE - 1] = 0; buf[MAX_SIZE / 2] = 0; MPI_Win_flush(0, window); /* get remote values which are modified in local buffer after wait */ MPI_Get(&val0, 1, MPI_INT, 0, 0, 1, MPI_INT, window); MPI_Get(&val1, 1, MPI_INT, 0, MAX_SIZE - 1, 1, MPI_INT, window); MPI_Get(&val2, 1, MPI_INT, 0, MAX_SIZE / 2, 1, MPI_INT, window); MPI_Win_flush(0, window); if (val0 != rank + i) { printf("%d - Got %d in large Raccumulate test, expected %d\n", rank, val0, rank + i); errors++; } if (val1 != rank + MAX_SIZE - 1 + i) { printf("%d - Got %d in large Raccumulate test, expected %d\n", rank, val1, rank + MAX_SIZE - 1 + i); errors++; } if (val2 != rank + MAX_SIZE / 2 + i) { printf("%d - Got %d in large Raccumulate test, expected %d\n", rank, val2, rank + MAX_SIZE / 2 + i); errors++; } } } MPI_Win_unlock_all(window); MPI_Barrier(MPI_COMM_WORLD); MPI_Win_free(&window); if (buf) MPI_Free_mem(buf); if (winbuf) MPI_Free_mem(winbuf); MPI_Reduce(&errors, &all_errors, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (rank == 0 && all_errors == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/at_complete.c0000644000175000017500000001045012620254305017577 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #define PUT_SIZE 1 #define GET_SIZE 100000 #define WIN_SIZE (PUT_SIZE+GET_SIZE) #define LOOP 100 int main(int argc, char **argv) { MPI_Win win; int i, k, rank, nproc; int win_buf[WIN_SIZE], orig_get_buf[GET_SIZE], orig_put_buf[PUT_SIZE]; int orig_rank = 0, dest_rank = 1; int errors = 0; MPI_Group comm_group, orig_group, dest_group; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Comm_group(MPI_COMM_WORLD, &comm_group); MPI_Group_incl(comm_group, 1, &orig_rank, &orig_group); MPI_Group_incl(comm_group, 1, &dest_rank, &dest_group); for (i = 0; i < PUT_SIZE; i++) orig_put_buf[i] = 1; for (i = 0; i < GET_SIZE; i++) orig_get_buf[i] = 0; for (i = 0; i < WIN_SIZE; i++) win_buf[i] = 1; MPI_Win_create(win_buf, sizeof(int) * WIN_SIZE, sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &win); for (k = 0; k < LOOP; k++) { /* test for FENCE */ if (rank == orig_rank) { MPI_Win_fence(MPI_MODE_NOPRECEDE, win); MPI_Get(orig_get_buf, GET_SIZE, MPI_INT, dest_rank, PUT_SIZE /*disp */ , GET_SIZE, MPI_INT, win); MPI_Put(orig_put_buf, PUT_SIZE, MPI_INT, dest_rank, 0 /*disp */ , PUT_SIZE, MPI_INT, win); MPI_Win_fence(MPI_MODE_NOSUCCEED, win); /* check GET result values */ for (i = 0; i < GET_SIZE; i++) { if (orig_get_buf[i] != 1) { printf("LOOP=%d, FENCE, orig_get_buf[%d] = %d, expected 1.\n", k, i, orig_get_buf[i]); errors++; } } } else if (rank == dest_rank) { MPI_Win_fence(MPI_MODE_NOPRECEDE, win); MPI_Win_fence(MPI_MODE_NOSUCCEED, win); /* modify the last element in window */ MPI_Win_lock(MPI_LOCK_SHARED, rank, 0, win); win_buf[WIN_SIZE - 1] = 2; MPI_Win_unlock(rank, win); } MPI_Barrier(MPI_COMM_WORLD); /* reset buffers */ for (i = 0; i < PUT_SIZE; i++) orig_put_buf[i] = 1; for (i = 0; i < GET_SIZE; i++) orig_get_buf[i] = 0; MPI_Win_lock(MPI_LOCK_SHARED, rank, 0, win); for (i = 0; i < WIN_SIZE; i++) win_buf[i] = 1; MPI_Win_unlock(rank, win); MPI_Barrier(MPI_COMM_WORLD); /* test for PSCW */ if (rank == orig_rank) { MPI_Win_start(dest_group, 0, win); MPI_Get(orig_get_buf, GET_SIZE, MPI_INT, dest_rank, PUT_SIZE /*disp */ , GET_SIZE, MPI_INT, win); MPI_Put(orig_put_buf, PUT_SIZE, MPI_INT, dest_rank, 0 /*disp */ , PUT_SIZE, MPI_INT, win); MPI_Win_complete(win); /* check GET result values */ for (i = 0; i < GET_SIZE; i++) { if (orig_get_buf[i] != 1) { printf("LOOP=%d, PSCW, orig_get_buf[%d] = %d, expected 1.\n", k, i, orig_get_buf[i]); errors++; } } } else if (rank == dest_rank) { MPI_Win_post(orig_group, 0, win); MPI_Win_wait(win); /* modify the last element in window */ MPI_Win_lock(MPI_LOCK_SHARED, rank, 0, win); win_buf[WIN_SIZE - 1] = 2; MPI_Win_unlock(rank, win); } MPI_Barrier(MPI_COMM_WORLD); /* reset buffers */ for (i = 0; i < PUT_SIZE; i++) orig_put_buf[i] = 1; for (i = 0; i < GET_SIZE; i++) orig_get_buf[i] = 0; MPI_Win_lock(MPI_LOCK_SHARED, rank, 0, win); for (i = 0; i < WIN_SIZE; i++) win_buf[i] = 1; MPI_Win_unlock(rank, win); MPI_Barrier(MPI_COMM_WORLD); } MPI_Win_free(&win); MPI_Group_free(&orig_group); MPI_Group_free(&dest_group); MPI_Group_free(&comm_group); if (rank == orig_rank && errors == 0) { printf(" No Errors\n"); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/wincall.c0000644000175000017500000000266712620254305016747 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Test win_call_errhandler"; */ static int calls = 0; static int errs = 0; static MPI_Win mywin; void eh(MPI_Win * win, int *err, ...); void eh(MPI_Win * win, int *err, ...) { if (*err != MPI_ERR_OTHER) { errs++; printf("Unexpected error code\n"); } if (*win != mywin) { errs++; printf("Unexpected window\n"); } calls++; return; } int main(int argc, char *argv[]) { int buf[2]; MPI_Win win; MPI_Errhandler newerr; int i; MTest_Init(&argc, &argv); /* Run this test multiple times to expose storage leaks (we found a leak * of error handlers with this test) */ for (i = 0; i < 1000; i++) { calls = 0; MPI_Win_create(buf, 2 * sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &win); mywin = win; MPI_Win_create_errhandler(eh, &newerr); MPI_Win_set_errhandler(win, newerr); MPI_Win_call_errhandler(win, MPI_ERR_OTHER); MPI_Errhandler_free(&newerr); if (calls != 1) { errs++; printf("Error handler not called\n"); } MPI_Win_free(&win); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/strided_putget_indexed_shared.c0000644000175000017500000001075712620254305023371 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2011 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* One-Sided MPI 2-D Strided Accumulate Test * * Author: James Dinan * Date : November, 2012 * * This code performs N strided put operations followed by get operations into * a 2d patch of a shared array. The array has dimensions [X, Y] and the * subarray has dimensions [SUB_X, SUB_Y] and begins at index [0, 0]. The * input and output buffers are specified using an MPI indexed type. */ #include #include #include #include #include "mpitest.h" #include "squelch.h" #define XDIM 8 #define YDIM 1024 #define SUB_XDIM 8 #define SUB_YDIM 255 #define ITERATIONS 10 int main(int argc, char **argv) { int rank, nranks, rank_world, nranks_world; int i, j, peer, bufsize, errors; double *win_buf, *src_buf, *dst_buf; MPI_Win buf_win; MPI_Comm shr_comm; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank_world); MPI_Comm_size(MPI_COMM_WORLD, &nranks_world); MPI_Comm_split_type(MPI_COMM_WORLD, MPI_COMM_TYPE_SHARED, rank, MPI_INFO_NULL, &shr_comm); MPI_Comm_rank(shr_comm, &rank); MPI_Comm_size(shr_comm, &nranks); bufsize = XDIM * YDIM * sizeof(double); MPI_Alloc_mem(bufsize, MPI_INFO_NULL, &src_buf); MPI_Alloc_mem(bufsize, MPI_INFO_NULL, &dst_buf); MPI_Win_allocate_shared(bufsize, 1, MPI_INFO_NULL, shr_comm, &win_buf, &buf_win); MPI_Win_fence(0, buf_win); for (i = 0; i < XDIM * YDIM; i++) { *(win_buf + i) = -1.0; *(src_buf + i) = 1.0 + rank; } MPI_Win_fence(0, buf_win); peer = (rank + 1) % nranks; /* Perform ITERATIONS strided accumulate operations */ for (i = 0; i < ITERATIONS; i++) { int idx_rem[SUB_YDIM]; int blk_len[SUB_YDIM]; MPI_Datatype src_type, dst_type; for (j = 0; j < SUB_YDIM; j++) { idx_rem[j] = j * XDIM; blk_len[j] = SUB_XDIM; } MPI_Type_indexed(SUB_YDIM, blk_len, idx_rem, MPI_DOUBLE, &src_type); MPI_Type_indexed(SUB_YDIM, blk_len, idx_rem, MPI_DOUBLE, &dst_type); MPI_Type_commit(&src_type); MPI_Type_commit(&dst_type); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, peer, 0, buf_win); MPI_Put(src_buf, 1, src_type, peer, 0, 1, dst_type, buf_win); MPI_Win_unlock(peer, buf_win); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, peer, 0, buf_win); MPI_Get(dst_buf, 1, src_type, peer, 0, 1, dst_type, buf_win); MPI_Win_unlock(peer, buf_win); MPI_Type_free(&src_type); MPI_Type_free(&dst_type); } MPI_Barrier(shr_comm); /* Verify that the results are correct */ MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, buf_win); errors = 0; for (i = 0; i < SUB_XDIM; i++) { for (j = 0; j < SUB_YDIM; j++) { const double actual = *(win_buf + i + j * XDIM); const double expected = (1.0 + ((rank + nranks - 1) % nranks)); if (fabs(actual - expected) > 1.0e-10) { SQUELCH(printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual);); errors++; fflush(stdout); } } } for (i = SUB_XDIM; i < XDIM; i++) { for (j = 0; j < SUB_YDIM; j++) { const double actual = *(win_buf + i + j * XDIM); const double expected = -1.0; if (fabs(actual - expected) > 1.0e-10) { SQUELCH(printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual);); errors++; fflush(stdout); } } } for (i = 0; i < XDIM; i++) { for (j = SUB_YDIM; j < YDIM; j++) { const double actual = *(win_buf + i + j * XDIM); const double expected = -1.0; if (fabs(actual - expected) > 1.0e-10) { SQUELCH(printf("%d: Data validation failed at [%d, %d] expected=%f actual=%f\n", rank, j, i, expected, actual);); errors++; fflush(stdout); } } } MPI_Win_unlock(rank, buf_win); MPI_Win_free(&buf_win); MPI_Free_mem(src_buf); MPI_Free_mem(dst_buf); MPI_Comm_free(&shr_comm); MTest_Finalize(errors); MPI_Finalize(); return MTestReturnValue(errors); } mpi-testsuite-3.2+dfsg/rma/selfrma.c0000644000175000017500000000555512620254305016746 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "RMA to self"; */ int main(int argc, char *argv[]) { int errs = 0; int rank, size, i, j; MPI_Comm comm; MPI_Win win; int *winbuf, count; int *sbuf, scount, vcount; MPI_Datatype vectype; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); /* Allocate and initialize sbuf */ scount = 1000; count = 1000; sbuf = (int *) malloc(scount * sizeof(int)); if (!sbuf) { fprintf(stderr, "Could not allocate send buffer f size %d\n", scount); MPI_Abort(MPI_COMM_WORLD, 0); } for (i = 0; i < scount; i++) sbuf[i] = i; MPI_Alloc_mem(count * sizeof(int), MPI_INFO_NULL, &winbuf); /* This is a simple vector type */ vcount = count / 4; MPI_Type_vector(vcount, 1, 2, MPI_INT, &vectype); MPI_Type_commit(&vectype); MPI_Win_create(winbuf, count * sizeof(int), sizeof(int), MPI_INFO_NULL, comm, &win); /* Check with different combination of types, including non-contig on * both sides */ /* Clear winbuf */ memset(winbuf, 0, count * sizeof(int)); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, win); MPI_Put(sbuf, 1, vectype, rank, 0, 1, vectype, win); MPI_Win_unlock(rank, win); /* Check results */ j = 0; for (i = 0; i < vcount; i++) { if (winbuf[j] != sbuf[j]) { errs++; fprintf(stderr, "VecPut: winbuf[%d] = %d, should = %d\n", winbuf[j], j, sbuf[j]); } j += 2; } memset(winbuf, 0, count * sizeof(int)); MPI_Win_lock(MPI_LOCK_SHARED, rank, 0, win); MPI_Accumulate(sbuf, 1, vectype, rank, 0, 1, vectype, MPI_SUM, win); MPI_Win_unlock(rank, win); /* Check results */ j = 0; for (i = 0; i < vcount; i++) { if (winbuf[j] != sbuf[j]) { errs++; fprintf(stderr, "VecAcc: winbuf[%d] = %d, should = %d\n", winbuf[j], j, sbuf[j]); } j += 2; } /* Now, use get to fetch back the results that we just wrote */ memset(sbuf, 0, count * sizeof(int)); MPI_Win_lock(MPI_LOCK_SHARED, rank, 0, win); MPI_Get(sbuf, 1, vectype, rank, 0, 1, vectype, win); MPI_Win_unlock(rank, win); /* Check results */ j = 0; for (i = 0; i < vcount; i++) { if (winbuf[j] != sbuf[j]) { errs++; fprintf(stderr, "VecAcc: winbuf[%d] = %d, should = %d\n", winbuf[j], j, sbuf[j]); } j += 2; } MPI_Win_free(&win); MPI_Free_mem(winbuf); free(sbuf); MPI_Type_free(&vectype); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/transpose1.c0000644000175000017500000000563312620254305017411 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "stdio.h" #include #include "mpitest.h" /* transposes a matrix using put, fence, and derived datatypes. Uses vector and hvector (Example 3.32 from MPI 1.1 Standard). Run on 2 processes */ #define NROWS 1000 #define NCOLS 1000 int main(int argc, char *argv[]) { int rank, nprocs, **A, *A_data, i, j; MPI_Comm CommDeuce; MPI_Win win; MPI_Datatype column, xpose; int errs = 0; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (nprocs < 2) { printf("Run this program with 2 or more processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_split(MPI_COMM_WORLD, (rank < 2), rank, &CommDeuce); if (rank < 2) { A_data = (int *) malloc(NROWS * NCOLS * sizeof(int)); A = (int **) malloc(NROWS * sizeof(int *)); A[0] = A_data; for (i = 1; i < NROWS; i++) A[i] = A[i - 1] + NCOLS; if (rank == 0) { for (i = 0; i < NROWS; i++) for (j = 0; j < NCOLS; j++) A[i][j] = i * NCOLS + j; /* create datatype for one column */ MPI_Type_vector(NROWS, 1, NCOLS, MPI_INT, &column); /* create datatype for matrix in column-major order */ MPI_Type_hvector(NCOLS, 1, sizeof(int), column, &xpose); MPI_Type_commit(&xpose); MPI_Win_create(NULL, 0, 1, MPI_INFO_NULL, CommDeuce, &win); MPI_Win_fence(0, win); MPI_Put(&A[0][0], NROWS * NCOLS, MPI_INT, 1, 0, 1, xpose, win); MPI_Type_free(&column); MPI_Type_free(&xpose); MPI_Win_fence(0, win); } else if (rank == 1) { for (i = 0; i < NROWS; i++) for (j = 0; j < NCOLS; j++) A[i][j] = -1; MPI_Win_create(&A[0][0], NROWS * NCOLS * sizeof(int), sizeof(int), MPI_INFO_NULL, CommDeuce, &win); MPI_Win_fence(0, win); MPI_Win_fence(0, win); for (j = 0; j < NCOLS; j++) { for (i = 0; i < NROWS; i++) { if (A[j][i] != i * NCOLS + j) { if (errs < 50) { printf("Error: A[%d][%d]=%d should be %d\n", j, i, A[j][i], i * NCOLS + j); } errs++; } } } if (errs >= 50) { printf("Total number of errors: %d\n", errs); } } MPI_Win_free(&win); free(A_data); free(A); } MPI_Comm_free(&CommDeuce); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/get_accumulate.c0000644000175000017500000003337612620254305020301 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; -*- */ /* * * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include #include "mpitest.h" #include "squelch.h" #define ITER 100 #define COUNT 5 #if defined (GACC_TYPE_SHORT) # define TYPE_C short # define TYPE_MPI_BASE MPI_SHORT # define TYPE_FMT "%d" #elif defined (GACC_TYPE_LONG) # define TYPE_C long # define TYPE_MPI_BASE MPI_LONG # define TYPE_FMT "%ld" #elif defined (GACC_TYPE_DOUBLE) # define TYPE_C double # define TYPE_MPI_BASE MPI_DOUBLE # define TYPE_FMT "%f" #else # define TYPE_C int # define TYPE_MPI_BASE MPI_INT # define TYPE_FMT "%d" #endif #if defined(GACC_TYPE_DERIVED) # define TYPE_MPI derived_type #else # define TYPE_MPI TYPE_MPI_BASE #endif void reset_bufs(TYPE_C * win_ptr, TYPE_C * res_ptr, TYPE_C * val_ptr, TYPE_C value, MPI_Win win) { int rank, nproc, i; MPI_Barrier(MPI_COMM_WORLD); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, win); memset(win_ptr, 0, sizeof(TYPE_C) * nproc * COUNT); MPI_Win_unlock(rank, win); memset(res_ptr, -1, sizeof(TYPE_C) * nproc * COUNT); for (i = 0; i < COUNT; i++) val_ptr[i] = value; MPI_Barrier(MPI_COMM_WORLD); } int main(int argc, char **argv) { int i, rank, nproc; int errors = 0, all_errors = 0; TYPE_C *win_ptr, *res_ptr, *val_ptr; MPI_Win win; #if defined (GACC_TYPE_DERIVED) MPI_Datatype derived_type; #endif MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); win_ptr = malloc(sizeof(TYPE_C) * nproc * COUNT); res_ptr = malloc(sizeof(TYPE_C) * nproc * COUNT); val_ptr = malloc(sizeof(TYPE_C) * COUNT); #if defined (GACC_TYPE_DERIVED) MPI_Type_contiguous(1, TYPE_MPI_BASE, &derived_type); MPI_Type_commit(&derived_type); #endif MPI_Win_create(win_ptr, sizeof(TYPE_C) * nproc * COUNT, sizeof(TYPE_C), MPI_INFO_NULL, MPI_COMM_WORLD, &win); /* Test self communication */ reset_bufs(win_ptr, res_ptr, val_ptr, 1, win); for (i = 0; i < ITER; i++) { MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, win); MPI_Get_accumulate(val_ptr, COUNT, TYPE_MPI, res_ptr, COUNT, TYPE_MPI, rank, 0, COUNT, TYPE_MPI, MPI_SUM, win); MPI_Win_unlock(rank, win); } MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, win); for (i = 0; i < COUNT; i++) { if (win_ptr[i] != ITER) { SQUELCH(printf("%d->%d -- SELF[%d]: expected " TYPE_FMT ", got " TYPE_FMT "\n", rank, rank, i, (TYPE_C) ITER, win_ptr[i]);); errors++; } } MPI_Win_unlock(rank, win); /* Test neighbor communication */ reset_bufs(win_ptr, res_ptr, val_ptr, 1, win); for (i = 0; i < ITER; i++) { MPI_Win_lock(MPI_LOCK_EXCLUSIVE, (rank + 1) % nproc, 0, win); MPI_Get_accumulate(val_ptr, COUNT, TYPE_MPI, res_ptr, COUNT, TYPE_MPI, (rank + 1) % nproc, 0, COUNT, TYPE_MPI, MPI_SUM, win); MPI_Win_unlock((rank + 1) % nproc, win); } MPI_Barrier(MPI_COMM_WORLD); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, win); for (i = 0; i < COUNT; i++) { if (win_ptr[i] != ITER) { SQUELCH(printf("%d->%d -- NEIGHBOR[%d]: expected " TYPE_FMT ", got " TYPE_FMT "\n", (rank + 1) % nproc, rank, i, (TYPE_C) ITER, win_ptr[i]);); errors++; } } MPI_Win_unlock(rank, win); /* Test contention */ reset_bufs(win_ptr, res_ptr, val_ptr, 1, win); if (rank != 0) { for (i = 0; i < ITER; i++) { MPI_Win_lock(MPI_LOCK_EXCLUSIVE, 0, 0, win); MPI_Get_accumulate(val_ptr, COUNT, TYPE_MPI, res_ptr, COUNT, TYPE_MPI, 0, 0, COUNT, TYPE_MPI, MPI_SUM, win); MPI_Win_unlock(0, win); } } MPI_Barrier(MPI_COMM_WORLD); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, win); if (rank == 0 && nproc > 1) { for (i = 0; i < COUNT; i++) { if (win_ptr[i] != ITER * (nproc - 1)) { SQUELCH(printf("*->%d - CONTENTION[%d]: expected=" TYPE_FMT " val=" TYPE_FMT "\n", rank, i, (TYPE_C) ITER * (nproc - 1), win_ptr[i]);); errors++; } } } MPI_Win_unlock(rank, win); /* Test all-to-all communication (fence) */ reset_bufs(win_ptr, res_ptr, val_ptr, rank, win); for (i = 0; i < ITER; i++) { int j; MPI_Win_fence(MPI_MODE_NOPRECEDE, win); for (j = 0; j < nproc; j++) { MPI_Get_accumulate(val_ptr, COUNT, TYPE_MPI, &res_ptr[j * COUNT], COUNT, TYPE_MPI, j, rank * COUNT, COUNT, TYPE_MPI, MPI_SUM, win); } MPI_Win_fence(MPI_MODE_NOSUCCEED, win); MPI_Barrier(MPI_COMM_WORLD); for (j = 0; j < nproc; j++) { int c; for (c = 0; c < COUNT; c++) { if (res_ptr[j * COUNT + c] != i * rank) { SQUELCH(printf ("%d->%d -- ALL-TO-ALL (FENCE) [%d]: iter %d, expected result " TYPE_FMT ", got " TYPE_FMT "\n", rank, j, c, i, (TYPE_C) i * rank, res_ptr[j * COUNT + c]);); errors++; } } } } MPI_Barrier(MPI_COMM_WORLD); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, win); for (i = 0; i < nproc; i++) { int c; for (c = 0; c < COUNT; c++) { if (win_ptr[i * COUNT + c] != ITER * i) { SQUELCH(printf ("%d->%d -- ALL-TO-ALL (FENCE): expected " TYPE_FMT ", got " TYPE_FMT "\n", i, rank, (TYPE_C) ITER * i, win_ptr[i * COUNT + c]);); errors++; } } } MPI_Win_unlock(rank, win); /* Test all-to-all communication (lock-all) */ reset_bufs(win_ptr, res_ptr, val_ptr, rank, win); for (i = 0; i < ITER; i++) { int j; MPI_Win_lock_all(0, win); for (j = 0; j < nproc; j++) { MPI_Get_accumulate(val_ptr, COUNT, TYPE_MPI, &res_ptr[j * COUNT], COUNT, TYPE_MPI, j, rank * COUNT, COUNT, TYPE_MPI, MPI_SUM, win); } MPI_Win_unlock_all(win); MPI_Barrier(MPI_COMM_WORLD); for (j = 0; j < nproc; j++) { int c; for (c = 0; c < COUNT; c++) { if (res_ptr[j * COUNT + c] != i * rank) { SQUELCH(printf ("%d->%d -- ALL-TO-ALL (LOCK-ALL) [%d]: iter %d, expected result " TYPE_FMT ", got " TYPE_FMT "\n", rank, j, c, i, (TYPE_C) i * rank, res_ptr[j * COUNT + c]);); errors++; } } } } MPI_Barrier(MPI_COMM_WORLD); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, win); for (i = 0; i < nproc; i++) { int c; for (c = 0; c < COUNT; c++) { if (win_ptr[i * COUNT + c] != ITER * i) { SQUELCH(printf ("%d->%d -- ALL-TO-ALL (LOCK-ALL): expected " TYPE_FMT ", got " TYPE_FMT "\n", i, rank, (TYPE_C) ITER * i, win_ptr[i * COUNT + c]);); errors++; } } } MPI_Win_unlock(rank, win); /* Test all-to-all communication (lock-all+flush) */ reset_bufs(win_ptr, res_ptr, val_ptr, rank, win); for (i = 0; i < ITER; i++) { int j; MPI_Win_lock_all(0, win); for (j = 0; j < nproc; j++) { MPI_Get_accumulate(val_ptr, COUNT, TYPE_MPI, &res_ptr[j * COUNT], COUNT, TYPE_MPI, j, rank * COUNT, COUNT, TYPE_MPI, MPI_SUM, win); MPI_Win_flush(j, win); } MPI_Win_unlock_all(win); MPI_Barrier(MPI_COMM_WORLD); for (j = 0; j < nproc; j++) { int c; for (c = 0; c < COUNT; c++) { if (res_ptr[j * COUNT + c] != i * rank) { SQUELCH(printf ("%d->%d -- ALL-TO-ALL (LOCK-ALL+FLUSH) [%d]: iter %d, expected result " TYPE_FMT ", got " TYPE_FMT "\n", rank, j, c, i, (TYPE_C) i * rank, res_ptr[j * COUNT + c]);); errors++; } } } } MPI_Barrier(MPI_COMM_WORLD); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, win); for (i = 0; i < nproc; i++) { int c; for (c = 0; c < COUNT; c++) { if (win_ptr[i * COUNT + c] != ITER * i) { SQUELCH(printf ("%d->%d -- ALL-TO-ALL (LOCK-ALL+FLUSH): expected " TYPE_FMT ", got " TYPE_FMT "\n", i, rank, (TYPE_C) ITER * i, win_ptr[i * COUNT + c]);); errors++; } } } MPI_Win_unlock(rank, win); /* Test NO_OP (neighbor communication) */ reset_bufs(win_ptr, res_ptr, val_ptr, 1, win); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, win); for (i = 0; i < COUNT * nproc; i++) win_ptr[i] = (TYPE_C) rank; MPI_Win_unlock(rank, win); MPI_Barrier(MPI_COMM_WORLD); for (i = 0; i < ITER; i++) { int j, target = (rank + 1) % nproc; /* Test: origin_buf = NULL */ MPI_Win_lock(MPI_LOCK_EXCLUSIVE, target, 0, win); MPI_Get_accumulate(NULL, COUNT, TYPE_MPI, res_ptr, COUNT, TYPE_MPI, target, 0, COUNT, TYPE_MPI, MPI_NO_OP, win); MPI_Win_unlock(target, win); for (j = 0; j < COUNT; j++) { if (res_ptr[j] != (TYPE_C) target) { SQUELCH(printf("%d->%d -- NOP(1)[%d]: expected " TYPE_FMT ", got " TYPE_FMT "\n", target, rank, i, (TYPE_C) target, res_ptr[i]);); errors++; } } /* Test: origin_buf = NULL, origin_count = 0 */ MPI_Win_lock(MPI_LOCK_EXCLUSIVE, target, 0, win); MPI_Get_accumulate(NULL, 0, TYPE_MPI, res_ptr, COUNT, TYPE_MPI, target, 0, COUNT, TYPE_MPI, MPI_NO_OP, win); MPI_Win_unlock(target, win); for (j = 0; j < COUNT; j++) { if (res_ptr[j] != (TYPE_C) target) { SQUELCH(printf("%d->%d -- NOP(2)[%d]: expected " TYPE_FMT ", got " TYPE_FMT "\n", target, rank, i, (TYPE_C) target, res_ptr[i]);); errors++; } } /* Test: origin_buf = NULL, origin_count = 0, origin_dtype = NULL */ MPI_Win_lock(MPI_LOCK_EXCLUSIVE, target, 0, win); MPI_Get_accumulate(NULL, 0, MPI_DATATYPE_NULL, res_ptr, COUNT, TYPE_MPI, target, 0, COUNT, TYPE_MPI, MPI_NO_OP, win); MPI_Win_unlock(target, win); for (j = 0; j < COUNT; j++) { if (res_ptr[j] != (TYPE_C) target) { SQUELCH(printf("%d->%d -- NOP(2)[%d]: expected " TYPE_FMT ", got " TYPE_FMT "\n", target, rank, i, (TYPE_C) target, res_ptr[i]);); errors++; } } } /* Test NO_OP (self communication) */ reset_bufs(win_ptr, res_ptr, val_ptr, 1, win); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, win); for (i = 0; i < COUNT * nproc; i++) win_ptr[i] = (TYPE_C) rank; MPI_Win_unlock(rank, win); MPI_Barrier(MPI_COMM_WORLD); for (i = 0; i < ITER; i++) { int j, target = rank; /* Test: origin_buf = NULL */ MPI_Win_lock(MPI_LOCK_EXCLUSIVE, target, 0, win); MPI_Get_accumulate(NULL, COUNT, TYPE_MPI, res_ptr, COUNT, TYPE_MPI, target, 0, COUNT, TYPE_MPI, MPI_NO_OP, win); MPI_Win_unlock(target, win); for (j = 0; j < COUNT; j++) { if (res_ptr[j] != (TYPE_C) target) { SQUELCH(printf ("%d->%d -- NOP_SELF(1)[%d]: expected " TYPE_FMT ", got " TYPE_FMT "\n", target, rank, i, (TYPE_C) target, res_ptr[i]);); errors++; } } /* Test: origin_buf = NULL, origin_count = 0 */ MPI_Win_lock(MPI_LOCK_EXCLUSIVE, target, 0, win); MPI_Get_accumulate(NULL, 0, TYPE_MPI, res_ptr, COUNT, TYPE_MPI, target, 0, COUNT, TYPE_MPI, MPI_NO_OP, win); MPI_Win_unlock(target, win); for (j = 0; j < COUNT; j++) { if (res_ptr[j] != (TYPE_C) target) { SQUELCH(printf ("%d->%d -- NOP_SELF(2)[%d]: expected " TYPE_FMT ", got " TYPE_FMT "\n", target, rank, i, (TYPE_C) target, res_ptr[i]);); errors++; } } /* Test: origin_buf = NULL, origin_count = 0, origin_dtype = NULL */ MPI_Win_lock(MPI_LOCK_EXCLUSIVE, target, 0, win); MPI_Get_accumulate(NULL, 0, MPI_DATATYPE_NULL, res_ptr, COUNT, TYPE_MPI, target, 0, COUNT, TYPE_MPI, MPI_NO_OP, win); MPI_Win_unlock(target, win); for (j = 0; j < COUNT; j++) { if (res_ptr[j] != (TYPE_C) target) { SQUELCH(printf ("%d->%d -- NOP_SELF(2)[%d]: expected " TYPE_FMT ", got " TYPE_FMT "\n", target, rank, i, (TYPE_C) target, res_ptr[i]);); errors++; } } } MPI_Win_free(&win); MPI_Reduce(&errors, &all_errors, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (rank == 0 && all_errors == 0) printf(" No Errors\n"); #if defined (GACC_TYPE_DERIVED) MPI_Type_free(&derived_type); #endif free(win_ptr); free(res_ptr); free(val_ptr); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/nullpscw.c0000644000175000017500000000146012620254305017153 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2006 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include "mpitest.h" int main(int argc, char *argv[]) { MPI_Win win; MPI_Group group; int errs = 0; MTest_Init(&argc, &argv); #ifdef USE_WIN_ALLOCATE char *baseptr; MPI_Win_allocate(0, 1, MPI_INFO_NULL, MPI_COMM_WORLD, &baseptr, &win); #else MPI_Win_create(NULL, 0, 1, MPI_INFO_NULL, MPI_COMM_WORLD, &win); #endif MPI_Win_get_group(win, &group); MPI_Win_post(group, 0, win); MPI_Win_start(group, 0, win); MPI_Win_complete(win); MPI_Win_wait(win); MPI_Group_free(&group); MPI_Win_free(&win); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/atomic_rmw_cas.c0000644000175000017500000001025212620254305020272 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2015 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* This test is going to test the atomicity for "read-modify-write" in CAS * operations */ /* There are three processes involved in this test: P0 (origin_shm), P1 (origin_am), * and P2 (dest). P0 and P1 issues one CAS to P2 via SHM and AM respectively. * For P0, origin value is 1 and compare value is 0; for P1, origin value is 0 and * compare value is 1; for P2, initial target value is 0. The correct results can * only be one of the following cases: * * (1) result value on P0: 0, result value on P1: 0, target value on P2: 1. * (2) result value on P0: 0, result value on P1: 1, target value on P2: 0. * * All other results are not correct. */ #include "mpi.h" #include #define LOOP_SIZE 10000 #define CHECK_TAG 123 int main(int argc, char *argv[]) { int rank, size, k; int errors = 0; int origin_shm, origin_am, dest; int *orig_buf = NULL, *result_buf = NULL, *compare_buf = NULL, *target_buf = NULL, *check_buf = NULL; int target_value = 0; MPI_Win win; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); if (size != 3) { /* run this test with three processes */ goto exit_test; } /* this works when MPIR_PARAM_CH3_ODD_EVEN_CLIQUES is set */ dest = 2; origin_shm = 0; origin_am = 1; if (rank != dest) { MPI_Alloc_mem(sizeof(int), MPI_INFO_NULL, &orig_buf); MPI_Alloc_mem(sizeof(int), MPI_INFO_NULL, &result_buf); MPI_Alloc_mem(sizeof(int), MPI_INFO_NULL, &compare_buf); } MPI_Win_allocate(sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &target_buf, &win); for (k = 0; k < LOOP_SIZE; k++) { /* init buffers */ if (rank == origin_shm) { orig_buf[0] = 1; compare_buf[0] = 0; result_buf[0] = 0; } else if (rank == origin_am) { orig_buf[0] = 0; compare_buf[0] = 1; result_buf[0] = 0; } else { MPI_Win_lock(MPI_LOCK_SHARED, rank, 0, win); target_buf[0] = 0; MPI_Win_unlock(rank, win); } MPI_Barrier(MPI_COMM_WORLD); /* perform FOP */ MPI_Win_lock_all(0, win); if (rank != dest) { MPI_Compare_and_swap(orig_buf, compare_buf, result_buf, MPI_INT, dest, 0, win); MPI_Win_flush(dest, win); } MPI_Win_unlock_all(win); MPI_Barrier(MPI_COMM_WORLD); /* check results */ if (rank != dest) { MPI_Gather(result_buf, 1, MPI_INT, check_buf, 1, MPI_INT, dest, MPI_COMM_WORLD); } else { MPI_Win_lock(MPI_LOCK_SHARED, rank, 0, win); target_value = target_buf[0]; MPI_Win_unlock(rank, win); MPI_Alloc_mem(sizeof(int) * 3, MPI_INFO_NULL, &check_buf); MPI_Gather(&target_value, 1, MPI_INT, check_buf, 1, MPI_INT, dest, MPI_COMM_WORLD); if (!(check_buf[dest] == 0 && check_buf[origin_shm] == 0 && check_buf[origin_am] == 1) && !(check_buf[dest] == 1 && check_buf[origin_shm] == 0 && check_buf[origin_am] == 0)) { printf ("Wrong results: target result = %d, origin_shm result = %d, origin_am result = %d\n", check_buf[dest], check_buf[origin_shm], check_buf[origin_am]); printf ("Expected results (1): target result = 1, origin_shm result = 0, origin_am result = 0\n"); printf ("Expected results (2): target result = 0, origin_shm result = 0, origin_am result = 1\n"); errors++; } MPI_Free_mem(check_buf); } } MPI_Win_free(&win); if (rank == origin_am || rank == origin_shm) { MPI_Free_mem(orig_buf); MPI_Free_mem(result_buf); MPI_Free_mem(compare_buf); } exit_test: if (rank == dest && errors == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/get_acc_local.c0000644000175000017500000000225212620254305020043 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include "mpitest.h" int errors = 0; const int NITER = 1000; const int acc_val = 3; int main(int argc, char **argv) { int rank, nproc; int out_val, i, counter = 0; MPI_Win win; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Win_create(&counter, sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &win); for (i = 0; i < NITER; i++) { MPI_Win_lock(MPI_LOCK_SHARED, rank, 0, win); MPI_Get_accumulate(&acc_val, 1, MPI_INT, &out_val, 1, MPI_INT, rank, 0, 1, MPI_INT, MPI_SUM, win); MPI_Win_unlock(rank, win); if (out_val != acc_val * i) { errors++; printf("Error: got %d, expected %d at iter %d\n", out_val, acc_val * i, i); break; } } MPI_Win_free(&win); if (errors == 0 && rank == 0) printf(" No errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/accpscw1.c0000644000175000017500000000762712620254305017023 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Accumulate/replace with Post/Start/Complete/Wait"; */ int main(int argc, char *argv[]) { int errs = 0, err; int rank, size, source, dest; int minsize = 2, count; MPI_Comm comm; MPI_Win win; MPI_Aint extent; MPI_Group wingroup, neighbors; MTestDatatype sendtype, recvtype; MTest_Init(&argc, &argv); /* The following illustrates the use of the routines to * run through a selection of communicators and datatypes. * Use subsets of these for tests that do not involve combinations * of communicators, datatypes, and counts of datatypes */ while (MTestGetIntracommGeneral(&comm, minsize, 1)) { if (comm == MPI_COMM_NULL) continue; /* Determine the sender and receiver */ MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); source = 0; dest = size - 1; MTEST_DATATYPE_FOR_EACH_COUNT(count) { while (MTestGetDatatypes(&sendtype, &recvtype, count)) { /* Make sure that everyone has a recv buffer */ recvtype.InitBuf(&recvtype); MPI_Type_extent(recvtype.datatype, &extent); MPI_Win_create(recvtype.buf, recvtype.count * extent, (int) extent, MPI_INFO_NULL, comm, &win); MPI_Win_get_group(win, &wingroup); if (rank == source) { /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Win_set_errhandler(win, MPI_ERRORS_RETURN); sendtype.InitBuf(&sendtype); /* Neighbor is dest only */ MPI_Group_incl(wingroup, 1, &dest, &neighbors); err = MPI_Win_start(neighbors, 0, win); if (err) { errs++; if (errs < 10) { MTestPrintError(err); } } MPI_Group_free(&neighbors); err = MPI_Accumulate(sendtype.buf, sendtype.count, sendtype.datatype, dest, 0, recvtype.count, recvtype.datatype, MPI_REPLACE, win); if (err) { errs++; MTestPrintError(err); } err = MPI_Win_complete(win); if (err) { errs++; if (errs < 10) { MTestPrintError(err); } } } else if (rank == dest) { MPI_Group_incl(wingroup, 1, &source, &neighbors); MPI_Win_post(neighbors, 0, win); MPI_Group_free(&neighbors); MPI_Win_wait(win); /* This should have the same effect, in terms of * transfering data, as a send/recv pair */ err = MTestCheckRecv(0, &recvtype); if (err) { errs += errs; } } else { /* Nothing; the other processes need not call any * MPI routines */ ; } MPI_Win_free(&win); MTestFreeDatatype(&sendtype); MTestFreeDatatype(&recvtype); MPI_Group_free(&wingroup); } } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/rma/badrma.c0000644000175000017500000001151512620254305016534 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "stdio.h" #define SIZE 100 MPI_Win win; int win_buf[SIZE], origin_buf[SIZE], result_buf[SIZE]; int do_test(int origin_count, MPI_Datatype origin_type, int result_count, MPI_Datatype result_type, int target_count, MPI_Datatype target_type) { int errs = 0, ret, origin_type_size, result_type_size; ret = MPI_Put(origin_buf, origin_count, origin_type, 1, 0, target_count, target_type, win); if (ret) errs++; ret = MPI_Get(origin_buf, origin_count, origin_type, 1, 0, target_count, target_type, win); if (ret) errs++; ret = MPI_Accumulate(origin_buf, origin_count, origin_type, 1, 0, target_count, target_type, MPI_SUM, win); if (ret) errs++; ret = MPI_Get_accumulate(origin_buf, origin_count, origin_type, result_buf, result_count, result_type, 1, 0, target_count, target_type, MPI_SUM, win); if (ret) errs++; MPI_Type_size(origin_type, &origin_type_size); MPI_Type_size(result_type, &result_type_size); if (origin_count == 0 || origin_type_size == 0) { ret = MPI_Put(NULL, origin_count, origin_type, 1, 0, target_count, target_type, win); if (ret) errs++; ret = MPI_Get(NULL, origin_count, origin_type, 1, 0, target_count, target_type, win); if (ret) errs++; ret = MPI_Accumulate(NULL, origin_count, origin_type, 1, 0, target_count, target_type, MPI_SUM, win); if (ret) errs++; ret = MPI_Get_accumulate(NULL, origin_count, origin_type, result_buf, result_count, result_type, 1, 0, target_count, target_type, MPI_SUM, win); if (ret) errs++; if (result_count == 0 || result_type_size == 0) { ret = MPI_Get_accumulate(NULL, origin_count, origin_type, NULL, result_count, result_type, 1, 0, target_count, target_type, MPI_SUM, win); if (ret) errs++; } } return errs; } int main(int argc, char *argv[]) { int rank, nprocs, i, j, k; int errs = 0; MPI_Datatype types[4]; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (nprocs < 2) { printf("Run this program with 2 or more processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } /* types[0] is of zero size. Everything else is non-zero size */ MPI_Type_contiguous(0, MPI_INT, &types[0]); MPI_Type_commit(&types[0]); MPI_Type_contiguous(1, MPI_INT, &types[1]); MPI_Type_commit(&types[1]); types[2] = MPI_INT; types[3] = MPI_DOUBLE; MPI_Win_create(win_buf, SIZE * sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &win); MPI_Win_fence(0, win); if (rank == 0) { /* zero-count */ for (i = 0; i < 4; i++) for (j = 0; j < 4; j++) for (k = 0; k < 4; k++) do_test(0, types[i], 0, types[j], 0, types[k]); /* single zero-size datatype, but non-zero count */ for (i = 1; i < 4; i++) { for (j = 1; j < 4; j++) { do_test(1, types[0], 0, types[i], 0, types[j]); do_test(0, types[i], 1, types[0], 0, types[j]); do_test(0, types[i], 0, types[j], 1, types[0]); } } /* two zero-size datatypes, but non-zero count */ for (i = 1; i < 4; i++) { do_test(1, types[0], 1, types[0], 0, types[i]); do_test(1, types[0], 0, types[i], 1, types[0]); do_test(0, types[i], 1, types[0], 1, types[0]); do_test(1, types[0], 2, types[0], 0, types[i]); do_test(2, types[0], 1, types[0], 0, types[i]); do_test(1, types[0], 0, types[i], 2, types[0]); do_test(2, types[0], 0, types[i], 1, types[0]); do_test(0, types[i], 1, types[0], 2, types[0]); do_test(0, types[i], 2, types[0], 1, types[0]); } /* three zero-size datatypes, but non-zero count */ do_test(1, types[0], 1, types[0], 1, types[0]); do_test(1, types[0], 1, types[0], 2, types[0]); do_test(1, types[0], 2, types[0], 1, types[0]); do_test(1, types[0], 2, types[0], 2, types[0]); do_test(2, types[0], 1, types[0], 1, types[0]); do_test(2, types[0], 1, types[0], 2, types[0]); do_test(2, types[0], 2, types[0], 1, types[0]); } MPI_Win_fence(0, win); MPI_Win_free(&win); MPI_Type_free(&types[0]); MPI_Type_free(&types[1]); if (!errs && !rank) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/group/0000755000175000017500000000000012621010235015505 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/group/grouptest.c0000644000175000017500000001135012620254305017714 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include int main(int argc, char *argv[]) { MPI_Group g1, g2, g4, g5, g45, selfgroup, g6; int ranks[16], size, rank, myrank, range[1][3]; int errs = 0; int i, rin[16], rout[16], result; MPI_Init(0, 0); MPI_Comm_group(MPI_COMM_WORLD, &g1); MPI_Comm_rank(MPI_COMM_WORLD, &myrank); MPI_Comm_size(MPI_COMM_WORLD, &size); if (size < 8) { fprintf(stderr, "Test requires 8 processes (16 prefered) only %d provided\n", size); errs++; } /* 16 members, this process is rank 0, return in group 1 */ ranks[0] = myrank; ranks[1] = 2; ranks[2] = 7; if (myrank == 2) ranks[1] = 3; if (myrank == 7) ranks[2] = 6; MPI_Group_incl(g1, 3, ranks, &g2); /* Check the resulting group */ MPI_Group_size(g2, &size); MPI_Group_rank(g2, &rank); if (size != 3) { fprintf(stderr, "Size should be %d, is %d\n", 3, size); errs++; } if (rank != 0) { fprintf(stderr, "Rank should be %d, is %d\n", 0, rank); errs++; } rin[0] = 0; rin[1] = 1; rin[2] = 2; MPI_Group_translate_ranks(g2, 3, rin, g1, rout); for (i = 0; i < 3; i++) { if (rout[i] != ranks[i]) { fprintf(stderr, "translated rank[%d] %d should be %d\n", i, rout[i], ranks[i]); errs++; } } /* Translate the process of the self group against another group */ MPI_Comm_group(MPI_COMM_SELF, &selfgroup); rin[0] = 0; MPI_Group_translate_ranks(selfgroup, 1, rin, g1, rout); if (rout[0] != myrank) { fprintf(stderr, "translated of self is %d should be %d\n", rout[0], myrank); errs++; } for (i = 0; i < size; i++) rin[i] = i; MPI_Group_translate_ranks(g1, size, rin, selfgroup, rout); for (i = 0; i < size; i++) { if (i == myrank && rout[i] != 0) { fprintf(stderr, "translated world to self of %d is %d\n", i, rout[i]); errs++; } else if (i != myrank && rout[i] != MPI_UNDEFINED) { fprintf(stderr, "translated world to self of %d should be undefined, is %d\n", i, rout[i]); errs++; } } MPI_Group_free(&selfgroup); /* Exclude everyone in our group */ { int ii, *lranks, g1size; MPI_Group_size(g1, &g1size); lranks = (int *) malloc(g1size * sizeof(int)); for (ii = 0; ii < g1size; ii++) lranks[ii] = ii; MPI_Group_excl(g1, g1size, lranks, &g6); if (g6 != MPI_GROUP_EMPTY) { fprintf(stderr, "Group formed by excluding all ranks not empty\n"); errs++; MPI_Group_free(&g6); } free(lranks); } /* Add tests for additional group operations */ /* * g2 = incl 1,3,7 * g3 = excl 1,3,7 * intersect (w, g2) => g2 * intersect (w, g3) => g3 * intersect (g2, g3) => empty * * g4 = rincl 1:n-1:2 * g5 = rexcl 1:n-1:2 * union(g4, g5) => world * g6 = rincl n-1:1:-1 * g7 = rexcl n-1:1:-1 * union(g6, g7) => concat of entries, similar to world * diff(w, g2) => g3 */ MPI_Group_free(&g2); range[0][0] = 1; range[0][1] = size - 1; range[0][2] = 2; MPI_Group_range_excl(g1, 1, range, &g5); range[0][0] = 1; range[0][1] = size - 1; range[0][2] = 2; MPI_Group_range_incl(g1, 1, range, &g4); MPI_Group_union(g4, g5, &g45); MPI_Group_compare(MPI_GROUP_EMPTY, g4, &result); if (result != MPI_UNEQUAL) { errs++; fprintf(stderr, "Comparison with empty group gave %d, not 3\n", result); } MPI_Group_free(&g4); MPI_Group_free(&g5); MPI_Group_free(&g45); /* Now, duplicate the test, but using negative strides */ range[0][0] = size - 1; range[0][1] = 1; range[0][2] = -2; MPI_Group_range_excl(g1, 1, range, &g5); range[0][0] = size - 1; range[0][1] = 1; range[0][2] = -2; MPI_Group_range_incl(g1, 1, range, &g4); MPI_Group_union(g4, g5, &g45); MPI_Group_compare(MPI_GROUP_EMPTY, g4, &result); if (result != MPI_UNEQUAL) { errs++; fprintf(stderr, "Comparison with empty group (formed with negative strides) gave %d, not 3\n", result); } MPI_Group_free(&g4); MPI_Group_free(&g5); MPI_Group_free(&g45); MPI_Group_free(&g1); if (myrank == 0) { if (errs == 0) { printf(" No Errors\n"); } else { printf("Found %d errors\n", errs); } } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/group/glpid.c0000644000175000017500000000234312620254305016761 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include "mpi.h" #include "mpiimpl.h" int main(int argc, char *argv[]) { MPID_Group group, *group_ptr = &group; int i; MPI_Init(&argc, &argv); /* Setup a sample group */ group.handle = 1; group.ref_count = 1; group.size = 4; group.rank = 0; group.idx_of_first_lpid = -1; group.lrank_to_lpid = (MPID_Group_pmap_t *) MPIU_Malloc(group.size * sizeof(MPID_Group_pmap_t)); for (i = 0; i < group.size; i++) { group.lrank_to_lpid[i].lrank = i; group.lrank_to_lpid[i].lpid = group.size - i - 1; group.lrank_to_lpid[i].next_lpid = -1; group.lrank_to_lpid[i].flag = 0; } /* Set up the group lpid list */ MPIR_Group_setup_lpid_list(group_ptr); /* Print the group structure */ printf("Index of first lpid = %d\n", group.idx_of_first_lpid); for (i = 0; i < group.size; i++) { printf("lrank_to_lpid[%d].next_lpid = %d, .lpid = %d\n", i, group.lrank_to_lpid[i].next_lpid, group.lrank_to_lpid[i].lpid); } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/group/testlist0000644000175000017500000000034112620254305017310 0ustar mbanckmbanckgroupcreate 4 grouptest 8 grouptest2 4 groupnullincl 4 gtranks 8 # this may be too many processes for some systems, but the test needs a # large-ish number of processes to yield an effective performance check gtranksperf 20 mpi-testsuite-3.2+dfsg/group/Makefile.in0000644000175000017500000005431212621010235017557 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = grouptest$(EXEEXT) grouptest2$(EXEEXT) \ groupcreate$(EXEEXT) gtranks$(EXEEXT) groupnullincl$(EXEEXT) \ gtranksperf$(EXEEXT) subdir = group ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) groupcreate_SOURCES = groupcreate.c groupcreate_OBJECTS = groupcreate.$(OBJEXT) groupcreate_LDADD = $(LDADD) groupcreate_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o groupnullincl_SOURCES = groupnullincl.c groupnullincl_OBJECTS = groupnullincl.$(OBJEXT) groupnullincl_LDADD = $(LDADD) groupnullincl_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o grouptest_SOURCES = grouptest.c grouptest_OBJECTS = grouptest.$(OBJEXT) grouptest_LDADD = $(LDADD) grouptest_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o grouptest2_SOURCES = grouptest2.c grouptest2_OBJECTS = grouptest2.$(OBJEXT) grouptest2_LDADD = $(LDADD) grouptest2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o gtranks_SOURCES = gtranks.c gtranks_OBJECTS = gtranks.$(OBJEXT) gtranks_LDADD = $(LDADD) gtranks_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o gtranksperf_SOURCES = gtranksperf.c gtranksperf_OBJECTS = gtranksperf.$(OBJEXT) gtranksperf_DEPENDENCIES = $(LDADD) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = groupcreate.c groupnullincl.c grouptest.c grouptest2.c \ gtranks.c gtranksperf.c DIST_SOURCES = groupcreate.c groupnullincl.c grouptest.c grouptest2.c \ gtranks.c gtranksperf.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.mtest \ $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist # gtranksperf uses fabs, which may require -lm gtranksperf_LDADD = $(LDADD) -lm all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign group/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign group/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) groupcreate$(EXEEXT): $(groupcreate_OBJECTS) $(groupcreate_DEPENDENCIES) $(EXTRA_groupcreate_DEPENDENCIES) @rm -f groupcreate$(EXEEXT) $(AM_V_CCLD)$(LINK) $(groupcreate_OBJECTS) $(groupcreate_LDADD) $(LIBS) groupnullincl$(EXEEXT): $(groupnullincl_OBJECTS) $(groupnullincl_DEPENDENCIES) $(EXTRA_groupnullincl_DEPENDENCIES) @rm -f groupnullincl$(EXEEXT) $(AM_V_CCLD)$(LINK) $(groupnullincl_OBJECTS) $(groupnullincl_LDADD) $(LIBS) grouptest$(EXEEXT): $(grouptest_OBJECTS) $(grouptest_DEPENDENCIES) $(EXTRA_grouptest_DEPENDENCIES) @rm -f grouptest$(EXEEXT) $(AM_V_CCLD)$(LINK) $(grouptest_OBJECTS) $(grouptest_LDADD) $(LIBS) grouptest2$(EXEEXT): $(grouptest2_OBJECTS) $(grouptest2_DEPENDENCIES) $(EXTRA_grouptest2_DEPENDENCIES) @rm -f grouptest2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(grouptest2_OBJECTS) $(grouptest2_LDADD) $(LIBS) gtranks$(EXEEXT): $(gtranks_OBJECTS) $(gtranks_DEPENDENCIES) $(EXTRA_gtranks_DEPENDENCIES) @rm -f gtranks$(EXEEXT) $(AM_V_CCLD)$(LINK) $(gtranks_OBJECTS) $(gtranks_LDADD) $(LIBS) gtranksperf$(EXEEXT): $(gtranksperf_OBJECTS) $(gtranksperf_DEPENDENCIES) $(EXTRA_gtranksperf_DEPENDENCIES) @rm -f gtranksperf$(EXEEXT) $(AM_V_CCLD)$(LINK) $(gtranksperf_OBJECTS) $(gtranksperf_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/groupcreate.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/groupnullincl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/grouptest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/grouptest2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtranks.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtranksperf.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # glpid is a whitebox test that uses mpiimpl.h; it is unlikely to build with the # current build system setup #EXTRA_PROGRAMS = glpid # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/group/Makefile.am0000644000175000017500000000132212620254305017546 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile.mtest EXTRA_DIST = testlist ## for all programs that are just built from the single corresponding source ## file, we don't need per-target _SOURCES rules, automake will infer them ## correctly noinst_PROGRAMS = \ grouptest \ grouptest2 \ groupcreate \ gtranks \ groupnullincl \ gtranksperf # gtranksperf uses fabs, which may require -lm gtranksperf_LDADD = $(LDADD) -lm # glpid is a whitebox test that uses mpiimpl.h; it is unlikely to build with the # current build system setup #EXTRA_PROGRAMS = glpid mpi-testsuite-3.2+dfsg/group/gtranks.c0000644000175000017500000001133612620254305017335 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" #define MAX_WORLD_SIZE 1024 int main(int argc, char *argv[]) { int errs = 0; int ranks[MAX_WORLD_SIZE], ranksout[MAX_WORLD_SIZE], ranksin[MAX_WORLD_SIZE]; int range[1][3]; MPI_Group gworld, gself, ngroup, galt; MPI_Comm comm; int rank, size, i, nelms; MTest_Init(&argc, &argv); MPI_Comm_group(MPI_COMM_SELF, &gself); comm = MPI_COMM_WORLD; MPI_Comm_size(comm, &size); MPI_Comm_rank(comm, &rank); if (size > MAX_WORLD_SIZE) { fprintf(stderr, "This test requires a comm world with no more than %d processes\n", MAX_WORLD_SIZE); MPI_Abort(MPI_COMM_WORLD, 1); } if (size < 4) { fprintf(stderr, "This test requiers at least 4 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Comm_group(comm, &gworld); for (i = 0; i < size; i++) { ranks[i] = i; ranksout[i] = -1; } /* Try translating ranks from comm world compared against * comm self, so most will be UNDEFINED */ MPI_Group_translate_ranks(gworld, size, ranks, gself, ranksout); for (i = 0; i < size; i++) { if (i == rank) { if (ranksout[i] != 0) { printf("[%d] Rank %d is %d but should be 0\n", rank, i, ranksout[i]); errs++; } } else { if (ranksout[i] != MPI_UNDEFINED) { printf("[%d] Rank %d is %d but should be undefined\n", rank, i, ranksout[i]); errs++; } } } /* MPI-2 Errata requires that MPI_PROC_NULL is mapped to MPI_PROC_NULL */ ranks[0] = MPI_PROC_NULL; ranks[1] = 1; ranks[2] = rank; ranks[3] = MPI_PROC_NULL; for (i = 0; i < 4; i++) ranksout[i] = -1; MPI_Group_translate_ranks(gworld, 4, ranks, gself, ranksout); if (ranksout[0] != MPI_PROC_NULL) { printf("[%d] Rank[0] should be MPI_PROC_NULL but is %d\n", rank, ranksout[0]); errs++; } if (rank != 1 && ranksout[1] != MPI_UNDEFINED) { printf("[%d] Rank[1] should be MPI_UNDEFINED but is %d\n", rank, ranksout[1]); errs++; } if (rank == 1 && ranksout[1] != 0) { printf("[%d] Rank[1] should be 0 but is %d\n", rank, ranksout[1]); errs++; } if (ranksout[2] != 0) { printf("[%d] Rank[2] should be 0 but is %d\n", rank, ranksout[2]); errs++; } if (ranksout[3] != MPI_PROC_NULL) { printf("[%d] Rank[3] should be MPI_PROC_NULL but is %d\n", rank, ranksout[3]); errs++; } MPI_Group_free(&gself); /* Now, try comparing small groups against larger groups, and use groups * with irregular members (to bypass optimizations in group_translate_ranks * for simple groups) */ nelms = 0; ranks[nelms++] = size - 2; ranks[nelms++] = 0; if (rank != 0 && rank != size - 2) { ranks[nelms++] = rank; } MPI_Group_incl(gworld, nelms, ranks, &ngroup); for (i = 0; i < nelms; i++) ranksout[i] = -1; ranksin[0] = 1; ranksin[1] = 0; ranksin[2] = MPI_PROC_NULL; ranksin[3] = 2; MPI_Group_translate_ranks(ngroup, nelms + 1, ranksin, gworld, ranksout); for (i = 0; i < nelms + 1; i++) { if (ranksin[i] == MPI_PROC_NULL) { if (ranksout[i] != MPI_PROC_NULL) { fprintf(stderr, "Input rank for proc_null but output was %d\n", ranksout[i]); errs++; } } else if (ranksout[i] != ranks[ranksin[i]]) { fprintf(stderr, "Expected ranksout[%d] = %d but found %d\n", i, ranks[ranksin[i]], ranksout[i]); errs++; } } range[0][0] = size - 1; range[0][1] = 0; range[0][2] = -1; MPI_Group_range_incl(gworld, 1, range, &galt); for (i = 0; i < nelms + 1; i++) ranksout[i] = -1; MPI_Group_translate_ranks(ngroup, nelms + 1, ranksin, galt, ranksout); for (i = 0; i < nelms + 1; i++) { if (ranksin[i] == MPI_PROC_NULL) { if (ranksout[i] != MPI_PROC_NULL) { fprintf(stderr, "Input rank for proc_null but output was %d\n", ranksout[i]); errs++; } } else if (ranksout[i] != (size - 1) - ranks[ranksin[i]]) { fprintf(stderr, "Expected ranksout[%d] = %d but found %d\n", i, (size - 1) - ranks[ranksin[i]], ranksout[i]); errs++; } } MPI_Group_free(&gworld); MPI_Group_free(&galt); MPI_Group_free(&ngroup); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/group/grouptest2.c0000644000175000017500000001463712620254305020011 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Test the group routines (some tested elsewere) MPI_Group_compare MPI_Group_excl MPI_Group_intersection MPI_Group_range_excl MPI_Group_rank MPI_Group_size MPI_Group_translate_ranks MPI_Group_union */ #include "mpi.h" #include /* stdlib.h Needed for malloc declaration */ #include int main(int argc, char **argv) { int errs = 0, toterr; MPI_Group basegroup; MPI_Group g1, g2, g3, g4, g5, g6, g7, g8, g9, g10; MPI_Group g3a, g3b; MPI_Comm comm, newcomm, splitcomm, dupcomm; int i, grp_rank, rank, grp_size, size, result; int nranks, *ranks, *ranks_out; int range[1][3]; int worldrank; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &worldrank); comm = MPI_COMM_WORLD; MPI_Comm_group(comm, &basegroup); MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); /* Get the basic information on this group */ MPI_Group_rank(basegroup, &grp_rank); if (grp_rank != rank) { errs++; fprintf(stdout, "group rank %d != comm rank %d\n", grp_rank, rank); } MPI_Group_size(basegroup, &grp_size); if (grp_size != size) { errs++; fprintf(stdout, "group size %d != comm size %d\n", grp_size, size); } /* Form a new communicator with inverted ranking */ MPI_Comm_split(comm, 0, size - rank, &newcomm); MPI_Comm_group(newcomm, &g1); ranks = (int *) malloc(size * sizeof(int)); ranks_out = (int *) malloc(size * sizeof(int)); for (i = 0; i < size; i++) ranks[i] = i; nranks = size; MPI_Group_translate_ranks(g1, nranks, ranks, basegroup, ranks_out); for (i = 0; i < size; i++) { if (ranks_out[i] != (size - 1) - i) { errs++; fprintf(stdout, "Translate ranks got %d expected %d\n", ranks_out[i], (size - 1) - i); } } /* Check Compare */ MPI_Group_compare(basegroup, g1, &result); if (result != MPI_SIMILAR) { errs++; fprintf(stdout, "Group compare should have been similar, was %d\n", result); } MPI_Comm_dup(comm, &dupcomm); MPI_Comm_group(dupcomm, &g2); MPI_Group_compare(basegroup, g2, &result); if (result != MPI_IDENT) { errs++; fprintf(stdout, "Group compare should have been ident, was %d\n", result); } MPI_Comm_split(comm, rank < size / 2, rank, &splitcomm); MPI_Comm_group(splitcomm, &g3); MPI_Group_compare(basegroup, g3, &result); if (result != MPI_UNEQUAL) { errs++; fprintf(stdout, "Group compare should have been unequal, was %d\n", result); } /* Build two groups that have this process and one other, but do not * have the same processes */ ranks[0] = rank; ranks[1] = (rank + 1) % size; MPI_Group_incl(basegroup, 2, ranks, &g3a); ranks[1] = (rank + size - 1) % size; MPI_Group_incl(basegroup, 2, ranks, &g3b); MPI_Group_compare(g3a, g3b, &result); if (result != MPI_UNEQUAL) { errs++; fprintf(stdout, "Group compare of equal sized but different groups should have been unequal, was %d\n", result); } /* Build two new groups by excluding members; use Union to put them together again */ /* Exclude 0 */ for (i = 0; i < size; i++) ranks[i] = i; MPI_Group_excl(basegroup, 1, ranks, &g4); /* Exclude 1-(size-1) */ MPI_Group_excl(basegroup, size - 1, ranks + 1, &g5); MPI_Group_union(g5, g4, &g6); MPI_Group_compare(basegroup, g6, &result); if (result != MPI_IDENT) { int usize; errs++; /* See ordering requirements on union */ fprintf(stdout, "Group excl and union did not give ident groups\n"); fprintf(stdout, "[%d] result of compare was %d\n", rank, result); MPI_Group_size(g6, &usize); fprintf(stdout, "Size of union is %d, should be %d\n", usize, size); } MPI_Group_union(basegroup, g4, &g7); MPI_Group_compare(basegroup, g7, &result); if (result != MPI_IDENT) { int usize; errs++; fprintf(stdout, "Group union of overlapping groups failed\n"); fprintf(stdout, "[%d] result of compare was %d\n", rank, result); MPI_Group_size(g7, &usize); fprintf(stdout, "Size of union is %d, should be %d\n", usize, size); } /* Use range_excl instead of ranks */ /* printf ("range excl\n"); fflush(stdout); */ range[0][0] = 1; range[0][1] = size - 1; range[0][2] = 1; MPI_Group_range_excl(basegroup, 1, range, &g8); /* printf("out of range excl\n"); fflush(stdout); */ MPI_Group_compare(g5, g8, &result); /* printf("out of compare\n"); fflush(stdout); */ if (result != MPI_IDENT) { errs++; fprintf(stdout, "Group range excl did not give ident groups\n"); } /* printf("intersection\n"); fflush(stdout); */ MPI_Group_intersection(basegroup, g4, &g9); MPI_Group_compare(g9, g4, &result); if (result != MPI_IDENT) { errs++; fprintf(stdout, "Group intersection did not give ident groups\n"); } /* Exclude EVERYTHING and check against MPI_GROUP_EMPTY */ /* printf("range excl all\n"); fflush(stdout); */ range[0][0] = 0; range[0][1] = size - 1; range[0][2] = 1; MPI_Group_range_excl(basegroup, 1, range, &g10); /* printf("done range excl all\n"); fflush(stdout); */ MPI_Group_compare(g10, MPI_GROUP_EMPTY, &result); /* printf("done compare to MPI_GROUP_EMPTY\n"); fflush(stdout); */ if (result != MPI_IDENT) { errs++; fprintf(stdout, "MPI_GROUP_EMPTY didn't compare against empty group\n"); } /* printf("freeing groups\n"); fflush(stdout); */ MPI_Group_free(&basegroup); MPI_Group_free(&g1); MPI_Group_free(&g2); MPI_Group_free(&g3); MPI_Group_free(&g3a); MPI_Group_free(&g3b); MPI_Group_free(&g4); MPI_Group_free(&g5); MPI_Group_free(&g6); MPI_Group_free(&g7); MPI_Group_free(&g8); MPI_Group_free(&g9); MPI_Group_free(&g10); MPI_Comm_free(&dupcomm); MPI_Comm_free(&splitcomm); MPI_Comm_free(&newcomm); MPI_Allreduce(&errs, &toterr, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD); if (worldrank == 0) { if (toterr == 0) printf(" No Errors\n"); else printf("Found %d errors in MPI Group routines\n", toterr); } MPI_Finalize(); return toterr; } mpi-testsuite-3.2+dfsg/group/groupnullincl.c0000644000175000017500000000373612620254305020566 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" int main(int argc, char *argv[]) { int errs = 0; int rc, result; int ranks[1]; MPI_Group group, outgroup; MPI_Comm comm; MTest_Init(&argc, &argv); /* To improve reporting of problems about operations, we * change the error handler to errors return */ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); while (MTestGetComm(&comm, 1)) { if (comm == MPI_COMM_NULL) continue; MPI_Comm_group(comm, &group); rc = MPI_Group_incl(group, 0, 0, &outgroup); if (rc) { errs++; MTestPrintError(rc); printf("Error in creating an empty group with (0,0)\n"); /* Some MPI implementations may reject a null "ranks" pointer */ rc = MPI_Group_incl(group, 0, ranks, &outgroup); if (rc) { errs++; MTestPrintError(rc); printf("Error in creating an empty group with (0,ranks)\n"); } } if (outgroup != MPI_GROUP_EMPTY) { /* Is the group equivalent to group empty? */ rc = MPI_Group_compare(outgroup, MPI_GROUP_EMPTY, &result); if (result != MPI_IDENT) { errs++; MTestPrintError(rc); printf("Did not create a group equivalent to an empty group\n"); } } rc = MPI_Group_free(&group); if (rc) { errs++; MTestPrintError(rc); } if (outgroup != MPI_GROUP_NULL) { rc = MPI_Group_free(&outgroup); if (rc) { errs++; MTestPrintError(rc); } } MTestFreeComm(&comm); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/group/groupcreate.c0000644000175000017500000000472712620254305020212 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include /* stdlib.h Needed for malloc declaration */ #include int main(int argc, char **argv) { int i, n, n_goal = 2048, n_all, rc, n_ranks, *ranks, rank, size, len; int group_size; MPI_Group *group_array, world_group; char msg[MPI_MAX_ERROR_STRING]; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); n = n_goal; group_array = (MPI_Group *) malloc(n * sizeof(MPI_Group)); MPI_Comm_group(MPI_COMM_WORLD, &world_group); n_ranks = size; ranks = (int *) malloc(size * sizeof(int)); for (i = 0; i < size; i++) ranks[i] = i; MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_RETURN); for (i = 0; i < n; i++) { rc = MPI_Group_incl(world_group, n_ranks, ranks, group_array + i); if (rc) { fprintf(stderr, "Error when creating group number %d\n", i); MPI_Error_string(rc, msg, &len); fprintf(stderr, "%s\n", msg); n = i + 1; break; } else { /* Check that the group was created (and that any errors were * caught) */ rc = MPI_Group_size(group_array[i], &group_size); if (group_size != size) { fprintf(stderr, "Group number %d not correct (size = %d)\n", i, size); n = i + 1; break; } } } for (i = 0; i < n; i++) { rc = MPI_Group_free(group_array + i); if (rc) { fprintf(stderr, "Error when freeing group number %d\n", i); MPI_Error_string(rc, msg, &len); fprintf(stderr, "%s\n", msg); break; } } MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_ARE_FATAL); MPI_Group_free(&world_group); MPI_Reduce(&n, &n_all, 1, MPI_INT, MPI_MIN, 0, MPI_COMM_WORLD); if (rank == 0) { /* printf("Completed test of %d type creations\n", n_all); */ if (n_all != n_goal) { printf("This MPI implementation limits the number of groups that can be created\n\ This is allowed by the standard and is not a bug, but is a limit on the\n\ implementation\n"); } else { printf(" No Errors\n"); } } free(group_array); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/group/gtranksperf.c0000644000175000017500000001057012620254305020211 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2010 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" #include /* for fabs(3) */ /* Measure and compare the relative performance of MPI_Group_translate_ranks * with small and large group2 sizes but a constant number of ranks. This * serves as a performance sanity check for the Scalasca use case where we * translate to MPI_COMM_WORLD ranks. The performance should only depend on the * number of ranks passed, not the size of either group (especially group2). * * This test is probably only meaningful for large-ish process counts, so we may * not be able to run this test by default in the nightlies. */ /* number of iterations used for timing */ #define NUM_LOOPS (1000000) int main(int argc, char *argv[]) { int errs = 0; int *ranks; int *ranksout; MPI_Group gworld, grev, gself; MPI_Comm comm; MPI_Comm commrev; int rank, size, i; double start, end, time1, time2; MTest_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_Comm_size(comm, &size); MPI_Comm_rank(comm, &rank); ranks = malloc(size * sizeof(int)); ranksout = malloc(size * sizeof(int)); if (!ranks || !ranksout) { fprintf(stderr, "out of memory\n"); MPI_Abort(MPI_COMM_WORLD, 1); } /* generate a comm with the rank order reversed */ MPI_Comm_split(comm, 0, (size - rank - 1), &commrev); MPI_Comm_group(commrev, &grev); MPI_Comm_group(MPI_COMM_SELF, &gself); MPI_Comm_group(comm, &gworld); /* sanity check correctness first */ for (i = 0; i < size; i++) { ranks[i] = i; ranksout[i] = -1; } MPI_Group_translate_ranks(grev, size, ranks, gworld, ranksout); for (i = 0; i < size; i++) { if (ranksout[i] != (size - i - 1)) { if (rank == 0) printf("%d: (gworld) expected ranksout[%d]=%d, got %d\n", rank, i, (size - rank - 1), ranksout[i]); ++errs; } } MPI_Group_translate_ranks(grev, size, ranks, gself, ranksout); for (i = 0; i < size; i++) { int expected = (i == (size - rank - 1) ? 0 : MPI_UNDEFINED); if (ranksout[i] != expected) { if (rank == 0) printf("%d: (gself) expected ranksout[%d]=%d, got %d\n", rank, i, expected, ranksout[i]); ++errs; } } /* now compare relative performance */ /* we needs lots of procs to get a group large enough to have meaningful * numbers. On most testing machines this means that we're oversubscribing * cores in a big way, which might perturb the timing results. So we make * sure everyone started up and then everyone but rank 0 goes to sleep to * let rank 0 do all the timings. */ MPI_Barrier(comm); if (rank != 0) { MTestSleep(10); } else { /* rank==0 */ MTestSleep(1); /* try to avoid timing while everyone else is making syscalls */ MPI_Group_translate_ranks(grev, size, ranks, gworld, ranksout); /*throwaway iter */ start = MPI_Wtime(); for (i = 0; i < NUM_LOOPS; ++i) { MPI_Group_translate_ranks(grev, size, ranks, gworld, ranksout); } end = MPI_Wtime(); time1 = end - start; MPI_Group_translate_ranks(grev, size, ranks, gself, ranksout); /*throwaway iter */ start = MPI_Wtime(); for (i = 0; i < NUM_LOOPS; ++i) { MPI_Group_translate_ranks(grev, size, ranks, gself, ranksout); } end = MPI_Wtime(); time2 = end - start; /* complain if the "gworld" time exceeds 2x the "gself" time */ if (fabs(time1 - time2) > (2.00 * time2)) { printf("too much difference in MPI_Group_translate_ranks performance:\n"); printf("time1=%f time2=%f\n", time1, time2); printf("(fabs(time1-time2)/time2)=%f\n", (fabs(time1 - time2) / time2)); if (time1 < time2) { printf("also, (time1&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = impls ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = testlist CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/testlist.in \ $(top_srcdir)/Makefile.mtest README DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist.in static_subdirs = SUBDIRS = $(static_subdirs) $(impldir) DIST_SUBDIRS = $(static_subdirs) mpich hydra all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign impls/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign impls/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): testlist: $(top_builddir)/config.status $(srcdir)/testlist.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic cscopelist-am ctags ctags-am \ distclean distclean-generic distclean-tags distdir dvi dvi-am \ html html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/impls/hydra/0000755000175000017500000000000012621010235016604 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/impls/hydra/Makefile.in0000644000175000017500000004460112621010235020656 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = dummy$(EXEEXT) subdir = impls/hydra ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = proc_binding.sh CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) dummy_SOURCES = dummy.c dummy_OBJECTS = dummy.$(OBJEXT) dummy_LDADD = $(LDADD) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = dummy.c DIST_SOURCES = dummy.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/proc_binding.sh.in \ $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ CLEANFILES = actual.* all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign impls/hydra/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign impls/hydra/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): proc_binding.sh: $(top_builddir)/config.status $(srcdir)/proc_binding.sh.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) dummy$(EXEEXT): $(dummy_OBJECTS) $(dummy_DEPENDENCIES) $(EXTRA_dummy_DEPENDENCIES) @rm -f dummy$(EXEEXT) $(AM_V_CCLD)$(LINK) $(dummy_OBJECTS) $(dummy_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dummy.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile testing: dummy $(builddir)/proc_binding.sh # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/0000755000175000017500000000000012620254305022243 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.socket.board.out0000644000175000017500000000110612620254305030214 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 1 0 1 0 process 1 binding: 0 1 0 1 0 1 0 1 process 2 binding: 1 0 1 0 1 0 1 0 process 3 binding: 0 1 0 1 0 1 0 1 process 4 binding: 1 0 1 0 1 0 1 0 process 5 binding: 0 1 0 1 0 1 0 1 process 6 binding: 1 0 1 0 1 0 1 0 process 7 binding: 0 1 0 1 0 1 0 1 process 8 binding: 1 0 1 0 1 0 1 0 process 9 binding: 0 1 0 1 0 1 0 1 process 10 binding: 1 0 1 0 1 0 1 0 process 11 binding: 0 1 0 1 0 1 0 1 process 12 binding: 1 0 1 0 1 0 1 0 process 13 binding: 0 1 0 1 0 1 0 1 process 14 binding: 1 0 1 0 1 0 1 0 process 15 binding: 0 1 0 1 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.core-2.socket.out0000644000175000017500000000150612620254305030216 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 2 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 3 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 5 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 6 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 7 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 9 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 10 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 11 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 13 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 14 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.numa.core-4.out0000644000175000017500000000150612620254305027670 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread-4.core.out0000644000175000017500000000150612620254305030536 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 1 binding: 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 process 2 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 3 binding: 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 process 4 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 5 binding: 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 process 6 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 7 binding: 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 process 8 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 9 binding: 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 process 10 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 11 binding: 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 process 12 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 13 binding: 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 process 14 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 15 binding: 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.board.hwthread-8.out0000644000175000017500000000110612620254305030676 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.board.socket.out0000644000175000017500000000110612620254305030213 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread.socket.out0000644000175000017500000000110612620254305030732 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 0 1 0 0 0 0 0 process 2 binding: 0 0 0 0 1 0 0 0 process 3 binding: 0 0 0 0 0 0 1 0 process 4 binding: 0 1 0 0 0 0 0 0 process 5 binding: 0 0 0 1 0 0 0 0 process 6 binding: 0 0 0 0 0 1 0 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 0 1 0 0 0 0 0 process 10 binding: 0 0 0 0 1 0 0 0 process 11 binding: 0 0 0 0 0 0 1 0 process 12 binding: 0 1 0 0 0 0 0 0 process 13 binding: 0 0 0 1 0 0 0 0 process 14 binding: 0 0 0 0 0 1 0 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread-2.hwthread-4.out0000644000175000017500000000150612620254305031553 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 1 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 2 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 3 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 4 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 5 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 6 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 7 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 9 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 10 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 11 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 12 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 13 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 14 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 15 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread-8.core.out0000644000175000017500000000150612620254305030542 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 process 2 binding: 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 process 3 binding: 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 process 4 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 5 binding: 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 process 6 binding: 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 process 7 binding: 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 process 8 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 9 binding: 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 process 10 binding: 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 process 11 binding: 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 process 12 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 13 binding: 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 process 14 binding: 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 process 15 binding: 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.board.numa.out0000644000175000017500000000150612620254305027666 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.board.core.out0000644000175000017500000000150612620254305027656 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread-8.core-2.out0000644000175000017500000000110612620254305030677 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread-8.core-2.out0000644000175000017500000000110612620254305030676 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.core-2.hwthread.out0000644000175000017500000000110612620254305030531 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 1 1 0 0 0 0 0 process 2 binding: 0 0 1 1 0 0 0 0 process 3 binding: 0 0 0 1 1 0 0 0 process 4 binding: 0 0 0 0 1 1 0 0 process 5 binding: 0 0 0 0 0 1 1 0 process 6 binding: 0 0 0 0 0 0 1 1 process 7 binding: 1 0 0 0 0 0 0 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 1 1 0 0 0 0 0 process 10 binding: 0 0 1 1 0 0 0 0 process 11 binding: 0 0 0 1 1 0 0 0 process 12 binding: 0 0 0 0 1 1 0 0 process 13 binding: 0 0 0 0 0 1 1 0 process 14 binding: 0 0 0 0 0 0 1 1 process 15 binding: 1 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.board.hwthread-8.out0000644000175000017500000000110612620254305030674 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread.core.out0000644000175000017500000000150612620254305030375 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 process 1 binding: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 process 2 binding: 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 process 3 binding: 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 process 4 binding: 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 process 5 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 process 6 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 process 7 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 process 8 binding: 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 9 binding: 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 10 binding: 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 process 11 binding: 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 process 12 binding: 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 process 13 binding: 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 process 14 binding: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 process 15 binding: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.core.socket.out0000644000175000017500000000110612620254305030055 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 1 0 0 0 0 0 0 process 2 binding: 0 0 1 0 0 0 0 0 process 3 binding: 0 0 0 1 0 0 0 0 process 4 binding: 0 0 0 0 1 0 0 0 process 5 binding: 0 0 0 0 0 1 0 0 process 6 binding: 0 0 0 0 0 0 1 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 1 0 0 0 0 0 0 process 10 binding: 0 0 1 0 0 0 0 0 process 11 binding: 0 0 0 1 0 0 0 0 process 12 binding: 0 0 0 0 1 0 0 0 process 13 binding: 0 0 0 0 0 1 0 0 process 14 binding: 0 0 0 0 0 0 1 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread-8.hwthread-4.out0000644000175000017500000000150612620254305031561 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 process 2 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 3 binding: 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 process 4 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 5 binding: 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 process 6 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 7 binding: 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 process 8 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 9 binding: 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 process 10 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 11 binding: 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 process 12 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 13 binding: 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 process 14 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 15 binding: 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread-2.hwthread-2.out0000644000175000017500000000150612620254305031551 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 1 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 2 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 3 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 4 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 5 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 6 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 7 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 9 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 10 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 11 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 12 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 13 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 14 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 15 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread-2.core-2.out0000644000175000017500000000150612620254305030673 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 1 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 2 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 3 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 4 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 5 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 6 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 7 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 9 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 10 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 11 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 12 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 13 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 14 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 15 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.core.hwthread-8.out0000644000175000017500000000110612620254305030535 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.numa.board.out0000644000175000017500000000110612620254305027661 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread-4.hwthread-2.out0000644000175000017500000000150612620254305031553 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 1 binding: 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 process 2 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 3 binding: 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 process 4 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 5 binding: 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 process 6 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 7 binding: 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 process 8 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 9 binding: 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 process 10 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 11 binding: 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 process 12 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 13 binding: 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 process 14 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 15 binding: 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.core-4.core-2.out0000644000175000017500000000110612620254305030015 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 1 0 1 0 process 1 binding: 0 1 0 1 1 0 1 0 process 2 binding: 0 1 0 1 0 1 0 1 process 3 binding: 1 0 1 0 0 1 0 1 process 4 binding: 1 0 1 0 1 0 1 0 process 5 binding: 0 1 0 1 1 0 1 0 process 6 binding: 0 1 0 1 0 1 0 1 process 7 binding: 1 0 1 0 0 1 0 1 process 8 binding: 1 0 1 0 1 0 1 0 process 9 binding: 0 1 0 1 1 0 1 0 process 10 binding: 0 1 0 1 0 1 0 1 process 11 binding: 1 0 1 0 0 1 0 1 process 12 binding: 1 0 1 0 1 0 1 0 process 13 binding: 0 1 0 1 1 0 1 0 process 14 binding: 0 1 0 1 0 1 0 1 process 15 binding: 1 0 1 0 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread.core-2.out0000644000175000017500000000110612620254305030532 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 0 0 0 process 2 binding: 0 1 0 0 0 0 0 0 process 3 binding: 0 0 0 0 0 1 0 0 process 4 binding: 0 0 1 0 0 0 0 0 process 5 binding: 0 0 0 0 0 0 1 0 process 6 binding: 0 0 0 1 0 0 0 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 0 0 0 1 0 0 0 process 10 binding: 0 1 0 0 0 0 0 0 process 11 binding: 0 0 0 0 0 1 0 0 process 12 binding: 0 0 1 0 0 0 0 0 process 13 binding: 0 0 0 0 0 0 1 0 process 14 binding: 0 0 0 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.core-4.hwthread-8.out0000644000175000017500000000110612620254305030701 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 1 0 1 0 process 1 binding: 0 1 0 1 0 1 0 1 process 2 binding: 1 0 1 0 1 0 1 0 process 3 binding: 0 1 0 1 0 1 0 1 process 4 binding: 1 0 1 0 1 0 1 0 process 5 binding: 0 1 0 1 0 1 0 1 process 6 binding: 1 0 1 0 1 0 1 0 process 7 binding: 0 1 0 1 0 1 0 1 process 8 binding: 1 0 1 0 1 0 1 0 process 9 binding: 0 1 0 1 0 1 0 1 process 10 binding: 1 0 1 0 1 0 1 0 process 11 binding: 0 1 0 1 0 1 0 1 process 12 binding: 1 0 1 0 1 0 1 0 process 13 binding: 0 1 0 1 0 1 0 1 process 14 binding: 1 0 1 0 1 0 1 0 process 15 binding: 0 1 0 1 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread-8.hwthread-8.out0000644000175000017500000000110612620254305031562 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread-8.hwthread-4.out0000644000175000017500000000110612620254305031556 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.socket.socket.out0000644000175000017500000000110612620254305030414 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.board.numa.out0000644000175000017500000000110612620254305027663 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.board.hwthread-4.out0000644000175000017500000000110612620254305030673 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread.hwthread-2.out0000644000175000017500000000110612620254305031407 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 0 1 0 0 0 0 0 process 2 binding: 0 0 0 0 1 0 0 0 process 3 binding: 0 0 0 0 0 0 1 0 process 4 binding: 0 1 0 0 0 0 0 0 process 5 binding: 0 0 0 1 0 0 0 0 process 6 binding: 0 0 0 0 0 1 0 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 0 1 0 0 0 0 0 process 10 binding: 0 0 0 0 1 0 0 0 process 11 binding: 0 0 0 0 0 0 1 0 process 12 binding: 0 1 0 0 0 0 0 0 process 13 binding: 0 0 0 1 0 0 0 0 process 14 binding: 0 0 0 0 0 1 0 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread-8.core.out0000644000175000017500000000110612620254305030540 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.numa.hwthread-4.out0000644000175000017500000000110612620254305030544 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread-4.core-2.out0000644000175000017500000000110612620254305030670 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.core-4.hwthread.out0000644000175000017500000000110612620254305030533 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 1 1 1 1 0 0 0 process 2 binding: 0 0 1 1 1 1 0 0 process 3 binding: 0 0 0 1 1 1 1 0 process 4 binding: 0 0 0 0 1 1 1 1 process 5 binding: 1 0 0 0 0 1 1 1 process 6 binding: 1 1 0 0 0 0 1 1 process 7 binding: 1 1 1 0 0 0 0 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 1 1 1 1 0 0 0 process 10 binding: 0 0 1 1 1 1 0 0 process 11 binding: 0 0 0 1 1 1 1 0 process 12 binding: 0 0 0 0 1 1 1 1 process 13 binding: 1 0 0 0 0 1 1 1 process 14 binding: 1 1 0 0 0 0 1 1 process 15 binding: 1 1 1 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.board.hwthread.out0000644000175000017500000000110612620254305030532 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread-8.hwthread-8.out0000644000175000017500000000110612620254305031563 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread.hwthread-2.out0000644000175000017500000000110612620254305031410 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 0 0 0 process 2 binding: 0 1 0 0 0 0 0 0 process 3 binding: 0 0 0 0 0 1 0 0 process 4 binding: 0 0 1 0 0 0 0 0 process 5 binding: 0 0 0 0 0 0 1 0 process 6 binding: 0 0 0 1 0 0 0 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 0 0 0 1 0 0 0 process 10 binding: 0 1 0 0 0 0 0 0 process 11 binding: 0 0 0 0 0 1 0 0 process 12 binding: 0 0 1 0 0 0 0 0 process 13 binding: 0 0 0 0 0 0 1 0 process 14 binding: 0 0 0 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.board.board.out0000644000175000017500000000110612620254305030013 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread.core-4.out0000644000175000017500000000110612620254305030534 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 1 0 0 0 0 0 0 process 2 binding: 0 0 1 0 0 0 0 0 process 3 binding: 0 0 0 1 0 0 0 0 process 4 binding: 0 0 0 0 1 0 0 0 process 5 binding: 0 0 0 0 0 1 0 0 process 6 binding: 0 0 0 0 0 0 1 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 1 0 0 0 0 0 0 process 10 binding: 0 0 1 0 0 0 0 0 process 11 binding: 0 0 0 1 0 0 0 0 process 12 binding: 0 0 0 0 1 0 0 0 process 13 binding: 0 0 0 0 0 1 0 0 process 14 binding: 0 0 0 0 0 0 1 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread-4.socket.out0000644000175000017500000000110612620254305031073 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 0 1 1 1 1 0 0 process 2 binding: 0 0 0 0 1 1 1 1 process 3 binding: 1 1 0 0 0 0 1 1 process 4 binding: 1 1 1 1 0 0 0 0 process 5 binding: 0 0 1 1 1 1 0 0 process 6 binding: 0 0 0 0 1 1 1 1 process 7 binding: 1 1 0 0 0 0 1 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 0 1 1 1 1 0 0 process 10 binding: 0 0 0 0 1 1 1 1 process 11 binding: 1 1 0 0 0 0 1 1 process 12 binding: 1 1 1 1 0 0 0 0 process 13 binding: 0 0 1 1 1 1 0 0 process 14 binding: 0 0 0 0 1 1 1 1 process 15 binding: 1 1 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread.core.out0000644000175000017500000000110612620254305030373 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 0 1 0 0 0 0 0 process 2 binding: 0 0 0 0 1 0 0 0 process 3 binding: 0 0 0 0 0 0 1 0 process 4 binding: 0 1 0 0 0 0 0 0 process 5 binding: 0 0 0 1 0 0 0 0 process 6 binding: 0 0 0 0 0 1 0 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 0 1 0 0 0 0 0 process 10 binding: 0 0 0 0 1 0 0 0 process 11 binding: 0 0 0 0 0 0 1 0 process 12 binding: 0 1 0 0 0 0 0 0 process 13 binding: 0 0 0 1 0 0 0 0 process 14 binding: 0 0 0 0 0 1 0 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.core-2.core-4.out0000644000175000017500000000110612620254305030012 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/topo2.xml0000644000175000017500000004341112620254305024033 0ustar mbanckmbanck mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread-4.core.out0000644000175000017500000000110612620254305030533 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 1 1 1 1 0 0 0 process 2 binding: 0 0 1 1 1 1 0 0 process 3 binding: 0 0 0 1 1 1 1 0 process 4 binding: 0 0 0 0 1 1 1 1 process 5 binding: 1 0 0 0 0 1 1 1 process 6 binding: 1 1 0 0 0 0 1 1 process 7 binding: 1 1 1 0 0 0 0 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 1 1 1 1 0 0 0 process 10 binding: 0 0 1 1 1 1 0 0 process 11 binding: 0 0 0 1 1 1 1 0 process 12 binding: 0 0 0 0 1 1 1 1 process 13 binding: 1 0 0 0 0 1 1 1 process 14 binding: 1 1 0 0 0 0 1 1 process 15 binding: 1 1 1 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread-8.numa.out0000644000175000017500000000110612620254305030545 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread-2.numa.out0000644000175000017500000000110612620254305030541 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.socket.hwthread-2.out0000644000175000017500000000110612620254305031071 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread.socket.out0000644000175000017500000000150612620254305030735 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 process 2 binding: 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 3 binding: 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 process 4 binding: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 process 5 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 process 6 binding: 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 7 binding: 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 process 8 binding: 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 process 9 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 process 10 binding: 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 process 11 binding: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 process 12 binding: 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 process 13 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 process 14 binding: 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread-4.hwthread-8.out0000644000175000017500000000110612620254305031556 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.core-2.core.out0000644000175000017500000000110612620254305027654 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 0 0 0 0 process 1 binding: 0 0 1 0 1 0 0 0 process 2 binding: 0 0 0 0 1 0 1 0 process 3 binding: 0 1 0 0 0 0 1 0 process 4 binding: 0 1 0 1 0 0 0 0 process 5 binding: 0 0 0 1 0 1 0 0 process 6 binding: 0 0 0 0 0 1 0 1 process 7 binding: 1 0 0 0 0 0 0 1 process 8 binding: 1 0 1 0 0 0 0 0 process 9 binding: 0 0 1 0 1 0 0 0 process 10 binding: 0 0 0 0 1 0 1 0 process 11 binding: 0 1 0 0 0 0 1 0 process 12 binding: 0 1 0 1 0 0 0 0 process 13 binding: 0 0 0 1 0 1 0 0 process 14 binding: 0 0 0 0 0 1 0 1 process 15 binding: 1 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.core-4.numa.out0000644000175000017500000000150612620254305027670 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.core-4.socket.out0000644000175000017500000000150612620254305030220 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread.core-2.out0000644000175000017500000000110612620254305030531 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 0 1 0 0 0 0 0 process 2 binding: 0 0 0 0 1 0 0 0 process 3 binding: 0 0 0 0 0 0 1 0 process 4 binding: 0 1 0 0 0 0 0 0 process 5 binding: 0 0 0 1 0 0 0 0 process 6 binding: 0 0 0 0 0 1 0 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 0 1 0 0 0 0 0 process 10 binding: 0 0 0 0 1 0 0 0 process 11 binding: 0 0 0 0 0 0 1 0 process 12 binding: 0 1 0 0 0 0 0 0 process 13 binding: 0 0 0 1 0 0 0 0 process 14 binding: 0 0 0 0 0 1 0 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.numa.hwthread-8.out0000644000175000017500000000110612620254305030545 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.socket.hwthread-4.out0000644000175000017500000000110612620254305031071 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.core-4.core-4.out0000644000175000017500000000150612620254305030021 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.core-4.core-4.out0000644000175000017500000000110612620254305030017 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 1 0 1 0 process 1 binding: 0 1 0 1 0 1 0 1 process 2 binding: 1 0 1 0 1 0 1 0 process 3 binding: 0 1 0 1 0 1 0 1 process 4 binding: 1 0 1 0 1 0 1 0 process 5 binding: 0 1 0 1 0 1 0 1 process 6 binding: 1 0 1 0 1 0 1 0 process 7 binding: 0 1 0 1 0 1 0 1 process 8 binding: 1 0 1 0 1 0 1 0 process 9 binding: 0 1 0 1 0 1 0 1 process 10 binding: 1 0 1 0 1 0 1 0 process 11 binding: 0 1 0 1 0 1 0 1 process 12 binding: 1 0 1 0 1 0 1 0 process 13 binding: 0 1 0 1 0 1 0 1 process 14 binding: 1 0 1 0 1 0 1 0 process 15 binding: 0 1 0 1 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread-4.numa.out0000644000175000017500000000150612620254305030546 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 2 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 3 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 5 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 6 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 7 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 9 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 10 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 11 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 13 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 14 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread.numa.out0000644000175000017500000000110612620254305030400 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 1 0 0 0 0 0 0 process 2 binding: 0 0 1 0 0 0 0 0 process 3 binding: 0 0 0 1 0 0 0 0 process 4 binding: 0 0 0 0 1 0 0 0 process 5 binding: 0 0 0 0 0 1 0 0 process 6 binding: 0 0 0 0 0 0 1 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 1 0 0 0 0 0 0 process 10 binding: 0 0 1 0 0 0 0 0 process 11 binding: 0 0 0 1 0 0 0 0 process 12 binding: 0 0 0 0 1 0 0 0 process 13 binding: 0 0 0 0 0 1 0 0 process 14 binding: 0 0 0 0 0 0 1 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread-2.hwthread-4.out0000644000175000017500000000110612620254305031546 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 1 0 0 process 2 binding: 0 0 1 1 0 0 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 0 0 1 1 0 0 process 6 binding: 0 0 1 1 0 0 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 0 0 1 1 0 0 process 10 binding: 0 0 1 1 0 0 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 0 0 1 1 0 0 process 14 binding: 0 0 1 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.numa.hwthread.out0000644000175000017500000000110612620254305030403 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.core-4.board.out0000644000175000017500000000110612620254305030014 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.core-2.socket.out0000644000175000017500000000110612620254305030211 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread.core-4.out0000644000175000017500000000110612620254305030531 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 1 0 0 0 0 0 0 process 2 binding: 0 0 1 0 0 0 0 0 process 3 binding: 0 0 0 1 0 0 0 0 process 4 binding: 0 0 0 0 1 0 0 0 process 5 binding: 0 0 0 0 0 1 0 0 process 6 binding: 0 0 0 0 0 0 1 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 1 0 0 0 0 0 0 process 10 binding: 0 0 1 0 0 0 0 0 process 11 binding: 0 0 0 1 0 0 0 0 process 12 binding: 0 0 0 0 1 0 0 0 process 13 binding: 0 0 0 0 0 1 0 0 process 14 binding: 0 0 0 0 0 0 1 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread-8.hwthread-2.out0000644000175000017500000000110612620254305031552 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread-4.socket.out0000644000175000017500000000110612620254305031071 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.core-2.hwthread-4.out0000644000175000017500000000110612620254305030670 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread.hwthread.out0000644000175000017500000000110612620254305031250 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 1 0 0 0 0 0 0 process 2 binding: 0 0 1 0 0 0 0 0 process 3 binding: 0 0 0 1 0 0 0 0 process 4 binding: 0 0 0 0 1 0 0 0 process 5 binding: 0 0 0 0 0 1 0 0 process 6 binding: 0 0 0 0 0 0 1 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 1 0 0 0 0 0 0 process 10 binding: 0 0 1 0 0 0 0 0 process 11 binding: 0 0 0 1 0 0 0 0 process 12 binding: 0 0 0 0 1 0 0 0 process 13 binding: 0 0 0 0 0 1 0 0 process 14 binding: 0 0 0 0 0 0 1 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/topo1.xml0000644000175000017500000002030312620254305024025 0ustar mbanckmbanck mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.board.hwthread-4.out0000644000175000017500000000110612620254305030672 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.core-2.hwthread-8.out0000644000175000017500000000110612620254305030676 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.board.core-2.out0000644000175000017500000000110612620254305030010 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread-8.hwthread-2.out0000644000175000017500000000110612620254305031554 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.core-4.hwthread-8.out0000644000175000017500000000150612620254305030703 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread-8.core.out0000644000175000017500000000110612620254305030535 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread-2.hwthread.out0000644000175000017500000000110612620254305031407 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 1 1 0 0 0 0 0 process 2 binding: 0 0 1 1 0 0 0 0 process 3 binding: 0 0 0 1 1 0 0 0 process 4 binding: 0 0 0 0 1 1 0 0 process 5 binding: 0 0 0 0 0 1 1 0 process 6 binding: 0 0 0 0 0 0 1 1 process 7 binding: 1 0 0 0 0 0 0 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 1 1 0 0 0 0 0 process 10 binding: 0 0 1 1 0 0 0 0 process 11 binding: 0 0 0 1 1 0 0 0 process 12 binding: 0 0 0 0 1 1 0 0 process 13 binding: 0 0 0 0 0 1 1 0 process 14 binding: 0 0 0 0 0 0 1 1 process 15 binding: 1 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.board.core-4.out0000644000175000017500000000110612620254305030014 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.core-4.core-4.out0000644000175000017500000000110612620254305030016 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.core-2.core-4.out0000644000175000017500000000110612620254305030015 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 0 0 0 0 process 1 binding: 0 1 0 1 0 0 0 0 process 2 binding: 0 0 0 0 1 0 1 0 process 3 binding: 0 0 0 0 0 1 0 1 process 4 binding: 1 0 1 0 0 0 0 0 process 5 binding: 0 1 0 1 0 0 0 0 process 6 binding: 0 0 0 0 1 0 1 0 process 7 binding: 0 0 0 0 0 1 0 1 process 8 binding: 1 0 1 0 0 0 0 0 process 9 binding: 0 1 0 1 0 0 0 0 process 10 binding: 0 0 0 0 1 0 1 0 process 11 binding: 0 0 0 0 0 1 0 1 process 12 binding: 1 0 1 0 0 0 0 0 process 13 binding: 0 1 0 1 0 0 0 0 process 14 binding: 0 0 0 0 1 0 1 0 process 15 binding: 0 0 0 0 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.numa.core-2.out0000644000175000017500000000110612620254305027661 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.core-2.core.out0000644000175000017500000000110612620254305027653 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 1 1 0 0 0 0 0 process 2 binding: 0 0 1 1 0 0 0 0 process 3 binding: 0 0 0 1 1 0 0 0 process 4 binding: 0 0 0 0 1 1 0 0 process 5 binding: 0 0 0 0 0 1 1 0 process 6 binding: 0 0 0 0 0 0 1 1 process 7 binding: 1 0 0 0 0 0 0 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 1 1 0 0 0 0 0 process 10 binding: 0 0 1 1 0 0 0 0 process 11 binding: 0 0 0 1 1 0 0 0 process 12 binding: 0 0 0 0 1 1 0 0 process 13 binding: 0 0 0 0 0 1 1 0 process 14 binding: 0 0 0 0 0 0 1 1 process 15 binding: 1 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.core-4.core-2.out0000644000175000017500000000110612620254305030014 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 0 1 1 1 1 0 0 process 2 binding: 0 0 0 0 1 1 1 1 process 3 binding: 1 1 0 0 0 0 1 1 process 4 binding: 1 1 1 1 0 0 0 0 process 5 binding: 0 0 1 1 1 1 0 0 process 6 binding: 0 0 0 0 1 1 1 1 process 7 binding: 1 1 0 0 0 0 1 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 0 1 1 1 1 0 0 process 10 binding: 0 0 0 0 1 1 1 1 process 11 binding: 1 1 0 0 0 0 1 1 process 12 binding: 1 1 1 1 0 0 0 0 process 13 binding: 0 0 1 1 1 1 0 0 process 14 binding: 0 0 0 0 1 1 1 1 process 15 binding: 1 1 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.core-2.hwthread-8.out0000644000175000017500000000110612620254305030677 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 0 0 0 0 process 1 binding: 0 0 0 0 1 0 1 0 process 2 binding: 0 1 0 1 0 0 0 0 process 3 binding: 0 0 0 0 0 1 0 1 process 4 binding: 1 0 1 0 0 0 0 0 process 5 binding: 0 0 0 0 1 0 1 0 process 6 binding: 0 1 0 1 0 0 0 0 process 7 binding: 0 0 0 0 0 1 0 1 process 8 binding: 1 0 1 0 0 0 0 0 process 9 binding: 0 0 0 0 1 0 1 0 process 10 binding: 0 1 0 1 0 0 0 0 process 11 binding: 0 0 0 0 0 1 0 1 process 12 binding: 1 0 1 0 0 0 0 0 process 13 binding: 0 0 0 0 1 0 1 0 process 14 binding: 0 1 0 1 0 0 0 0 process 15 binding: 0 0 0 0 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread-4.board.out0000644000175000017500000000110612620254305030670 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread.hwthread-8.out0000644000175000017500000000110612620254305031413 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 1 0 0 0 0 0 0 process 2 binding: 0 0 1 0 0 0 0 0 process 3 binding: 0 0 0 1 0 0 0 0 process 4 binding: 0 0 0 0 1 0 0 0 process 5 binding: 0 0 0 0 0 1 0 0 process 6 binding: 0 0 0 0 0 0 1 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 1 0 0 0 0 0 0 process 10 binding: 0 0 1 0 0 0 0 0 process 11 binding: 0 0 0 1 0 0 0 0 process 12 binding: 0 0 0 0 1 0 0 0 process 13 binding: 0 0 0 0 0 1 0 0 process 14 binding: 0 0 0 0 0 0 1 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.socket.hwthread-2.out0000644000175000017500000000110612620254305031067 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.core-2.numa.out0000644000175000017500000000110612620254305027663 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.numa.hwthread-4.out0000644000175000017500000000110612620254305030541 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.core.board.out0000644000175000017500000000110612620254305027653 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 1 0 0 0 0 0 0 process 2 binding: 0 0 1 0 0 0 0 0 process 3 binding: 0 0 0 1 0 0 0 0 process 4 binding: 0 0 0 0 1 0 0 0 process 5 binding: 0 0 0 0 0 1 0 0 process 6 binding: 0 0 0 0 0 0 1 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 1 0 0 0 0 0 0 process 10 binding: 0 0 1 0 0 0 0 0 process 11 binding: 0 0 0 1 0 0 0 0 process 12 binding: 0 0 0 0 1 0 0 0 process 13 binding: 0 0 0 0 0 1 0 0 process 14 binding: 0 0 0 0 0 0 1 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.numa.core.out0000644000175000017500000000110612620254305027522 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.core-2.board.out0000644000175000017500000000110612620254305030010 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.numa.hwthread-4.out0000644000175000017500000000150612620254305030546 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 3 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 5 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 7 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 9 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 11 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 13 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 15 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread-2.board.out0000644000175000017500000000110612620254305030666 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread-2.hwthread-8.out0000644000175000017500000000110612620254305031554 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread-4.hwthread-4.out0000644000175000017500000000110612620254305031552 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread-2.socket.out0000644000175000017500000000150612620254305031074 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 2 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 3 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 4 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 5 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 6 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 7 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 9 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 10 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 11 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 12 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 13 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 14 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread-8.hwthread-8.out0000644000175000017500000000110612620254305031560 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.core.socket.out0000644000175000017500000000150612620254305030057 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 2 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 3 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 4 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 5 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 6 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 7 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 9 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 10 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 11 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 12 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 13 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 14 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.core.hwthread-8.out0000644000175000017500000000150612620254305030542 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 2 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 3 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 4 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 5 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 6 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 7 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 9 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 10 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 11 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 12 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 13 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 14 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.core-4.hwthread-8.out0000644000175000017500000000110612620254305030676 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.core-4.hwthread-2.out0000644000175000017500000000110612620254305030673 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 1 0 1 0 process 1 binding: 0 1 0 1 1 0 1 0 process 2 binding: 0 1 0 1 0 1 0 1 process 3 binding: 1 0 1 0 0 1 0 1 process 4 binding: 1 0 1 0 1 0 1 0 process 5 binding: 0 1 0 1 1 0 1 0 process 6 binding: 0 1 0 1 0 1 0 1 process 7 binding: 1 0 1 0 0 1 0 1 process 8 binding: 1 0 1 0 1 0 1 0 process 9 binding: 0 1 0 1 1 0 1 0 process 10 binding: 0 1 0 1 0 1 0 1 process 11 binding: 1 0 1 0 0 1 0 1 process 12 binding: 1 0 1 0 1 0 1 0 process 13 binding: 0 1 0 1 1 0 1 0 process 14 binding: 0 1 0 1 0 1 0 1 process 15 binding: 1 0 1 0 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread.hwthread.out0000644000175000017500000000110612620254305031251 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 0 1 0 0 0 0 0 process 2 binding: 0 0 0 0 1 0 0 0 process 3 binding: 0 0 0 0 0 0 1 0 process 4 binding: 0 1 0 0 0 0 0 0 process 5 binding: 0 0 0 1 0 0 0 0 process 6 binding: 0 0 0 0 0 1 0 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 0 1 0 0 0 0 0 process 10 binding: 0 0 0 0 1 0 0 0 process 11 binding: 0 0 0 0 0 0 1 0 process 12 binding: 0 1 0 0 0 0 0 0 process 13 binding: 0 0 0 1 0 0 0 0 process 14 binding: 0 0 0 0 0 1 0 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread-2.core-2.out0000644000175000017500000000110612620254305030670 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.core.core.out0000644000175000017500000000110612620254305027512 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.core.hwthread-8.out0000644000175000017500000000110612620254305030537 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 1 0 0 0 0 0 0 process 2 binding: 0 0 1 0 0 0 0 0 process 3 binding: 0 0 0 1 0 0 0 0 process 4 binding: 0 0 0 0 1 0 0 0 process 5 binding: 0 0 0 0 0 1 0 0 process 6 binding: 0 0 0 0 0 0 1 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 1 0 0 0 0 0 0 process 10 binding: 0 0 1 0 0 0 0 0 process 11 binding: 0 0 0 1 0 0 0 0 process 12 binding: 0 0 0 0 1 0 0 0 process 13 binding: 0 0 0 0 0 1 0 0 process 14 binding: 0 0 0 0 0 0 1 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread-4.numa.out0000644000175000017500000000110612620254305030541 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.core.hwthread-4.out0000644000175000017500000000110612620254305030533 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 0 0 0 process 2 binding: 0 1 0 0 0 0 0 0 process 3 binding: 0 0 0 0 0 1 0 0 process 4 binding: 0 0 1 0 0 0 0 0 process 5 binding: 0 0 0 0 0 0 1 0 process 6 binding: 0 0 0 1 0 0 0 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 0 0 0 1 0 0 0 process 10 binding: 0 1 0 0 0 0 0 0 process 11 binding: 0 0 0 0 0 1 0 0 process 12 binding: 0 0 1 0 0 0 0 0 process 13 binding: 0 0 0 0 0 0 1 0 process 14 binding: 0 0 0 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.core.core.out0000644000175000017500000000110612620254305027515 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 0 1 0 0 0 0 0 process 2 binding: 0 0 0 0 1 0 0 0 process 3 binding: 0 0 0 0 0 0 1 0 process 4 binding: 0 1 0 0 0 0 0 0 process 5 binding: 0 0 0 1 0 0 0 0 process 6 binding: 0 0 0 0 0 1 0 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 0 1 0 0 0 0 0 process 10 binding: 0 0 0 0 1 0 0 0 process 11 binding: 0 0 0 0 0 0 1 0 process 12 binding: 0 1 0 0 0 0 0 0 process 13 binding: 0 0 0 1 0 0 0 0 process 14 binding: 0 0 0 0 0 1 0 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread-8.hwthread.out0000644000175000017500000000110612620254305031413 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread.core-4.out0000644000175000017500000000110612620254305030533 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 0 0 0 process 2 binding: 0 1 0 0 0 0 0 0 process 3 binding: 0 0 0 0 0 1 0 0 process 4 binding: 0 0 1 0 0 0 0 0 process 5 binding: 0 0 0 0 0 0 1 0 process 6 binding: 0 0 0 1 0 0 0 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 0 0 0 1 0 0 0 process 10 binding: 0 1 0 0 0 0 0 0 process 11 binding: 0 0 0 0 0 1 0 0 process 12 binding: 0 0 1 0 0 0 0 0 process 13 binding: 0 0 0 0 0 0 1 0 process 14 binding: 0 0 0 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.core-4.board.out0000644000175000017500000000110612620254305030015 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 1 0 1 0 process 1 binding: 0 1 0 1 0 1 0 1 process 2 binding: 1 0 1 0 1 0 1 0 process 3 binding: 0 1 0 1 0 1 0 1 process 4 binding: 1 0 1 0 1 0 1 0 process 5 binding: 0 1 0 1 0 1 0 1 process 6 binding: 1 0 1 0 1 0 1 0 process 7 binding: 0 1 0 1 0 1 0 1 process 8 binding: 1 0 1 0 1 0 1 0 process 9 binding: 0 1 0 1 0 1 0 1 process 10 binding: 1 0 1 0 1 0 1 0 process 11 binding: 0 1 0 1 0 1 0 1 process 12 binding: 1 0 1 0 1 0 1 0 process 13 binding: 0 1 0 1 0 1 0 1 process 14 binding: 1 0 1 0 1 0 1 0 process 15 binding: 0 1 0 1 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.numa.board.out0000644000175000017500000000110612620254305027663 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread-2.numa.out0000644000175000017500000000110612620254305030542 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 0 0 0 0 process 1 binding: 0 0 0 0 1 0 1 0 process 2 binding: 0 1 0 1 0 0 0 0 process 3 binding: 0 0 0 0 0 1 0 1 process 4 binding: 1 0 1 0 0 0 0 0 process 5 binding: 0 0 0 0 1 0 1 0 process 6 binding: 0 1 0 1 0 0 0 0 process 7 binding: 0 0 0 0 0 1 0 1 process 8 binding: 1 0 1 0 0 0 0 0 process 9 binding: 0 0 0 0 1 0 1 0 process 10 binding: 0 1 0 1 0 0 0 0 process 11 binding: 0 0 0 0 0 1 0 1 process 12 binding: 1 0 1 0 0 0 0 0 process 13 binding: 0 0 0 0 1 0 1 0 process 14 binding: 0 1 0 1 0 0 0 0 process 15 binding: 0 0 0 0 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.core.core-2.out0000644000175000017500000000110612620254305027654 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 0 0 0 process 2 binding: 0 1 0 0 0 0 0 0 process 3 binding: 0 0 0 0 0 1 0 0 process 4 binding: 0 0 1 0 0 0 0 0 process 5 binding: 0 0 0 0 0 0 1 0 process 6 binding: 0 0 0 1 0 0 0 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 0 0 0 1 0 0 0 process 10 binding: 0 1 0 0 0 0 0 0 process 11 binding: 0 0 0 0 0 1 0 0 process 12 binding: 0 0 1 0 0 0 0 0 process 13 binding: 0 0 0 0 0 0 1 0 process 14 binding: 0 0 0 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread-2.core.out0000644000175000017500000000110612620254305030527 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.socket.hwthread-2.out0000644000175000017500000000110612620254305031072 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 1 0 1 0 process 1 binding: 1 0 1 0 1 0 1 0 process 2 binding: 0 1 0 1 0 1 0 1 process 3 binding: 0 1 0 1 0 1 0 1 process 4 binding: 1 0 1 0 1 0 1 0 process 5 binding: 1 0 1 0 1 0 1 0 process 6 binding: 0 1 0 1 0 1 0 1 process 7 binding: 0 1 0 1 0 1 0 1 process 8 binding: 1 0 1 0 1 0 1 0 process 9 binding: 1 0 1 0 1 0 1 0 process 10 binding: 0 1 0 1 0 1 0 1 process 11 binding: 0 1 0 1 0 1 0 1 process 12 binding: 1 0 1 0 1 0 1 0 process 13 binding: 1 0 1 0 1 0 1 0 process 14 binding: 0 1 0 1 0 1 0 1 process 15 binding: 0 1 0 1 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.numa.hwthread-8.out0000644000175000017500000000110612620254305030550 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.core.hwthread-4.out0000644000175000017500000000150612620254305030536 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 1 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 2 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 3 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 4 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 5 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 6 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 7 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 9 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 10 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 11 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 12 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 13 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 14 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 15 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread.hwthread-4.out0000644000175000017500000000110612620254305031407 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 0 0 0 process 2 binding: 0 1 0 0 0 0 0 0 process 3 binding: 0 0 0 0 0 1 0 0 process 4 binding: 0 0 1 0 0 0 0 0 process 5 binding: 0 0 0 0 0 0 1 0 process 6 binding: 0 0 0 1 0 0 0 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 0 0 0 1 0 0 0 process 10 binding: 0 1 0 0 0 0 0 0 process 11 binding: 0 0 0 0 0 1 0 0 process 12 binding: 0 0 1 0 0 0 0 0 process 13 binding: 0 0 0 0 0 0 1 0 process 14 binding: 0 0 0 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread-2.hwthread.out0000644000175000017500000000110612620254305031410 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 0 0 0 0 process 1 binding: 0 0 1 0 1 0 0 0 process 2 binding: 0 0 0 0 1 0 1 0 process 3 binding: 0 1 0 0 0 0 1 0 process 4 binding: 0 1 0 1 0 0 0 0 process 5 binding: 0 0 0 1 0 1 0 0 process 6 binding: 0 0 0 0 0 1 0 1 process 7 binding: 1 0 0 0 0 0 0 1 process 8 binding: 1 0 1 0 0 0 0 0 process 9 binding: 0 0 1 0 1 0 0 0 process 10 binding: 0 0 0 0 1 0 1 0 process 11 binding: 0 1 0 0 0 0 1 0 process 12 binding: 0 1 0 1 0 0 0 0 process 13 binding: 0 0 0 1 0 1 0 0 process 14 binding: 0 0 0 0 0 1 0 1 process 15 binding: 1 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.core-4.board.out0000644000175000017500000000150612620254305030017 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.numa.numa.out0000644000175000017500000000110612620254305027535 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread-8.socket.out0000644000175000017500000000110612620254305031075 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.socket.core.out0000644000175000017500000000110612620254305030055 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 1 0 1 0 process 1 binding: 1 0 1 0 1 0 1 0 process 2 binding: 1 0 1 0 1 0 1 0 process 3 binding: 1 0 1 0 1 0 1 0 process 4 binding: 0 1 0 1 0 1 0 1 process 5 binding: 0 1 0 1 0 1 0 1 process 6 binding: 0 1 0 1 0 1 0 1 process 7 binding: 0 1 0 1 0 1 0 1 process 8 binding: 1 0 1 0 1 0 1 0 process 9 binding: 1 0 1 0 1 0 1 0 process 10 binding: 1 0 1 0 1 0 1 0 process 11 binding: 1 0 1 0 1 0 1 0 process 12 binding: 0 1 0 1 0 1 0 1 process 13 binding: 0 1 0 1 0 1 0 1 process 14 binding: 0 1 0 1 0 1 0 1 process 15 binding: 0 1 0 1 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread-8.hwthread-4.out0000644000175000017500000000110612620254305031554 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.core-2.hwthread-2.out0000644000175000017500000000150612620254305030673 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 1 binding: 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 process 2 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 3 binding: 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 process 4 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 5 binding: 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 process 6 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 7 binding: 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 process 8 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 9 binding: 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 process 10 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 11 binding: 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 process 12 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 13 binding: 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 process 14 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 15 binding: 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.board.socket.out0000644000175000017500000000110612620254305030211 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.board.hwthread.out0000644000175000017500000000110612620254305030527 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread.hwthread.out0000644000175000017500000000110612620254305031246 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 1 0 0 0 0 0 0 process 2 binding: 0 0 1 0 0 0 0 0 process 3 binding: 0 0 0 1 0 0 0 0 process 4 binding: 0 0 0 0 1 0 0 0 process 5 binding: 0 0 0 0 0 1 0 0 process 6 binding: 0 0 0 0 0 0 1 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 1 0 0 0 0 0 0 process 10 binding: 0 0 1 0 0 0 0 0 process 11 binding: 0 0 0 1 0 0 0 0 process 12 binding: 0 0 0 0 1 0 0 0 process 13 binding: 0 0 0 0 0 1 0 0 process 14 binding: 0 0 0 0 0 0 1 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.socket.hwthread-4.out0000644000175000017500000000150612620254305031076 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 3 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 5 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 7 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 9 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 11 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 13 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 15 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.core-4.numa.out0000644000175000017500000000110612620254305027665 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.socket.board.out0000644000175000017500000000150612620254305030216 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread-4.numa.out0000644000175000017500000000110612620254305030543 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread-4.hwthread-4.out0000644000175000017500000000110612620254305031553 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 1 0 1 0 process 1 binding: 0 1 0 1 0 1 0 1 process 2 binding: 1 0 1 0 1 0 1 0 process 3 binding: 0 1 0 1 0 1 0 1 process 4 binding: 1 0 1 0 1 0 1 0 process 5 binding: 0 1 0 1 0 1 0 1 process 6 binding: 1 0 1 0 1 0 1 0 process 7 binding: 0 1 0 1 0 1 0 1 process 8 binding: 1 0 1 0 1 0 1 0 process 9 binding: 0 1 0 1 0 1 0 1 process 10 binding: 1 0 1 0 1 0 1 0 process 11 binding: 0 1 0 1 0 1 0 1 process 12 binding: 1 0 1 0 1 0 1 0 process 13 binding: 0 1 0 1 0 1 0 1 process 14 binding: 1 0 1 0 1 0 1 0 process 15 binding: 0 1 0 1 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.numa.numa.out0000644000175000017500000000150612620254305027537 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.socket.core-2.out0000644000175000017500000000110612620254305030214 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 1 0 1 0 process 1 binding: 1 0 1 0 1 0 1 0 process 2 binding: 0 1 0 1 0 1 0 1 process 3 binding: 0 1 0 1 0 1 0 1 process 4 binding: 1 0 1 0 1 0 1 0 process 5 binding: 1 0 1 0 1 0 1 0 process 6 binding: 0 1 0 1 0 1 0 1 process 7 binding: 0 1 0 1 0 1 0 1 process 8 binding: 1 0 1 0 1 0 1 0 process 9 binding: 1 0 1 0 1 0 1 0 process 10 binding: 0 1 0 1 0 1 0 1 process 11 binding: 0 1 0 1 0 1 0 1 process 12 binding: 1 0 1 0 1 0 1 0 process 13 binding: 1 0 1 0 1 0 1 0 process 14 binding: 0 1 0 1 0 1 0 1 process 15 binding: 0 1 0 1 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.core-4.hwthread-2.out0000644000175000017500000000150612620254305030675 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 process 2 binding: 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 process 3 binding: 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 process 4 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 5 binding: 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 process 6 binding: 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 process 7 binding: 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 process 8 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 9 binding: 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 process 10 binding: 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 process 11 binding: 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 process 12 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 13 binding: 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 process 14 binding: 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 process 15 binding: 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.numa.board.out0000644000175000017500000000110612620254305027664 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread-2.hwthread.out0000644000175000017500000000110612620254305031405 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 1 1 0 0 0 0 0 process 2 binding: 0 0 1 1 0 0 0 0 process 3 binding: 0 0 0 1 1 0 0 0 process 4 binding: 0 0 0 0 1 1 0 0 process 5 binding: 0 0 0 0 0 1 1 0 process 6 binding: 0 0 0 0 0 0 1 1 process 7 binding: 1 0 0 0 0 0 0 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 1 1 0 0 0 0 0 process 10 binding: 0 0 1 1 0 0 0 0 process 11 binding: 0 0 0 1 1 0 0 0 process 12 binding: 0 0 0 0 1 1 0 0 process 13 binding: 0 0 0 0 0 1 1 0 process 14 binding: 0 0 0 0 0 0 1 1 process 15 binding: 1 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.board.board.out0000644000175000017500000000110612620254305030010 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread-2.core.out0000644000175000017500000000150612620254305030534 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 1 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 2 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 3 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 4 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 5 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 6 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 7 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 9 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 10 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 11 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 12 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 13 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 14 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 15 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.board.core.out0000644000175000017500000000110612620254305027654 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread.core.out0000644000175000017500000000110612620254305030372 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 1 0 0 0 0 0 0 process 2 binding: 0 0 1 0 0 0 0 0 process 3 binding: 0 0 0 1 0 0 0 0 process 4 binding: 0 0 0 0 1 0 0 0 process 5 binding: 0 0 0 0 0 1 0 0 process 6 binding: 0 0 0 0 0 0 1 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 1 0 0 0 0 0 0 process 10 binding: 0 0 1 0 0 0 0 0 process 11 binding: 0 0 0 1 0 0 0 0 process 12 binding: 0 0 0 0 1 0 0 0 process 13 binding: 0 0 0 0 0 1 0 0 process 14 binding: 0 0 0 0 0 0 1 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.core.core.out0000644000175000017500000000110612620254305027514 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 1 0 0 0 0 0 0 process 2 binding: 0 0 1 0 0 0 0 0 process 3 binding: 0 0 0 1 0 0 0 0 process 4 binding: 0 0 0 0 1 0 0 0 process 5 binding: 0 0 0 0 0 1 0 0 process 6 binding: 0 0 0 0 0 0 1 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 1 0 0 0 0 0 0 process 10 binding: 0 0 1 0 0 0 0 0 process 11 binding: 0 0 0 1 0 0 0 0 process 12 binding: 0 0 0 0 1 0 0 0 process 13 binding: 0 0 0 0 0 1 0 0 process 14 binding: 0 0 0 0 0 0 1 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread-2.hwthread-4.out0000644000175000017500000000110612620254305031550 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 1 0 0 process 2 binding: 0 0 1 1 0 0 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 0 0 1 1 0 0 process 6 binding: 0 0 1 1 0 0 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 0 0 1 1 0 0 process 10 binding: 0 0 1 1 0 0 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 0 0 1 1 0 0 process 14 binding: 0 0 1 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.core.hwthread-2.out0000644000175000017500000000110612620254305030527 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread-4.socket.out0000644000175000017500000000150612620254305031076 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 2 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 3 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 5 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 6 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 7 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 9 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 10 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 11 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 13 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 14 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.core-4.core-4.out0000644000175000017500000000110612620254305030014 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.core.numa.out0000644000175000017500000000150612620254305027527 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 2 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 3 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 4 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 5 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 6 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 7 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 9 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 10 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 11 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 12 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 13 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 14 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.core-4.socket.out0000644000175000017500000000110612620254305030216 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 1 0 1 0 process 1 binding: 0 1 0 1 0 1 0 1 process 2 binding: 1 0 1 0 1 0 1 0 process 3 binding: 0 1 0 1 0 1 0 1 process 4 binding: 1 0 1 0 1 0 1 0 process 5 binding: 0 1 0 1 0 1 0 1 process 6 binding: 1 0 1 0 1 0 1 0 process 7 binding: 0 1 0 1 0 1 0 1 process 8 binding: 1 0 1 0 1 0 1 0 process 9 binding: 0 1 0 1 0 1 0 1 process 10 binding: 1 0 1 0 1 0 1 0 process 11 binding: 0 1 0 1 0 1 0 1 process 12 binding: 1 0 1 0 1 0 1 0 process 13 binding: 0 1 0 1 0 1 0 1 process 14 binding: 1 0 1 0 1 0 1 0 process 15 binding: 0 1 0 1 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread-8.socket.out0000644000175000017500000000110612620254305031100 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.numa.core.out0000644000175000017500000000150612620254305027527 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 2 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 3 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 4 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 5 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 6 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 7 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 9 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 10 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 11 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 12 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 13 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 14 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 15 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.numa.core-4.out0000644000175000017500000000110612620254305027666 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread-4.hwthread-8.out0000644000175000017500000000150612620254305031561 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 2 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 3 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 5 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 6 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 7 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 9 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 10 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 11 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 13 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 14 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread.hwthread-4.out0000644000175000017500000000110612620254305031412 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 1 0 0 0 0 0 0 process 2 binding: 0 0 1 0 0 0 0 0 process 3 binding: 0 0 0 1 0 0 0 0 process 4 binding: 0 0 0 0 1 0 0 0 process 5 binding: 0 0 0 0 0 1 0 0 process 6 binding: 0 0 0 0 0 0 1 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 1 0 0 0 0 0 0 process 10 binding: 0 0 1 0 0 0 0 0 process 11 binding: 0 0 0 1 0 0 0 0 process 12 binding: 0 0 0 0 1 0 0 0 process 13 binding: 0 0 0 0 0 1 0 0 process 14 binding: 0 0 0 0 0 0 1 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.core-2.socket.out0000644000175000017500000000110612620254305030213 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.board.hwthread-2.out0000644000175000017500000000150612620254305030673 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.socket.hwthread-8.out0000644000175000017500000000150612620254305031102 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread-4.hwthread.out0000644000175000017500000000150612620254305031414 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 1 binding: 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 process 2 binding: 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 process 3 binding: 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 process 4 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 5 binding: 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 process 7 binding: 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 process 8 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 9 binding: 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 process 10 binding: 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 process 11 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 process 12 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 13 binding: 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 process 14 binding: 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 process 15 binding: 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread-2.board.out0000644000175000017500000000150612620254305030673 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 1 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 2 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 3 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 4 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 5 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 6 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 7 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 9 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 10 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 11 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 12 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 13 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 14 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 15 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread.numa.out0000644000175000017500000000110612620254305030402 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 1 0 0 0 0 0 0 process 2 binding: 0 0 1 0 0 0 0 0 process 3 binding: 0 0 0 1 0 0 0 0 process 4 binding: 0 0 0 0 1 0 0 0 process 5 binding: 0 0 0 0 0 1 0 0 process 6 binding: 0 0 0 0 0 0 1 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 1 0 0 0 0 0 0 process 10 binding: 0 0 1 0 0 0 0 0 process 11 binding: 0 0 0 1 0 0 0 0 process 12 binding: 0 0 0 0 1 0 0 0 process 13 binding: 0 0 0 0 0 1 0 0 process 14 binding: 0 0 0 0 0 0 1 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread-8.board.out0000644000175000017500000000110612620254305030677 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.board.core-4.out0000644000175000017500000000110612620254305030015 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread-2.numa.out0000644000175000017500000000150612620254305030544 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 2 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 3 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 4 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 5 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 6 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 7 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 9 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 10 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 11 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 12 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 13 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 14 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.socket.socket.out0000644000175000017500000000150612620254305030417 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.core-2.board.out0000644000175000017500000000110612620254305030012 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread-2.board.out0000644000175000017500000000110612620254305030670 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.core-2.hwthread-4.out0000644000175000017500000000150612620254305030675 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread-4.core-4.out0000644000175000017500000000150612620254305030677 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 2 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 3 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 5 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 6 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 7 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 9 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 10 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 11 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 13 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 14 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.core-2.core-4.out0000644000175000017500000000110612620254305030014 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 1 0 0 process 2 binding: 0 0 1 1 0 0 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 0 0 1 1 0 0 process 6 binding: 0 0 1 1 0 0 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 0 0 1 1 0 0 process 10 binding: 0 0 1 1 0 0 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 0 0 1 1 0 0 process 14 binding: 0 0 1 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread-4.hwthread-4.out0000644000175000017500000000150612620254305031555 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.core.hwthread-2.out0000644000175000017500000000150612620254305030534 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 1 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 2 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 3 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 4 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 5 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 6 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 7 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 9 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 10 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 11 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 12 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 13 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 14 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 15 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.core-4.hwthread-4.out0000644000175000017500000000110612620254305030674 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread-4.core-2.out0000644000175000017500000000110612620254305030672 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 0 1 1 1 1 0 0 process 2 binding: 0 0 0 0 1 1 1 1 process 3 binding: 1 1 0 0 0 0 1 1 process 4 binding: 1 1 1 1 0 0 0 0 process 5 binding: 0 0 1 1 1 1 0 0 process 6 binding: 0 0 0 0 1 1 1 1 process 7 binding: 1 1 0 0 0 0 1 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 0 1 1 1 1 0 0 process 10 binding: 0 0 0 0 1 1 1 1 process 11 binding: 1 1 0 0 0 0 1 1 process 12 binding: 1 1 1 1 0 0 0 0 process 13 binding: 0 0 1 1 1 1 0 0 process 14 binding: 0 0 0 0 1 1 1 1 process 15 binding: 1 1 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.core-4.hwthread-2.out0000644000175000017500000000110612620254305030672 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 0 1 1 1 1 0 0 process 2 binding: 0 0 0 0 1 1 1 1 process 3 binding: 1 1 0 0 0 0 1 1 process 4 binding: 1 1 1 1 0 0 0 0 process 5 binding: 0 0 1 1 1 1 0 0 process 6 binding: 0 0 0 0 1 1 1 1 process 7 binding: 1 1 0 0 0 0 1 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 0 1 1 1 1 0 0 process 10 binding: 0 0 0 0 1 1 1 1 process 11 binding: 1 1 0 0 0 0 1 1 process 12 binding: 1 1 1 1 0 0 0 0 process 13 binding: 0 0 1 1 1 1 0 0 process 14 binding: 0 0 0 0 1 1 1 1 process 15 binding: 1 1 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/topo4.xml0000644000175000017500000002675412620254305024050 0ustar mbanckmbanck mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread-8.numa.out0000644000175000017500000000110612620254305030547 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread.board.out0000644000175000017500000000150612620254305030534 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 process 1 binding: 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 2 binding: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 process 3 binding: 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 4 binding: 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 process 5 binding: 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 process 6 binding: 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 process 7 binding: 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 process 8 binding: 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 process 9 binding: 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 process 10 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 process 11 binding: 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 process 12 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 process 13 binding: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 process 14 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 process 15 binding: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread-2.hwthread-8.out0000644000175000017500000000110612620254305031555 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 0 0 0 0 process 1 binding: 0 0 0 0 1 0 1 0 process 2 binding: 0 1 0 1 0 0 0 0 process 3 binding: 0 0 0 0 0 1 0 1 process 4 binding: 1 0 1 0 0 0 0 0 process 5 binding: 0 0 0 0 1 0 1 0 process 6 binding: 0 1 0 1 0 0 0 0 process 7 binding: 0 0 0 0 0 1 0 1 process 8 binding: 1 0 1 0 0 0 0 0 process 9 binding: 0 0 0 0 1 0 1 0 process 10 binding: 0 1 0 1 0 0 0 0 process 11 binding: 0 0 0 0 0 1 0 1 process 12 binding: 1 0 1 0 0 0 0 0 process 13 binding: 0 0 0 0 1 0 1 0 process 14 binding: 0 1 0 1 0 0 0 0 process 15 binding: 0 0 0 0 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread.hwthread-2.out0000644000175000017500000000110612620254305031405 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 0 1 0 0 0 0 0 process 2 binding: 0 0 0 0 1 0 0 0 process 3 binding: 0 0 0 0 0 0 1 0 process 4 binding: 0 1 0 0 0 0 0 0 process 5 binding: 0 0 0 1 0 0 0 0 process 6 binding: 0 0 0 0 0 1 0 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 0 1 0 0 0 0 0 process 10 binding: 0 0 0 0 1 0 0 0 process 11 binding: 0 0 0 0 0 0 1 0 process 12 binding: 0 1 0 0 0 0 0 0 process 13 binding: 0 0 0 1 0 0 0 0 process 14 binding: 0 0 0 0 0 1 0 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread.socket.out0000644000175000017500000000110612620254305030733 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 1 0 0 0 0 0 0 process 2 binding: 0 0 1 0 0 0 0 0 process 3 binding: 0 0 0 1 0 0 0 0 process 4 binding: 0 0 0 0 1 0 0 0 process 5 binding: 0 0 0 0 0 1 0 0 process 6 binding: 0 0 0 0 0 0 1 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 1 0 0 0 0 0 0 process 10 binding: 0 0 1 0 0 0 0 0 process 11 binding: 0 0 0 1 0 0 0 0 process 12 binding: 0 0 0 0 1 0 0 0 process 13 binding: 0 0 0 0 0 1 0 0 process 14 binding: 0 0 0 0 0 0 1 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.core-2.hwthread-4.out0000644000175000017500000000110612620254305030673 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 0 0 0 0 process 1 binding: 0 1 0 1 0 0 0 0 process 2 binding: 0 0 0 0 1 0 1 0 process 3 binding: 0 0 0 0 0 1 0 1 process 4 binding: 1 0 1 0 0 0 0 0 process 5 binding: 0 1 0 1 0 0 0 0 process 6 binding: 0 0 0 0 1 0 1 0 process 7 binding: 0 0 0 0 0 1 0 1 process 8 binding: 1 0 1 0 0 0 0 0 process 9 binding: 0 1 0 1 0 0 0 0 process 10 binding: 0 0 0 0 1 0 1 0 process 11 binding: 0 0 0 0 0 1 0 1 process 12 binding: 1 0 1 0 0 0 0 0 process 13 binding: 0 1 0 1 0 0 0 0 process 14 binding: 0 0 0 0 1 0 1 0 process 15 binding: 0 0 0 0 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.core-4.hwthread-4.out0000644000175000017500000000150612620254305030677 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 process 2 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 3 binding: 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 process 4 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 5 binding: 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 process 6 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 7 binding: 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 process 8 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 9 binding: 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 process 10 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 11 binding: 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 process 12 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 13 binding: 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 process 14 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 15 binding: 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.numa.hwthread-8.out0000644000175000017500000000110612620254305030547 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread-2.core-4.out0000644000175000017500000000110612620254305030670 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread-2.hwthread-2.out0000644000175000017500000000110612620254305031547 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 0 0 0 0 process 1 binding: 0 0 0 0 1 0 1 0 process 2 binding: 0 1 0 1 0 0 0 0 process 3 binding: 0 0 0 0 0 1 0 1 process 4 binding: 1 0 1 0 0 0 0 0 process 5 binding: 0 0 0 0 1 0 1 0 process 6 binding: 0 1 0 1 0 0 0 0 process 7 binding: 0 0 0 0 0 1 0 1 process 8 binding: 1 0 1 0 0 0 0 0 process 9 binding: 0 0 0 0 1 0 1 0 process 10 binding: 0 1 0 1 0 0 0 0 process 11 binding: 0 0 0 0 0 1 0 1 process 12 binding: 1 0 1 0 0 0 0 0 process 13 binding: 0 0 0 0 1 0 1 0 process 14 binding: 0 1 0 1 0 0 0 0 process 15 binding: 0 0 0 0 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/topo3.xml0000644000175000017500000003126412620254305024037 0ustar mbanckmbanck mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.core.hwthread.out0000644000175000017500000000110612620254305030370 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 1 1 0 0 0 0 0 0 process 2 binding: 0 0 1 1 0 0 0 0 process 3 binding: 0 0 1 1 0 0 0 0 process 4 binding: 0 0 0 0 1 1 0 0 process 5 binding: 0 0 0 0 1 1 0 0 process 6 binding: 0 0 0 0 0 0 1 1 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 1 1 0 0 0 0 0 0 process 10 binding: 0 0 1 1 0 0 0 0 process 11 binding: 0 0 1 1 0 0 0 0 process 12 binding: 0 0 0 0 1 1 0 0 process 13 binding: 0 0 0 0 1 1 0 0 process 14 binding: 0 0 0 0 0 0 1 1 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread-8.hwthread.out0000644000175000017500000000110612620254305031415 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread-8.core-4.out0000644000175000017500000000150612620254305030703 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread-2.socket.out0000644000175000017500000000110612620254305031071 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.core-4.socket.out0000644000175000017500000000110612620254305030213 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.core.numa.out0000644000175000017500000000110612620254305027522 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread.board.out0000644000175000017500000000110612620254305030531 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 1 0 0 0 0 0 0 process 2 binding: 0 0 1 0 0 0 0 0 process 3 binding: 0 0 0 1 0 0 0 0 process 4 binding: 0 0 0 0 1 0 0 0 process 5 binding: 0 0 0 0 0 1 0 0 process 6 binding: 0 0 0 0 0 0 1 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 1 0 0 0 0 0 0 process 10 binding: 0 0 1 0 0 0 0 0 process 11 binding: 0 0 0 1 0 0 0 0 process 12 binding: 0 0 0 0 1 0 0 0 process 13 binding: 0 0 0 0 0 1 0 0 process 14 binding: 0 0 0 0 0 0 1 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.board.core-2.out0000644000175000017500000000110612620254305030012 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread-4.hwthread-2.out0000644000175000017500000000110612620254305031550 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 0 1 1 1 1 0 0 process 2 binding: 0 0 0 0 1 1 1 1 process 3 binding: 1 1 0 0 0 0 1 1 process 4 binding: 1 1 1 1 0 0 0 0 process 5 binding: 0 0 1 1 1 1 0 0 process 6 binding: 0 0 0 0 1 1 1 1 process 7 binding: 1 1 0 0 0 0 1 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 0 1 1 1 1 0 0 process 10 binding: 0 0 0 0 1 1 1 1 process 11 binding: 1 1 0 0 0 0 1 1 process 12 binding: 1 1 1 1 0 0 0 0 process 13 binding: 0 0 1 1 1 1 0 0 process 14 binding: 0 0 0 0 1 1 1 1 process 15 binding: 1 1 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread.hwthread-2.out0000644000175000017500000000150612620254305031412 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 process 1 binding: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 process 2 binding: 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 process 3 binding: 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 process 4 binding: 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 process 5 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 process 6 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 process 7 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 process 8 binding: 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 9 binding: 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 10 binding: 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 process 11 binding: 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 process 12 binding: 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 process 13 binding: 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 process 14 binding: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 process 15 binding: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.board.core.out0000644000175000017500000000110612620254305027651 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.board.board.out0000644000175000017500000000110612620254305030012 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread-2.core-2.out0000644000175000017500000000110612620254305030671 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 0 0 0 0 process 1 binding: 0 0 0 0 1 0 1 0 process 2 binding: 0 1 0 1 0 0 0 0 process 3 binding: 0 0 0 0 0 1 0 1 process 4 binding: 1 0 1 0 0 0 0 0 process 5 binding: 0 0 0 0 1 0 1 0 process 6 binding: 0 1 0 1 0 0 0 0 process 7 binding: 0 0 0 0 0 1 0 1 process 8 binding: 1 0 1 0 0 0 0 0 process 9 binding: 0 0 0 0 1 0 1 0 process 10 binding: 0 1 0 1 0 0 0 0 process 11 binding: 0 0 0 0 0 1 0 1 process 12 binding: 1 0 1 0 0 0 0 0 process 13 binding: 0 0 0 0 1 0 1 0 process 14 binding: 0 1 0 1 0 0 0 0 process 15 binding: 0 0 0 0 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.core-2.board.out0000644000175000017500000000150612620254305030015 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread-4.board.out0000644000175000017500000000150612620254305030675 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread-8.board.out0000644000175000017500000000110612620254305030676 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.numa.core.out0000644000175000017500000000110612620254305027524 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread-2.hwthread.out0000644000175000017500000000150612620254305031412 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 1 binding: 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 2 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 3 binding: 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 process 4 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 5 binding: 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 process 6 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 7 binding: 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 process 8 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 9 binding: 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 process 10 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 11 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 process 12 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 13 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 process 14 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 process 15 binding: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.core.board.out0000644000175000017500000000150612620254305027656 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 1 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 2 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 3 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 4 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 5 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 6 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 7 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 9 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 10 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 11 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 12 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 13 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 14 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 15 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread-8.hwthread-4.out0000644000175000017500000000110612620254305031557 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.core-4.core-2.out0000644000175000017500000000150612620254305030017 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 process 2 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 3 binding: 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 process 4 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 5 binding: 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 process 6 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 7 binding: 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 process 8 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 9 binding: 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 process 10 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 11 binding: 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 process 12 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 13 binding: 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 process 14 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 15 binding: 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread-8.hwthread.out0000644000175000017500000000110612620254305031416 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread-4.numa.out0000644000175000017500000000110612620254305030544 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 1 0 1 0 process 1 binding: 0 1 0 1 0 1 0 1 process 2 binding: 1 0 1 0 1 0 1 0 process 3 binding: 0 1 0 1 0 1 0 1 process 4 binding: 1 0 1 0 1 0 1 0 process 5 binding: 0 1 0 1 0 1 0 1 process 6 binding: 1 0 1 0 1 0 1 0 process 7 binding: 0 1 0 1 0 1 0 1 process 8 binding: 1 0 1 0 1 0 1 0 process 9 binding: 0 1 0 1 0 1 0 1 process 10 binding: 1 0 1 0 1 0 1 0 process 11 binding: 0 1 0 1 0 1 0 1 process 12 binding: 1 0 1 0 1 0 1 0 process 13 binding: 0 1 0 1 0 1 0 1 process 14 binding: 1 0 1 0 1 0 1 0 process 15 binding: 0 1 0 1 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread-2.socket.out0000644000175000017500000000110612620254305031072 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 0 0 0 0 process 1 binding: 0 1 0 1 0 0 0 0 process 2 binding: 0 0 0 0 1 0 1 0 process 3 binding: 0 0 0 0 0 1 0 1 process 4 binding: 1 0 1 0 0 0 0 0 process 5 binding: 0 1 0 1 0 0 0 0 process 6 binding: 0 0 0 0 1 0 1 0 process 7 binding: 0 0 0 0 0 1 0 1 process 8 binding: 1 0 1 0 0 0 0 0 process 9 binding: 0 1 0 1 0 0 0 0 process 10 binding: 0 0 0 0 1 0 1 0 process 11 binding: 0 0 0 0 0 1 0 1 process 12 binding: 1 0 1 0 0 0 0 0 process 13 binding: 0 1 0 1 0 0 0 0 process 14 binding: 0 0 0 0 1 0 1 0 process 15 binding: 0 0 0 0 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.core-2.core-2.out0000644000175000017500000000110612620254305030013 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 0 0 0 0 process 1 binding: 0 0 0 0 1 0 1 0 process 2 binding: 0 1 0 1 0 0 0 0 process 3 binding: 0 0 0 0 0 1 0 1 process 4 binding: 1 0 1 0 0 0 0 0 process 5 binding: 0 0 0 0 1 0 1 0 process 6 binding: 0 1 0 1 0 0 0 0 process 7 binding: 0 0 0 0 0 1 0 1 process 8 binding: 1 0 1 0 0 0 0 0 process 9 binding: 0 0 0 0 1 0 1 0 process 10 binding: 0 1 0 1 0 0 0 0 process 11 binding: 0 0 0 0 0 1 0 1 process 12 binding: 1 0 1 0 0 0 0 0 process 13 binding: 0 0 0 0 1 0 1 0 process 14 binding: 0 1 0 1 0 0 0 0 process 15 binding: 0 0 0 0 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.core.board.out0000644000175000017500000000110612620254305027654 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 0 1 0 0 0 0 0 process 2 binding: 0 0 0 0 1 0 0 0 process 3 binding: 0 0 0 0 0 0 1 0 process 4 binding: 0 1 0 0 0 0 0 0 process 5 binding: 0 0 0 1 0 0 0 0 process 6 binding: 0 0 0 0 0 1 0 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 0 1 0 0 0 0 0 process 10 binding: 0 0 0 0 1 0 0 0 process 11 binding: 0 0 0 0 0 0 1 0 process 12 binding: 0 1 0 0 0 0 0 0 process 13 binding: 0 0 0 1 0 0 0 0 process 14 binding: 0 0 0 0 0 1 0 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.socket.hwthread-2.out0000644000175000017500000000150612620254305031074 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 2 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 3 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 4 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 5 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 6 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 7 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 9 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 10 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 11 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 12 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 13 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 14 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 15 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.board.core-2.out0000644000175000017500000000150612620254305030015 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.numa.core-2.out0000644000175000017500000000110612620254305027664 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.core-2.numa.out0000644000175000017500000000110612620254305027661 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.board.numa.out0000644000175000017500000000110612620254305027664 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread-4.hwthread-2.out0000644000175000017500000000110612620254305031546 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 0 1 1 1 1 0 0 process 2 binding: 0 0 0 0 1 1 1 1 process 3 binding: 1 1 0 0 0 0 1 1 process 4 binding: 1 1 1 1 0 0 0 0 process 5 binding: 0 0 1 1 1 1 0 0 process 6 binding: 0 0 0 0 1 1 1 1 process 7 binding: 1 1 0 0 0 0 1 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 0 1 1 1 1 0 0 process 10 binding: 0 0 0 0 1 1 1 1 process 11 binding: 1 1 0 0 0 0 1 1 process 12 binding: 1 1 1 1 0 0 0 0 process 13 binding: 0 0 1 1 1 1 0 0 process 14 binding: 0 0 0 0 1 1 1 1 process 15 binding: 1 1 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread-8.socket.out0000644000175000017500000000150612620254305031102 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.socket.hwthread-4.out0000644000175000017500000000110612620254305031073 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 1 0 0 process 2 binding: 0 0 1 1 0 0 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 0 0 1 1 0 0 process 6 binding: 0 0 1 1 0 0 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 0 0 1 1 0 0 process 10 binding: 0 0 1 1 0 0 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 0 0 1 1 0 0 process 14 binding: 0 0 1 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.board.socket.out0000644000175000017500000000150612620254305030216 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread.board.out0000644000175000017500000000110612620254305030527 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 1 0 0 0 0 0 0 process 2 binding: 0 0 1 0 0 0 0 0 process 3 binding: 0 0 0 1 0 0 0 0 process 4 binding: 0 0 0 0 1 0 0 0 process 5 binding: 0 0 0 0 0 1 0 0 process 6 binding: 0 0 0 0 0 0 1 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 1 0 0 0 0 0 0 process 10 binding: 0 0 1 0 0 0 0 0 process 11 binding: 0 0 0 1 0 0 0 0 process 12 binding: 0 0 0 0 1 0 0 0 process 13 binding: 0 0 0 0 0 1 0 0 process 14 binding: 0 0 0 0 0 0 1 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.core-2.numa.out0000644000175000017500000000110612620254305027664 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 0 0 0 0 process 1 binding: 0 0 0 0 1 0 1 0 process 2 binding: 0 1 0 1 0 0 0 0 process 3 binding: 0 0 0 0 0 1 0 1 process 4 binding: 1 0 1 0 0 0 0 0 process 5 binding: 0 0 0 0 1 0 1 0 process 6 binding: 0 1 0 1 0 0 0 0 process 7 binding: 0 0 0 0 0 1 0 1 process 8 binding: 1 0 1 0 0 0 0 0 process 9 binding: 0 0 0 0 1 0 1 0 process 10 binding: 0 1 0 1 0 0 0 0 process 11 binding: 0 0 0 0 0 1 0 1 process 12 binding: 1 0 1 0 0 0 0 0 process 13 binding: 0 0 0 0 1 0 1 0 process 14 binding: 0 1 0 1 0 0 0 0 process 15 binding: 0 0 0 0 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread-2.core-2.out0000644000175000017500000000110612620254305030666 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 1 0 0 process 2 binding: 0 0 1 1 0 0 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 0 0 1 1 0 0 process 6 binding: 0 0 1 1 0 0 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 0 0 1 1 0 0 process 10 binding: 0 0 1 1 0 0 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 0 0 1 1 0 0 process 14 binding: 0 0 1 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread.hwthread-8.out0000644000175000017500000000110612620254305031415 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 1 0 0 0 0 0 0 process 2 binding: 0 0 1 0 0 0 0 0 process 3 binding: 0 0 0 1 0 0 0 0 process 4 binding: 0 0 0 0 1 0 0 0 process 5 binding: 0 0 0 0 0 1 0 0 process 6 binding: 0 0 0 0 0 0 1 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 1 0 0 0 0 0 0 process 10 binding: 0 0 1 0 0 0 0 0 process 11 binding: 0 0 0 1 0 0 0 0 process 12 binding: 0 0 0 0 1 0 0 0 process 13 binding: 0 0 0 0 0 1 0 0 process 14 binding: 0 0 0 0 0 0 1 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.core-4.core.out0000644000175000017500000000110612620254305027655 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 1 1 1 1 0 0 0 process 2 binding: 0 0 1 1 1 1 0 0 process 3 binding: 0 0 0 1 1 1 1 0 process 4 binding: 0 0 0 0 1 1 1 1 process 5 binding: 1 0 0 0 0 1 1 1 process 6 binding: 1 1 0 0 0 0 1 1 process 7 binding: 1 1 1 0 0 0 0 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 1 1 1 1 0 0 0 process 10 binding: 0 0 1 1 1 1 0 0 process 11 binding: 0 0 0 1 1 1 1 0 process 12 binding: 0 0 0 0 1 1 1 1 process 13 binding: 1 0 0 0 0 1 1 1 process 14 binding: 1 1 0 0 0 0 1 1 process 15 binding: 1 1 1 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.numa.hwthread-2.out0000644000175000017500000000110612620254305030542 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread-8.core-4.out0000644000175000017500000000110612620254305030700 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.board.board.out0000644000175000017500000000150612620254305030015 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread-2.board.out0000644000175000017500000000110612620254305030671 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 0 0 0 0 process 1 binding: 0 0 0 0 1 0 1 0 process 2 binding: 0 1 0 1 0 0 0 0 process 3 binding: 0 0 0 0 0 1 0 1 process 4 binding: 1 0 1 0 0 0 0 0 process 5 binding: 0 0 0 0 1 0 1 0 process 6 binding: 0 1 0 1 0 0 0 0 process 7 binding: 0 0 0 0 0 1 0 1 process 8 binding: 1 0 1 0 0 0 0 0 process 9 binding: 0 0 0 0 1 0 1 0 process 10 binding: 0 1 0 1 0 0 0 0 process 11 binding: 0 0 0 0 0 1 0 1 process 12 binding: 1 0 1 0 0 0 0 0 process 13 binding: 0 0 0 0 1 0 1 0 process 14 binding: 0 1 0 1 0 0 0 0 process 15 binding: 0 0 0 0 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.core-4.numa.out0000644000175000017500000000110612620254305027666 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 1 0 1 0 process 1 binding: 0 1 0 1 0 1 0 1 process 2 binding: 1 0 1 0 1 0 1 0 process 3 binding: 0 1 0 1 0 1 0 1 process 4 binding: 1 0 1 0 1 0 1 0 process 5 binding: 0 1 0 1 0 1 0 1 process 6 binding: 1 0 1 0 1 0 1 0 process 7 binding: 0 1 0 1 0 1 0 1 process 8 binding: 1 0 1 0 1 0 1 0 process 9 binding: 0 1 0 1 0 1 0 1 process 10 binding: 1 0 1 0 1 0 1 0 process 11 binding: 0 1 0 1 0 1 0 1 process 12 binding: 1 0 1 0 1 0 1 0 process 13 binding: 0 1 0 1 0 1 0 1 process 14 binding: 1 0 1 0 1 0 1 0 process 15 binding: 0 1 0 1 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread-4.hwthread-2.out0000644000175000017500000000110612620254305031551 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 1 0 1 0 process 1 binding: 0 1 0 1 1 0 1 0 process 2 binding: 0 1 0 1 0 1 0 1 process 3 binding: 1 0 1 0 0 1 0 1 process 4 binding: 1 0 1 0 1 0 1 0 process 5 binding: 0 1 0 1 1 0 1 0 process 6 binding: 0 1 0 1 0 1 0 1 process 7 binding: 1 0 1 0 0 1 0 1 process 8 binding: 1 0 1 0 1 0 1 0 process 9 binding: 0 1 0 1 1 0 1 0 process 10 binding: 0 1 0 1 0 1 0 1 process 11 binding: 1 0 1 0 0 1 0 1 process 12 binding: 1 0 1 0 1 0 1 0 process 13 binding: 0 1 0 1 1 0 1 0 process 14 binding: 0 1 0 1 0 1 0 1 process 15 binding: 1 0 1 0 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.socket.core-2.out0000644000175000017500000000110612620254305030211 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.core.hwthread.out0000644000175000017500000000150612620254305030375 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 1 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 2 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 3 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 4 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 5 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 6 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 7 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 8 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 9 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 10 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 11 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 12 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 13 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 14 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 process 15 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.core.core-2.out0000644000175000017500000000150612620254305027656 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 1 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 2 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 3 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 4 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 5 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 6 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 7 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 9 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 10 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 11 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 12 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 13 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 14 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 15 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.socket.hwthread.out0000644000175000017500000000150612620254305030735 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 2 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 3 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 4 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 5 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 6 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 7 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 8 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 9 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 10 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 11 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 12 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 13 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 14 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 15 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.socket.board.out0000644000175000017500000000110612620254305030211 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.socket.hwthread.out0000644000175000017500000000110612620254305030733 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 1 0 1 0 process 1 binding: 1 0 1 0 1 0 1 0 process 2 binding: 1 0 1 0 1 0 1 0 process 3 binding: 1 0 1 0 1 0 1 0 process 4 binding: 0 1 0 1 0 1 0 1 process 5 binding: 0 1 0 1 0 1 0 1 process 6 binding: 0 1 0 1 0 1 0 1 process 7 binding: 0 1 0 1 0 1 0 1 process 8 binding: 1 0 1 0 1 0 1 0 process 9 binding: 1 0 1 0 1 0 1 0 process 10 binding: 1 0 1 0 1 0 1 0 process 11 binding: 1 0 1 0 1 0 1 0 process 12 binding: 0 1 0 1 0 1 0 1 process 13 binding: 0 1 0 1 0 1 0 1 process 14 binding: 0 1 0 1 0 1 0 1 process 15 binding: 0 1 0 1 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread-2.core-4.out0000644000175000017500000000150612620254305030675 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 2 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 3 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 4 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 5 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 6 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 7 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 9 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 10 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 11 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 12 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 13 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 14 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.core-2.hwthread.out0000644000175000017500000000110612620254305030532 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 0 0 0 0 process 1 binding: 0 0 1 0 1 0 0 0 process 2 binding: 0 0 0 0 1 0 1 0 process 3 binding: 0 1 0 0 0 0 1 0 process 4 binding: 0 1 0 1 0 0 0 0 process 5 binding: 0 0 0 1 0 1 0 0 process 6 binding: 0 0 0 0 0 1 0 1 process 7 binding: 1 0 0 0 0 0 0 1 process 8 binding: 1 0 1 0 0 0 0 0 process 9 binding: 0 0 1 0 1 0 0 0 process 10 binding: 0 0 0 0 1 0 1 0 process 11 binding: 0 1 0 0 0 0 1 0 process 12 binding: 0 1 0 1 0 0 0 0 process 13 binding: 0 0 0 1 0 1 0 0 process 14 binding: 0 0 0 0 0 1 0 1 process 15 binding: 1 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.socket.hwthread-8.out0000644000175000017500000000110612620254305031075 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.board.hwthread-2.out0000644000175000017500000000110612620254305030671 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.socket.core.out0000644000175000017500000000110612620254305030052 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.socket.numa.out0000644000175000017500000000150612620254305030067 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.socket.core-4.out0000644000175000017500000000150612620254305030220 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.numa.core-2.out0000644000175000017500000000110612620254305027663 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.core-2.hwthread-8.out0000644000175000017500000000150612620254305030701 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 2 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 3 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 5 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 6 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 7 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 9 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 10 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 11 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 13 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 14 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.core-2.board.out0000644000175000017500000000110612620254305030013 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 0 0 0 0 process 1 binding: 0 0 0 0 1 0 1 0 process 2 binding: 0 1 0 1 0 0 0 0 process 3 binding: 0 0 0 0 0 1 0 1 process 4 binding: 1 0 1 0 0 0 0 0 process 5 binding: 0 0 0 0 1 0 1 0 process 6 binding: 0 1 0 1 0 0 0 0 process 7 binding: 0 0 0 0 0 1 0 1 process 8 binding: 1 0 1 0 0 0 0 0 process 9 binding: 0 0 0 0 1 0 1 0 process 10 binding: 0 1 0 1 0 0 0 0 process 11 binding: 0 0 0 0 0 1 0 1 process 12 binding: 1 0 1 0 0 0 0 0 process 13 binding: 0 0 0 0 1 0 1 0 process 14 binding: 0 1 0 1 0 0 0 0 process 15 binding: 0 0 0 0 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.core-4.core.out0000644000175000017500000000150612620254305027660 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 process 2 binding: 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 process 3 binding: 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 process 4 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 5 binding: 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 process 6 binding: 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 process 7 binding: 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 process 8 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 9 binding: 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 process 10 binding: 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 process 11 binding: 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 process 12 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 13 binding: 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 process 14 binding: 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 process 15 binding: 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread.hwthread.out0000644000175000017500000000150612620254305031253 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 process 1 binding: 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 2 binding: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 process 3 binding: 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 4 binding: 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 process 5 binding: 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 process 6 binding: 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 process 7 binding: 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 process 8 binding: 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 process 9 binding: 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 process 10 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 process 11 binding: 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 process 12 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 process 13 binding: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 process 14 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 process 15 binding: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread.hwthread-4.out0000644000175000017500000000110612620254305031411 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 0 0 0 process 2 binding: 0 1 0 0 0 0 0 0 process 3 binding: 0 0 0 0 0 1 0 0 process 4 binding: 0 0 1 0 0 0 0 0 process 5 binding: 0 0 0 0 0 0 1 0 process 6 binding: 0 0 0 1 0 0 0 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 0 0 0 1 0 0 0 process 10 binding: 0 1 0 0 0 0 0 0 process 11 binding: 0 0 0 0 0 1 0 0 process 12 binding: 0 0 1 0 0 0 0 0 process 13 binding: 0 0 0 0 0 0 1 0 process 14 binding: 0 0 0 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.socket.socket.out0000644000175000017500000000110612620254305030415 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 1 0 1 0 process 1 binding: 0 1 0 1 0 1 0 1 process 2 binding: 1 0 1 0 1 0 1 0 process 3 binding: 0 1 0 1 0 1 0 1 process 4 binding: 1 0 1 0 1 0 1 0 process 5 binding: 0 1 0 1 0 1 0 1 process 6 binding: 1 0 1 0 1 0 1 0 process 7 binding: 0 1 0 1 0 1 0 1 process 8 binding: 1 0 1 0 1 0 1 0 process 9 binding: 0 1 0 1 0 1 0 1 process 10 binding: 1 0 1 0 1 0 1 0 process 11 binding: 0 1 0 1 0 1 0 1 process 12 binding: 1 0 1 0 1 0 1 0 process 13 binding: 0 1 0 1 0 1 0 1 process 14 binding: 1 0 1 0 1 0 1 0 process 15 binding: 0 1 0 1 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.numa.socket.out0000644000175000017500000000110612620254305030062 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread-2.hwthread-8.out0000644000175000017500000000110612620254305031552 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.socket.core.out0000644000175000017500000000110612620254305030054 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 1 1 0 0 0 0 0 0 process 2 binding: 0 0 1 1 0 0 0 0 process 3 binding: 0 0 1 1 0 0 0 0 process 4 binding: 0 0 0 0 1 1 0 0 process 5 binding: 0 0 0 0 1 1 0 0 process 6 binding: 0 0 0 0 0 0 1 1 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 1 1 0 0 0 0 0 0 process 10 binding: 0 0 1 1 0 0 0 0 process 11 binding: 0 0 1 1 0 0 0 0 process 12 binding: 0 0 0 0 1 1 0 0 process 13 binding: 0 0 0 0 1 1 0 0 process 14 binding: 0 0 0 0 0 0 1 1 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.numa.socket.out0000644000175000017500000000150612620254305030067 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread.numa.out0000644000175000017500000000150612620254305030405 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 process 2 binding: 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 3 binding: 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 process 4 binding: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 process 5 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 process 6 binding: 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 7 binding: 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 process 8 binding: 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 process 9 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 process 10 binding: 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 process 11 binding: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 process 12 binding: 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 process 13 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 process 14 binding: 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread-8.board.out0000644000175000017500000000110612620254305030674 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.core-2.hwthread.out0000644000175000017500000000110612620254305030527 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 1 1 1 1 0 0 0 0 process 2 binding: 0 0 1 1 1 1 0 0 process 3 binding: 0 0 1 1 1 1 0 0 process 4 binding: 0 0 0 0 1 1 1 1 process 5 binding: 0 0 0 0 1 1 1 1 process 6 binding: 1 1 0 0 0 0 1 1 process 7 binding: 1 1 0 0 0 0 1 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 1 1 1 1 0 0 0 0 process 10 binding: 0 0 1 1 1 1 0 0 process 11 binding: 0 0 1 1 1 1 0 0 process 12 binding: 0 0 0 0 1 1 1 1 process 13 binding: 0 0 0 0 1 1 1 1 process 14 binding: 1 1 0 0 0 0 1 1 process 15 binding: 1 1 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.core.hwthread-8.out0000644000175000017500000000110612620254305030540 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 0 1 0 0 0 0 0 process 2 binding: 0 0 0 0 1 0 0 0 process 3 binding: 0 0 0 0 0 0 1 0 process 4 binding: 0 1 0 0 0 0 0 0 process 5 binding: 0 0 0 1 0 0 0 0 process 6 binding: 0 0 0 0 0 1 0 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 0 1 0 0 0 0 0 process 10 binding: 0 0 0 0 1 0 0 0 process 11 binding: 0 0 0 0 0 0 1 0 process 12 binding: 0 1 0 0 0 0 0 0 process 13 binding: 0 0 0 1 0 0 0 0 process 14 binding: 0 0 0 0 0 1 0 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.numa.core-2.out0000644000175000017500000000150612620254305027666 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 3 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 5 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 7 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 9 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 11 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 13 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 15 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.core-4.numa.out0000644000175000017500000000110612620254305027663 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread-2.core.out0000644000175000017500000000110612620254305030532 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 0 0 0 0 process 1 binding: 0 0 1 0 1 0 0 0 process 2 binding: 0 0 0 0 1 0 1 0 process 3 binding: 0 1 0 0 0 0 1 0 process 4 binding: 0 1 0 1 0 0 0 0 process 5 binding: 0 0 0 1 0 1 0 0 process 6 binding: 0 0 0 0 0 1 0 1 process 7 binding: 1 0 0 0 0 0 0 1 process 8 binding: 1 0 1 0 0 0 0 0 process 9 binding: 0 0 1 0 1 0 0 0 process 10 binding: 0 0 0 0 1 0 1 0 process 11 binding: 0 1 0 0 0 0 1 0 process 12 binding: 0 1 0 1 0 0 0 0 process 13 binding: 0 0 0 1 0 1 0 0 process 14 binding: 0 0 0 0 0 1 0 1 process 15 binding: 1 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.core-4.board.out0000644000175000017500000000110612620254305030012 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.numa.socket.out0000644000175000017500000000110612620254305030064 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread-8.core.out0000644000175000017500000000110612620254305030537 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.socket.hwthread-8.out0000644000175000017500000000110612620254305031077 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.core-4.socket.out0000644000175000017500000000110612620254305030215 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 0 1 1 1 1 0 0 process 2 binding: 0 0 0 0 1 1 1 1 process 3 binding: 1 1 0 0 0 0 1 1 process 4 binding: 1 1 1 1 0 0 0 0 process 5 binding: 0 0 1 1 1 1 0 0 process 6 binding: 0 0 0 0 1 1 1 1 process 7 binding: 1 1 0 0 0 0 1 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 0 1 1 1 1 0 0 process 10 binding: 0 0 0 0 1 1 1 1 process 11 binding: 1 1 0 0 0 0 1 1 process 12 binding: 1 1 1 1 0 0 0 0 process 13 binding: 0 0 1 1 1 1 0 0 process 14 binding: 0 0 0 0 1 1 1 1 process 15 binding: 1 1 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.board.numa.out0000644000175000017500000000110612620254305027661 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread-8.core-2.out0000644000175000017500000000150612620254305030701 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 process 2 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 3 binding: 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 process 4 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 5 binding: 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 process 6 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 7 binding: 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 process 8 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 9 binding: 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 process 10 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 11 binding: 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 process 12 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 13 binding: 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 process 14 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 15 binding: 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.core.core.out0000644000175000017500000000150612620254305027517 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 1 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 2 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 3 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 4 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 5 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 6 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 7 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 9 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 10 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 11 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 12 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 13 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 14 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 15 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.core.hwthread-2.out0000644000175000017500000000110612620254305030532 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 0 0 0 process 2 binding: 0 1 0 0 0 0 0 0 process 3 binding: 0 0 0 0 0 1 0 0 process 4 binding: 0 0 1 0 0 0 0 0 process 5 binding: 0 0 0 0 0 0 1 0 process 6 binding: 0 0 0 1 0 0 0 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 0 0 0 1 0 0 0 process 10 binding: 0 1 0 0 0 0 0 0 process 11 binding: 0 0 0 0 0 1 0 0 process 12 binding: 0 0 1 0 0 0 0 0 process 13 binding: 0 0 0 0 0 0 1 0 process 14 binding: 0 0 0 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread-2.hwthread-8.out0000644000175000017500000000150612620254305031557 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 2 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 3 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 4 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 5 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 6 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 7 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 9 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 10 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 11 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 12 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 13 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 14 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread-8.hwthread.out0000644000175000017500000000150612620254305031420 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 0 1 1 1 1 0 0 0 1 1 1 1 0 0 0 0 process 2 binding: 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 process 3 binding: 0 0 1 1 1 1 0 0 0 1 1 1 1 0 0 0 process 4 binding: 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 process 5 binding: 0 0 0 1 1 1 1 0 0 0 1 1 1 1 0 0 process 6 binding: 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 process 7 binding: 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 0 process 8 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 9 binding: 1 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 process 10 binding: 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 process 11 binding: 1 1 0 0 0 0 1 1 1 0 0 0 0 1 1 1 process 12 binding: 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 process 13 binding: 1 1 1 0 0 0 0 1 1 1 0 0 0 0 1 1 process 14 binding: 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 process 15 binding: 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.numa.hwthread.out0000644000175000017500000000150612620254305030405 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 2 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 3 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 4 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 5 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 6 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 7 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 8 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 9 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 10 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 11 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 12 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 13 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 14 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 15 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread.board.out0000644000175000017500000000110612620254305030532 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 0 1 0 0 0 0 0 process 2 binding: 0 0 0 0 1 0 0 0 process 3 binding: 0 0 0 0 0 0 1 0 process 4 binding: 0 1 0 0 0 0 0 0 process 5 binding: 0 0 0 1 0 0 0 0 process 6 binding: 0 0 0 0 0 1 0 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 0 1 0 0 0 0 0 process 10 binding: 0 0 0 0 1 0 0 0 process 11 binding: 0 0 0 0 0 0 1 0 process 12 binding: 0 1 0 0 0 0 0 0 process 13 binding: 0 0 0 1 0 0 0 0 process 14 binding: 0 0 0 0 0 1 0 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.numa.hwthread-2.out0000644000175000017500000000110612620254305030537 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.core.board.out0000644000175000017500000000110612620254305027651 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread-2.core.out0000644000175000017500000000110612620254305030531 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 1 1 0 0 0 0 0 process 2 binding: 0 0 1 1 0 0 0 0 process 3 binding: 0 0 0 1 1 0 0 0 process 4 binding: 0 0 0 0 1 1 0 0 process 5 binding: 0 0 0 0 0 1 1 0 process 6 binding: 0 0 0 0 0 0 1 1 process 7 binding: 1 0 0 0 0 0 0 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 1 1 0 0 0 0 0 process 10 binding: 0 0 1 1 0 0 0 0 process 11 binding: 0 0 0 1 1 0 0 0 process 12 binding: 0 0 0 0 1 1 0 0 process 13 binding: 0 0 0 0 0 1 1 0 process 14 binding: 0 0 0 0 0 0 1 1 process 15 binding: 1 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.core.core-4.out0000644000175000017500000000110612620254305027656 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 1 0 0 0 0 0 0 process 2 binding: 0 0 1 0 0 0 0 0 process 3 binding: 0 0 0 1 0 0 0 0 process 4 binding: 0 0 0 0 1 0 0 0 process 5 binding: 0 0 0 0 0 1 0 0 process 6 binding: 0 0 0 0 0 0 1 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 1 0 0 0 0 0 0 process 10 binding: 0 0 1 0 0 0 0 0 process 11 binding: 0 0 0 1 0 0 0 0 process 12 binding: 0 0 0 0 1 0 0 0 process 13 binding: 0 0 0 0 0 1 0 0 process 14 binding: 0 0 0 0 0 0 1 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.core-2.hwthread-2.out0000644000175000017500000000110612620254305030666 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 0 1 1 1 1 0 0 process 2 binding: 0 0 0 0 1 1 1 1 process 3 binding: 1 1 0 0 0 0 1 1 process 4 binding: 1 1 1 1 0 0 0 0 process 5 binding: 0 0 1 1 1 1 0 0 process 6 binding: 0 0 0 0 1 1 1 1 process 7 binding: 1 1 0 0 0 0 1 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 0 1 1 1 1 0 0 process 10 binding: 0 0 0 0 1 1 1 1 process 11 binding: 1 1 0 0 0 0 1 1 process 12 binding: 1 1 1 1 0 0 0 0 process 13 binding: 0 0 1 1 1 1 0 0 process 14 binding: 0 0 0 0 1 1 1 1 process 15 binding: 1 1 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.socket.hwthread-4.out0000644000175000017500000000110612620254305031074 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 1 0 1 0 process 1 binding: 0 1 0 1 0 1 0 1 process 2 binding: 1 0 1 0 1 0 1 0 process 3 binding: 0 1 0 1 0 1 0 1 process 4 binding: 1 0 1 0 1 0 1 0 process 5 binding: 0 1 0 1 0 1 0 1 process 6 binding: 1 0 1 0 1 0 1 0 process 7 binding: 0 1 0 1 0 1 0 1 process 8 binding: 1 0 1 0 1 0 1 0 process 9 binding: 0 1 0 1 0 1 0 1 process 10 binding: 1 0 1 0 1 0 1 0 process 11 binding: 0 1 0 1 0 1 0 1 process 12 binding: 1 0 1 0 1 0 1 0 process 13 binding: 0 1 0 1 0 1 0 1 process 14 binding: 1 0 1 0 1 0 1 0 process 15 binding: 0 1 0 1 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.core.hwthread.out0000644000175000017500000000110612620254305030373 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 0 1 0 0 0 0 0 process 2 binding: 0 0 0 0 1 0 0 0 process 3 binding: 0 0 0 0 0 0 1 0 process 4 binding: 0 1 0 0 0 0 0 0 process 5 binding: 0 0 0 1 0 0 0 0 process 6 binding: 0 0 0 0 0 1 0 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 0 1 0 0 0 0 0 process 10 binding: 0 0 0 0 1 0 0 0 process 11 binding: 0 0 0 0 0 0 1 0 process 12 binding: 0 1 0 0 0 0 0 0 process 13 binding: 0 0 0 1 0 0 0 0 process 14 binding: 0 0 0 0 0 1 0 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread-4.hwthread.out0000644000175000017500000000110612620254305031411 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 1 1 1 1 0 0 0 process 2 binding: 0 0 1 1 1 1 0 0 process 3 binding: 0 0 0 1 1 1 1 0 process 4 binding: 0 0 0 0 1 1 1 1 process 5 binding: 1 0 0 0 0 1 1 1 process 6 binding: 1 1 0 0 0 0 1 1 process 7 binding: 1 1 1 0 0 0 0 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 1 1 1 1 0 0 0 process 10 binding: 0 0 1 1 1 1 0 0 process 11 binding: 0 0 0 1 1 1 1 0 process 12 binding: 0 0 0 0 1 1 1 1 process 13 binding: 1 0 0 0 0 1 1 1 process 14 binding: 1 1 0 0 0 0 1 1 process 15 binding: 1 1 1 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.core.hwthread.out0000644000175000017500000000110612620254305030372 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 1 0 0 0 0 0 0 process 2 binding: 0 0 1 0 0 0 0 0 process 3 binding: 0 0 0 1 0 0 0 0 process 4 binding: 0 0 0 0 1 0 0 0 process 5 binding: 0 0 0 0 0 1 0 0 process 6 binding: 0 0 0 0 0 0 1 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 1 0 0 0 0 0 0 process 10 binding: 0 0 1 0 0 0 0 0 process 11 binding: 0 0 0 1 0 0 0 0 process 12 binding: 0 0 0 0 1 0 0 0 process 13 binding: 0 0 0 0 0 1 0 0 process 14 binding: 0 0 0 0 0 0 1 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread.core.out0000644000175000017500000000110612620254305030370 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 0 1 0 0 0 0 0 process 2 binding: 0 0 0 0 1 0 0 0 process 3 binding: 0 0 0 0 0 0 1 0 process 4 binding: 0 1 0 0 0 0 0 0 process 5 binding: 0 0 0 1 0 0 0 0 process 6 binding: 0 0 0 0 0 1 0 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 0 1 0 0 0 0 0 process 10 binding: 0 0 0 0 1 0 0 0 process 11 binding: 0 0 0 0 0 0 1 0 process 12 binding: 0 1 0 0 0 0 0 0 process 13 binding: 0 0 0 1 0 0 0 0 process 14 binding: 0 0 0 0 0 1 0 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.core.socket.out0000644000175000017500000000110612620254305030052 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.board.hwthread-4.out0000644000175000017500000000110612620254305030670 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.core.hwthread-2.out0000644000175000017500000000110612620254305030531 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 0 1 0 0 0 0 0 process 2 binding: 0 0 0 0 1 0 0 0 process 3 binding: 0 0 0 0 0 0 1 0 process 4 binding: 0 1 0 0 0 0 0 0 process 5 binding: 0 0 0 1 0 0 0 0 process 6 binding: 0 0 0 0 0 1 0 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 0 1 0 0 0 0 0 process 10 binding: 0 0 0 0 1 0 0 0 process 11 binding: 0 0 0 0 0 0 1 0 process 12 binding: 0 1 0 0 0 0 0 0 process 13 binding: 0 0 0 1 0 0 0 0 process 14 binding: 0 0 0 0 0 1 0 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.socket.hwthread.out0000644000175000017500000000110612620254305030732 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 1 1 0 0 0 0 0 0 process 2 binding: 0 0 1 1 0 0 0 0 process 3 binding: 0 0 1 1 0 0 0 0 process 4 binding: 0 0 0 0 1 1 0 0 process 5 binding: 0 0 0 0 1 1 0 0 process 6 binding: 0 0 0 0 0 0 1 1 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 1 1 0 0 0 0 0 0 process 10 binding: 0 0 1 1 0 0 0 0 process 11 binding: 0 0 1 1 0 0 0 0 process 12 binding: 0 0 0 0 1 1 0 0 process 13 binding: 0 0 0 0 1 1 0 0 process 14 binding: 0 0 0 0 0 0 1 1 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread-8.core-4.out0000644000175000017500000000110612620254305030701 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread-8.hwthread-2.out0000644000175000017500000000110612620254305031555 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread-8.numa.out0000644000175000017500000000110612620254305030550 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.numa.socket.out0000644000175000017500000000110612620254305030065 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.board.hwthread-2.out0000644000175000017500000000110612620254305030670 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread-2.hwthread-2.out0000644000175000017500000000110612620254305031546 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread.numa.out0000644000175000017500000000110612620254305030403 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 0 1 0 0 0 0 0 process 2 binding: 0 0 0 0 1 0 0 0 process 3 binding: 0 0 0 0 0 0 1 0 process 4 binding: 0 1 0 0 0 0 0 0 process 5 binding: 0 0 0 1 0 0 0 0 process 6 binding: 0 0 0 0 0 1 0 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 0 1 0 0 0 0 0 process 10 binding: 0 0 0 0 1 0 0 0 process 11 binding: 0 0 0 0 0 0 1 0 process 12 binding: 0 1 0 0 0 0 0 0 process 13 binding: 0 0 0 1 0 0 0 0 process 14 binding: 0 0 0 0 0 1 0 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.core.core-4.out0000644000175000017500000000110612620254305027655 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 0 0 0 process 2 binding: 0 1 0 0 0 0 0 0 process 3 binding: 0 0 0 0 0 1 0 0 process 4 binding: 0 0 1 0 0 0 0 0 process 5 binding: 0 0 0 0 0 0 1 0 process 6 binding: 0 0 0 1 0 0 0 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 0 0 0 1 0 0 0 process 10 binding: 0 1 0 0 0 0 0 0 process 11 binding: 0 0 0 0 0 1 0 0 process 12 binding: 0 0 1 0 0 0 0 0 process 13 binding: 0 0 0 0 0 0 1 0 process 14 binding: 0 0 0 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread-4.hwthread-8.out0000644000175000017500000000110612620254305031554 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread-8.core-2.out0000644000175000017500000000110612620254305030674 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread.core-2.out0000644000175000017500000000150612620254305030534 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 process 1 binding: 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 process 2 binding: 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 process 3 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 process 4 binding: 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 5 binding: 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 process 6 binding: 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 process 7 binding: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 process 8 binding: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 process 9 binding: 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 process 10 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 process 11 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 process 12 binding: 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 13 binding: 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 process 14 binding: 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 process 15 binding: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.numa.hwthread-4.out0000644000175000017500000000110612620254305030543 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.core-2.core-4.out0000644000175000017500000000150612620254305030017 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 2 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 3 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 5 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 6 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 7 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 9 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 10 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 11 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 13 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 14 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.core.hwthread-4.out0000644000175000017500000000110612620254305030534 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 1 0 0 0 0 0 0 process 2 binding: 0 0 1 0 0 0 0 0 process 3 binding: 0 0 0 1 0 0 0 0 process 4 binding: 0 0 0 0 1 0 0 0 process 5 binding: 0 0 0 0 0 1 0 0 process 6 binding: 0 0 0 0 0 0 1 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 1 0 0 0 0 0 0 process 10 binding: 0 0 1 0 0 0 0 0 process 11 binding: 0 0 0 1 0 0 0 0 process 12 binding: 0 0 0 0 1 0 0 0 process 13 binding: 0 0 0 0 0 1 0 0 process 14 binding: 0 0 0 0 0 0 1 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.core-4.hwthread-4.out0000644000175000017500000000110612620254305030675 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 1 0 1 0 process 1 binding: 0 1 0 1 0 1 0 1 process 2 binding: 1 0 1 0 1 0 1 0 process 3 binding: 0 1 0 1 0 1 0 1 process 4 binding: 1 0 1 0 1 0 1 0 process 5 binding: 0 1 0 1 0 1 0 1 process 6 binding: 1 0 1 0 1 0 1 0 process 7 binding: 0 1 0 1 0 1 0 1 process 8 binding: 1 0 1 0 1 0 1 0 process 9 binding: 0 1 0 1 0 1 0 1 process 10 binding: 1 0 1 0 1 0 1 0 process 11 binding: 0 1 0 1 0 1 0 1 process 12 binding: 1 0 1 0 1 0 1 0 process 13 binding: 0 1 0 1 0 1 0 1 process 14 binding: 1 0 1 0 1 0 1 0 process 15 binding: 0 1 0 1 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread.socket.out0000644000175000017500000000110612620254305030730 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 1 0 0 0 0 0 0 process 2 binding: 0 0 1 0 0 0 0 0 process 3 binding: 0 0 0 1 0 0 0 0 process 4 binding: 0 0 0 0 1 0 0 0 process 5 binding: 0 0 0 0 0 1 0 0 process 6 binding: 0 0 0 0 0 0 1 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 1 0 0 0 0 0 0 process 10 binding: 0 0 1 0 0 0 0 0 process 11 binding: 0 0 0 1 0 0 0 0 process 12 binding: 0 0 0 0 1 0 0 0 process 13 binding: 0 0 0 0 0 1 0 0 process 14 binding: 0 0 0 0 0 0 1 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread-2.numa.out0000644000175000017500000000110612620254305030537 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.board.hwthread-8.out0000644000175000017500000000150612620254305030701 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.core-2.core.out0000644000175000017500000000110612620254305027651 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 0 1 1 1 1 0 0 process 2 binding: 0 0 0 0 1 1 1 1 process 3 binding: 1 1 0 0 0 0 1 1 process 4 binding: 1 1 1 1 0 0 0 0 process 5 binding: 0 0 1 1 1 1 0 0 process 6 binding: 0 0 0 0 1 1 1 1 process 7 binding: 1 1 0 0 0 0 1 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 0 1 1 1 1 0 0 process 10 binding: 0 0 0 0 1 1 1 1 process 11 binding: 1 1 0 0 0 0 1 1 process 12 binding: 1 1 1 1 0 0 0 0 process 13 binding: 0 0 1 1 1 1 0 0 process 14 binding: 0 0 0 0 1 1 1 1 process 15 binding: 1 1 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.core-4.hwthread-4.out0000644000175000017500000000110612620254305030672 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.board.hwthread.out0000644000175000017500000000110612620254305030531 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.core-4.core-2.out0000644000175000017500000000110612620254305030012 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.board.hwthread-8.out0000644000175000017500000000110612620254305030677 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.numa.board.out0000644000175000017500000000150612620254305027666 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread-4.core-4.out0000644000175000017500000000110612620254305030675 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 1 0 1 0 process 1 binding: 0 1 0 1 0 1 0 1 process 2 binding: 1 0 1 0 1 0 1 0 process 3 binding: 0 1 0 1 0 1 0 1 process 4 binding: 1 0 1 0 1 0 1 0 process 5 binding: 0 1 0 1 0 1 0 1 process 6 binding: 1 0 1 0 1 0 1 0 process 7 binding: 0 1 0 1 0 1 0 1 process 8 binding: 1 0 1 0 1 0 1 0 process 9 binding: 0 1 0 1 0 1 0 1 process 10 binding: 1 0 1 0 1 0 1 0 process 11 binding: 0 1 0 1 0 1 0 1 process 12 binding: 1 0 1 0 1 0 1 0 process 13 binding: 0 1 0 1 0 1 0 1 process 14 binding: 1 0 1 0 1 0 1 0 process 15 binding: 0 1 0 1 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.core-2.socket.out0000644000175000017500000000110612620254305030214 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 0 0 0 0 process 1 binding: 0 1 0 1 0 0 0 0 process 2 binding: 0 0 0 0 1 0 1 0 process 3 binding: 0 0 0 0 0 1 0 1 process 4 binding: 1 0 1 0 0 0 0 0 process 5 binding: 0 1 0 1 0 0 0 0 process 6 binding: 0 0 0 0 1 0 1 0 process 7 binding: 0 0 0 0 0 1 0 1 process 8 binding: 1 0 1 0 0 0 0 0 process 9 binding: 0 1 0 1 0 0 0 0 process 10 binding: 0 0 0 0 1 0 1 0 process 11 binding: 0 0 0 0 0 1 0 1 process 12 binding: 1 0 1 0 0 0 0 0 process 13 binding: 0 1 0 1 0 0 0 0 process 14 binding: 0 0 0 0 1 0 1 0 process 15 binding: 0 0 0 0 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.numa.hwthread-8.out0000644000175000017500000000150612620254305030552 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.board.core-4.out0000644000175000017500000000110612620254305030012 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread-4.core-2.out0000644000175000017500000000110612620254305030673 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 1 0 1 0 process 1 binding: 0 1 0 1 1 0 1 0 process 2 binding: 0 1 0 1 0 1 0 1 process 3 binding: 1 0 1 0 0 1 0 1 process 4 binding: 1 0 1 0 1 0 1 0 process 5 binding: 0 1 0 1 1 0 1 0 process 6 binding: 0 1 0 1 0 1 0 1 process 7 binding: 1 0 1 0 0 1 0 1 process 8 binding: 1 0 1 0 1 0 1 0 process 9 binding: 0 1 0 1 1 0 1 0 process 10 binding: 0 1 0 1 0 1 0 1 process 11 binding: 1 0 1 0 0 1 0 1 process 12 binding: 1 0 1 0 1 0 1 0 process 13 binding: 0 1 0 1 1 0 1 0 process 14 binding: 0 1 0 1 0 1 0 1 process 15 binding: 1 0 1 0 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread-8.hwthread-8.out0000644000175000017500000000150612620254305031565 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.core-4.hwthread-2.out0000644000175000017500000000110612620254305030670 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.core-2.hwthread.out0000644000175000017500000000150612620254305030534 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 1 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 2 binding: 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 process 3 binding: 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 process 4 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 process 7 binding: 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 process 8 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 9 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 10 binding: 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 process 11 binding: 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 process 12 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 13 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 14 binding: 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 process 15 binding: 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread-4.board.out0000644000175000017500000000110612620254305030673 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 1 0 1 0 process 1 binding: 0 1 0 1 0 1 0 1 process 2 binding: 1 0 1 0 1 0 1 0 process 3 binding: 0 1 0 1 0 1 0 1 process 4 binding: 1 0 1 0 1 0 1 0 process 5 binding: 0 1 0 1 0 1 0 1 process 6 binding: 1 0 1 0 1 0 1 0 process 7 binding: 0 1 0 1 0 1 0 1 process 8 binding: 1 0 1 0 1 0 1 0 process 9 binding: 0 1 0 1 0 1 0 1 process 10 binding: 1 0 1 0 1 0 1 0 process 11 binding: 0 1 0 1 0 1 0 1 process 12 binding: 1 0 1 0 1 0 1 0 process 13 binding: 0 1 0 1 0 1 0 1 process 14 binding: 1 0 1 0 1 0 1 0 process 15 binding: 0 1 0 1 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread-2.core-4.out0000644000175000017500000000110612620254305030672 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 1 0 0 process 2 binding: 0 0 1 1 0 0 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 0 0 1 1 0 0 process 6 binding: 0 0 1 1 0 0 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 0 0 1 1 0 0 process 10 binding: 0 0 1 1 0 0 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 0 0 1 1 0 0 process 14 binding: 0 0 1 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread-4.core.out0000644000175000017500000000110612620254305030534 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 1 0 1 0 process 1 binding: 0 1 1 0 1 0 1 0 process 2 binding: 0 1 0 1 1 0 1 0 process 3 binding: 0 1 0 1 0 1 1 0 process 4 binding: 0 1 0 1 0 1 0 1 process 5 binding: 1 0 0 1 0 1 0 1 process 6 binding: 1 0 1 0 0 1 0 1 process 7 binding: 1 0 1 0 1 0 0 1 process 8 binding: 1 0 1 0 1 0 1 0 process 9 binding: 0 1 1 0 1 0 1 0 process 10 binding: 0 1 0 1 1 0 1 0 process 11 binding: 0 1 0 1 0 1 1 0 process 12 binding: 0 1 0 1 0 1 0 1 process 13 binding: 1 0 0 1 0 1 0 1 process 14 binding: 1 0 1 0 0 1 0 1 process 15 binding: 1 0 1 0 1 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.core.core-2.out0000644000175000017500000000110612620254305027651 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 1 0 0 process 2 binding: 0 0 1 1 0 0 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 0 0 1 1 0 0 process 6 binding: 0 0 1 1 0 0 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 0 0 1 1 0 0 process 10 binding: 0 0 1 1 0 0 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 0 0 1 1 0 0 process 14 binding: 0 0 1 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.core-4.hwthread-8.out0000644000175000017500000000110612620254305030700 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.core-4.core.out0000644000175000017500000000110612620254305027653 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.socket.core-4.out0000644000175000017500000000110612620254305030216 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 1 0 1 0 process 1 binding: 0 1 0 1 0 1 0 1 process 2 binding: 1 0 1 0 1 0 1 0 process 3 binding: 0 1 0 1 0 1 0 1 process 4 binding: 1 0 1 0 1 0 1 0 process 5 binding: 0 1 0 1 0 1 0 1 process 6 binding: 1 0 1 0 1 0 1 0 process 7 binding: 0 1 0 1 0 1 0 1 process 8 binding: 1 0 1 0 1 0 1 0 process 9 binding: 0 1 0 1 0 1 0 1 process 10 binding: 1 0 1 0 1 0 1 0 process 11 binding: 0 1 0 1 0 1 0 1 process 12 binding: 1 0 1 0 1 0 1 0 process 13 binding: 0 1 0 1 0 1 0 1 process 14 binding: 1 0 1 0 1 0 1 0 process 15 binding: 0 1 0 1 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread-8.hwthread-2.out0000644000175000017500000000150612620254305031557 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 process 2 binding: 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 process 3 binding: 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 process 4 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 5 binding: 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 process 6 binding: 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 process 7 binding: 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 process 8 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 9 binding: 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 process 10 binding: 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 process 11 binding: 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 process 12 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 13 binding: 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 process 14 binding: 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 process 15 binding: 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.socket.core-2.out0000644000175000017500000000150612620254305030216 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 3 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 5 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 7 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 9 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 11 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 13 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 15 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.socket.core-2.out0000644000175000017500000000110612620254305030213 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.core.core-4.out0000644000175000017500000000110612620254305027653 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread-2.hwthread-2.out0000644000175000017500000000110612620254305031544 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.numa.hwthread.out0000644000175000017500000000110612620254305030400 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread-8.socket.out0000644000175000017500000000110612620254305031077 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread-2.hwthread-4.out0000644000175000017500000000110612620254305031551 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 0 0 0 0 process 1 binding: 0 1 0 1 0 0 0 0 process 2 binding: 0 0 0 0 1 0 1 0 process 3 binding: 0 0 0 0 0 1 0 1 process 4 binding: 1 0 1 0 0 0 0 0 process 5 binding: 0 1 0 1 0 0 0 0 process 6 binding: 0 0 0 0 1 0 1 0 process 7 binding: 0 0 0 0 0 1 0 1 process 8 binding: 1 0 1 0 0 0 0 0 process 9 binding: 0 1 0 1 0 0 0 0 process 10 binding: 0 0 0 0 1 0 1 0 process 11 binding: 0 0 0 0 0 1 0 1 process 12 binding: 1 0 1 0 0 0 0 0 process 13 binding: 0 1 0 1 0 0 0 0 process 14 binding: 0 0 0 0 1 0 1 0 process 15 binding: 0 0 0 0 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.core-2.core-2.out0000644000175000017500000000110612620254305030010 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.board.core-2.out0000644000175000017500000000110612620254305030013 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread-4.socket.out0000644000175000017500000000110612620254305031074 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 1 0 1 0 process 1 binding: 0 1 0 1 0 1 0 1 process 2 binding: 1 0 1 0 1 0 1 0 process 3 binding: 0 1 0 1 0 1 0 1 process 4 binding: 1 0 1 0 1 0 1 0 process 5 binding: 0 1 0 1 0 1 0 1 process 6 binding: 1 0 1 0 1 0 1 0 process 7 binding: 0 1 0 1 0 1 0 1 process 8 binding: 1 0 1 0 1 0 1 0 process 9 binding: 0 1 0 1 0 1 0 1 process 10 binding: 1 0 1 0 1 0 1 0 process 11 binding: 0 1 0 1 0 1 0 1 process 12 binding: 1 0 1 0 1 0 1 0 process 13 binding: 0 1 0 1 0 1 0 1 process 14 binding: 1 0 1 0 1 0 1 0 process 15 binding: 0 1 0 1 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread-4.hwthread-8.out0000644000175000017500000000110612620254305031557 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 1 0 1 0 process 1 binding: 0 1 0 1 0 1 0 1 process 2 binding: 1 0 1 0 1 0 1 0 process 3 binding: 0 1 0 1 0 1 0 1 process 4 binding: 1 0 1 0 1 0 1 0 process 5 binding: 0 1 0 1 0 1 0 1 process 6 binding: 1 0 1 0 1 0 1 0 process 7 binding: 0 1 0 1 0 1 0 1 process 8 binding: 1 0 1 0 1 0 1 0 process 9 binding: 0 1 0 1 0 1 0 1 process 10 binding: 1 0 1 0 1 0 1 0 process 11 binding: 0 1 0 1 0 1 0 1 process 12 binding: 1 0 1 0 1 0 1 0 process 13 binding: 0 1 0 1 0 1 0 1 process 14 binding: 1 0 1 0 1 0 1 0 process 15 binding: 0 1 0 1 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread-4.core-4.out0000644000175000017500000000110612620254305030672 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.numa.numa.out0000644000175000017500000000110612620254305027534 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.socket.hwthread.out0000644000175000017500000000110612620254305030730 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.socket.socket.out0000644000175000017500000000110612620254305030412 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.socket.hwthread-8.out0000644000175000017500000000110612620254305031100 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 1 0 1 0 process 1 binding: 0 1 0 1 0 1 0 1 process 2 binding: 1 0 1 0 1 0 1 0 process 3 binding: 0 1 0 1 0 1 0 1 process 4 binding: 1 0 1 0 1 0 1 0 process 5 binding: 0 1 0 1 0 1 0 1 process 6 binding: 1 0 1 0 1 0 1 0 process 7 binding: 0 1 0 1 0 1 0 1 process 8 binding: 1 0 1 0 1 0 1 0 process 9 binding: 0 1 0 1 0 1 0 1 process 10 binding: 1 0 1 0 1 0 1 0 process 11 binding: 0 1 0 1 0 1 0 1 process 12 binding: 1 0 1 0 1 0 1 0 process 13 binding: 0 1 0 1 0 1 0 1 process 14 binding: 1 0 1 0 1 0 1 0 process 15 binding: 0 1 0 1 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.core-2.core-2.out0000644000175000017500000000150612620254305030015 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.numa.core-4.out0000644000175000017500000000110612620254305027665 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread.core-2.out0000644000175000017500000000110612620254305030527 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 0 0 0 process 2 binding: 0 1 0 0 0 0 0 0 process 3 binding: 0 0 0 0 0 1 0 0 process 4 binding: 0 0 1 0 0 0 0 0 process 5 binding: 0 0 0 0 0 0 1 0 process 6 binding: 0 0 0 1 0 0 0 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 0 0 0 1 0 0 0 process 10 binding: 0 1 0 0 0 0 0 0 process 11 binding: 0 0 0 0 0 1 0 0 process 12 binding: 0 0 1 0 0 0 0 0 process 13 binding: 0 0 0 0 0 0 1 0 process 14 binding: 0 0 0 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.core-4.hwthread.out0000644000175000017500000000110612620254305030531 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.core-2.hwthread-8.out0000644000175000017500000000110612620254305030674 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread.hwthread-8.out0000644000175000017500000000110612620254305031416 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 0 1 0 0 0 0 0 process 2 binding: 0 0 0 0 1 0 0 0 process 3 binding: 0 0 0 0 0 0 1 0 process 4 binding: 0 1 0 0 0 0 0 0 process 5 binding: 0 0 0 1 0 0 0 0 process 6 binding: 0 0 0 0 0 1 0 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 0 1 0 0 0 0 0 process 10 binding: 0 0 0 0 1 0 0 0 process 11 binding: 0 0 0 0 0 0 1 0 process 12 binding: 0 1 0 0 0 0 0 0 process 13 binding: 0 0 0 1 0 0 0 0 process 14 binding: 0 0 0 0 0 1 0 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.core.core-4.out0000644000175000017500000000150612620254305027660 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 2 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 3 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 4 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 5 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 6 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 7 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 9 binding: 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 process 10 binding: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 11 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 process 12 binding: 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 process 13 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 process 14 binding: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.socket.board.out0000644000175000017500000000110612620254305030213 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.core-4.hwthread.out0000644000175000017500000000150612620254305030536 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 2 binding: 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 process 3 binding: 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 process 4 binding: 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 process 5 binding: 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 process 6 binding: 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 process 7 binding: 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 process 8 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 9 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 10 binding: 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 process 11 binding: 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 process 12 binding: 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 process 13 binding: 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 process 14 binding: 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 process 15 binding: 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.board.hwthread-4.out0000644000175000017500000000150612620254305030675 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread-4.core-2.out0000644000175000017500000000150612620254305030675 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.socket.core-4.out0000644000175000017500000000110612620254305030215 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 1 0 0 process 2 binding: 0 0 1 1 0 0 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 0 0 1 1 0 0 process 6 binding: 0 0 1 1 0 0 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 0 0 1 1 0 0 process 10 binding: 0 0 1 1 0 0 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 0 0 1 1 0 0 process 14 binding: 0 0 1 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.core.core-2.out0000644000175000017500000000110612620254305027653 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 0 1 0 0 0 0 0 process 2 binding: 0 0 0 0 1 0 0 0 process 3 binding: 0 0 0 0 0 0 1 0 process 4 binding: 0 1 0 0 0 0 0 0 process 5 binding: 0 0 0 1 0 0 0 0 process 6 binding: 0 0 0 0 0 1 0 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 0 1 0 0 0 0 0 process 10 binding: 0 0 0 0 1 0 0 0 process 11 binding: 0 0 0 0 0 0 1 0 process 12 binding: 0 1 0 0 0 0 0 0 process 13 binding: 0 0 0 1 0 0 0 0 process 14 binding: 0 0 0 0 0 1 0 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.board.hwthread-2.out0000644000175000017500000000110612620254305030666 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread.core-4.out0000644000175000017500000000150612620254305030536 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 process 2 binding: 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 3 binding: 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 process 4 binding: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 process 5 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 process 6 binding: 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 7 binding: 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 process 8 binding: 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 process 9 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 process 10 binding: 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 process 11 binding: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 process 12 binding: 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 process 13 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 process 14 binding: 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.socket.core-4.out0000644000175000017500000000110612620254305030213 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread.hwthread-4.out0000644000175000017500000000150612620254305031414 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 process 1 binding: 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 process 2 binding: 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 process 3 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 process 4 binding: 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 5 binding: 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 process 6 binding: 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 process 7 binding: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 process 8 binding: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 process 9 binding: 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 process 10 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 process 11 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 process 12 binding: 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 13 binding: 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 process 14 binding: 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 process 15 binding: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread-8.numa.out0000644000175000017500000000150612620254305030552 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.core.socket.out0000644000175000017500000000110612620254305030054 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 0 1 0 0 0 0 0 process 2 binding: 0 0 0 0 1 0 0 0 process 3 binding: 0 0 0 0 0 0 1 0 process 4 binding: 0 1 0 0 0 0 0 0 process 5 binding: 0 0 0 1 0 0 0 0 process 6 binding: 0 0 0 0 0 1 0 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 0 1 0 0 0 0 0 process 10 binding: 0 0 0 0 1 0 0 0 process 11 binding: 0 0 0 0 0 0 1 0 process 12 binding: 0 1 0 0 0 0 0 0 process 13 binding: 0 0 0 1 0 0 0 0 process 14 binding: 0 0 0 0 0 1 0 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.numa.numa.out0000644000175000017500000000110612620254305027532 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.board.hwthread.out0000644000175000017500000000150612620254305030534 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.core-4.hwthread.out0000644000175000017500000000110612620254305030534 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 1 0 1 0 process 1 binding: 0 1 1 0 1 0 1 0 process 2 binding: 0 1 0 1 1 0 1 0 process 3 binding: 0 1 0 1 0 1 1 0 process 4 binding: 0 1 0 1 0 1 0 1 process 5 binding: 1 0 0 1 0 1 0 1 process 6 binding: 1 0 1 0 0 1 0 1 process 7 binding: 1 0 1 0 1 0 0 1 process 8 binding: 1 0 1 0 1 0 1 0 process 9 binding: 0 1 1 0 1 0 1 0 process 10 binding: 0 1 0 1 1 0 1 0 process 11 binding: 0 1 0 1 0 1 1 0 process 12 binding: 0 1 0 1 0 1 0 1 process 13 binding: 1 0 0 1 0 1 0 1 process 14 binding: 1 0 1 0 0 1 0 1 process 15 binding: 1 0 1 0 1 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.core-2.hwthread-2.out0000644000175000017500000000110612620254305030671 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 0 0 0 0 process 1 binding: 0 0 0 0 1 0 1 0 process 2 binding: 0 1 0 1 0 0 0 0 process 3 binding: 0 0 0 0 0 1 0 1 process 4 binding: 1 0 1 0 0 0 0 0 process 5 binding: 0 0 0 0 1 0 1 0 process 6 binding: 0 1 0 1 0 0 0 0 process 7 binding: 0 0 0 0 0 1 0 1 process 8 binding: 1 0 1 0 0 0 0 0 process 9 binding: 0 0 0 0 1 0 1 0 process 10 binding: 0 1 0 1 0 0 0 0 process 11 binding: 0 0 0 0 0 1 0 1 process 12 binding: 1 0 1 0 0 0 0 0 process 13 binding: 0 0 0 0 1 0 1 0 process 14 binding: 0 1 0 1 0 0 0 0 process 15 binding: 0 0 0 0 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread-8.core-4.out0000644000175000017500000000110612620254305030676 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.socket.numa.out0000644000175000017500000000110612620254305030062 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.core-4.core.out0000644000175000017500000000110612620254305027656 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 1 0 1 0 process 1 binding: 0 1 1 0 1 0 1 0 process 2 binding: 0 1 0 1 1 0 1 0 process 3 binding: 0 1 0 1 0 1 1 0 process 4 binding: 0 1 0 1 0 1 0 1 process 5 binding: 1 0 0 1 0 1 0 1 process 6 binding: 1 0 1 0 0 1 0 1 process 7 binding: 1 0 1 0 1 0 0 1 process 8 binding: 1 0 1 0 1 0 1 0 process 9 binding: 0 1 1 0 1 0 1 0 process 10 binding: 0 1 0 1 1 0 1 0 process 11 binding: 0 1 0 1 0 1 1 0 process 12 binding: 0 1 0 1 0 1 0 1 process 13 binding: 1 0 0 1 0 1 0 1 process 14 binding: 1 0 1 0 0 1 0 1 process 15 binding: 1 0 1 0 1 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.socket.core.out0000644000175000017500000000150612620254305030057 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 2 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 3 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 4 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 5 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 6 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 7 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 9 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 10 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 11 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 12 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 13 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 14 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 15 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread-4.core.out0000644000175000017500000000110612620254305030531 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 0 1 1 1 1 0 0 process 2 binding: 0 0 0 0 1 1 1 1 process 3 binding: 1 1 0 0 0 0 1 1 process 4 binding: 1 1 1 1 0 0 0 0 process 5 binding: 0 0 1 1 1 1 0 0 process 6 binding: 0 0 0 0 1 1 1 1 process 7 binding: 1 1 0 0 0 0 1 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 0 1 1 1 1 0 0 process 10 binding: 0 0 0 0 1 1 1 1 process 11 binding: 1 1 0 0 0 0 1 1 process 12 binding: 1 1 1 1 0 0 0 0 process 13 binding: 0 0 1 1 1 1 0 0 process 14 binding: 0 0 0 0 1 1 1 1 process 15 binding: 1 1 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.core-2.hwthread-2.out0000644000175000017500000000110612620254305030670 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.core-2.numa.out0000644000175000017500000000150612620254305027666 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 2 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 3 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 5 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 6 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 7 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 9 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 10 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 11 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 13 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 14 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread-4.board.out0000644000175000017500000000110612620254305030672 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.hwthread-4.core-4.out0000644000175000017500000000110612620254305030674 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread-2.core-4.out0000644000175000017500000000110612620254305030673 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 0 0 0 0 process 1 binding: 0 1 0 1 0 0 0 0 process 2 binding: 0 0 0 0 1 0 1 0 process 3 binding: 0 0 0 0 0 1 0 1 process 4 binding: 1 0 1 0 0 0 0 0 process 5 binding: 0 1 0 1 0 0 0 0 process 6 binding: 0 0 0 0 1 0 1 0 process 7 binding: 0 0 0 0 0 1 0 1 process 8 binding: 1 0 1 0 0 0 0 0 process 9 binding: 0 1 0 1 0 0 0 0 process 10 binding: 0 0 0 0 1 0 1 0 process 11 binding: 0 0 0 0 0 1 0 1 process 12 binding: 1 0 1 0 0 0 0 0 process 13 binding: 0 1 0 1 0 0 0 0 process 14 binding: 0 0 0 0 1 0 1 0 process 15 binding: 0 0 0 0 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.core.numa.out0000644000175000017500000000110612620254305027524 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 1 0 0 0 0 0 0 process 2 binding: 0 0 1 0 0 0 0 0 process 3 binding: 0 0 0 1 0 0 0 0 process 4 binding: 0 0 0 0 1 0 0 0 process 5 binding: 0 0 0 0 0 1 0 0 process 6 binding: 0 0 0 0 0 0 1 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 1 0 0 0 0 0 0 process 10 binding: 0 0 1 0 0 0 0 0 process 11 binding: 0 0 0 1 0 0 0 0 process 12 binding: 0 0 0 0 1 0 0 0 process 13 binding: 0 0 0 0 0 1 0 0 process 14 binding: 0 0 0 0 0 0 1 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.core.hwthread-4.out0000644000175000017500000000110612620254305030531 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 1 0 0 process 2 binding: 0 0 1 1 0 0 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 0 0 1 1 0 0 process 6 binding: 0 0 1 1 0 0 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 0 0 1 1 0 0 process 10 binding: 0 0 1 1 0 0 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 0 0 1 1 0 0 process 14 binding: 0 0 1 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread-8.board.out0000644000175000017500000000150612620254305030701 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.board.socket.out0000644000175000017500000000110612620254305030214 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.numa.core-4.out0000644000175000017500000000110612620254305027663 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread-2.socket.out0000644000175000017500000000110612620254305031067 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.numa.core.out0000644000175000017500000000110612620254305027525 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.numa.hwthread-2.out0000644000175000017500000000150612620254305030544 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 1 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 2 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 3 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 4 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 5 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 6 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 7 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 9 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 10 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 11 binding: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 process 12 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 13 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 14 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 process 15 binding: 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.numa.hwthread.out0000644000175000017500000000110612620254305030402 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.hwthread-4.hwthread.out0000644000175000017500000000110612620254305031412 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 1 0 1 0 process 1 binding: 0 1 1 0 1 0 1 0 process 2 binding: 0 1 0 1 1 0 1 0 process 3 binding: 0 1 0 1 0 1 1 0 process 4 binding: 0 1 0 1 0 1 0 1 process 5 binding: 1 0 0 1 0 1 0 1 process 6 binding: 1 0 1 0 0 1 0 1 process 7 binding: 1 0 1 0 1 0 0 1 process 8 binding: 1 0 1 0 1 0 1 0 process 9 binding: 0 1 1 0 1 0 1 0 process 10 binding: 0 1 0 1 1 0 1 0 process 11 binding: 0 1 0 1 0 1 1 0 process 12 binding: 0 1 0 1 0 1 0 1 process 13 binding: 1 0 0 1 0 1 0 1 process 14 binding: 1 0 1 0 0 1 0 1 process 15 binding: 1 0 1 0 1 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.socket.numa.out0000644000175000017500000000110612620254305030065 0ustar mbanckmbanckprocess 0 binding: 1 0 1 0 1 0 1 0 process 1 binding: 0 1 0 1 0 1 0 1 process 2 binding: 1 0 1 0 1 0 1 0 process 3 binding: 0 1 0 1 0 1 0 1 process 4 binding: 1 0 1 0 1 0 1 0 process 5 binding: 0 1 0 1 0 1 0 1 process 6 binding: 1 0 1 0 1 0 1 0 process 7 binding: 0 1 0 1 0 1 0 1 process 8 binding: 1 0 1 0 1 0 1 0 process 9 binding: 0 1 0 1 0 1 0 1 process 10 binding: 1 0 1 0 1 0 1 0 process 11 binding: 0 1 0 1 0 1 0 1 process 12 binding: 1 0 1 0 1 0 1 0 process 13 binding: 0 1 0 1 0 1 0 1 process 14 binding: 1 0 1 0 1 0 1 0 process 15 binding: 0 1 0 1 0 1 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread-4.hwthread.out0000644000175000017500000000110612620254305031407 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 1 1 1 1 0 0 0 process 2 binding: 0 0 1 1 1 1 0 0 process 3 binding: 0 0 0 1 1 1 1 0 process 4 binding: 0 0 0 0 1 1 1 1 process 5 binding: 1 0 0 0 0 1 1 1 process 6 binding: 1 1 0 0 0 0 1 1 process 7 binding: 1 1 1 0 0 0 0 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 1 1 1 1 0 0 0 process 10 binding: 0 0 1 1 1 1 0 0 process 11 binding: 0 0 0 1 1 1 1 0 process 12 binding: 0 0 0 0 1 1 1 1 process 13 binding: 1 0 0 0 0 1 1 1 process 14 binding: 1 1 0 0 0 0 1 1 process 15 binding: 1 1 1 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.board.core.out0000644000175000017500000000110612620254305027653 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.socket.numa.out0000644000175000017500000000110612620254305030064 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.numa.hwthread-2.out0000644000175000017500000000110612620254305030541 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.board.core-4.out0000644000175000017500000000150612620254305030017 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 1 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 2 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 3 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 4 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 5 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 6 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 7 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 8 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 9 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 10 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 11 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 12 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 13 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 14 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 process 15 binding: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo4.core.numa.out0000644000175000017500000000110612620254305027525 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 process 1 binding: 0 0 1 0 0 0 0 0 process 2 binding: 0 0 0 0 1 0 0 0 process 3 binding: 0 0 0 0 0 0 1 0 process 4 binding: 0 1 0 0 0 0 0 0 process 5 binding: 0 0 0 1 0 0 0 0 process 6 binding: 0 0 0 0 0 1 0 0 process 7 binding: 0 0 0 0 0 0 0 1 process 8 binding: 1 0 0 0 0 0 0 0 process 9 binding: 0 0 1 0 0 0 0 0 process 10 binding: 0 0 0 0 1 0 0 0 process 11 binding: 0 0 0 0 0 0 1 0 process 12 binding: 0 1 0 0 0 0 0 0 process 13 binding: 0 0 0 1 0 0 0 0 process 14 binding: 0 0 0 0 0 1 0 0 process 15 binding: 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo1.hwthread-4.hwthread-4.out0000644000175000017500000000110612620254305031550 0ustar mbanckmbanckprocess 0 binding: 1 1 1 1 0 0 0 0 process 1 binding: 0 0 0 0 1 1 1 1 process 2 binding: 1 1 1 1 0 0 0 0 process 3 binding: 0 0 0 0 1 1 1 1 process 4 binding: 1 1 1 1 0 0 0 0 process 5 binding: 0 0 0 0 1 1 1 1 process 6 binding: 1 1 1 1 0 0 0 0 process 7 binding: 0 0 0 0 1 1 1 1 process 8 binding: 1 1 1 1 0 0 0 0 process 9 binding: 0 0 0 0 1 1 1 1 process 10 binding: 1 1 1 1 0 0 0 0 process 11 binding: 0 0 0 0 1 1 1 1 process 12 binding: 1 1 1 1 0 0 0 0 process 13 binding: 0 0 0 0 1 1 1 1 process 14 binding: 1 1 1 1 0 0 0 0 process 15 binding: 0 0 0 0 1 1 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.core-2.hwthread-4.out0000644000175000017500000000110612620254305030672 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 1 0 0 process 2 binding: 0 0 1 1 0 0 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 0 0 1 1 0 0 process 6 binding: 0 0 1 1 0 0 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 0 0 1 1 0 0 process 10 binding: 0 0 1 1 0 0 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 0 0 1 1 0 0 process 14 binding: 0 0 1 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.core-2.core.out0000644000175000017500000000150612620254305027656 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 1 binding: 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 process 2 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 3 binding: 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 process 4 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 5 binding: 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 process 6 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 7 binding: 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 process 8 binding: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 process 9 binding: 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 process 10 binding: 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 process 11 binding: 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 process 12 binding: 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 process 13 binding: 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 process 14 binding: 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 process 15 binding: 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo3.core-2.core-2.out0000644000175000017500000000110612620254305030012 0ustar mbanckmbanckprocess 0 binding: 1 1 0 0 0 0 0 0 process 1 binding: 0 0 1 1 0 0 0 0 process 2 binding: 0 0 0 0 1 1 0 0 process 3 binding: 0 0 0 0 0 0 1 1 process 4 binding: 1 1 0 0 0 0 0 0 process 5 binding: 0 0 1 1 0 0 0 0 process 6 binding: 0 0 0 0 1 1 0 0 process 7 binding: 0 0 0 0 0 0 1 1 process 8 binding: 1 1 0 0 0 0 0 0 process 9 binding: 0 0 1 1 0 0 0 0 process 10 binding: 0 0 0 0 1 1 0 0 process 11 binding: 0 0 0 0 0 0 1 1 process 12 binding: 1 1 0 0 0 0 0 0 process 13 binding: 0 0 1 1 0 0 0 0 process 14 binding: 0 0 0 0 1 1 0 0 process 15 binding: 0 0 0 0 0 0 1 1 mpi-testsuite-3.2+dfsg/impls/hydra/binding_reference/expected.topo2.hwthread.hwthread-8.out0000644000175000017500000000150612620254305031420 0ustar mbanckmbanckprocess 0 binding: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 process 1 binding: 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 process 2 binding: 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 process 3 binding: 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 process 4 binding: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 process 5 binding: 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 process 6 binding: 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 process 7 binding: 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 process 8 binding: 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 process 9 binding: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 process 10 binding: 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 process 11 binding: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 process 12 binding: 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 process 13 binding: 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 process 14 binding: 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 process 15 binding: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 mpi-testsuite-3.2+dfsg/impls/hydra/Makefile.am0000644000175000017500000000035312620254305020650 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # testing: dummy $(builddir)/proc_binding.sh noinst_PROGRAMS = dummy CLEANFILES = actual.* mpi-testsuite-3.2+dfsg/impls/hydra/proc_binding.sh.in0000755000175000017500000000200012620254305022204 0ustar mbanckmbanck#!/bin/sh HYDRA_TOPO_DEBUG=1 export HYDRA_TOPO_DEBUG if test -f dummy; then errors=0 for topo in topo1 topo2 topo3 topo4 ; do export HWLOC_XMLFILE=@top_srcdir@/impls/hydra/binding_reference/$topo.xml for bind_ in hwthread hwthread:2 hwthread:4 hwthread:8 core core:2 core:4 socket numa board ; do for map_ in hwthread hwthread:2 hwthread:4 hwthread:8 core core:2 core:4 socket numa board ; do bind=`echo $bind_ | sed -e 's/:/-/g'` map=`echo $map_ | sed -e 's/:/-/g'` @MPIEXEC@ -bind-to $bind_ -map-by $map_ -n 16 ./dummy | sort -k2n > actual.${topo}.${bind}.${map}.out diff @top_srcdir@/impls/hydra/binding_reference/expected.${topo}.${bind}.${map}.out \ actual.${topo}.${bind}.${map}.out if test "$?" != "0" ; then echo "ERROR $topo $bind $map" errors=1 else rm actual.${topo}.${bind}.${map}.out fi done done done if test "$errors" = "0"; then echo " No Errors" exit 0 fi else echo "run make to build required dummy executable" exit 1 fi mpi-testsuite-3.2+dfsg/impls/hydra/dummy.c0000644000175000017500000000033512620254305020113 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* */ int main(int argc, char *argv[]) { return 0; } mpi-testsuite-3.2+dfsg/impls/Makefile.am0000644000175000017500000000047112620254305017542 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile.mtest EXTRA_DIST = testlist.in static_subdirs = SUBDIRS = $(static_subdirs) $(impldir) DIST_SUBDIRS = $(static_subdirs) mpich hydra mpi-testsuite-3.2+dfsg/impls/testlist.in0000644000175000017500000000001112620254305017677 0ustar mbanckmbanck@impldir@mpi-testsuite-3.2+dfsg/impls/mpich/0000755000175000017500000000000012621010235016575 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/impls/mpich/Makefile.in0000644000175000017500000005271612621010235020655 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2013 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = impls/mpich ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = testlist CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/testlist.in \ $(top_srcdir)/Makefile.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist.in static_subdirs = mpi_t # For future tests - note that the IO and RMA directories are optional, # and need to be handled as shown in this comment #SUBDIRS = $(static_subdirs) $(iodir) $(rmadir) SUBDIRS = $(static_subdirs) # For future tests, as noted above #DIST_SUBDIRS = $(static_subdirs) io rma DIST_SUBDIRS = $(static_subdirs) all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign impls/mpich/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign impls/mpich/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): testlist: $(top_builddir)/config.status $(srcdir)/testlist.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic cscopelist-am ctags ctags-am \ distclean distclean-generic distclean-tags distdir dvi dvi-am \ html html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/impls/mpich/Makefile.am0000644000175000017500000000104312620254305020636 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2013 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile.mtest EXTRA_DIST = testlist.in static_subdirs = mpi_t # For future tests - note that the IO and RMA directories are optional, # and need to be handled as shown in this comment #SUBDIRS = $(static_subdirs) $(iodir) $(rmadir) SUBDIRS = $(static_subdirs) # For future tests, as noted above #DIST_SUBDIRS = $(static_subdirs) io rma DIST_SUBDIRS = $(static_subdirs) mpi-testsuite-3.2+dfsg/impls/mpich/testlist.in0000644000175000017500000000024412620254305021007 0ustar mbanckmbanckmpi_t # The IO and RMA directories are optional and need to be handled in # a special way. Uncomment these as appropriate when a test is added. #@iodir@ #@rmadir@ mpi-testsuite-3.2+dfsg/impls/mpich/mpi_t/0000755000175000017500000000000012621010235017705 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/impls/mpich/mpi_t/collparmt.c0000644000175000017500000001213312620254305022055 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2013 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* */ #include #include "mpi.h" #include "mpitestconf.h" int main(int argc, char *argv[]) { int i, ncvar, cnameLen, verbosity, binding, scope; int wrank, wsize, provided; char cname[256]; char buf1[400], buf2[400], buf3[500]; MPI_Datatype dtype; MPI_T_enum enumtype; MPI_T_cvar_handle bcastHandle, bcastLongHandle; int bcastCount, bcastScope, bcastCvar = -1; int bcastLongCount, bcastLongScope, bcastLongCvar = -1; int gatherScope, gatherCvar = -1; int newval; int errs = 0; MPI_Init(&argc, &argv); MPI_T_init_thread(MPI_THREAD_SINGLE, &provided); MPI_Comm_rank(MPI_COMM_WORLD, &wrank); MPI_Comm_size(MPI_COMM_WORLD, &wsize); MPI_T_cvar_get_num(&ncvar); /* Find collective tuning cvars */ for (i = 0; i < ncvar; i++) { cnameLen = sizeof(cname); MPI_T_cvar_get_info(i, cname, &cnameLen, &verbosity, &dtype, &enumtype, NULL, NULL, &binding, &scope); if (strcmp(cname, "MPIR_CVAR_GATHER_VSMALL_MSG_SIZE") == 0) { gatherCvar = i; gatherScope = scope; } else if (strcmp(cname, "MPIR_CVAR_BCAST_SHORT_MSG_SIZE") == 0) { bcastCvar = i; bcastScope = scope; if (binding != MPI_T_BIND_NO_OBJECT && binding != MPI_T_BIND_MPI_COMM) { fprintf(stderr, "Unexpected binding for MPIR_CVAR_BCAST_SHORT_MSG\n"); errs++; } } else if (strcmp(cname, "MPIR_CVAR_BCAST_LONG_MSG_SIZE") == 0) { bcastLongCvar = i; bcastLongScope = scope; if (binding != MPI_T_BIND_NO_OBJECT && binding != MPI_T_BIND_MPI_COMM) { fprintf(stderr, "Unexpected binding for MPIR_CVAR_BCAST_LONG_MSG\n"); errs++; } } else if (strcmp(cname, "MPIR_CVAR_BCAST_MIN_PROCS") == 0) { } } /* Change the BCAST cvar. If the parameter has local scope, * change it only on some processes */ if (bcastCvar < 0 || bcastLongCvar < 0) { /* Skip because we did not find a corresponding control variable */ } else { MPI_T_cvar_handle_alloc(bcastCvar, NULL, &bcastHandle, &bcastCount); if (bcastScope == MPI_T_SCOPE_LOCAL) { if ((wrank & 0x1)) { newval = 100; MPI_T_cvar_write(bcastHandle, &newval); MPI_T_cvar_read(bcastHandle, &newval); if (newval != 100) { errs++; fprintf(stderr, "cvar write failed for bcast\n"); } } } else { newval = 100; MPI_T_cvar_write(bcastHandle, &newval); MPI_T_cvar_read(bcastHandle, &newval); if (newval != 100) { errs++; fprintf(stderr, "cvar write failed for bcast\n"); } } MPI_T_cvar_handle_alloc(bcastLongCvar, NULL, &bcastLongHandle, &bcastLongCount); if (bcastLongScope == MPI_T_SCOPE_LOCAL) { if ((wrank & 0x1)) { newval = 200; MPI_T_cvar_write(bcastLongHandle, &newval); MPI_T_cvar_read(bcastLongHandle, &newval); if (newval != 200) { errs++; fprintf(stderr, "cvar write failed for bcast long\n"); } } } else { newval = 100; MPI_T_cvar_write(bcastLongHandle, &newval); MPI_T_cvar_read(bcastLongHandle, &newval); if (newval != 100) { errs++; fprintf(stderr, "cvar write failed for bcast long\n"); } } /* Test 1: Everyone under the new size */ MPI_Bcast(buf1, 40, MPI_BYTE, 0, MPI_COMM_WORLD); /* Test 2: Everyone between the old and new size */ /* As of 8/16/13, it appears that the small and medium algorithm * are the same; at least, local changes do not cause deadlocks */ MPI_Bcast(buf2, 150, MPI_BYTE, 0, MPI_COMM_WORLD); /* Test 3: Everyone over the new long size */ /* As of 8/16/13, this causes the program to hang, almost * certainly because the parameters much be changed collectively * but incorrectly indicate that they have local scope */ MPI_Bcast(buf3, 250, MPI_BYTE, 0, MPI_COMM_WORLD); MPI_T_cvar_handle_free(&bcastHandle); MPI_T_cvar_handle_free(&bcastLongHandle); } /* Change the GATHER cvar. If the parameter has local scope, * change it only on some processes. Use a subcommunicator if the * size of comm_world is too large */ /* For full coverage, should address all parameters for collective * algorithm selection */ if (wrank == 0) { if (errs) { printf("found %d errors\n", errs); } else { printf(" No errors\n"); } } MPI_T_finalize(); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/impls/mpich/mpi_t/testlist0000644000175000017500000000001412620254305021505 0ustar mbanckmbanckcollparmt 16mpi-testsuite-3.2+dfsg/impls/mpich/mpi_t/Makefile.in0000644000175000017500000004652212621010235021763 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = collparmt$(EXEEXT) subdir = impls/mpich/mpi_t ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) collparmt_SOURCES = collparmt.c collparmt_OBJECTS = collparmt.$(OBJEXT) collparmt_LDADD = $(LDADD) collparmt_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = collparmt.c DIST_SOURCES = collparmt.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.mtest \ $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign impls/mpich/mpi_t/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign impls/mpich/mpi_t/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) collparmt$(EXEEXT): $(collparmt_OBJECTS) $(collparmt_DEPENDENCIES) $(EXTRA_collparmt_DEPENDENCIES) @rm -f collparmt$(EXEEXT) $(AM_V_CCLD)$(LINK) $(collparmt_OBJECTS) $(collparmt_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collparmt.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/impls/mpich/mpi_t/Makefile.am0000644000175000017500000000062012620254305021746 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile.mtest EXTRA_DIST = testlist ## for all programs that are just built from the single corresponding source ## file, we don't need per-target _SOURCES rules, automake will infer them ## correctly noinst_PROGRAMS = \ collparmt mpi-testsuite-3.2+dfsg/impls/README0000644000175000017500000000037512620254305016371 0ustar mbanckmbanckThis directory contains tests that are implementation-specific. These may be for an implementation (such as MPICH) or a subsystem (such as Hydra or ROMIO). Configure will attempt to enable the relevant tests, but they may need to be manually selected. mpi-testsuite-3.2+dfsg/runtests.in0000644000175000017500000012211412620254305016600 0ustar mbanckmbanck#! @PERL@ # -*- Mode: perl; -*- # # This script is the beginnings of a script to run a sequence of test # programs. See the MPICH document for a description of the test # strategy and requirements. # # Description # Tests are controlled by a file listing test programs; if the file is # a directory, then all of the programs in the directory and subdirectories # are run # # To run a test, the following steps are executed # Build the executable: # make programname # Run the executable # mpiexec -n ./programname >out 2>err # Check the return code (non zero is failure) # Check the stderr output (non empty is failure) # Check the stdout output (No Errors or Test passed are the only valid # output) # Remove executable, out, err files # # The format of a list file is # programname number-of-processes # If number-of-processes is missing, $np_default is used (this is 2 but can # be overridden with -np=new-value) # # Special feature: # Because these tests can take a long time to run, there is an # option to cause the tests to stop is a "stopfile" is found. # The stopfile can be created by a separate, watchdog process, to ensure that # tests end at a certain time. # The name of this file is (by default) .stoptest # in the top-level run directory. The environment variable # MPITEST_STOPTEST # can specify a different file name. # # Import the mkpath command use File::Path; use File::Copy qw(move); # Global variables $MPIMajorVersion = "@MPI_VERSION@"; $MPIMinorVersion = "@MPI_SUBVERSION@"; $mpiexec = "@MPIEXEC@"; # Name of mpiexec program (including path, if necessary) # ppnMax is the maximum number of processes per node. -1 means ignore. # ppnArg is the argument to use to mpiexec - format is "string%d"; e.g., # "-ppn %d" $ppnArg = ""; $ppnMax = -1; # timelimitArg is the argument to use to mpiexec to set the timelimit # in seconds. The format is "string%d", e.g., "-t %d" for Cray aprun $timelimitArg=""; # $testIsStrict = "@MPI_IS_STRICT@"; $MPIhasMPIX = "@MPI_HAS_MPIX@"; $runxfail = "@RUN_XFAIL@"; $np_arg = "-n"; # Name of argument to specify the number of processes $err_count = 0; # Number of programs that failed. $skip_count = 0; # Number of programs skipped $total_run = 0; # Number of programs tested $total_seen = 0; # Number of programs considered for testing $np_default = 2; # Default number of processes to use $np_max = -1; # Maximum number of processes to use (overrides any # value in the test list files. -1 is Infinity $defaultTimeLimit = 180; # default timeout $srcdir = "."; # Used to set the source dir for testlist files $curdir = "."; # used to track the relative current directory # Output forms $xmloutput = 0; # Set to true to get xml output (also specify file) $closeXMLOutput = 1; # Set to false to leave XML output file open to # accept additional data $verbose = 0; # Set to true to get more output $showProgress = 0; # Set to true to get a "." with each run program. $newline = "\r\n"; # Set to \r\n for Windows-friendly, \n for Unix only $batchRun = 0; # Set to true to batch the execution of the tests # (i.e., run them together, then test output, # rather than build/run/check for each test) $testCount = 0; # Used with batchRun to count tests. $batrundir = "."; # Set to the directory into which to run the examples # TAP (Test Anything Protocol) output my $tapoutput = 0; my $tapfile = ''; my $tapfullfile = ''; # Junit format output my $junitoutput = 0; my $junitfile = ''; my $junitfullfile = ''; $debug = 1; $depth = 0; # This is used to manage multiple open list files # Build flags $remove_this_pgm = 0; $clean_pgms = 1; my $program_wrapper = ''; #--------------------------------------------------------------------------- # Get some arguments from the environment # Currently, only the following are understood: # VERBOSE # RUNTESTS_VERBOSE (an alias for VERBOSE in case you want to # reserve VERBOSE) # RUNTESTS_SHOWPROGRESS # MPITEST_STOPTEST # MPITEST_TIMEOUT # MPITEST_PROGRAM_WRAPPER (Value is added after -np but before test # executable. Tools like valgrind may be inserted # this way.) #--------------------------------------------------------------------------- if ( defined($ENV{"VERBOSE"}) || defined($ENV{"V"}) || defined($ENV{"RUNTESTS_VERBOSE"}) ) { $verbose = 1; } if ( defined($ENV{"RUNTESTS_SHOWPROGRESS"} ) ) { $showProgress = 1; } if (defined($ENV{"MPITEST_STOPTEST"})) { $stopfile = $ENV{"MPITEST_STOPTEST"}; } else { $stopfile = `pwd` . "/.stoptest"; $stopfile =~ s/\r*\n*//g; # Remove any newlines (from pwd) } if (defined($ENV{"MPITEST_TIMEOUT"})) { $defaultTimeLimit = $ENV{"MPITEST_TIMEOUT"}; } # Define this to leave the XML output file open to receive additional data if (defined($ENV{'NOXMLCLOSE'}) && $ENV{'NOXMLCLOSE'} eq 'YES') { $closeXMLOutput = 0; } if (defined($ENV{'MPITEST_PROGRAM_WRAPPER'})) { $program_wrapper = $ENV{'MPITEST_PROGRAM_WRAPPER'}; } if (defined($ENV{'MPITEST_BATCH'})) { if ($ENV{'MPITEST_BATCH'} eq 'YES' || $ENV{'MPITEST_BATCH'} eq 'yes') { $batchRun = 1; } elsif ($ENV{'MPITEST_BATCH'} eq 'NO' || $ENV{'MPITEST_BATCH'} eq 'no') { $batchRun = 0; } else { print STDERR "Unrecognized value for MPITEST_BATCH = $ENV{'MPITEST_BATCH'}\n"; } } if (defined($ENV{'MPITEST_BATCHDIR'})) { $batrundir = $ENV{'MPITEST_BATCHDIR'}; } # PPN support if (defined($ENV{'MPITEST_PPNARG'})) { $ppnArg = $ENV{'MPITEST_PPNARG'}; } if (defined($ENV{'MPITEST_PPNMAX'})) { $ppnMax = $ENV{'MPITEST_PPNMAX'}; } if (defined($ENV{'MPITEST_TIMELIMITARG'})) { $timelimitArg = $ENV{'MPITEST_TIMELIMITARG'}; } # MPI version for testing if (defined($ENV{'MPITEST_MPIVERSION'})) { $_ = $ENV{'MPITEST_MPIVERSION'}; if (/(\d+)\.(\d+)/) { $MPIMajorVersion = $1; $MPIMinorVersion = $2; } } #--------------------------------------------------------------------------- # Process arguments and override any defaults #--------------------------------------------------------------------------- foreach $_ (@ARGV) { if (/--?mpiexec=(.*)/) { # Use mpiexec as given - it may be in the path, and # we don't want to bother to try and find it. $mpiexec = $1; } elsif (/--?mpiversion=(\d+)\.(\d+)/) { $MPIMajorVersion = $1; $MPIMinorVersion = $2; } elsif (/--?np=(\d+)/) { $np_default = $1; } elsif (/--?maxnp=(\d+)/) { $np_max = $1; } elsif (/--?ppn=(\d+)/) { $ppnMax = $1; } elsif (/--?ppnarg=(.*)/) { $ppnArg = $1; } elsif (/--?timelimitarg=(.*)/) { $timelimitArg = $1; } elsif (/--?tests=(.*)/) { $listfiles = $1; } elsif (/--?srcdir=(.*)/) { $srcdir = $1; } elsif (/--?verbose/) { $verbose = 1; } elsif (/--?showprogress/) { $showProgress = 1; } elsif (/--?debug/) { $debug = 1; } elsif (/--?batch/) { $batchRun = 1; } elsif (/--?batchdir=(.*)/) { $batrundir = $1; } elsif (/--?timeoutarg=(.*)/) { $timeoutArgPattern = $1; } elsif (/--?xmlfile=(.*)/) { $xmlfile = $1; if (! ($xmlfile =~ /^\//)) { $thisdir = `pwd`; chop $thisdir; $xmlfullfile = $thisdir . "/" . $xmlfile ; } else { $xmlfullfile = $xmlfile; } $xmloutput = 1; open( XMLOUT, ">$xmlfile" ) || die "Cannot open $xmlfile\n"; my $date = `date "+%Y-%m-%d-%H-%M"`; $date =~ s/\r?\n//; # MPISOURCE can be used to describe the source of MPI for this # test. print XMLOUT "$newline"; print XMLOUT "$newline"; print XMLOUT "$newline"; print XMLOUT "$date$newline"; print XMLOUT "@MPI_SOURCE@$newline"; } elsif (/--?noxmlclose/) { $closeXMLOutput = 0; } elsif (/--?tapfile=(.*)/) { $tapfile = $1; if ($tapfile !~ m|^/|) { $thisdir = `pwd`; chomp $thisdir; $tapfullfile = $thisdir . "/" . $tapfile ; } else { $tapfullfile = $tapfile; } $tapoutput = 1; open( TAPOUT, ">$tapfile" ) || die "Cannot open $tapfile\n"; my $date = `date "+%Y-%m-%d-%H-%M"`; $date =~ s/\r?\n//; print TAPOUT "TAP version 13\n"; print TAPOUT "# MPICH test suite results (TAP format)\n"; print TAPOUT "# date ${date}\n"; # we do not know at this point how many tests will be run, so do # not print a test plan line like "1..450" until the very end } elsif (/--?junitfile=(.*)/) { $junitfile = $1; if ($junitfile !~ m|^/|) { $thisdir = `pwd`; chomp $thisdir; $junitfullfile = $thisdir . "/" . $junitfile ; } else { $junitfullfile = $junitfile; } $junitoutput = 1; open( JUNITOUT, ">$junitfile" ) || die "Cannot open $junitfile\n"; } else { print STDERR "Unrecognized argument $_\n"; print STDERR "runtests [-tests=testfile] [-np=nprocesses] \ [-maxnp=max-nprocesses] [-srcdir=location-of-tests] \ [-ppn=max-proc-per-node] [-ppnarg=string] \ [-timelimitarg=string] [-mpiversion=major.minor] \ [-xmlfile=filename ] [-tapfile=filename ] \ [-junitfile=filename ] [-noxmlclose] \ [-verbose] [-showprogress] [-debug] [-batch]\n"; exit(1); } } # Perform any post argument processing if ($batchRun) { if (! -d $batrundir) { mkpath $batrundir || die "Could not create $batrundir\n"; } open( BATOUT, ">$batrundir/runtests.batch" ) || die "Could not open $batrundir/runtests.batch\n"; } else { # We must have mpiexec if ("$mpiexec" eq "") { print STDERR "No mpiexec found!\n"; exit(1); } } # # Process any files if ($listfiles eq "") { if ($batchRun) { print STDERR "An implicit list of tests is not permitted in batch mode. See README for more details\n"; exit(1); } else { &ProcessImplicitList; } } elsif (-d $listfiles) { print STDERR "Testing by directories not yet supported\n"; } else { &RunList( $listfiles ); } if ($xmloutput && $closeXMLOutput) { print XMLOUT "$newline"; close XMLOUT; } if ($tapoutput) { print TAPOUT "1..$total_seen\n"; close TAPOUT; } if ($junitoutput) { print JUNITOUT " \n"; print JUNITOUT " \n"; print JUNITOUT " \n"; print JUNITOUT "\n"; close JUNITOUT; # the second pass: insert the header # Note: the field "errors" is not used now, but reserved for future uses. open my $JUNITIN, '<', $junitfile or die "Can't read old file: $!"; open my $JUNITOUTNEW, '>', "$junitfile.new" or die "Can't write new file: $!"; my $date = `date "+%Y-%m-%d-%H-%M"`; $date =~ s/\r?\n//; print $JUNITOUTNEW "\n"; print $JUNITOUTNEW " \n"; while( <$JUNITIN> ) { print $JUNITOUTNEW $_; } close $JUNITIN; close $JUNITOUTNEW; move("$junitfile.new","$junitfile"); } # Output a summary: if ($batchRun) { print "Programs created along with a runtest.batch file in $batrundir\n"; print "Run that script and then use checktests to summarize the results\n"; } else { if ($err_count) { print "$err_count tests failed out of $total_run\n"; if ($xmloutput) { print "Details in $xmlfullfile\n"; } } else { print " All $total_run tests passed!\n"; } if ($tapoutput) { print "TAP formatted results in $tapfullfile\n"; } if ($junitoutput) { print "JUNIT formatted results in $junitfullfile\n"; } } # # --------------------------------------------------------------------------- # Routines # # Enter a new directory and process a list file. # ProcessDir( directory-name, list-file-name ) sub ProcessDir { my $dir = $_[0]; $dir =~ s/\/$//; my $listfile = $_[1]; my $savedir = `pwd`; my $savecurdir = $curdir; my $savesrcdir = $srcdir; chop $savedir; if (substr($srcdir,0,3) eq "../") { $srcdir = "../$srcdir"; } print "Processing directory $dir\n" if ($verbose || $debug); chdir $dir; if ($dir =~ /\//) { print STDERR "only direct subdirectories allowed in list files"; } $curdir .= "/$dir"; &RunList( $listfile ); print "\n" if $showProgress; # Terminate line from progress output chdir $savedir; $curdir = $savecurdir; $srcdir = $savesrcdir; } # --------------------------------------------------------------------------- # Run the programs listed in the file given as the argument. # This file describes the tests in the format # programname number-of-processes [ key=value ... ] # If the second value is not given, the default value is used. # sub RunList { my $LIST = "LIST$depth"; $depth++; my $listfile = $_[0]; my $ResultTest = ""; my $InitForRun = ""; my $listfileSource = $listfile; print "Looking in $curdir/$listfile\n" if $debug; if (! -s "$listfile" && -s "$srcdir/$curdir/$listfile" ) { $listfileSource = "$srcdir/$curdir/$listfile"; } open( $LIST, "<$listfileSource" ) || die "Could not open $listfileSource\n"; while (<$LIST>) { # Check for stop file if (-s $stopfile) { # Exit because we found a stopfile print STDERR "Terminating test because stopfile $stopfile found\n"; last; } # Skip comments s/#.*//g; # Remove any trailing newlines/returns s/\r?\n//; # Remove any leading whitespace s/^\s*//; # Some tests require that support routines are built first # This is specified with !: if (/^\s*\!([^:]*):(.*)/) { # Hack: just execute in a subshell. This discards any # output. `cd $1 && make $2`; next; } # List file entries have the form: # program [ np [ name=value ... ] ] # See files errhan/testlist, init/testlist, and spawn/testlist # for examples of using the key=value form my @args = split(/\s+/,$_); my $programname = $args[0]; my $np = ""; my $ResultTest = ""; my $InitForRun = ""; my $timeLimit = ""; my $progArgs = ""; my $mpiexecArgs = ""; my $requiresStrict = ""; my $requiresMPIX = ""; my $progEnv = ""; my $mpiVersion = ""; my $xfail = ""; if ($#args >= 1) { $np = $args[1]; } # Process the key=value arguments for (my $i=2; $i <= $#args; $i++) { if ($args[$i] =~ /([^=]+)=(.*)/) { my $key = $1; my $value = $2; if ($key eq "resultTest") { $ResultTest = $value; } elsif ($key eq "init") { $InitForRun = $value; } elsif ($key eq "timeLimit") { $timeLimit = $value; } elsif ($key eq "arg") { $progArgs = "$progArgs $value"; } elsif ($key eq "mpiexecarg") { $mpiexecArgs = "$mpiexecArgs $value"; } elsif ($key eq "env") { if ($progEnv eq "") { $progEnv = "$value"; } else { $progEnv = "$progEnv $value"; } } elsif ($key eq "mpiversion") { $mpiVersion = $value; } elsif ($key eq "strict") { $requiresStrict = $value } elsif ($key eq "mpix") { $requiresMPIX = $value } elsif ($key eq "xfail") { if ($value eq "") { print STDERR "\"xfail=\" requires an argument\n"; } $xfail = $value; } else { print STDERR "Unrecognized key $key in $listfileSource\n"; } } } # skip empty lines if ($programname eq "") { next; } if ($np eq "") { $np = $np_default; } if ($np_max > 0 && $np > $np_max) { $np = $np_max; } # allows us to accurately output TAP test numbers without disturbing the # original totals that have traditionally been reported # # These "unless" blocks are ugly, but permit us to honor skipping # criteria for directories as well without counting directories as tests # in our XML/TAP output. unless (-d $programname) { $total_seen++; } # If a minimum MPI version is specified, check against the # available MPI. If the version is unknown, we ignore this # test (thus, all tests will be run). if ($mpiVersion ne "" && $MPIMajorVersion ne "unknown" && $MPIMinorVersion ne "unknown") { my ($majorReq,$minorReq) = split(/\./,$mpiVersion); if ($majorReq > $MPIMajorVersion or ($majorReq == $MPIMajorVersion && $minorReq > $MPIMinorVersion)) { unless (-d $programname) { SkippedTest($programname, $np, $curdir, "requires MPI version $mpiVersion"); } next; } } # Check whether strict is required by MPI but not by the # test (use strict=false for tests that use non-standard extensions) if (lc($requiresStrict) eq "false" && lc($testIsStrict) eq "true") { unless (-d $programname) { SkippedTest($programname, $np, $curdir, "non-strict test, strict MPI mode requested"); } next; } if (lc($testIsStrict) eq "true") { # Strict MPI testing was requested, so assume that a non-MPICH MPI # implementation is being tested and the "xfail" implementation # assumptions do not hold. $xfail = ''; } if ($xfail ne '' && $runxfail eq "false") { # Skip xfail tests if they are not configured. Strict MPI tests that are # marked xfail will still run with --enable-strictmpi. unless (-d $programname) { SkippedTest($programname, $np, $curdir, "xfail tests disabled"); } next; } if (lc($requiresMPIX) eq "true" && lc($MPIHasMPIX) eq "no") { unless (-d $programname) { SkippedTest($programname, $np, $curdir, "tests MPIX extensions, MPIX testing disabled"); } next; } if (-d $programname) { # If a directory, go into the that directory and # look for a new list file &ProcessDir( $programname, $listfile ); } else { $total_run++; if (&BuildMPIProgram( $programname, $xfail ) == 0) { if ($batchRun == 1) { &AddMPIProgram( $programname, $np, $ResultTest, $InitForRun, $timeLimit, $progArgs, $progEnv, $mpiexecArgs, $xfail ); } else { &RunMPIProgram( $programname, $np, $ResultTest, $InitForRun, $timeLimit, $progArgs, $progEnv, $mpiexecArgs, $xfail ); } } elsif ($xfail eq '') { # We expected to run this program, so failure to build # is an error $found_error = 1; $err_count++; } if ($batchRun == 0) { &CleanUpAfterRun( $programname ); } } } close( $LIST ); } # # This routine tries to run all of the files in the current # directory sub ProcessImplicitList { # The default is to run every file in the current directory. # If there are no built programs, build and run every file # WARNING: This assumes that anything executable should be run as # an MPI test. $found_exec = 0; $found_src = 0; open (PGMS, "ls -1 |" ) || die "Cannot list directory\n"; while () { s/\r?\n//; $programname = $_; if (-d $programname) { next; } # Ignore directories if ($programname eq "runtests") { next; } # Ignore self if ($programname eq "checktests") { next; } # Ignore helper if ($programname eq "configure") { next; } # Ignore configure script if ($programname eq "config.status") { next; } # Ignore configure helper if (-x $programname) { $found_exec++; } if ($programname =~ /\.[cf]$/) { $found_src++; } } close PGMS; if ($found_exec) { print "Found executables\n" if $debug; open (PGMS, "ls -1 |" ) || die "Cannot list programs\n"; while () { # Check for stop file if (-s $stopfile) { # Exit because we found a stopfile print STDERR "Terminating test because stopfile $stopfile found\n"; last; } s/\r?\n//; $programname = $_; if (-d $programname) { next; } # Ignore directories if ($programname eq "runtests") { next; } # Ignore self if (-x $programname) { $total_run++; &RunMPIProgram( $programname, $np_default, "", "", "", "", "", "", "" ); } } close PGMS; } elsif ($found_src) { print "Found source files\n" if $debug; open (PGMS, "ls -1 *.c |" ) || die "Cannot list programs\n"; while () { if (-s $stopfile) { # Exit because we found a stopfile print STDERR "Terminating test because stopfile $stopfile found\n"; last; } s/\r?\n//; $programname = $_; # Skip messages from ls about no files if (! -s $programname) { next; } $programname =~ s/\.c//; $total_run++; if (&BuildMPIProgram( $programname, "") == 0) { &RunMPIProgram( $programname, $np_default, "", "", "", "", "", "", "" ); } else { # We expected to run this program, so failure to build # is an error $found_error = 1; $err_count++; } &CleanUpAfterRun( $programname ); } close PGMS; } } # Run the program. # ToDo: Add a way to limit the time that any particular program may run. # The arguments are # name of program, number of processes, name of routine to check results # init for testing, timelimit, and any additional program arguments # If the 3rd arg is not present, the a default that simply checks that the # return status is 0 and that the output is " No Errors" is used. sub RunMPIProgram { my ($programname,$np,$ResultTest,$InitForTest,$timeLimit,$progArgs,$progEnv,$mpiexecArgs,$xfail) = @_; my $found_error = 0; my $found_noerror = 0; my $inline = ""; my $extraArgs = ""; &RunPreMsg( $programname, $np, $curdir ); unlink "err"; # Set a default timeout on tests (3 minutes for now) my $timeout = $defaultTimeLimit; if (defined($timeLimit) && $timeLimit =~ /^\d+$/) { $timeout = $timeLimit; } $ENV{"MPIEXEC_TIMEOUT"} = $timeout; # Handle the ppn (processes per node) option. $ppnargs = ""; if ($ppnArg ne "" && $ppnMax > 0) { $ppnargs = $ppnArg; $nn = $ppnMax; # Some systems require setting the number of processes per node # no greater than the total number of processes (e.g., aprun on Cray) if ($nn > $np) { $nn = $np; } $ppnargs =~ s/\%d/$nn/; $extraArgs .= " " . $ppnargs; } # Handle the timelimit option. if ($timelimitArg ne "" && $timeout> 0) { $tlargs = ""; $tlargs = $timelimitArg; $tlargs =~ s/\%d/$timeout/; $extraArgs .= " " . $tlargs; } # Run the optional setup routine. For example, the timeout tests could # be set to a shorter timeout. if ($InitForTest ne "") { &$InitForTest(); } print STDOUT "Env includes $progEnv\n" if $verbose; print STDOUT "$mpiexec $np_arg $np $extraArgs $mpiexecArgs $program_wrapper ./$programname $progArgs\n" if $verbose; print STDOUT "." if $showProgress; # Save and restore the environment if necessary before running mpiexec. if ($progEnv ne "") { %saveEnv = %ENV; foreach $val (split(/\s+/, $progEnv)) { if ($val =~ /([^=]+)=(.*)/) { $ENV{$1} = $2; } else { print STDERR "Environment variable/value $val not in a=b form\n"; } } } open ( MPIOUT, "$mpiexec $np_arg $np $extraArgs $mpiexecArgs $program_wrapper ./$programname $progArgs 2>&1 |" ) || die "Could not run ./$programname\n"; if ($progEnv ne "") { %ENV = %saveEnv; } if ($ResultTest ne "") { # Read and process the output ($found_error, $inline) = &$ResultTest( MPIOUT, $programname ); } else { if ($verbose) { $inline = "$mpiexec $np_arg $np $extraArgs $mpiexecArgs $program_wrapper ./$programname\n"; } else { $inline = ""; } while () { print STDOUT $_ if $verbose; # Skip FORTRAN STOP if (/FORTRAN STOP/) { next; } $inline .= $_; if (/^\s*No [Ee]rrors\s*$/ && $found_noerror == 0) { $found_noerror = 1; } if (! /^\s*No [Ee]rrors\s*$/ && !/^\s*Test Passed\s*$/ && !/requesting checkpoint\s*$/ && !/checkpoint completed\s*$/) { print STDERR "Unexpected output in $programname: $_"; if (!$found_error) { $found_error = 1; $err_count ++; } } } if ($found_noerror == 0) { print STDERR "Program $programname exited without No Errors\n"; if (!$found_error) { $found_error = 1; $err_count ++; } } $rc = close ( MPIOUT ); if ($rc == 0) { # Only generate a message if we think that the program # passed the test. if (!$found_error) { $run_status = $?; $signal_num = $run_status & 127; if ($run_status > 255) { $run_status >>= 8; } print STDERR "Program $programname exited with non-zero status $run_status\n"; if ($signal_num != 0) { print STDERR "Program $programname exited with signal $signal_num\n"; } $found_error = 1; $err_count ++; } } } if ($found_error) { &RunTestFailed( $programname, $np, $curdir, $inline, $xfail ); } else { &RunTestPassed( $programname, $np, $curdir, $xfail ); } &RunPostMsg( $programname, $np, $curdir ); } # This version simply writes the mpiexec command out, with the output going # into a file, and recording the output status of the run. sub AddMPIProgram { my ($programname,$np,$ResultTest,$InitForTest,$timeLimit,$progArgs,$progEnv,$mpiexecArgs, $xfail) = @_; if (! -x $programname) { print STDERR "Could not find $programname!"; return; } if ($ResultTest ne "") { # This test really needs to be run manually, with this test # Eventually, we can update this to include handleing in checktests. print STDERR "Run $curdir/$programname with $np processes and use $ResultTest to check the results\n"; return; } # Set a default timeout on tests (3 minutes for now) my $timeout = $defaultTimeLimit; if (defined($timeLimit) && $timeLimit =~ /^\d+$/) { # On some systems, there is no effective time limit on # individual mpi program runs. In that case, we may # want to treat these also as "run manually". $timeout = $timeLimit; } print BATOUT "export MPIEXEC_TIMEOUT=$timeout\n"; # Run the optional setup routine. For example, the timeout tests could # be set to a shorter timeout. if ($InitForTest ne "") { &$InitForTest(); } # For non-MPICH versions of mpiexec, a timeout may require a different # environment variable or command line option (e.g., for Cray aprun, # the option -t must be given, there is no environment variable # to set the timeout. $extraArgs = ""; if (defined($timeoutArgPattern) && $timeoutArgPattern ne "") { my $timeArg = $timeoutArgPattern; $timeoutArg =~ s//$timeout/; $extraArgs .= $timeoutArg } # Handle the ppn (processes per node) option. $ppnargs = ""; if ($ppnArg ne "" && $ppnMax > 0) { $ppnargs = $ppnArg; $nn = $ppnMax; # Some systems require setting the number of processes per node # no greater than the total number of processes (e.g., aprun on Cray) if ($nn > $np) { $nn = $np; } $ppnargs =~ s/\%d/$nn/; $extraArgs .= " " . $ppnargs; } # Handle the timelimit option. if ($timelimitArg ne "" && $timeout> 0) { $tlargs = ""; $tlargs = $timelimitArg; $tlargs =~ s/\%d/$timeout/; $extraArgs .= " " . $tlargs; } print STDOUT "Env includes $progEnv\n" if $verbose; print STDOUT "$mpiexec $np_arg $np $extraArgs $program_wrapper ./$programname $progArgs\n" if $verbose; print STDOUT "." if $showProgress; # Save and restore the environment if necessary before running mpiexec. if ($progEnv ne "") { # Need to fix: # save_NAME_is_set=is old name set # save_NAME=oldValue # export NAME=newvalue # (run) # export NAME=oldValue (if set!) print STDERR "Batch output does not permit changes to environment\n"; } # The approach here is to move the test codes to a single directory from # which they can be run; this avoids complex code to change directories # and ensure that the output goes "into the right place". $testCount++; rename $programname, "$batrundir/$programname"; print BATOUT "echo \"# $mpiexec $np_arg $np $extraArgs $mpiexecArgs $program_wrapper $curdir/$programname $progArgs\" > runtests.$testCount.out\n"; # Some programs expect to run in the same directory as the executable print BATOUT "$mpiexec $np_arg $np $extraArgs $mpiexecArgs $program_wrapper ./$programname $progArgs >> runtests.$testCount.out 2>&1\n"; print BATOUT "echo \$? > runtests.$testCount.status\n"; } # # Return value is 0 on success, non zero on failure sub BuildMPIProgram { my $programname = shift; my $xfail = shift; my $rc = 0; if ($verbose) { print STDERR "making $programname\n"; } if (! -x $programname) { $remove_this_pgm = 1; } else { $remove_this_pgm = 0; } my $output = `make $programname 2>&1`; $rc = $?; if ($rc > 255) { $rc >>= 8; } if (! -x $programname) { print STDERR "Failed to build $programname; $output\n"; if ($rc == 0) { $rc = 1; } # Add a line to the summary file describing the failure # This will ensure that failures to build will end up # in the summary file (which is otherwise written by the # RunMPIProgram step) &RunPreMsg( $programname, $np, $curdir ); &RunTestFailed( $programname, $np, $curdir, "Failed to build $programname; $output", $xfail ); &RunPostMsg( $programname, $np, $curdir ); } return $rc; } sub CleanUpAfterRun { my $programname = $_[0]; # Check for that this program has exited. If it is still running, # issue a warning and leave the application. Of course, this # check is complicated by the lack of a standard access to the # running processes for this user in Unix. @stillRunning = &FindRunning( $programname ); if ($#stillRunning > -1) { print STDERR "Some programs ($programname) may still be running:\npids = "; for (my $i=0; $i <= $#stillRunning; $i++ ) { print STDERR $stillRunning[$i] . " "; } print STDERR "\n"; # Remind the user that the executable remains; we leave it around # to allow the programmer to debug the running program, for which # the executable is needed. print STDERR "The executable ($programname) will not be removed.\n"; } else { if ($remove_this_pgm && $clean_pgms) { unlink $programname, "$programname.o"; } $remove_this_pgm = 0; } } # ---------------------------------------------------------------------------- sub FindRunning { my $programname = $_[0]; my @pids = (); my $logname = $ENV{'USER'}; my $pidloc = 1; my $rc = open PSFD, "ps auxw -U $logname 2>&1 |"; if ($rc == 0) { $rc = open PSFD, "ps -fu $logname 2>&1 |"; } if ($rc == 0) { print STDERR "Could not execute ps command\n"; return @pids; } while () { if (/$programname/) { @fields = split(/\s+/); my $pid = $fields[$pidloc]; # Check that we've found a numeric pid if ($pid =~ /^\d+$/) { $pids[$#pids + 1] = $pid; } } } close PSFD; return @pids; } # ---------------------------------------------------------------------------- # # TestStatus is a special test that reports success *only* when the # status return is NONZERO sub TestStatus { my $MPIOUT = $_[0]; my $programname = $_[1]; my $found_error = 0; my $inline = ""; while (<$MPIOUT>) { #print STDOUT $_ if $verbose; # Skip FORTRAN STOP if (/FORTRAN STOP/) { next; } $inline .= $_; # ANY output is an error. We have the following output # exception for the Hydra process manager. if (/=*/) { last; } if (! /^\s*$/) { print STDERR "Unexpected output in $programname: $_"; if (!$found_error) { $found_error = 1; $err_count ++; } } } $rc = close ( MPIOUT ); if ($rc == 0) { $run_status = $?; $signal_num = $run_status & 127; if ($run_status > 255) { $run_status >>= 8; } } else { # This test *requires* non-zero return codes if (!$found_error) { $found_error = 1; $err_count ++; } $inline .= "$mpiexec returned a zero status but the program returned a nonzero status\n"; } return ($found_error,$inline); } # ---------------------------------------------------------------------------- # # TestStatusNoErrors is like TestStatus except that it also checks for " No Errors" # This is useful for fault tolerance tests where mpiexec returns a non-zero status # because of a failed process, but still outputs " No Errors" when the correct # behavior is detected. sub TestStatusNoErrors { my $MPIOUT = $_[0]; my $programname = $_[1]; my $found_error = 0; my $found_noerror = 0; my $inline = ""; while () { print STDOUT $_ if $verbose; # Skip FORTRAN STOP if (/FORTRAN STOP/) { next; } $inline .= $_; if (/^\s*No [Ee]rrors\s*$/ && $found_noerror == 0) { $found_noerror = 1; } if (! /^\s*No [Ee]rrors\s*$/ && !/^\s*Test Passed\s*$/) { print STDERR "Unexpected output in $programname: $_"; if (!$found_error) { $found_error = 1; $err_count ++; } } } if ($found_noerror == 0) { print STDERR "Program $programname exited without No Errors\n"; if (!$found_error) { $found_error = 1; $err_count ++; } } $rc = close ( MPIOUT ); if ($rc == 0) { $run_status = $?; $signal_num = $run_status & 127; if ($run_status > 255) { $run_status >>= 8; } } else { # This test *requires* non-zero return codes if (!$found_error) { $found_error = 1; $err_count ++; } $inline .= "$mpiexec returned a zero status but the program required a non-zero status\n"; } return ($found_error,$inline); } # # TestTimeout is a special test that reports success *only* when the # status return is NONZERO and there are no processes left over. # This test currently checks only for the return status. sub TestTimeout { my $MPIOUT = $_[0]; my $programname = $_[1]; my $found_error = 0; my $inline = ""; while (<$MPIOUT>) { #print STDOUT $_ if $verbose; # Skip FORTRAN STOP if (/FORTRAN STOP/) { next; } $inline .= $_; if (/[Tt]imeout/) { next; } # Allow 'signaled with Interrupt' (see gforker mpiexec) if (/signaled with Interrupt/) { next; } # Allow 'APPLICATION TIMED OUT' (hydra) if (/\[mpiexec@.*\] APPLICATION TIMED OUT/) { last; } # ANY output is an error (other than timeout) if (! /^\s*$/) { print STDERR "Unexpected output in $programname: $_"; if (!$found_error) { $found_error = 1; $err_count ++; } } } $rc = close ( MPIOUT ); if ($rc == 0) { $run_status = $?; $signal_num = $run_status & 127; if ($run_status > 255) { $run_status >>= 8; } } else { # This test *requires* non-zero return codes if (!$found_error) { $found_error = 1; $err_count ++; } $inline .= "$mpiexec returned a zero status but the program returned a nonzero status\n"; } # # Here should go a check of the processes # open( PFD, "ps -fu $LOGNAME | grep -v grep | grep $programname |" ); # while () { # # } # close PFD; return ($found_error,$inline); } # # TestErrFatal is a special test that reports success *only* when the # status return is NONZERO; it ignores error messages sub TestErrFatal { my $MPIOUT = $_[0]; my $programname = $_[1]; my $found_error = 0; my $inline = ""; while (<$MPIOUT>) { #print STDOUT $_ if $verbose; # Skip FORTRAN STOP if (/FORTRAN STOP/) { next; } $inline .= $_; # ALL output is allowed. } $rc = close ( MPIOUT ); if ($rc == 0) { $run_status = $?; $signal_num = $run_status & 127; if ($run_status > 255) { $run_status >>= 8; } } else { # This test *requires* non-zero return codes if (!$found_error) { $found_error = 1; $err_count ++; } $inline .= "$mpiexec returned a zero status but the program returned a nonzero status\n"; } return ($found_error,$inline); } # ---------------------------------------------------------------------------- # Output routines: # RunPreMsg( programname, np, workdir ) - Call before running a program # RunTestFailed, RunTestPassed - Call after test # RunPostMsg - Call at end of each test # sub RunPreMsg { my ($programname,$np,$workdir) = @_; if ($xmloutput) { print XMLOUT "$newline$programname$newline"; print XMLOUT "$np$newline"; print XMLOUT "$workdir$newline"; } } sub RunPostMsg { my ($programname, $np, $workdir) = @_; if ($xmloutput) { print XMLOUT "$newline"; } } sub RunTestPassed { my ($programname, $np, $workdir, $xfail) = @_; if ($xmloutput) { print XMLOUT "pass$newline"; } if ($tapoutput) { print TAPOUT "ok ${total_run} - $workdir/$programname ${np}\n"; } if ($junitoutput) { print JUNITOUT " \n"; } } sub RunTestFailed { my $programname = shift; my $np = shift; my $workdir = shift; my $output = shift; my $xfail = shift; if ($xmloutput) { my $xout = $output; # basic escapes that wreck the XML output $xout =~ s//\*AMP\*gt;/g; $xout =~ s/&/\*AMP\*amp;/g; $xout =~ s/\*AMP\*/&/g; # TODO: Also capture any non-printing characters (XML doesn't like them # either). print XMLOUT "fail$newline"; print XMLOUT "$newline$xout$newline"; } if ($tapoutput) { my $xfailstr = ''; if ($xfail ne '') { $xfailstr = " # TODO $xfail"; } print TAPOUT "not ok ${total_run} - $workdir/$programname ${np}${xfailstr}\n"; print TAPOUT " ---\n"; print TAPOUT " Directory: $workdir\n"; print TAPOUT " File: $programname\n"; print TAPOUT " Num-procs: $np\n"; print TAPOUT " Date: \"" . localtime() . "\"\n"; # The following would be nice, but it leads to unfortunate formatting in # the Jenkins web output for now. Using comment lines instead, since # they are easier to read/find in a browser. ## print TAPOUT " Output: |\n"; ## # using block literal format, requires that all chars are printable ## # UTF-8 (or UTF-16, but we won't encounter that) ## foreach my $line (split m/\r?\n/, $output) { ## chomp $line; ## # 4 spaces, 2 for TAP indent, 2 more for YAML block indent ## print TAPOUT " $line\n"; ## } print TAPOUT " ...\n"; # Alternative to the "Output:" YAML block literal above. Do not put any # spaces before the '#', this causes some TAP parsers (including Perl's # TAP::Parser) to treat the line as "unknown" instead of a proper # comment. print TAPOUT "## Test output (expected 'No Errors'):\n"; foreach my $line (split m/\r?\n/, $output) { chomp $line; print TAPOUT "## $line\n"; } } if ($junitoutput) { my $xfailstr = ''; my $testtag = "failure"; if ($xfail ne '') { $xfailstr = " # TODO $xfail"; $testtag = "skipped"; } print JUNITOUT " \n"; print JUNITOUT " <${testtag} type=\"TestFailed\"\n"; print JUNITOUT " message=\"not ok ${total_run} - $workdir/$programname ${np}${xfailstr}\">\n"; print JUNITOUT " \n"; } } sub SkippedTest { my $programname = shift; my $np = shift; my $workdir = shift; my $reason = shift; # simply omit from the XML output if ($tapoutput) { print TAPOUT "ok ${total_seen} - $workdir/$programname $np # SKIP $reason\n"; } if ($junitoutput) { print JUNITOUT " \n"; print JUNITOUT " \n"; print JUNITOUT " message=\"$reason\">\n"; print JUNITOUT " \n"; } $skip_count++; } # ---------------------------------------------------------------------------- # Alternate init routines sub InitQuickTimeout { $ENV{"MPIEXEC_TIMEOUT"} = 10; } mpi-testsuite-3.2+dfsg/project_f.txt0000644000175000017500000000640312620254305017077 0ustar mbanckmbanck mpi-testsuite-3.2+dfsg/topo/0000755000175000017500000000000012621010236015333 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/topo/dims2.c0000644000175000017500000000465512620254305016535 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" int prodof(int, const int[]); /* * Test edge cases of Dims_create */ int prodof(int ndims, const int dims[]) { int i, prod = 1; for (i = 0; i < ndims; i++) prod *= dims[i]; return prod; } int main(int argc, char *argv[]) { int errs = 0; int dims[4], nnodes; MTest_Init(&argc, &argv); /* 2 dimensional tests */ for (nnodes = 1; nnodes <= 32; nnodes = nnodes * 2) { dims[0] = 0; dims[1] = nnodes; MPI_Dims_create(nnodes, 2, dims); if (prodof(2, dims) != nnodes) { errs++; printf("Dims_create returned the wrong decomposition. "); printf("Is [%d x %d], should be 1 x %d\n", dims[0], dims[1], nnodes); } /* Try calling Dims_create with nothing to do (all dimensions * specified) */ dims[0] = 1; dims[1] = nnodes; MPI_Dims_create(nnodes, 2, dims); if (prodof(2, dims) != nnodes) { errs++; printf("Dims_create returned the wrong decomposition (all given). "); printf("Is [%d x %d], should be 1 x %d\n", dims[0], dims[1], nnodes); } } /* 4 dimensional tests */ for (nnodes = 4; nnodes <= 32; nnodes = nnodes * 2) { dims[0] = 0; dims[1] = nnodes / 2; dims[2] = 0; dims[3] = 2; MPI_Dims_create(nnodes, 4, dims); if (prodof(4, dims) != nnodes) { errs++; printf("Dims_create returned the wrong decomposition. "); printf("Is [%d x %d x %d x %d], should be 1 x %d x 1 x 2\n", dims[0], dims[1], dims[2], dims[3], nnodes / 2); } /* Try calling Dims_create with nothing to do (all dimensions * specified) */ dims[0] = 1; dims[1] = nnodes / 2; dims[2] = 1; dims[3] = 2; MPI_Dims_create(nnodes, 4, dims); if (prodof(4, dims) != nnodes) { errs++; printf("Dims_create returned the wrong decomposition (all given). "); printf("Is [%d x %d x %d x %d], should be 1 x %d x 1 x 2\n", dims[0], dims[1], dims[2], dims[3], nnodes / 2); } } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/topo/topodup.c0000644000175000017500000000770012620254305017203 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" int main(int argc, char *argv[]) { int errs = 0, i, k; int dims[2], periods[2], wsize; int outdims[2], outperiods[2], outcoords[2]; int topo_type; int *index, *edges, *outindex, *outedges; MPI_Comm comm1, comm2; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &wsize); /* Create a cartesian topology, get its characteristics, then * dup it and check that the new communicator has the same properties */ dims[0] = dims[1] = 0; MPI_Dims_create(wsize, 2, dims); periods[0] = periods[1] = 0; MPI_Cart_create(MPI_COMM_WORLD, 2, dims, periods, 0, &comm1); MPI_Comm_dup(comm1, &comm2); MPI_Topo_test(comm2, &topo_type); if (topo_type != MPI_CART) { errs++; printf("Topo type of duped cart was not cart\n"); } else { MPI_Cart_get(comm2, 2, outdims, outperiods, outcoords); for (i = 0; i < 2; i++) { if (outdims[i] != dims[i]) { errs++; printf("%d = outdims[%d] != dims[%d] = %d\n", outdims[i], i, i, dims[i]); } if (outperiods[i] != periods[i]) { errs++; printf("%d = outperiods[%d] != periods[%d] = %d\n", outperiods[i], i, i, periods[i]); } } } MPI_Comm_free(&comm2); MPI_Comm_free(&comm1); /* Now do the same with a graph topology */ if (wsize >= 3) { index = (int *) malloc(wsize * sizeof(int)); edges = (int *) malloc(wsize * 2 * sizeof(int)); if (!index || !edges) { printf("Unable to allocate %d words for index or edges\n", 3 * wsize); MPI_Abort(MPI_COMM_WORLD, 1); } index[0] = 2; for (i = 1; i < wsize; i++) { index[i] = 2 + index[i - 1]; } k = 0; for (i = 0; i < wsize; i++) { edges[k++] = (i - 1 + wsize) % wsize; edges[k++] = (i + 1) % wsize; } MPI_Graph_create(MPI_COMM_WORLD, wsize, index, edges, 0, &comm1); MPI_Comm_dup(comm1, &comm2); MPI_Topo_test(comm2, &topo_type); if (topo_type != MPI_GRAPH) { errs++; printf("Topo type of duped graph was not graph\n"); } else { int nnodes, nedges; MPI_Graphdims_get(comm2, &nnodes, &nedges); if (nnodes != wsize) { errs++; printf("Nnodes = %d, should be %d\n", nnodes, wsize); } if (nedges != 2 * wsize) { errs++; printf("Nedges = %d, should be %d\n", nedges, 2 * wsize); } outindex = (int *) malloc(wsize * sizeof(int)); outedges = (int *) malloc(wsize * 2 * sizeof(int)); if (!outindex || !outedges) { printf("Unable to allocate %d words for outindex or outedges\n", 3 * wsize); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Graph_get(comm2, wsize, 2 * wsize, outindex, outedges); for (i = 0; i < wsize; i++) { if (index[i] != outindex[i]) { printf("%d = index[%d] != outindex[%d] = %d\n", index[i], i, i, outindex[i]); errs++; } } for (i = 0; i < 2 * wsize; i++) { if (edges[i] != outedges[i]) { printf("%d = edges[%d] != outedges[%d] = %d\n", edges[i], i, i, outedges[i]); errs++; } } free(outindex); free(outedges); } free(index); free(edges); MPI_Comm_free(&comm2); MPI_Comm_free(&comm1); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/topo/testlist0000644000175000017500000000035312620254305017140 0ustar mbanckmbanckcartmap1 4 cartzero 4 cartshift1 4 cartsuball 4 cartcreates 4 dims1 4 dims2 1 dims3 1 dims4 1 graphmap1 4 topotest 4 topodup 4 graphcr 4 graphcr2 4 distgraph1 4 mpiversion=2.2 dgraph_unwgt 4 mpiversion=2.2 neighb_coll 4 mpiversion=3.0 mpi-testsuite-3.2+dfsg/topo/Makefile.in0000644000175000017500000006733612621010236017417 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = cartmap1$(EXEEXT) cartzero$(EXEEXT) \ cartshift1$(EXEEXT) cartsuball$(EXEEXT) cartcreates$(EXEEXT) \ dims1$(EXEEXT) dims2$(EXEEXT) dims3$(EXEEXT) dims4$(EXEEXT) \ graphmap1$(EXEEXT) topotest$(EXEEXT) topodup$(EXEEXT) \ graphcr$(EXEEXT) graphcr2$(EXEEXT) distgraph1$(EXEEXT) \ dgraph_unwgt$(EXEEXT) neighb_coll$(EXEEXT) subdir = topo ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) cartcreates_SOURCES = cartcreates.c cartcreates_OBJECTS = cartcreates.$(OBJEXT) cartcreates_LDADD = $(LDADD) cartcreates_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o cartmap1_SOURCES = cartmap1.c cartmap1_OBJECTS = cartmap1.$(OBJEXT) cartmap1_LDADD = $(LDADD) cartmap1_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o cartshift1_SOURCES = cartshift1.c cartshift1_OBJECTS = cartshift1.$(OBJEXT) cartshift1_LDADD = $(LDADD) cartshift1_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o cartsuball_SOURCES = cartsuball.c cartsuball_OBJECTS = cartsuball.$(OBJEXT) cartsuball_LDADD = $(LDADD) cartsuball_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o cartzero_SOURCES = cartzero.c cartzero_OBJECTS = cartzero.$(OBJEXT) cartzero_LDADD = $(LDADD) cartzero_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o dgraph_unwgt_SOURCES = dgraph_unwgt.c dgraph_unwgt_OBJECTS = dgraph_unwgt.$(OBJEXT) dgraph_unwgt_LDADD = $(LDADD) dgraph_unwgt_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o dims1_SOURCES = dims1.c dims1_OBJECTS = dims1.$(OBJEXT) dims1_LDADD = $(LDADD) dims1_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o dims2_SOURCES = dims2.c dims2_OBJECTS = dims2.$(OBJEXT) dims2_LDADD = $(LDADD) dims2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o dims3_SOURCES = dims3.c dims3_OBJECTS = dims3.$(OBJEXT) dims3_LDADD = $(LDADD) dims3_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o dims4_SOURCES = dims4.c dims4_OBJECTS = dims4.$(OBJEXT) dims4_LDADD = $(LDADD) dims4_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o distgraph1_SOURCES = distgraph1.c distgraph1_OBJECTS = distgraph1.$(OBJEXT) distgraph1_LDADD = $(LDADD) distgraph1_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o graphcr_SOURCES = graphcr.c graphcr_OBJECTS = graphcr.$(OBJEXT) graphcr_LDADD = $(LDADD) graphcr_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o graphcr2_SOURCES = graphcr2.c graphcr2_OBJECTS = graphcr2.$(OBJEXT) graphcr2_LDADD = $(LDADD) graphcr2_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o graphmap1_SOURCES = graphmap1.c graphmap1_OBJECTS = graphmap1.$(OBJEXT) graphmap1_LDADD = $(LDADD) graphmap1_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o neighb_coll_SOURCES = neighb_coll.c neighb_coll_OBJECTS = neighb_coll.$(OBJEXT) neighb_coll_LDADD = $(LDADD) neighb_coll_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o topodup_SOURCES = topodup.c topodup_OBJECTS = topodup.$(OBJEXT) topodup_LDADD = $(LDADD) topodup_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o topotest_SOURCES = topotest.c topotest_OBJECTS = topotest.$(OBJEXT) topotest_LDADD = $(LDADD) topotest_DEPENDENCIES = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = cartcreates.c cartmap1.c cartshift1.c cartsuball.c \ cartzero.c dgraph_unwgt.c dims1.c dims2.c dims3.c dims4.c \ distgraph1.c graphcr.c graphcr2.c graphmap1.c neighb_coll.c \ topodup.c topotest.c DIST_SOURCES = cartcreates.c cartmap1.c cartshift1.c cartsuball.c \ cartzero.c dgraph_unwgt.c dims1.c dims2.c dims3.c dims4.c \ distgraph1.c graphcr.c graphcr2.c graphmap1.c neighb_coll.c \ topodup.c topotest.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/Makefile.mtest \ $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # AM_CPPFLAGS are used for C++ code as well AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/util/mtest.o \ $(top_builddir)/util/mtest_datatype.o \ $(top_builddir)/util/mtest_datatype_gen.o CLEANFILES = summary.xml summary.tap summary.junit.xml EXTRA_DIST = testlist all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign topo/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign topo/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) cartcreates$(EXEEXT): $(cartcreates_OBJECTS) $(cartcreates_DEPENDENCIES) $(EXTRA_cartcreates_DEPENDENCIES) @rm -f cartcreates$(EXEEXT) $(AM_V_CCLD)$(LINK) $(cartcreates_OBJECTS) $(cartcreates_LDADD) $(LIBS) cartmap1$(EXEEXT): $(cartmap1_OBJECTS) $(cartmap1_DEPENDENCIES) $(EXTRA_cartmap1_DEPENDENCIES) @rm -f cartmap1$(EXEEXT) $(AM_V_CCLD)$(LINK) $(cartmap1_OBJECTS) $(cartmap1_LDADD) $(LIBS) cartshift1$(EXEEXT): $(cartshift1_OBJECTS) $(cartshift1_DEPENDENCIES) $(EXTRA_cartshift1_DEPENDENCIES) @rm -f cartshift1$(EXEEXT) $(AM_V_CCLD)$(LINK) $(cartshift1_OBJECTS) $(cartshift1_LDADD) $(LIBS) cartsuball$(EXEEXT): $(cartsuball_OBJECTS) $(cartsuball_DEPENDENCIES) $(EXTRA_cartsuball_DEPENDENCIES) @rm -f cartsuball$(EXEEXT) $(AM_V_CCLD)$(LINK) $(cartsuball_OBJECTS) $(cartsuball_LDADD) $(LIBS) cartzero$(EXEEXT): $(cartzero_OBJECTS) $(cartzero_DEPENDENCIES) $(EXTRA_cartzero_DEPENDENCIES) @rm -f cartzero$(EXEEXT) $(AM_V_CCLD)$(LINK) $(cartzero_OBJECTS) $(cartzero_LDADD) $(LIBS) dgraph_unwgt$(EXEEXT): $(dgraph_unwgt_OBJECTS) $(dgraph_unwgt_DEPENDENCIES) $(EXTRA_dgraph_unwgt_DEPENDENCIES) @rm -f dgraph_unwgt$(EXEEXT) $(AM_V_CCLD)$(LINK) $(dgraph_unwgt_OBJECTS) $(dgraph_unwgt_LDADD) $(LIBS) dims1$(EXEEXT): $(dims1_OBJECTS) $(dims1_DEPENDENCIES) $(EXTRA_dims1_DEPENDENCIES) @rm -f dims1$(EXEEXT) $(AM_V_CCLD)$(LINK) $(dims1_OBJECTS) $(dims1_LDADD) $(LIBS) dims2$(EXEEXT): $(dims2_OBJECTS) $(dims2_DEPENDENCIES) $(EXTRA_dims2_DEPENDENCIES) @rm -f dims2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(dims2_OBJECTS) $(dims2_LDADD) $(LIBS) dims3$(EXEEXT): $(dims3_OBJECTS) $(dims3_DEPENDENCIES) $(EXTRA_dims3_DEPENDENCIES) @rm -f dims3$(EXEEXT) $(AM_V_CCLD)$(LINK) $(dims3_OBJECTS) $(dims3_LDADD) $(LIBS) dims4$(EXEEXT): $(dims4_OBJECTS) $(dims4_DEPENDENCIES) $(EXTRA_dims4_DEPENDENCIES) @rm -f dims4$(EXEEXT) $(AM_V_CCLD)$(LINK) $(dims4_OBJECTS) $(dims4_LDADD) $(LIBS) distgraph1$(EXEEXT): $(distgraph1_OBJECTS) $(distgraph1_DEPENDENCIES) $(EXTRA_distgraph1_DEPENDENCIES) @rm -f distgraph1$(EXEEXT) $(AM_V_CCLD)$(LINK) $(distgraph1_OBJECTS) $(distgraph1_LDADD) $(LIBS) graphcr$(EXEEXT): $(graphcr_OBJECTS) $(graphcr_DEPENDENCIES) $(EXTRA_graphcr_DEPENDENCIES) @rm -f graphcr$(EXEEXT) $(AM_V_CCLD)$(LINK) $(graphcr_OBJECTS) $(graphcr_LDADD) $(LIBS) graphcr2$(EXEEXT): $(graphcr2_OBJECTS) $(graphcr2_DEPENDENCIES) $(EXTRA_graphcr2_DEPENDENCIES) @rm -f graphcr2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(graphcr2_OBJECTS) $(graphcr2_LDADD) $(LIBS) graphmap1$(EXEEXT): $(graphmap1_OBJECTS) $(graphmap1_DEPENDENCIES) $(EXTRA_graphmap1_DEPENDENCIES) @rm -f graphmap1$(EXEEXT) $(AM_V_CCLD)$(LINK) $(graphmap1_OBJECTS) $(graphmap1_LDADD) $(LIBS) neighb_coll$(EXEEXT): $(neighb_coll_OBJECTS) $(neighb_coll_DEPENDENCIES) $(EXTRA_neighb_coll_DEPENDENCIES) @rm -f neighb_coll$(EXEEXT) $(AM_V_CCLD)$(LINK) $(neighb_coll_OBJECTS) $(neighb_coll_LDADD) $(LIBS) topodup$(EXEEXT): $(topodup_OBJECTS) $(topodup_DEPENDENCIES) $(EXTRA_topodup_DEPENDENCIES) @rm -f topodup$(EXEEXT) $(AM_V_CCLD)$(LINK) $(topodup_OBJECTS) $(topodup_LDADD) $(LIBS) topotest$(EXEEXT): $(topotest_OBJECTS) $(topotest_DEPENDENCIES) $(EXTRA_topotest_DEPENDENCIES) @rm -f topotest$(EXEEXT) $(AM_V_CCLD)$(LINK) $(topotest_OBJECTS) $(topotest_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cartcreates.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cartmap1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cartshift1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cartsuball.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cartzero.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dgraph_unwgt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dims1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dims2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dims3.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dims4.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/distgraph1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/graphcr.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/graphcr2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/graphmap1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/neighb_coll.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/topodup.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/topotest.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/util/mtest.$(OBJEXT): $(top_srcdir)/util/mtest.c (cd $(top_builddir)/util && $(MAKE) mtest.$(OBJEXT)) $(top_builddir)/util/mtest_datatype.$(OBJEXT): $(top_srcdir)/util/mtest_datatype.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype.$(OBJEXT)) $(top_builddir)/util/mtest_datatype_gen.$(OBJEXT): $(top_srcdir)/util/mtest_datatype_gen.c (cd $(top_builddir)/util && $(MAKE) mtest_datatype_gen.$(OBJEXT)) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml \ -tapfile=summary.tap -junitfile=summary.junit.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/topo/cartshift1.c0000644000175000017500000000524612620254305017564 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" int main(int argc, char *argv[]) { int errs = 0; int size, rank; int source, dest; int dims[2], periods[2]; MPI_Comm comm; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); dims[0] = size; periods[0] = 1; MPI_Cart_create(MPI_COMM_WORLD, 1, dims, periods, 0, &comm); MPI_Cart_shift(comm, 0, 1, &source, &dest); if (source != ((rank - 1 + size) % size)) { errs++; printf("source for shift 1 is %d\n", source); } if (dest != ((rank + 1) % size)) { errs++; printf("dest for shift 1 is %d\n", dest); } MPI_Cart_shift(comm, 0, 0, &source, &dest); if (source != rank) { errs++; printf("Source for shift 0 is %d\n", source); } if (dest != rank) { errs++; printf("Dest for shift 0 is %d\n", dest); } MPI_Cart_shift(comm, 0, -1, &source, &dest); if (source != ((rank + 1) % size)) { errs++; printf("source for shift -1 is %d\n", source); } if (dest != ((rank - 1 + size) % size)) { errs++; printf("dest for shift -1 is %d\n", dest); } /* Now, with non-periodic */ MPI_Comm_free(&comm); periods[0] = 0; MPI_Cart_create(MPI_COMM_WORLD, 1, dims, periods, 0, &comm); MPI_Cart_shift(comm, 0, 1, &source, &dest); if ((rank > 0 && source != (rank - 1)) || (rank == 0 && source != MPI_PROC_NULL)) { errs++; printf("source for non-periodic shift 1 is %d\n", source); } if ((rank < size - 1 && dest != rank + 1) || ((rank == size - 1) && dest != MPI_PROC_NULL)) { errs++; printf("dest for non-periodic shift 1 is %d\n", dest); } MPI_Cart_shift(comm, 0, 0, &source, &dest); if (source != rank) { errs++; printf("Source for non-periodic shift 0 is %d\n", source); } if (dest != rank) { errs++; printf("Dest for non-periodic shift 0 is %d\n", dest); } MPI_Cart_shift(comm, 0, -1, &source, &dest); if ((rank < size - 1 && source != rank + 1) || (rank == size - 1 && source != MPI_PROC_NULL)) { errs++; printf("source for non-periodic shift -1 is %d\n", source); } if ((rank > 0 && dest != rank - 1) || (rank == 0 && dest != MPI_PROC_NULL)) { errs++; printf("dest for non-periodic shift -1 is %d\n", dest); } MPI_Comm_free(&comm); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/topo/cartzero.c0000644000175000017500000000463712620254305017350 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2008 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* Check that the MPI implementation properly handles zero-dimensional Cartesian communicators - the original standard implies that these should be consistent with higher dimensional topologies and thus these should work with any MPI implementation. MPI 2.1 made this requirement explicit. */ int main(int argc, char *argv[]) { int errs = 0; int size, rank, ndims; MPI_Comm comm, newcomm; MTest_Init(&argc, &argv); /* Create a new cartesian communicator in a subset of the processes */ MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (size < 2) { fprintf(stderr, "This test needs at least 2 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Cart_create(MPI_COMM_WORLD, 0, NULL, NULL, 0, &comm); if (comm != MPI_COMM_NULL) { int csize; MPI_Comm_size(comm, &csize); if (csize != 1) { errs++; fprintf(stderr, "Sizes is wrong in cart communicator. Is %d, should be 1\n", csize); } /* This function is not meaningful, but should not fail */ MPI_Dims_create(1, 0, NULL); ndims = -1; MPI_Cartdim_get(comm, &ndims); if (ndims != 0) { errs++; fprintf(stderr, "MPI_Cartdim_get: ndims is %d, should be 0\n", ndims); } /* this function should not fail */ MPI_Cart_get(comm, 0, NULL, NULL, NULL); MPI_Cart_rank(comm, NULL, &rank); if (rank != 0) { errs++; fprintf(stderr, "MPI_Cart_rank: rank is %d, should be 0\n", rank); } /* this function should not fail */ MPI_Cart_coords(comm, 0, 0, NULL); MPI_Cart_sub(comm, NULL, &newcomm); ndims = -1; MPI_Cartdim_get(newcomm, &ndims); if (ndims != 0) { errs++; fprintf(stderr, "MPI_Cart_sub did not return zero-dimensional communicator\n"); } MPI_Barrier(comm); MPI_Comm_free(&comm); MPI_Comm_free(&newcomm); } else if (rank == 0) { errs++; fprintf(stderr, "Communicator returned is null!"); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/topo/neighb_coll.c0000644000175000017500000001317412620254305017760 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2012 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include #include "mpitest.h" #if !defined(USE_STRICT_MPI) && defined(MPICH) #define TEST_NEIGHB_COLL 1 #endif /* assert-like macro that bumps the err count and emits a message */ #define check(x_) \ do { \ if (!(x_)) { \ ++errs; \ if (errs < 10) { \ fprintf(stderr, "check failed: (%s), line %d\n", #x_, __LINE__); \ } \ } \ } while (0) int main(int argc, char *argv[]) { int errs = 0; int wrank, wsize; int periods[1] = { 0 }; MPI_Comm cart, dgraph, graph; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &wrank); MPI_Comm_size(MPI_COMM_WORLD, &wsize); #if defined(TEST_NEIGHB_COLL) /* a basic test for the 10 (5 patterns x {blocking,nonblocking}) MPI-3 * neighborhood collective routines */ /* (wrap)--> 0 <--> 1 <--> ... <--> p-1 <--(wrap) */ MPI_Cart_create(MPI_COMM_WORLD, 1, &wsize, periods, /*reorder= */ 0, &cart); /* allgather */ { int sendbuf[1] = { wrank }; int recvbuf[2] = { 0xdeadbeef, 0xdeadbeef }; /* should see one send to each neighbor (rank-1 and rank+1) and one receive * each from same */ MPI_Neighbor_allgather(sendbuf, 1, MPI_INT, recvbuf, 1, MPI_INT, cart); if (wrank == 0) check(recvbuf[0] == 0xdeadbeef); else check(recvbuf[0] == wrank - 1); if (wrank == wsize - 1) check(recvbuf[1] == 0xdeadbeef); else check(recvbuf[1] == wrank + 1); } /* allgatherv */ { int sendbuf[1] = { wrank }; int recvbuf[2] = { 0xdeadbeef, 0xdeadbeef }; int recvcounts[2] = { 1, 1 }; int displs[2] = { 1, 0 }; /* should see one send to each neighbor (rank-1 and rank+1) and one receive * each from same, but put them in opposite slots in the buffer */ MPI_Neighbor_allgatherv(sendbuf, 1, MPI_INT, recvbuf, recvcounts, displs, MPI_INT, cart); if (wrank == 0) check(recvbuf[1] == 0xdeadbeef); else check(recvbuf[1] == wrank - 1); if (wrank == wsize - 1) check(recvbuf[0] == 0xdeadbeef); else check(recvbuf[0] == wrank + 1); } /* alltoall */ { int sendbuf[2] = { -(wrank + 1), wrank + 1 }; int recvbuf[2] = { 0xdeadbeef, 0xdeadbeef }; /* should see one send to each neighbor (rank-1 and rank+1) and one * receive each from same */ MPI_Neighbor_alltoall(sendbuf, 1, MPI_INT, recvbuf, 1, MPI_INT, cart); if (wrank == 0) check(recvbuf[0] == 0xdeadbeef); else check(recvbuf[0] == wrank); if (wrank == wsize - 1) check(recvbuf[1] == 0xdeadbeef); else check(recvbuf[1] == -(wrank + 2)); } /* alltoallv */ { int sendbuf[2] = { -(wrank + 1), wrank + 1 }; int recvbuf[2] = { 0xdeadbeef, 0xdeadbeef }; int sendcounts[2] = { 1, 1 }; int recvcounts[2] = { 1, 1 }; int sdispls[2] = { 0, 1 }; int rdispls[2] = { 1, 0 }; /* should see one send to each neighbor (rank-1 and rank+1) and one receive * each from same, but put them in opposite slots in the buffer */ MPI_Neighbor_alltoallv(sendbuf, sendcounts, sdispls, MPI_INT, recvbuf, recvcounts, rdispls, MPI_INT, cart); if (wrank == 0) check(recvbuf[1] == 0xdeadbeef); else check(recvbuf[1] == wrank); if (wrank == wsize - 1) check(recvbuf[0] == 0xdeadbeef); else check(recvbuf[0] == -(wrank + 2)); } /* alltoallw */ { int sendbuf[2] = { -(wrank + 1), wrank + 1 }; int recvbuf[2] = { 0xdeadbeef, 0xdeadbeef }; int sendcounts[2] = { 1, 1 }; int recvcounts[2] = { 1, 1 }; MPI_Aint sdispls[2] = { 0, sizeof(int) }; MPI_Aint rdispls[2] = { sizeof(int), 0 }; MPI_Datatype sendtypes[2] = { MPI_INT, MPI_INT }; MPI_Datatype recvtypes[2] = { MPI_INT, MPI_INT }; /* should see one send to each neighbor (rank-1 and rank+1) and one receive * each from same, but put them in opposite slots in the buffer */ MPI_Neighbor_alltoallw(sendbuf, sendcounts, sdispls, sendtypes, recvbuf, recvcounts, rdispls, recvtypes, cart); if (wrank == 0) check(recvbuf[1] == 0xdeadbeef); else check(recvbuf[1] == wrank); if (wrank == wsize - 1) check(recvbuf[0] == 0xdeadbeef); else check(recvbuf[0] == -(wrank + 2)); } MPI_Comm_free(&cart); #endif /* defined(TEST_NEIGHB_COLL) */ MPI_Reduce((wrank == 0 ? MPI_IN_PLACE : &errs), &errs, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (wrank == 0) { if (errs) { printf("found %d errors\n", errs); } else { printf(" No errors\n"); } } MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/topo/distgraph1.c0000644000175000017500000005133212620254305017557 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include #include #include "mpitest.h" #define NUM_GRAPHS 10 #define MAX_WEIGHT 100 /* convenience globals */ int size, rank; /* We need MPI 2.2 to be able to compile the following routines. */ #if MTEST_HAVE_MIN_MPI_VERSION(2,2) /* Maybe use a bit vector instead? */ int **layout; #define MAX_LAYOUT_NAME_LEN 256 char graph_layout_name[MAX_LAYOUT_NAME_LEN] = { '\0' }; static void create_graph_layout(int graph_num) { int i, j; if (rank == 0) { switch (graph_num) { case 0: strncpy(graph_layout_name, "deterministic complete graph", MAX_LAYOUT_NAME_LEN); for (i = 0; i < size; i++) for (j = 0; j < size; j++) layout[i][j] = (i + 2) * (j + 1); break; case 1: strncpy(graph_layout_name, "every other edge deleted", MAX_LAYOUT_NAME_LEN); for (i = 0; i < size; i++) for (j = 0; j < size; j++) layout[i][j] = (j % 2 ? (i + 2) * (j + 1) : 0); break; case 2: strncpy(graph_layout_name, "only self-edges", MAX_LAYOUT_NAME_LEN); for (i = 0; i < size; i++) { for (j = 0; j < size; j++) { if (i == rank && j == rank) layout[i][j] = 10 * (i + 1); else layout[i][j] = 0; } } break; case 3: strncpy(graph_layout_name, "no edges", MAX_LAYOUT_NAME_LEN); for (i = 0; i < size; i++) for (j = 0; j < size; j++) layout[i][j] = 0; break; default: strncpy(graph_layout_name, "a random incomplete graph", MAX_LAYOUT_NAME_LEN); srand(graph_num); /* Create a connectivity graph; layout[i,j]==w represents an outward * connectivity from i to j with weight w, w==0 is no edge. */ for (i = 0; i < size; i++) { for (j = 0; j < size; j++) { /* disable about a third of the edges */ if (((rand() * 1.0) / RAND_MAX) < 0.33) layout[i][j] = 0; else layout[i][j] = rand() % MAX_WEIGHT; } } break; } } /* because of the randomization we must determine the graph on rank 0 and * send the layout to all other processes */ MPI_Bcast(graph_layout_name, MAX_LAYOUT_NAME_LEN, MPI_CHAR, 0, MPI_COMM_WORLD); for (i = 0; i < size; ++i) { MPI_Bcast(layout[i], size, MPI_INT, 0, MPI_COMM_WORLD); } } static int verify_comm(MPI_Comm comm) { int local_errs = 0; int i, j; int indegree, outdegree, weighted; int *sources, *sweights, *destinations, *dweights; int use_dup; int topo_type = MPI_UNDEFINED; MPI_Comm dupcomm = MPI_COMM_NULL; sources = (int *) malloc(size * sizeof(int)); sweights = (int *) malloc(size * sizeof(int)); destinations = (int *) malloc(size * sizeof(int)); dweights = (int *) malloc(size * sizeof(int)); for (use_dup = 0; use_dup <= 1; ++use_dup) { if (!use_dup) { MPI_Dist_graph_neighbors_count(comm, &indegree, &outdegree, &weighted); } else { MPI_Comm_dup(comm, &dupcomm); comm = dupcomm; /* caller retains original comm value */ } MPI_Topo_test(comm, &topo_type); if (topo_type != MPI_DIST_GRAPH) { fprintf(stderr, "topo_type != MPI_DIST_GRAPH\n"); ++local_errs; } j = 0; for (i = 0; i < size; i++) if (layout[i][rank]) j++; if (j != indegree) { fprintf(stderr, "indegree does not match, expected=%d got=%d, layout='%s'\n", indegree, j, graph_layout_name); ++local_errs; } j = 0; for (i = 0; i < size; i++) if (layout[rank][i]) j++; if (j != outdegree) { fprintf(stderr, "outdegree does not match, expected=%d got=%d, layout='%s'\n", outdegree, j, graph_layout_name); ++local_errs; } if ((indegree || outdegree) && (weighted == 0)) { fprintf(stderr, "MPI_Dist_graph_neighbors_count thinks the graph is not weighted\n"); ++local_errs; } MPI_Dist_graph_neighbors(comm, indegree, sources, sweights, outdegree, destinations, dweights); /* For each incoming and outgoing edge in the matrix, search if * the query function listed it in the sources. */ for (i = 0; i < size; i++) { if (layout[i][rank]) { for (j = 0; j < indegree; j++) { assert(sources[j] >= 0); assert(sources[j] < size); if (sources[j] == i) break; } if (j == indegree) { fprintf(stderr, "no edge from %d to %d specified\n", i, rank); ++local_errs; } else { if (sweights[j] != layout[i][rank]) { fprintf(stderr, "incorrect weight for edge (%d,%d): %d instead of %d\n", i, rank, sweights[j], layout[i][rank]); ++local_errs; } } } if (layout[rank][i]) { for (j = 0; j < outdegree; j++) { assert(destinations[j] >= 0); assert(destinations[j] < size); if (destinations[j] == i) break; } if (j == outdegree) { fprintf(stderr, "no edge from %d to %d specified\n", rank, i); ++local_errs; } else { if (dweights[j] != layout[rank][i]) { fprintf(stderr, "incorrect weight for edge (%d,%d): %d instead of %d\n", rank, i, dweights[j], layout[rank][i]); ++local_errs; } } } } /* For each incoming and outgoing edge in the sources, we should * have an entry in the matrix */ for (i = 0; i < indegree; i++) { if (layout[sources[i]][rank] != sweights[i]) { fprintf(stderr, "edge (%d,%d) has a weight %d instead of %d\n", i, rank, sweights[i], layout[sources[i]][rank]); ++local_errs; } } for (i = 0; i < outdegree; i++) { if (layout[rank][destinations[i]] != dweights[i]) { fprintf(stderr, "edge (%d,%d) has a weight %d instead of %d\n", rank, i, dweights[i], layout[rank][destinations[i]]); ++local_errs; } } } if (dupcomm != MPI_COMM_NULL) MPI_Comm_free(&dupcomm); return local_errs; } #endif /* At least MPI 2.2 */ int main(int argc, char *argv[]) { int errs = 0; int i, j, k, p; int indegree, outdegree, reorder; int check_indegree, check_outdegree, check_weighted; int *sources, *sweights, *destinations, *dweights, *degrees; MPI_Comm comm; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); #if MTEST_HAVE_MIN_MPI_VERSION(2,2) layout = (int **) malloc(size * sizeof(int *)); assert(layout); for (i = 0; i < size; i++) { layout[i] = (int *) malloc(size * sizeof(int)); assert(layout[i]); } /* alloc size*size ints to handle the all-on-one-process case */ sources = (int *) malloc(size * size * sizeof(int)); sweights = (int *) malloc(size * size * sizeof(int)); destinations = (int *) malloc(size * size * sizeof(int)); dweights = (int *) malloc(size * size * sizeof(int)); degrees = (int *) malloc(size * size * sizeof(int)); for (i = 0; i < NUM_GRAPHS; i++) { create_graph_layout(i); if (rank == 0) { MTestPrintfMsg(1, "using graph layout '%s'\n", graph_layout_name); } /* MPI_Dist_graph_create_adjacent */ if (rank == 0) { MTestPrintfMsg(1, "testing MPI_Dist_graph_create_adjacent\n"); } indegree = 0; k = 0; for (j = 0; j < size; j++) { if (layout[j][rank]) { indegree++; sources[k] = j; sweights[k++] = layout[j][rank]; } } outdegree = 0; k = 0; for (j = 0; j < size; j++) { if (layout[rank][j]) { outdegree++; destinations[k] = j; dweights[k++] = layout[rank][j]; } } for (reorder = 0; reorder <= 1; reorder++) { MPI_Dist_graph_create_adjacent(MPI_COMM_WORLD, indegree, sources, sweights, outdegree, destinations, dweights, MPI_INFO_NULL, reorder, &comm); MPI_Barrier(comm); errs += verify_comm(comm); MPI_Comm_free(&comm); } /* a weak check that passing MPI_UNWEIGHTED doesn't cause * create_adjacent to explode */ MPI_Dist_graph_create_adjacent(MPI_COMM_WORLD, indegree, sources, MPI_UNWEIGHTED, outdegree, destinations, MPI_UNWEIGHTED, MPI_INFO_NULL, reorder, &comm); MPI_Barrier(comm); /* intentionally no verify here, weights won't match */ MPI_Comm_free(&comm); /* MPI_Dist_graph_create() where each process specifies its * outgoing edges */ if (rank == 0) { MTestPrintfMsg(1, "testing MPI_Dist_graph_create w/ outgoing only\n"); } sources[0] = rank; k = 0; for (j = 0; j < size; j++) { if (layout[rank][j]) { destinations[k] = j; dweights[k++] = layout[rank][j]; } } degrees[0] = k; for (reorder = 0; reorder <= 1; reorder++) { MPI_Dist_graph_create(MPI_COMM_WORLD, 1, sources, degrees, destinations, dweights, MPI_INFO_NULL, reorder, &comm); MPI_Barrier(comm); errs += verify_comm(comm); MPI_Comm_free(&comm); } /* MPI_Dist_graph_create() where each process specifies its * incoming edges */ if (rank == 0) { MTestPrintfMsg(1, "testing MPI_Dist_graph_create w/ incoming only\n"); } k = 0; for (j = 0; j < size; j++) { if (layout[j][rank]) { sources[k] = j; sweights[k] = layout[j][rank]; degrees[k] = 1; destinations[k++] = rank; } } for (reorder = 0; reorder <= 1; reorder++) { MPI_Dist_graph_create(MPI_COMM_WORLD, k, sources, degrees, destinations, sweights, MPI_INFO_NULL, reorder, &comm); MPI_Barrier(comm); errs += verify_comm(comm); MPI_Comm_free(&comm); } /* MPI_Dist_graph_create() where rank 0 specifies the entire * graph */ if (rank == 0) { MTestPrintfMsg(1, "testing MPI_Dist_graph_create w/ rank 0 specifies only\n"); } p = 0; for (j = 0; j < size; j++) { for (k = 0; k < size; k++) { if (layout[j][k]) { sources[p] = j; sweights[p] = layout[j][k]; degrees[p] = 1; destinations[p++] = k; } } } for (reorder = 0; reorder <= 1; reorder++) { MPI_Dist_graph_create(MPI_COMM_WORLD, (rank == 0) ? p : 0, sources, degrees, destinations, sweights, MPI_INFO_NULL, reorder, &comm); MPI_Barrier(comm); errs += verify_comm(comm); MPI_Comm_free(&comm); } /* MPI_Dist_graph_create() where rank 0 specifies the entire * graph and all other ranks pass NULL. Can catch implementation * problems when MPI_UNWEIGHTED==NULL. */ if (rank == 0) { MTestPrintfMsg(1, "testing MPI_Dist_graph_create w/ rank 0 specifies only -- NULLs\n"); } p = 0; for (j = 0; j < size; j++) { for (k = 0; k < size; k++) { if (layout[j][k]) { sources[p] = j; sweights[p] = layout[j][k]; degrees[p] = 1; destinations[p++] = k; } } } for (reorder = 0; reorder <= 1; reorder++) { if (rank == 0) { MPI_Dist_graph_create(MPI_COMM_WORLD, p, sources, degrees, destinations, sweights, MPI_INFO_NULL, reorder, &comm); } else { MPI_Dist_graph_create(MPI_COMM_WORLD, 0, NULL, NULL, NULL, NULL, MPI_INFO_NULL, reorder, &comm); } MPI_Barrier(comm); errs += verify_comm(comm); MPI_Comm_free(&comm); } } /* now tests that don't depend on the layout[][] array */ /* The MPI-2.2 standard recommends implementations set * MPI_UNWEIGHTED==NULL, but this leads to an ambiguity. The draft * MPI-3.0 standard specifically recommends _not_ setting it equal * to NULL. */ if (MPI_UNWEIGHTED == NULL) { fprintf(stderr, "MPI_UNWEIGHTED should not be NULL\n"); ++errs; } /* MPI_Dist_graph_create() with no graph */ if (rank == 0) { MTestPrintfMsg(1, "testing MPI_Dist_graph_create w/ no graph\n"); } for (reorder = 0; reorder <= 1; reorder++) { MPI_Dist_graph_create(MPI_COMM_WORLD, 0, sources, degrees, destinations, sweights, MPI_INFO_NULL, reorder, &comm); MPI_Dist_graph_neighbors_count(comm, &check_indegree, &check_outdegree, &check_weighted); if (!check_weighted) { fprintf(stderr, "expected weighted == TRUE for the \"no graph\" case\n"); ++errs; } MPI_Comm_free(&comm); } /* MPI_Dist_graph_create() with no graph -- passing MPI_WEIGHTS_EMPTY * instead */ /* NOTE that MPI_WEIGHTS_EMPTY was added in MPI-3 and does not * appear before then. This part of the test thus requires a check * on the MPI major version */ #if MPI_VERSION >= 3 if (rank == 0) { MTestPrintfMsg(1, "testing MPI_Dist_graph_create w/ no graph\n"); } for (reorder = 0; reorder <= 1; reorder++) { MPI_Dist_graph_create(MPI_COMM_WORLD, 0, sources, degrees, destinations, MPI_WEIGHTS_EMPTY, MPI_INFO_NULL, reorder, &comm); MPI_Dist_graph_neighbors_count(comm, &check_indegree, &check_outdegree, &check_weighted); if (!check_weighted) { fprintf(stderr, "expected weighted == TRUE for the \"no graph -- MPI_WEIGHTS_EMPTY\" case\n"); ++errs; } MPI_Comm_free(&comm); } #endif /* MPI_Dist_graph_create() with no graph -- passing NULLs instead */ if (rank == 0) { MTestPrintfMsg(1, "testing MPI_Dist_graph_create w/ no graph -- NULLs\n"); } for (reorder = 0; reorder <= 1; reorder++) { MPI_Dist_graph_create(MPI_COMM_WORLD, 0, NULL, NULL, NULL, NULL, MPI_INFO_NULL, reorder, &comm); MPI_Dist_graph_neighbors_count(comm, &check_indegree, &check_outdegree, &check_weighted); /* ambiguous if they are equal, only check when they are distinct values. */ if (MPI_UNWEIGHTED != NULL) { if (!check_weighted) { fprintf(stderr, "expected weighted == TRUE for the \"no graph -- NULLs\" case\n"); ++errs; } } MPI_Comm_free(&comm); } /* MPI_Dist_graph_create() with no graph -- passing NULLs+MPI_UNWEIGHTED instead */ if (rank == 0) { MTestPrintfMsg(1, "testing MPI_Dist_graph_create w/ no graph -- NULLs+MPI_UNWEIGHTED\n"); } for (reorder = 0; reorder <= 1; reorder++) { MPI_Dist_graph_create(MPI_COMM_WORLD, 0, NULL, NULL, NULL, MPI_UNWEIGHTED, MPI_INFO_NULL, reorder, &comm); MPI_Dist_graph_neighbors_count(comm, &check_indegree, &check_outdegree, &check_weighted); /* ambiguous if they are equal, only check when they are distinct values. */ if (MPI_UNWEIGHTED != NULL) { if (check_weighted) { fprintf(stderr, "expected weighted == FALSE for the \"no graph -- NULLs+MPI_UNWEIGHTED\" case\n"); ++errs; } } MPI_Comm_free(&comm); } /* MPI_Dist_graph_create_adjacent() with no graph */ if (rank == 0) { MTestPrintfMsg(1, "testing MPI_Dist_graph_create_adjacent w/ no graph\n"); } for (reorder = 0; reorder <= 1; reorder++) { MPI_Dist_graph_create_adjacent(MPI_COMM_WORLD, 0, sources, sweights, 0, destinations, dweights, MPI_INFO_NULL, reorder, &comm); MPI_Dist_graph_neighbors_count(comm, &check_indegree, &check_outdegree, &check_weighted); if (!check_weighted) { fprintf(stderr, "expected weighted == TRUE for the \"no graph\" case\n"); ++errs; } MPI_Comm_free(&comm); } /* MPI_Dist_graph_create_adjacent() with no graph -- passing MPI_WEIGHTS_EMPTY instead */ /* NOTE that MPI_WEIGHTS_EMPTY was added in MPI-3 and does not * appear before then. This part of the test thus requires a check * on the MPI major version */ #if MPI_VERSION >= 3 if (rank == 0) { MTestPrintfMsg(1, "testing MPI_Dist_graph_create_adjacent w/ no graph -- MPI_WEIGHTS_EMPTY\n"); } for (reorder = 0; reorder <= 1; reorder++) { MPI_Dist_graph_create_adjacent(MPI_COMM_WORLD, 0, sources, MPI_WEIGHTS_EMPTY, 0, destinations, MPI_WEIGHTS_EMPTY, MPI_INFO_NULL, reorder, &comm); MPI_Dist_graph_neighbors_count(comm, &check_indegree, &check_outdegree, &check_weighted); if (!check_weighted) { fprintf(stderr, "expected weighted == TRUE for the \"no graph -- MPI_WEIGHTS_EMPTY\" case\n"); ++errs; } MPI_Comm_free(&comm); } #endif /* MPI_Dist_graph_create_adjacent() with no graph -- passing NULLs instead */ if (rank == 0) { MTestPrintfMsg(1, "testing MPI_Dist_graph_create_adjacent w/ no graph -- NULLs\n"); } for (reorder = 0; reorder <= 1; reorder++) { MPI_Dist_graph_create_adjacent(MPI_COMM_WORLD, 0, NULL, NULL, 0, NULL, NULL, MPI_INFO_NULL, reorder, &comm); MPI_Dist_graph_neighbors_count(comm, &check_indegree, &check_outdegree, &check_weighted); /* ambiguous if they are equal, only check when they are distinct values. */ if (MPI_UNWEIGHTED != NULL) { if (!check_weighted) { fprintf(stderr, "expected weighted == TRUE for the \"no graph -- NULLs\" case\n"); ++errs; } } MPI_Comm_free(&comm); } /* MPI_Dist_graph_create_adjacent() with no graph -- passing NULLs+MPI_UNWEIGHTED instead */ if (rank == 0) { MTestPrintfMsg(1, "testing MPI_Dist_graph_create_adjacent w/ no graph -- NULLs+MPI_UNWEIGHTED\n"); } for (reorder = 0; reorder <= 1; reorder++) { MPI_Dist_graph_create_adjacent(MPI_COMM_WORLD, 0, NULL, MPI_UNWEIGHTED, 0, NULL, MPI_UNWEIGHTED, MPI_INFO_NULL, reorder, &comm); MPI_Dist_graph_neighbors_count(comm, &check_indegree, &check_outdegree, &check_weighted); /* ambiguous if they are equal, only check when they are distinct values. */ if (MPI_UNWEIGHTED != NULL) { if (check_weighted) { fprintf(stderr, "expected weighted == FALSE for the \"no graph -- NULLs+MPI_UNWEIGHTED\" case\n"); ++errs; } } MPI_Comm_free(&comm); } for (i = 0; i < size; i++) free(layout[i]); free(layout); #endif MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/topo/Makefile.am0000644000175000017500000000132612620254305017377 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile.mtest EXTRA_DIST = testlist ## for all programs that are just built from the single corresponding source ## file, we don't need per-target _SOURCES rules, automake will infer them ## correctly noinst_PROGRAMS = \ cartmap1 \ cartzero \ cartshift1 \ cartsuball \ cartcreates \ dims1 \ dims2 \ dims3 \ dims4 \ graphmap1 \ topotest \ topodup \ graphcr \ graphcr2 \ distgraph1 \ dgraph_unwgt \ neighb_coll mpi-testsuite-3.2+dfsg/topo/dims4.c0000644000175000017500000000114412620254305016525 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2011 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include int main(int argc, char **argv) { int nproc = (1000 * 1000 * 1000); int ret[3] = { 0, 0, 0 }; int errs = 0, i, rank; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Dims_create(nproc, 3, ret); for (i = 0; i < 3; i++) if (ret[i] != 1000) errs++; if (!errs && rank == 0) printf(" No Errors\n"); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/topo/dims1.c0000644000175000017500000001071512620254305016526 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" int prodof(int ndims, const int dims[]); int increasing(int ndims, const int dims[]); int prodof(int ndims, const int dims[]) { int i, prod = 1; for (i = 0; i < ndims; i++) prod *= dims[i]; return prod; } int increasing(int ndims, const int dims[]) { int i, err = 0; for (i = 1; i < ndims; i++) { if (dims[i] > dims[i - 1]) { printf("%d = dims[%d] > dims[%d] = %d\n", dims[i], i, i - 1, dims[i - 1]); err = 1; } } return err; } int main(int argc, char *argv[]) { int errs = 0; int dims[4], nnodes, ndims; MTest_Init(&argc, &argv); /* Test multiple dims create values. For each, make sure that the * product of dims is the number of input nodes */ nnodes = 2 * 3 * 5 * 7 * 11; ndims = 2; dims[0] = dims[1] = 0; MPI_Dims_create(nnodes, ndims, dims); if (prodof(ndims, dims) != nnodes) { errs++; printf("dims create returned the wrong decomposition for %d in %d dims\n", nnodes, ndims); } if (increasing(ndims, dims)) { errs++; printf ("dims create returned a decomposition with increasing dimensions (see MPI-1 standard section 6.5)\n"); printf("dims create returned the wrong decomposition for %d in %d dims\n", nnodes, ndims); } /* Test multiple dims create values. For each, make sure that the * product of dims is the number of input nodes */ nnodes = 2 * 7; ndims = 2; dims[0] = dims[1] = 0; MPI_Dims_create(nnodes, ndims, dims); if (prodof(ndims, dims) != nnodes) { errs++; printf("dims create returned the wrong decomposition for %d in %d dims\n", nnodes, ndims); } if (increasing(ndims, dims)) { errs++; printf ("dims create returned a decomposition with increasing dimensions (see MPI-1 standard section 6.5)\n"); printf("dims create returned the wrong decomposition for %d in %d dims\n", nnodes, ndims); } nnodes = 2 * 2 * 3 * 3 * 5 * 7 * 11; ndims = 2; dims[0] = dims[1] = 0; MPI_Dims_create(nnodes, ndims, dims); if (prodof(ndims, dims) != nnodes) { errs++; printf("dims create returned the wrong decomposition for %d in %d dims\n", nnodes, ndims); } if (increasing(ndims, dims)) { errs++; printf ("dims create returned a decomposition with increasing dimensions (see MPI-1 standard section 6.5)\n"); printf("dims create returned the wrong decomposition for %d in %d dims\n", nnodes, ndims); } nnodes = 11; ndims = 2; dims[0] = dims[1] = 0; MPI_Dims_create(nnodes, ndims, dims); if (prodof(ndims, dims) != nnodes) { errs++; printf("dims create returned the wrong decomposition for %d in %d dims\n", nnodes, ndims); } if (increasing(ndims, dims)) { errs++; printf ("dims create returned a decomposition with increasing dimensions (see MPI-1 standard section 6.5)\n"); printf("dims create returned the wrong decomposition for %d in %d dims\n", nnodes, ndims); } nnodes = 5 * 7 * 11; ndims = 4; dims[0] = dims[1] = dims[2] = dims[3] = 0; MPI_Dims_create(nnodes, ndims, dims); if (prodof(ndims, dims) != nnodes) { errs++; printf("dims create returned the wrong decomposition for %d in %d dims\n", nnodes, ndims); } if (increasing(ndims, dims)) { errs++; printf ("dims create returned a decomposition with increasing dimensions (see MPI-1 standard section 6.5)\n"); printf("dims create returned the wrong decomposition for %d in %d dims\n", nnodes, ndims); } nnodes = 64; ndims = 4; dims[0] = dims[1] = dims[2] = dims[3] = 0; MPI_Dims_create(nnodes, ndims, dims); if (prodof(ndims, dims) != nnodes) { errs++; printf("dims create returned the wrong decomposition for %d in %d dims\n", nnodes, ndims); } if (increasing(ndims, dims)) { errs++; printf ("dims create returned a decomposition with increasing dimensions (see MPI-1 standard section 6.5)\n"); printf("dims create returned the wrong decomposition for %d in %d dims\n", nnodes, ndims); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/topo/graphcr2.c0000644000175000017500000000365412620254305017225 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Create a communicator with a graph that contains null edges and one that contains duplicate edges"; */ int main(int argc, char *argv[]) { int errs = 0; int *index = 0, *edges = 0; int rank, size, i, j, crank, csize; MPI_Comm comm; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); index = (int *) malloc(size * sizeof(int)); edges = (int *) malloc(size * sizeof(int)); for (i = 0; i < size; i++) { index[i] = 1; edges[i] = i; } /* As of MPI 2.1, self edges are permitted */ MPI_Graph_create(MPI_COMM_WORLD, size, index, edges, 0, &comm); MPI_Comm_rank(comm, &crank); MPI_Comm_size(comm, &csize); if (csize != size) { errs++; fprintf(stderr, "Graph create with self links has size %d should be %d", csize, size); } free(index); free(edges); MPI_Comm_free(&comm); /* Create a graph with duplicate links */ index = (int *) malloc(size * sizeof(int)); edges = (int *) malloc(size * 2 * sizeof(int)); j = 0; for (i = 0; i < size; i++) { index[i] = j + 2; edges[j++] = (i + 1) % size; edges[j++] = (i + 1) % size; } /* As of MPI 2.1, duplicate edges are permitted */ MPI_Graph_create(MPI_COMM_WORLD, size, index, edges, 0, &comm); MPI_Comm_rank(comm, &crank); MPI_Comm_size(comm, &csize); if (csize != size) { errs++; fprintf(stderr, "Graph create with duplicate links has size %d should be %d", csize, size); } free(index); free(edges); MPI_Comm_free(&comm); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/topo/cartcreates.c0000644000175000017500000000242112620254305020004 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" int main(int argc, char *argv[]) { int errs = 0; int size, rank; int dims[2], periods[2]; MPI_Comm comm; MTest_Init(&argc, &argv); /* Create a new cartesian communicator in a subset of the processes */ MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (size < 2) { fprintf(stderr, "This test needs at least 2 processes\n"); MPI_Abort(MPI_COMM_WORLD, 1); } dims[0] = size - 1; periods[0] = 1; MPI_Cart_create(MPI_COMM_WORLD, 1, dims, periods, 0, &comm); if (comm != MPI_COMM_NULL) { int csize; MPI_Comm_size(comm, &csize); if (csize != dims[0]) { errs++; fprintf(stderr, "Sizes is wrong in cart communicator. Is %d, should be %d\n", csize, dims[0]); } MPI_Barrier(comm); MPI_Comm_free(&comm); } else if (rank < dims[0]) { errs++; fprintf(stderr, "Communicator returned is null!"); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/topo/dims3.c0000644000175000017500000000207712620254305016532 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" static inline void print_err(int *dims, int ndims) { int i; printf("[ "); for (i = 0; i < ndims; i++) printf("%d ", dims[i]); printf("] Suboptimal distribution!\n"); } int main(int argc, char **argv) { int errs = 0; int dims[4], ndims, nnodes; MTest_Init(&argc, &argv); for (ndims = 3; ndims <= 4; ndims++) { for (nnodes = 2; nnodes <= 4096; nnodes *= 2) { int i; for (i = 0; i < ndims; i++) dims[i] = 0; MPI_Dims_create(nnodes, ndims, dims); /* Checking */ for (i = 0; i < ndims - 1; i++) if (dims[i] / 2 > dims[i + 1]) { print_err(dims, ndims); ++errs; break; } } } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/topo/topotest.c0000644000175000017500000000204512620254305017367 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" int main(int argc, char *argv[]) { int errs = 0; int topo_type, size, dims[1], periods[1]; MPI_Comm comm; MTest_Init(&argc, &argv); /* Check that topo test returns the correct type, including * MPI_UNDEFINED */ MPI_Topo_test(MPI_COMM_WORLD, &topo_type); if (topo_type != MPI_UNDEFINED) { errs++; printf("Topo type of comm world is not UNDEFINED\n"); } MPI_Comm_size(MPI_COMM_WORLD, &size); dims[0] = size; periods[0] = 0; MPI_Cart_create(MPI_COMM_WORLD, 1, dims, periods, 0, &comm); MPI_Topo_test(comm, &topo_type); if (topo_type != MPI_CART) { errs++; printf("Topo type of cart comm is not CART\n"); } MPI_Comm_free(&comm); /* FIXME: still need graph example */ MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/topo/cartsuball.c0000644000175000017500000000252212620254305017642 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" int main(int argc, char *argv[]) { int errs = 0; int size, dims[2], periods[2], remain[2]; int result, rank; MPI_Comm comm, newcomm; MTest_Init(&argc, &argv); /* First, create a 1-dim cartesian communicator */ periods[0] = 0; MPI_Comm_size(MPI_COMM_WORLD, &size); dims[0] = size; MPI_Cart_create(MPI_COMM_WORLD, 1, dims, periods, 0, &comm); /* Now, extract a communicator with no dimensions */ remain[0] = 0; MPI_Cart_sub(comm, remain, &newcomm); MPI_Comm_rank(comm, &rank); if (rank == 0) { /* This should be congruent to MPI_COMM_SELF */ MPI_Comm_compare(MPI_COMM_SELF, newcomm, &result); if (result != MPI_CONGRUENT) { errs++; printf("cart sub to size 0 did not give self\n"); } MPI_Comm_free(&newcomm); } else if (newcomm != MPI_COMM_NULL) { errs++; printf("cart sub to size 0 did not give null\n"); } /* Free the new communicator so that storage leak tests will * be happy */ MPI_Comm_free(&comm); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/topo/cartmap1.c0000644000175000017500000000272412620254305017222 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" int main(int argc, char *argv[]) { int errs = 0; int dims[2]; int periods[2]; int size, rank, newrank; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); /* This defines a one dimensional cartision grid with a single point */ periods[0] = 1; dims[0] = 1; MPI_Cart_map(MPI_COMM_WORLD, 1, dims, periods, &newrank); if (rank > 0) { if (newrank != MPI_UNDEFINED) { errs++; printf("rank outside of input communicator not UNDEFINED\n"); } } else { if (rank != newrank) { errs++; printf("Newrank not defined and should be 0\n"); } } /* As of MPI 2.1, a 0-dimensional topology is valid (its also a * point) */ MPI_Cart_map(MPI_COMM_WORLD, 0, dims, periods, &newrank); if (rank > 0) { if (newrank != MPI_UNDEFINED) { errs++; printf("rank outside of input communicator not UNDEFINED\n"); } } else { /* rank == 0 */ if (rank != newrank) { errs++; printf("Newrank not defined and should be 0\n"); } } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/topo/graphcr.c0000644000175000017500000000153112620254305017133 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" /* static char MTEST_Descrip[] = "Create a communicator with a graph that contains no processes"; */ int main(int argc, char *argv[]) { int errs = 0; int *index = 0, *edges = 0; MPI_Comm comm; MTest_Init(&argc, &argv); /* MPI 2.1, page 246, lines 29-30 make it clear that this is a valid * (not erroneous) call that must return MPI_COMM_NULL */ MPI_Graph_create(MPI_COMM_WORLD, 0, index, edges, 0, &comm); if (comm != MPI_COMM_NULL) { errs++; fprintf(stderr, "Expected MPI_COMM_NULL from empty graph create\n"); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/topo/dgraph_unwgt.c0000644000175000017500000001263712620254305020207 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2011 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include #include #include #include "mpi.h" #include "mpitest.h" #define RING_NUM_NEIGHBORS 2 static int validate_dgraph(MPI_Comm dgraph_comm) { int comm_topo; int src_sz, dest_sz; int wgt_flag, ierr; int srcs[RING_NUM_NEIGHBORS], dests[RING_NUM_NEIGHBORS]; int *src_wgts, *dest_wgts; int world_rank, world_size; int idx, nbr_sep; comm_topo = MPI_UNDEFINED; MPI_Topo_test(dgraph_comm, &comm_topo); switch (comm_topo) { case MPI_DIST_GRAPH: break; default: fprintf(stderr, "dgraph_comm is NOT of type MPI_DIST_GRAPH\n"); return 0; } ierr = MPI_Dist_graph_neighbors_count(dgraph_comm, &src_sz, &dest_sz, &wgt_flag); if (ierr != MPI_SUCCESS) { fprintf(stderr, "MPI_Dist_graph_neighbors_count() fails!\n"); return 0; } /* else fprintf(stderr, "MPI_Dist_graph_neighbors_count() succeeds!\n"); */ if (wgt_flag) { fprintf(stderr, "dgraph_comm is NOT created with MPI_UNWEIGHTED\n"); return 0; } /* else fprintf(stderr, "dgraph_comm is created with MPI_UNWEIGHTED\n"); */ if (src_sz != RING_NUM_NEIGHBORS || dest_sz != RING_NUM_NEIGHBORS) { fprintf(stderr, "source or destination edge array is not of size %d.\n", RING_NUM_NEIGHBORS); fprintf(stderr, "src_sz = %d, dest_sz = %d\n", src_sz, dest_sz); return 0; } /* * src_wgts and dest_wgts could be anything, e.g. NULL, since * MPI_Dist_graph_neighbors_count() returns MPI_UNWEIGHTED. * Since this program has a Fortran77 version, and standard Fortran77 * has no pointer and NULL, so use MPI_UNWEIGHTED for the weighted arrays. */ src_wgts = MPI_UNWEIGHTED; dest_wgts = MPI_UNWEIGHTED; ierr = MPI_Dist_graph_neighbors(dgraph_comm, src_sz, srcs, src_wgts, dest_sz, dests, dest_wgts); if (ierr != MPI_SUCCESS) { fprintf(stderr, "MPI_Dist_graph_neighbors() fails!\n"); return 0; } /* else fprintf(stderr, "MPI_Dist_graph_neighbors() succeeds!\n"); */ /* * Check if the neighbors returned from MPI are really * the nearest neighbors within a ring. */ MPI_Comm_size(MPI_COMM_WORLD, &world_size); MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); for (idx = 0; idx < src_sz; idx++) { nbr_sep = abs(srcs[idx] - world_rank); if (nbr_sep != 1 && nbr_sep != (world_size - 1)) { fprintf(stderr, "srcs[%d]=%d is NOT a neighbor of my rank %d.\n", idx, srcs[idx], world_rank); return 0; } } for (idx = 0; idx < dest_sz; idx++) { nbr_sep = abs(dests[idx] - world_rank); if (nbr_sep != 1 && nbr_sep != (world_size - 1)) { fprintf(stderr, "dests[%d]=%d is NOT a neighbor of my rank %d.\n", idx, dests[idx], world_rank); return 0; } } /* * fprintf(stderr, "dgraph_comm is of type MPI_DIST_GRAPH " * "of a bidirectional ring.\n"); */ return 1; } /* Specify a distributed graph of a bidirectional ring of the MPI_COMM_WORLD, i.e. everyone only talks to left and right neighbors. */ int main(int argc, char *argv[]) { MPI_Comm dgraph_comm; int world_size, world_rank, ierr; int errs = 0; int src_sz, dest_sz; int degs[1]; int srcs[RING_NUM_NEIGHBORS], dests[RING_NUM_NEIGHBORS]; MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &world_size); MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); degs[0] = 2; srcs[0] = world_rank; dests[0] = world_rank - 1 < 0 ? world_size - 1 : world_rank - 1; dests[1] = world_rank + 1 >= world_size ? 0 : world_rank + 1; ierr = MPI_Dist_graph_create(MPI_COMM_WORLD, 1, srcs, degs, dests, MPI_UNWEIGHTED, MPI_INFO_NULL, 1, &dgraph_comm); if (ierr != MPI_SUCCESS) { fprintf(stderr, "MPI_Dist_graph_create() fails!\n"); MPI_Abort(MPI_COMM_WORLD, 1); return 1; } if (!validate_dgraph(dgraph_comm)) { fprintf(stderr, "MPI_Dist_graph_create() does NOT create " "a bidirectional ring graph!\n"); MPI_Abort(MPI_COMM_WORLD, 1); return 1; } MPI_Comm_free(&dgraph_comm); src_sz = 2; srcs[0] = world_rank - 1 < 0 ? world_size - 1 : world_rank - 1; srcs[1] = world_rank + 1 >= world_size ? 0 : world_rank + 1; dest_sz = 2; dests[0] = world_rank - 1 < 0 ? world_size - 1 : world_rank - 1; dests[1] = world_rank + 1 >= world_size ? 0 : world_rank + 1; ierr = MPI_Dist_graph_create_adjacent(MPI_COMM_WORLD, src_sz, srcs, MPI_UNWEIGHTED, dest_sz, dests, MPI_UNWEIGHTED, MPI_INFO_NULL, 1, &dgraph_comm); if (ierr != MPI_SUCCESS) { fprintf(stderr, "MPI_Dist_graph_create_adjacent() fails!\n"); MPI_Abort(MPI_COMM_WORLD, 1); return 1; } if (!validate_dgraph(dgraph_comm)) { fprintf(stderr, "MPI_Dist_graph_create_adjacent() does NOT create " "a bidirectional ring graph!\n"); MPI_Abort(MPI_COMM_WORLD, 1); return 1; } MPI_Comm_free(&dgraph_comm); MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/topo/graphmap1.c0000644000175000017500000000202212620254305017361 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitest.h" int main(int argc, char *argv[]) { int errs = 0; int newrank, merr, rank; int index[2], edges[2]; MTest_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); /* Graph map where there are no nodes for this process */ MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); /* Here is a singleton graph, containing only the root process */ index[0] = 0; edges[0] = 0; merr = MPI_Graph_map(MPI_COMM_WORLD, 1, index, edges, &newrank); if (merr) { errs++; printf("Graph map returned an error\n"); MTestPrintError(merr); } if (rank != 0 && newrank != MPI_UNDEFINED) { errs++; printf("Graph map with no local nodes did not return MPI_UNDEFINED\n"); } MTest_Finalize(errs); MPI_Finalize(); return 0; } mpi-testsuite-3.2+dfsg/cxx/0000755000175000017500000000000012621010232015150 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/cxx/init/0000755000175000017500000000000012621010232016113 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/cxx/init/initstatx.cxx0000644000175000017500000000204612620254305020702 0ustar mbanckmbanck/* -*- Mode: C++; c-basic-offset:4 ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #ifdef HAVE_IOSTREAM // Not all C++ compilers have iostream instead of iostream.h #include #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include "mpitestcxx.h" int main( int argc, char *argv[] ) { int errs = 0; bool flag; int provided, claimed; provided = MPI::Init_thread( MPI::THREAD_MULTIPLE ); flag = MPI::Is_thread_main(); if (!flag) { errs++; cout << "This thread call init_thread but Is_thread_main gave false\n"; } claimed = MPI::Query_thread(); if (claimed != provided) { errs++; cout << "Query thread gave thread level " << claimed << " but Init_thread gave " << provided << "\n"; } MTest_Finalize( errs ); MPI::Finalize(); return 0; } mpi-testsuite-3.2+dfsg/cxx/init/initstat2x.cxx0000644000175000017500000000312612620254305020764 0ustar mbanckmbanck/* -*- Mode: C++; c-basic-offset:4 ; -*- */ /* * * (C) 2010 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #ifdef HAVE_IOSTREAM // Not all C++ compilers have iostream instead of iostream.h #include #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include "mpitestcxx.h" /* Needed for strcmp */ #include int main( int argc, char *argv[] ) { int errs = 0; bool flag; int provided, claimed; // This test must be invoked with two arguments: myarg1 myarg2 provided = MPI::Init_thread( argc, argv, MPI::THREAD_MULTIPLE ); if (argc != 3) { errs++; cout << "Expected argc=3 but saw argc=" << argc << "\n"; } else { if (strcmp( argv[1], "myarg1" ) != 0) { errs++; cout << "Expected myarg1 for 1st argument but saw " << argv[1] << "\n"; } if (strcmp( argv[2], "myarg2" ) != 0) { errs++; cout << "Expected myarg2 for 1st argument but saw " << argv[2] << "\n"; } } // Confirm that MPI is properly initialized flag = MPI::Is_thread_main(); if (!flag) { errs++; cout << "This thread call init_thread but Is_thread_main gave false\n"; } claimed = MPI::Query_thread(); if (claimed != provided) { errs++; cout << "Query thread gave thread level " << claimed << " but Init_thread gave " << provided << "\n"; } MTest_Finalize( errs ); MPI::Finalize(); return 0; } mpi-testsuite-3.2+dfsg/cxx/init/testlist0000644000175000017500000000007112620254305017721 0ustar mbanckmbanckbaseenv 1 initstatx 1 initstat2x 1 arg=myarg1 arg=myarg2 mpi-testsuite-3.2+dfsg/cxx/init/Makefile.in0000644000175000017500000004766412621010232020201 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = baseenv$(EXEEXT) initstatx$(EXEEXT) \ initstat2x$(EXEEXT) subdir = cxx/init ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am_baseenv_OBJECTS = baseenv.$(OBJEXT) baseenv_OBJECTS = $(am_baseenv_OBJECTS) baseenv_LDADD = $(LDADD) baseenv_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o am_initstat2x_OBJECTS = initstat2x.$(OBJEXT) initstat2x_OBJECTS = $(am_initstat2x_OBJECTS) initstat2x_LDADD = $(LDADD) initstat2x_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o am_initstatx_OBJECTS = initstatx.$(OBJEXT) initstatx_OBJECTS = $(am_initstatx_OBJECTS) initstatx_LDADD = $(LDADD) initstatx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = SOURCES = $(baseenv_SOURCES) $(initstat2x_SOURCES) \ $(initstatx_SOURCES) DIST_SOURCES = $(baseenv_SOURCES) $(initstat2x_SOURCES) \ $(initstatx_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_cxx.mtest $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/cxx/util/mtest.o CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist baseenv_SOURCES = baseenv.cxx initstatx_SOURCES = initstatx.cxx initstat2x_SOURCES = initstat2x.cxx all: all-am .SUFFIXES: .SUFFIXES: .cxx .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_cxx.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign cxx/init/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign cxx/init/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_cxx.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) baseenv$(EXEEXT): $(baseenv_OBJECTS) $(baseenv_DEPENDENCIES) $(EXTRA_baseenv_DEPENDENCIES) @rm -f baseenv$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(baseenv_OBJECTS) $(baseenv_LDADD) $(LIBS) initstat2x$(EXEEXT): $(initstat2x_OBJECTS) $(initstat2x_DEPENDENCIES) $(EXTRA_initstat2x_DEPENDENCIES) @rm -f initstat2x$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(initstat2x_OBJECTS) $(initstat2x_LDADD) $(LIBS) initstatx$(EXEEXT): $(initstatx_OBJECTS) $(initstatx_DEPENDENCIES) $(EXTRA_initstatx_DEPENDENCIES) @rm -f initstatx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(initstatx_OBJECTS) $(initstatx_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/baseenv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/initstat2x.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/initstatx.Po@am__quote@ .cxx.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cxx.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/cxx/util/mtest.o: $(top_srcdir)/cxx/util/mtest.cxx (cd $(top_builddir)/cxx/util && $(MAKE) mtest.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/cxx/init/Makefile.am0000644000175000017500000000054512620254305020165 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_cxx.mtest EXTRA_DIST = testlist noinst_PROGRAMS = baseenv initstatx initstat2x baseenv_SOURCES = baseenv.cxx initstatx_SOURCES = initstatx.cxx initstat2x_SOURCES = initstat2x.cxx mpi-testsuite-3.2+dfsg/cxx/init/baseenv.cxx0000644000175000017500000000305012620254305020272 0ustar mbanckmbanck/* -*- Mode: C++; c-basic-offset:4 ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #ifdef HAVE_IOSTREAM // Not all C++ compilers have iostream instead of iostream.h #include #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif int main( int argc, char **argv ) { bool flag; int errs = 0; int ver, subver; int rank, size; if (MPI::Is_initialized()) { cout << "Is_initialized returned true before init\n"; errs ++; } MPI::Init(); rank = MPI::COMM_WORLD.Get_rank(); size = MPI::COMM_WORLD.Get_size(); if (!MPI::Is_initialized()) { cout << "Is_initialized returned false after init\n"; errs ++; } MPI::Get_version( ver, subver ); if (ver != MPI_VERSION || subver != MPI_SUBVERSION) { cout << "Inconsistent values for version and/or subversion\n"; errs++; } if (MPI::Is_finalized()) { cout << "Is_finalized returned true before finalize\n"; errs ++; } MPI::Finalize(); if (!MPI::Is_finalized()) { cout << "Is_finalized returned false after finalize\n"; errs ++; } // Ignore the other processes for this test, particularly // since we need to execute code after the Finalize if (rank == 0) { if (errs) { cout << " Found " << errs << " errors\n"; } else { cout << " No Errors\n"; } } return 0; } mpi-testsuite-3.2+dfsg/cxx/info/0000755000175000017500000000000012621010232016103 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/cxx/info/infovallenx.cxx0000644000175000017500000000350312620254305021167 0ustar mbanckmbanck/* -*- Mode: C++; c-basic-offset:4 ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #ifdef HAVE_IOSTREAM // Not all C++ compilers have iostream instead of iostream.h #include #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #ifdef HAVE_STRING_H #include #endif #include "mpitestcxx.h" #define NKEYS 3 int main( int argc, char *argv[] ) { int errs = 0; MPI::Info info; const char *keys[NKEYS] = { "file", "soft", "host" }; const char *values[NKEYS] = { "runfile.txt", "2:1000:4,3:1000:7", "myhost.myorg.org" }; char *value; int i, flag, vallen; MTest_Init( ); value = new char [MPI::MAX_INFO_VAL]; info = MPI::Info::Create(); /* Use only named keys incase the info implementation only supports the predefined keys (e.g., IBM) */ for (i=0; i&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = infodupx$(EXEEXT) infodelx$(EXEEXT) \ infovallenx$(EXEEXT) infoorderx$(EXEEXT) subdir = cxx/info ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am_infodelx_OBJECTS = infodelx.$(OBJEXT) infodelx_OBJECTS = $(am_infodelx_OBJECTS) infodelx_LDADD = $(LDADD) infodelx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o am_infodupx_OBJECTS = infodupx.$(OBJEXT) infodupx_OBJECTS = $(am_infodupx_OBJECTS) infodupx_LDADD = $(LDADD) infodupx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o am_infoorderx_OBJECTS = infoorderx.$(OBJEXT) infoorderx_OBJECTS = $(am_infoorderx_OBJECTS) infoorderx_LDADD = $(LDADD) infoorderx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o am_infovallenx_OBJECTS = infovallenx.$(OBJEXT) infovallenx_OBJECTS = $(am_infovallenx_OBJECTS) infovallenx_LDADD = $(LDADD) infovallenx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = SOURCES = $(infodelx_SOURCES) $(infodupx_SOURCES) \ $(infoorderx_SOURCES) $(infovallenx_SOURCES) DIST_SOURCES = $(infodelx_SOURCES) $(infodupx_SOURCES) \ $(infoorderx_SOURCES) $(infovallenx_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_cxx.mtest $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/cxx/util/mtest.o CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist infodupx_SOURCES = infodupx.cxx infodelx_SOURCES = infodelx.cxx infovallenx_SOURCES = infovallenx.cxx infoorderx_SOURCES = infoorderx.cxx all: all-am .SUFFIXES: .SUFFIXES: .cxx .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_cxx.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign cxx/info/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign cxx/info/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_cxx.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) infodelx$(EXEEXT): $(infodelx_OBJECTS) $(infodelx_DEPENDENCIES) $(EXTRA_infodelx_DEPENDENCIES) @rm -f infodelx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(infodelx_OBJECTS) $(infodelx_LDADD) $(LIBS) infodupx$(EXEEXT): $(infodupx_OBJECTS) $(infodupx_DEPENDENCIES) $(EXTRA_infodupx_DEPENDENCIES) @rm -f infodupx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(infodupx_OBJECTS) $(infodupx_LDADD) $(LIBS) infoorderx$(EXEEXT): $(infoorderx_OBJECTS) $(infoorderx_DEPENDENCIES) $(EXTRA_infoorderx_DEPENDENCIES) @rm -f infoorderx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(infoorderx_OBJECTS) $(infoorderx_LDADD) $(LIBS) infovallenx$(EXEEXT): $(infovallenx_OBJECTS) $(infovallenx_DEPENDENCIES) $(EXTRA_infovallenx_DEPENDENCIES) @rm -f infovallenx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(infovallenx_OBJECTS) $(infovallenx_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/infodelx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/infodupx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/infoorderx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/infovallenx.Po@am__quote@ .cxx.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cxx.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/cxx/util/mtest.o: $(top_srcdir)/cxx/util/mtest.cxx (cd $(top_builddir)/cxx/util && $(MAKE) mtest.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/cxx/info/infodupx.cxx0000644000175000017500000000511512620254305020477 0ustar mbanckmbanck/* -*- Mode: C++; c-basic-offset:4 ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #ifdef HAVE_IOSTREAM // Not all C++ compilers have iostream instead of iostream.h #include #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include "mpitestcxx.h" #ifdef HAVE_STRING_H #include #endif int main( int argc, char *argv[] ) { int errs = 0; MPI::Info info1, infodup; int nkeys, nkeysdup, i, vallen, flag, flagdup; char *key, *keydup; char *value, *valdup; MTest_Init( ); key = new char [MPI::MAX_INFO_KEY]; keydup = new char [MPI::MAX_INFO_KEY]; value = new char [MPI::MAX_INFO_VAL]; valdup = new char [MPI::MAX_INFO_VAL]; info1 = MPI::Info::Create( ); /* Use only named keys incase the info implementation only supports the predefined keys (e.g., IBM) */ info1.Set( "host", "myhost.myorg.org" ); info1.Set( "file", "runfile.txt" ); info1.Set( "soft", "2:1000:4,3:1000:7" ); infodup = info1.Dup(); nkeysdup = infodup.Get_nkeys(); nkeys = info1.Get_nkeys(); if (nkeys != nkeysdup) { errs++; cout << "Dup'ed info has a different number of keys; is " << nkeysdup << " should be " << nkeys << "\n"; } vallen = MPI::MAX_INFO_VAL; for (i=0; i #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include "mpitestcxx.h" #ifdef HAVE_STRING_H #include #endif #define NKEYS 3 int main( int argc, char *argv[] ) { int errs = 0; MPI::Info info; const char *keys1[NKEYS] = { "file", "soft", "host" }; const char *values1[NKEYS] = { "runfile.txt", "2:1000:4,3:1000:7", "myhost.myorg.org" }; char *value; int i, flag; MTest_Init(); value = new char [MPI::MAX_INFO_VAL]; /* 1,2,3 */ info = MPI::Info::Create(); /* Use only named keys incase the info implementation only supports the predefined keys (e.g., IBM) */ for (i=0; i=0; i--) { info.Set( keys1[i], values1[i] ); } /* Check that all values are present */ for (i=0; i #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include "mpitestcxx.h" #ifdef HAVE_STRING_H #include #endif #define NKEYS 3 int main( int argc, char *argv[] ) { int errs = 0; MPI::Info info; const char *keys[NKEYS] = { "file", "soft", "host" }; const char *values[NKEYS] = { "runfile.txt", "2:1000:4,3:1000:7", "myhost.myorg.org" }; char *value; int i, flag, nkeys; MTest_Init( ); value = new char [MPI::MAX_INFO_VAL]; info = MPI::Info::Create(); /* Use only named keys incase the info implementation only supports the predefined keys (e.g., IBM) */ for (i=0; i #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #ifdef HAVE_STRING_H #include #endif #include "mpitestcxx.h" int main( int argc, char *argv[] ) { int num_ints, num_adds, num_types, combiner, errs = 0; MPI::Init(); /* Check for the Fortran Datatypes */ #ifdef HAVE_FORTRAN_BINDING /* First, the optional types. We allow these to be DATATYPE_NULL */ if (MPI::REAL4 != MPI::DATATYPE_NULL) { MPI::REAL4.Get_envelope( num_ints, num_adds, num_types, combiner ); if (combiner != MPI::COMBINER_NAMED) { cout << "REAL4 not a NAMED type" << "\n"; errs++; } } if (MPI::REAL8 != MPI::DATATYPE_NULL) { MPI::REAL8.Get_envelope( num_ints, num_adds, num_types, combiner ); if (combiner != MPI::COMBINER_NAMED) { cout << "REAL8 not a NAMED type" << "\n"; errs++; } } if (MPI::REAL16 != MPI::DATATYPE_NULL) { MPI::REAL16.Get_envelope( num_ints, num_adds, num_types, combiner ); if (combiner != MPI::COMBINER_NAMED) { cout << "REAL16 not a NAMED type" << "\n"; errs++; } } if (MPI::COMPLEX8 != MPI::DATATYPE_NULL) { MPI::COMPLEX8.Get_envelope( num_ints, num_adds, num_types, combiner ); if (combiner != MPI::COMBINER_NAMED) { cout << "COMPLEX8 not a NAMED type" << "\n"; errs++; } } if (MPI::COMPLEX16 != MPI::DATATYPE_NULL) { MPI::COMPLEX16.Get_envelope( num_ints, num_adds, num_types, combiner ); if (combiner != MPI::COMBINER_NAMED) { cout << "COMPLEX16 not a NAMED type" << "\n"; errs++; } } if (MPI::COMPLEX32 != MPI::DATATYPE_NULL) { MPI::COMPLEX32.Get_envelope( num_ints, num_adds, num_types, combiner ); if (combiner != MPI::COMBINER_NAMED) { cout << "COMPLEX32 not a NAMED type" << "\n"; errs++; } } if (MPI::INTEGER1 != MPI::DATATYPE_NULL) { MPI::INTEGER1.Get_envelope( num_ints, num_adds, num_types, combiner ); if (combiner != MPI::COMBINER_NAMED) { cout << "INTEGER1 not a NAMED type" << "\n"; errs++; } } if (MPI::INTEGER2 != MPI::DATATYPE_NULL) { MPI::INTEGER2.Get_envelope( num_ints, num_adds, num_types, combiner ); if (combiner != MPI::COMBINER_NAMED) { cout << "INTEGER2 not a NAMED type" << "\n"; errs++; } } if (MPI::INTEGER4 != MPI::DATATYPE_NULL) { MPI::INTEGER4.Get_envelope( num_ints, num_adds, num_types, combiner ); if (combiner != MPI::COMBINER_NAMED) { cout << "INTEGER4 not a NAMED type" << "\n"; errs++; } } if (MPI::INTEGER8 != MPI::DATATYPE_NULL) { MPI::INTEGER8.Get_envelope( num_ints, num_adds, num_types, combiner ); if (combiner != MPI::COMBINER_NAMED) { cout << "INTEGER8 not a NAMED type" << "\n"; errs++; } } #ifdef HAVE_MPI_INTEGER16 if (MPI::INTEGER16 != MPI::DATATYPE_NULL) { MPI::INTEGER16.Get_envelope( num_ints, num_adds, num_types, combiner ); if (combiner != MPI::COMBINER_NAMED) { cout << "INTEGER16 not a NAMED type" << "\n"; errs++; } } #endif /* Here end the optional types */ MPI::INTEGER.Get_envelope( num_ints, num_adds, num_types, combiner ); if (combiner != MPI::COMBINER_NAMED) { cout << "INTEGER not a NAMED type" << "\n"; errs++; } MPI::REAL.Get_envelope( num_ints, num_adds, num_types, combiner ); if (combiner != MPI::COMBINER_NAMED) { cout << "REAL not a NAMED type" << "\n"; errs++; } MPI::DOUBLE_PRECISION.Get_envelope( num_ints, num_adds, num_types, combiner ); if (combiner != MPI::COMBINER_NAMED) { cout << "DOUBLE_PRECISION not a NAMED type" << "\n"; errs++; } MPI::F_COMPLEX.Get_envelope( num_ints, num_adds, num_types, combiner ); if (combiner != MPI::COMBINER_NAMED) { cout << "F_COMPLEX not a NAMED type" << "\n"; errs++; } MPI::F_DOUBLE_COMPLEX.Get_envelope( num_ints, num_adds, num_types, combiner ); if (combiner != MPI::COMBINER_NAMED) { cout << "F_DOUBLE_COMPLEX not a NAMED type" << "\n"; errs++; } MPI::LOGICAL.Get_envelope( num_ints, num_adds, num_types, combiner ); if (combiner != MPI::COMBINER_NAMED) { cout << "LOGICAL not a NAMED type" << "\n"; errs++; } MPI::CHARACTER.Get_envelope( num_ints, num_adds, num_types, combiner ); if (combiner != MPI::COMBINER_NAMED) { cout << "CHARACTER not a NAMED type" << "\n"; errs++; } MPI::TWOREAL.Get_envelope( num_ints, num_adds, num_types, combiner ); if (combiner != MPI::COMBINER_NAMED) { cout << "TWOREAL not a NAMED type" << "\n"; errs++; } MPI::TWODOUBLE_PRECISION.Get_envelope( num_ints, num_adds, num_types, combiner ); if (combiner != MPI::COMBINER_NAMED) { cout << "TWODOUBLE_PRECISION not a NAMED type" << "\n"; errs++; } MPI::TWOINTEGER.Get_envelope( num_ints, num_adds, num_types, combiner ); if (combiner != MPI::COMBINER_NAMED) { cout << "TWOINTEGER not a NAMED type" << "\n"; errs++; } #endif if (MPI::COMM_WORLD.Get_rank() == 0) { if (errs) { cout << "Found " << errs << " errors\n"; } else { cout << " No Errors\n"; } } MPI::Finalize(); return 0; } mpi-testsuite-3.2+dfsg/cxx/datatype/testlist0000644000175000017500000000006012620254305020567 0ustar mbanckmbanckpacksizex 1 typecntsx 1 typenamex 1 typemiscx 1 mpi-testsuite-3.2+dfsg/cxx/datatype/Makefile.in0000644000175000017500000005076012621010232021040 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = packsizex$(EXEEXT) typecntsx$(EXEEXT) \ typenamex$(EXEEXT) typemiscx$(EXEEXT) subdir = cxx/datatype ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am_packsizex_OBJECTS = packsizex.$(OBJEXT) packsizex_OBJECTS = $(am_packsizex_OBJECTS) packsizex_LDADD = $(LDADD) packsizex_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o am_typecntsx_OBJECTS = typecntsx.$(OBJEXT) typecntsx_OBJECTS = $(am_typecntsx_OBJECTS) typecntsx_LDADD = $(LDADD) typecntsx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o am_typemiscx_OBJECTS = typemiscx.$(OBJEXT) typemiscx_OBJECTS = $(am_typemiscx_OBJECTS) typemiscx_LDADD = $(LDADD) typemiscx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o am_typenamex_OBJECTS = typenamex.$(OBJEXT) typenamex_OBJECTS = $(am_typenamex_OBJECTS) typenamex_LDADD = $(LDADD) typenamex_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = SOURCES = $(packsizex_SOURCES) $(typecntsx_SOURCES) \ $(typemiscx_SOURCES) $(typenamex_SOURCES) DIST_SOURCES = $(packsizex_SOURCES) $(typecntsx_SOURCES) \ $(typemiscx_SOURCES) $(typenamex_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_cxx.mtest $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/cxx/util/mtest.o CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist packsizex_SOURCES = packsizex.cxx typecntsx_SOURCES = typecntsx.cxx typenamex_SOURCES = typenamex.cxx typemiscx_SOURCES = typemiscx.cxx all: all-am .SUFFIXES: .SUFFIXES: .cxx .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_cxx.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign cxx/datatype/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign cxx/datatype/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_cxx.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) packsizex$(EXEEXT): $(packsizex_OBJECTS) $(packsizex_DEPENDENCIES) $(EXTRA_packsizex_DEPENDENCIES) @rm -f packsizex$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(packsizex_OBJECTS) $(packsizex_LDADD) $(LIBS) typecntsx$(EXEEXT): $(typecntsx_OBJECTS) $(typecntsx_DEPENDENCIES) $(EXTRA_typecntsx_DEPENDENCIES) @rm -f typecntsx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(typecntsx_OBJECTS) $(typecntsx_LDADD) $(LIBS) typemiscx$(EXEEXT): $(typemiscx_OBJECTS) $(typemiscx_DEPENDENCIES) $(EXTRA_typemiscx_DEPENDENCIES) @rm -f typemiscx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(typemiscx_OBJECTS) $(typemiscx_LDADD) $(LIBS) typenamex$(EXEEXT): $(typenamex_OBJECTS) $(typenamex_DEPENDENCIES) $(EXTRA_typenamex_DEPENDENCIES) @rm -f typenamex$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(typenamex_OBJECTS) $(typenamex_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/packsizex.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/typecntsx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/typemiscx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/typenamex.Po@am__quote@ .cxx.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cxx.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/cxx/util/mtest.o: $(top_srcdir)/cxx/util/mtest.cxx (cd $(top_builddir)/cxx/util && $(MAKE) mtest.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/cxx/datatype/Makefile.am0000644000175000017500000000062412620254305021033 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_cxx.mtest EXTRA_DIST = testlist noinst_PROGRAMS = packsizex typecntsx typenamex typemiscx packsizex_SOURCES = packsizex.cxx typecntsx_SOURCES = typecntsx.cxx typenamex_SOURCES = typenamex.cxx typemiscx_SOURCES = typemiscx.cxx mpi-testsuite-3.2+dfsg/cxx/datatype/packsizex.cxx0000644000175000017500000000435512620254305021531 0ustar mbanckmbanck/* -*- Mode: C++; c-basic-offset:4 ; -*- */ /* * * (C) 2010 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #ifdef HAVE_IOSTREAM // Not all C++ compilers have iostream instead of iostream.h #include #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include "mpitestcxx.h" int main( int argc, char *argv[] ) { int errs = 0; MPI::Datatype type; MPI::Intracomm comm; MTestDatatype mstype, mrtype; char dtypename[MPI_MAX_OBJECT_NAME]; int size1, size2, tnlen; MTest_Init(); comm = MPI::COMM_WORLD; while (MTestGetDatatypes( &mstype, &mrtype, 1 )) { type = mstype.datatype; // Testing the pack size is tricky, since this is the // size that is stored when packed with type.Pack, and // is not easily defined. We look for consistency size1 = type.Pack_size( 1, comm ); size2 = type.Pack_size( 2, comm ); if (size1 <= 0 || size2 <= 0) { errs++; type.Get_name( dtypename, tnlen ); cout << "Pack size of datatype " << dtypename << " is not positive\n"; } if (size1 >= size2) { errs++; type.Get_name( dtypename, tnlen ); cout << "Pack size of 2 of " << dtypename << " is smaller or the same as the pack size of 1 instance\n"; } if (mrtype.datatype != mstype.datatype) { type = mrtype.datatype; // Testing the pack size is tricky, since this is the // size that is stored when packed with type.Pack, and // is not easily defined. We look for consistency size1 = type.Pack_size( 1, comm ); size2 = type.Pack_size( 2, comm ); if (size1 <= 0 || size2 <= 0) { errs++; type.Get_name( dtypename, tnlen ); cout << "Pack size of datatype " << dtypename << " is not positive\n"; } if (size1 >= size2) { errs++; type.Get_name( dtypename, tnlen ); cout << "Pack size of 2 of " << dtypename << " is smaller or the same as the pack size of 1 instance\n"; } } MTestFreeDatatype(&mrtype); MTestFreeDatatype(&mstype); } MTest_Finalize( errs ); MPI::Finalize(); return 0; } mpi-testsuite-3.2+dfsg/cxx/datatype/typecntsx.cxx0000644000175000017500000000534012620254305021564 0ustar mbanckmbanck/* -*- Mode: C++; c-basic-offset:4 ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #ifdef HAVE_IOSTREAM // Not all C++ compilers have iostream instead of iostream.h #include #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include "mpitestcxx.h" void Explore( MPI::Datatype, int, int & ); int main( int argc, char *argv[] ) { int errs = 0; MPI::Datatype ntype1, ntype2; MTest_Init(); Explore( MPI::INT, MPI::COMBINER_NAMED, errs ); Explore( MPI::BYTE, MPI::COMBINER_NAMED, errs ); ntype1 = MPI::DOUBLE.Create_vector( 10, 1, 30 ); ntype2 = ntype1.Dup(); Explore( ntype1, MPI::COMBINER_VECTOR, errs ); Explore( ntype2, MPI::COMBINER_DUP, errs ); ntype2.Free(); ntype1.Free(); MTest_Finalize( errs ); MPI::Finalize(); return 0; } #define MAX_NINTS 10 #define MAX_DTYPES 10 #define MAX_ASIZEV 10 void Explore( MPI::Datatype dtype, int mycomb, int &errs ) { int nints, nadds, ntype, combiner; int intv[MAX_NINTS]; MPI::Aint aintv[MAX_ASIZEV]; MPI::Datatype dtypesv[MAX_DTYPES]; dtype.Get_envelope( nints, nadds, ntype, combiner ); if (combiner != MPI::COMBINER_NAMED) { dtype.Get_contents( MAX_NINTS, MAX_ASIZEV, MAX_DTYPES, intv, aintv, dtypesv ); if (combiner != mycomb) { errs++; cout << "Expected combiner " << mycomb << " but got " << combiner << "\n"; } // List all combiner types to check that they are defined in mpif.h if (combiner == MPI::COMBINER_NAMED) { ; } else if (combiner == MPI::COMBINER_DUP) { dtypesv[0].Free(); } else if (combiner == MPI::COMBINER_CONTIGUOUS) { ; } else if (combiner == MPI::COMBINER_VECTOR) { ; } else if (combiner == MPI::COMBINER_HVECTOR_INTEGER) { ; } else if (combiner == MPI::COMBINER_HVECTOR) { ; } else if (combiner == MPI::COMBINER_INDEXED) { ; } else if (combiner == MPI::COMBINER_HINDEXED_INTEGER) { ; } else if (combiner == MPI::COMBINER_HINDEXED) { ; } else if (combiner == MPI::COMBINER_INDEXED_BLOCK) { ; } else if (combiner == MPI::COMBINER_STRUCT_INTEGER) { ; } else if (combiner == MPI::COMBINER_STRUCT) { ; } else if (combiner == MPI::COMBINER_SUBARRAY) { ; } else if (combiner == MPI::COMBINER_DARRAY) { ; } else if (combiner == MPI::COMBINER_F90_REAL) { ; } else if (combiner == MPI::COMBINER_F90_COMPLEX) { ; } else if (combiner == MPI::COMBINER_F90_INTEGER) { ; } else if (combiner == MPI::COMBINER_RESIZED) { ; } else { errs++; cout << "Unknown combiner " << combiner << "\n"; } } } mpi-testsuite-3.2+dfsg/cxx/datatype/typenamex.cxx0000644000175000017500000001163412620254305021540 0ustar mbanckmbanck/* -*- Mode: C++; c-basic-offset:4 ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #ifdef HAVE_IOSTREAM // Not all C++ compilers have iostream instead of iostream.h #include #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #ifdef HAVE_STRING_H #include #endif #include "mpitestcxx.h" /* Create an array with all of the MPI names in it */ typedef struct mpi_names_t { MPI::Datatype dtype; const char *name; } mpi_names_t; static mpi_names_t *mpi_names = 0; void InitMPINames (void); int main( int argc, char **argv ) { char *name; int namelen, i; int errs = 0; MPI::Init(); namelen = MPI::MAX_OBJECT_NAME; name = new char[MPI::MAX_OBJECT_NAME]; InitMPINames(); /* Sample some datatypes */ /* See 8.4, "Naming Objects" in MPI-2. The default name is the same as the datatype name */ MPI::DOUBLE.Get_name( name, namelen ); if (strncmp( name, "MPI_DOUBLE", MPI::MAX_OBJECT_NAME )) { errs++; cout << "Expected MPI_DOUBLE but got :" << name << ":\n"; } MPI::INT.Get_name( name, namelen ); if (strncmp( name, "MPI_INT", MPI::MAX_OBJECT_NAME )) { errs++; cout << "Expected MPI_INT but got :" << name << ":\n"; } /* Now we try them ALL */ for (i=0; mpi_names[i].name != 0; i++) { /* The size-specific types, as well as the language optional long long and long double, may be DATATYPE_NULL */ if (mpi_names[i].dtype == MPI::DATATYPE_NULL) continue; name[0] = 0; mpi_names[i].dtype.Get_name( name, namelen ); if (strncmp( name, mpi_names[i].name, namelen )) { errs++; cout << "Expected " << mpi_names[i].name << " but got " << name << "\n"; } } /* Try resetting the name */ MPI::INT.Set_name( "int" ); name[0] = 0; MPI::INT.Get_name( name, namelen ); if (strncmp( name, "int", MPI::MAX_OBJECT_NAME )) { errs++; cout << "Expected int but got :" << name << ":\n"; } if (errs) { cout << "Found " << errs << " errors\n"; } else { cout << " No Errors\n"; } delete [] name; delete [] mpi_names; MPI::Finalize(); return 0; } // Initialize the mpi_names array here. This make sure that we don't // initialize the values before Init or Init_thread are called. /* The MPI standard specifies that the names must be the MPI names, not the related language names (e.g., MPI_CHAR, not char). */ void InitMPINames (void) { int i; mpi_names_t lmpi_names[] = { { MPI::CHAR, "MPI_CHAR" }, { MPI::SIGNED_CHAR, "MPI_SIGNED_CHAR" }, { MPI::UNSIGNED_CHAR, "MPI_UNSIGNED_CHAR" }, { MPI::BYTE, "MPI_BYTE" }, { MPI::WCHAR, "MPI_WCHAR" }, { MPI::SHORT, "MPI_SHORT" }, { MPI::UNSIGNED_SHORT, "MPI_UNSIGNED_SHORT" }, { MPI::INT, "MPI_INT" }, { MPI::UNSIGNED, "MPI_UNSIGNED" }, { MPI::LONG, "MPI_LONG" }, { MPI::UNSIGNED_LONG, "MPI_UNSIGNED_LONG" }, { MPI::FLOAT, "MPI_FLOAT" }, { MPI::DOUBLE, "MPI_DOUBLE" }, { MPI::LONG_DOUBLE, "MPI_LONG_DOUBLE" }, /* { MPI::LONG_LONG_INT, "MPI_LONG_LONG_INT" }, */ { MPI::LONG_LONG, "MPI_LONG_LONG" }, { MPI::UNSIGNED_LONG_LONG, "MPI_UNSIGNED_LONG_LONG" }, { MPI::PACKED, "MPI_PACKED" }, { MPI::LB, "MPI_LB" }, { MPI::UB, "MPI_UB" }, { MPI::FLOAT_INT, "MPI_FLOAT_INT" }, { MPI::DOUBLE_INT, "MPI_DOUBLE_INT" }, { MPI::LONG_INT, "MPI_LONG_INT" }, { MPI::SHORT_INT, "MPI_SHORT_INT" }, { MPI::TWOINT, "MPI_2INT" }, { MPI::LONG_DOUBLE_INT, "MPI_LONG_DOUBLE_INT" }, /* Fortran */ #ifdef HAVE_FORTRAN_BINDING { MPI::F_COMPLEX, "MPI_COMPLEX" }, { MPI::F_DOUBLE_COMPLEX, "MPI_DOUBLE_COMPLEX" }, { MPI::LOGICAL, "MPI_LOGICAL" }, { MPI::REAL, "MPI_REAL" }, { MPI::DOUBLE_PRECISION, "MPI_DOUBLE_PRECISION" }, { MPI::INTEGER, "MPI_INTEGER" }, { MPI::TWOINTEGER, "MPI_2INTEGER" }, { MPI::TWOREAL, "MPI_2REAL" }, { MPI::TWODOUBLE_PRECISION, "MPI_2DOUBLE_PRECISION" }, { MPI::CHARACTER, "MPI_CHARACTER" }, /* Size-specific (Fortran) types */ { MPI::REAL4, "MPI_REAL4" }, { MPI::REAL8, "MPI_REAL8" }, { MPI::REAL16, "MPI_REAL16" }, { MPI::COMPLEX8, "MPI_COMPLEX8" }, { MPI::COMPLEX16, "MPI_COMPLEX16" }, { MPI::COMPLEX32, "MPI_COMPLEX32" }, { MPI::INTEGER1, "MPI_INTEGER1" }, { MPI::INTEGER2, "MPI_INTEGER2" }, { MPI::INTEGER4, "MPI_INTEGER4" }, { MPI::INTEGER8, "MPI_INTEGER8" }, { MPI::INTEGER16, "MPI_INTEGER16" }, #endif /* C++ only types */ { MPI::BOOL, "MPI::BOOL" }, { MPI::COMPLEX, "MPI::COMPLEX" }, { MPI::DOUBLE_COMPLEX, "MPI::DOUBLE_COMPLEX" }, { MPI::LONG_DOUBLE_COMPLEX, "MPI::LONG_DOUBLE_COMPLEX" }, { 0, (char *)0 }, /* Sentinal used to indicate the last element */ }; mpi_names = new mpi_names_t [sizeof(lmpi_names)/sizeof(mpi_names_t)]; i = 0; while (lmpi_names[i].name) { mpi_names[i] = lmpi_names[i]; i++; } mpi_names[i].name = 0; mpi_names[i].dtype = 0; } mpi-testsuite-3.2+dfsg/cxx/Makefile.in0000644000175000017500000005145312621010232017225 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = cxx ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = testlist CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/testlist.in \ $(top_srcdir)/Makefile_cxx.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/cxx/util/mtest.o CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist.in static_subdirs = util attr pt2pt init info comm coll datatype errhan topo SUBDIRS = $(static_subdirs) $(iodir) $(rmadir) $(spawndir) DIST_SUBDIRS = $(static_subdirs) io rma spawn all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_cxx.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign cxx/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign cxx/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_cxx.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): testlist: $(top_builddir)/config.status $(srcdir)/testlist.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic cscopelist-am ctags ctags-am \ distclean distclean-generic distclean-tags distdir dvi dvi-am \ html html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile $(top_builddir)/cxx/util/mtest.o: $(top_srcdir)/cxx/util/mtest.cxx (cd $(top_builddir)/cxx/util && $(MAKE) mtest.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/cxx/spawn/0000755000175000017500000000000012621010232016300 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/cxx/spawn/Makefile.in0000644000175000017500000005104712621010232020354 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = spawnargvx$(EXEEXT) spawnintrax$(EXEEXT) \ namepubx$(EXEEXT) selfconaccx$(EXEEXT) subdir = cxx/spawn ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = testlist CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) namepubx_SOURCES = namepubx.cxx namepubx_OBJECTS = namepubx.$(OBJEXT) namepubx_LDADD = $(LDADD) namepubx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o selfconaccx_SOURCES = selfconaccx.cxx selfconaccx_OBJECTS = selfconaccx.$(OBJEXT) selfconaccx_LDADD = $(LDADD) selfconaccx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o spawnargvx_SOURCES = spawnargvx.cxx spawnargvx_OBJECTS = spawnargvx.$(OBJEXT) spawnargvx_LDADD = $(LDADD) spawnargvx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o spawnintrax_SOURCES = spawnintrax.cxx spawnintrax_OBJECTS = spawnintrax.$(OBJEXT) spawnintrax_LDADD = $(LDADD) spawnintrax_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = SOURCES = namepubx.cxx selfconaccx.cxx spawnargvx.cxx spawnintrax.cxx DIST_SOURCES = namepubx.cxx selfconaccx.cxx spawnargvx.cxx \ spawnintrax.cxx am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/testlist.in \ $(top_srcdir)/Makefile_cxx.mtest $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/cxx/util/mtest.o CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.cxx" lines AM_DEFAULT_SOURCE_EXT = .cxx all: all-am .SUFFIXES: .SUFFIXES: .cxx .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_cxx.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign cxx/spawn/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign cxx/spawn/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_cxx.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): testlist: $(top_builddir)/config.status $(srcdir)/testlist.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) namepubx$(EXEEXT): $(namepubx_OBJECTS) $(namepubx_DEPENDENCIES) $(EXTRA_namepubx_DEPENDENCIES) @rm -f namepubx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(namepubx_OBJECTS) $(namepubx_LDADD) $(LIBS) selfconaccx$(EXEEXT): $(selfconaccx_OBJECTS) $(selfconaccx_DEPENDENCIES) $(EXTRA_selfconaccx_DEPENDENCIES) @rm -f selfconaccx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(selfconaccx_OBJECTS) $(selfconaccx_LDADD) $(LIBS) spawnargvx$(EXEEXT): $(spawnargvx_OBJECTS) $(spawnargvx_DEPENDENCIES) $(EXTRA_spawnargvx_DEPENDENCIES) @rm -f spawnargvx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(spawnargvx_OBJECTS) $(spawnargvx_LDADD) $(LIBS) spawnintrax$(EXEEXT): $(spawnintrax_OBJECTS) $(spawnintrax_DEPENDENCIES) $(EXTRA_spawnintrax_DEPENDENCIES) @rm -f spawnintrax$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(spawnintrax_OBJECTS) $(spawnintrax_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/namepubx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/selfconaccx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spawnargvx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spawnintrax.Po@am__quote@ .cxx.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cxx.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/cxx/util/mtest.o: $(top_srcdir)/cxx/util/mtest.cxx (cd $(top_builddir)/cxx/util && $(MAKE) mtest.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/cxx/spawn/namepubx.cxx0000644000175000017500000000623612620254305020664 0ustar mbanckmbanck/* -*- Mode: C++; c-basic-offset:4 ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #ifdef HAVE_IOSTREAM // Not all C++ compilers have iostream instead of iostream.h #include #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #ifdef HAVE_STRING_H #include #endif #include "mpitestcxx.h" int main( int argc, char *argv[] ) { int errs = 0; char *port_name, *port_name_out; char serv_name[256]; int merr, mclass; const char *errmsg; int msglen; int rank; MTest_Init( ); port_name = new char [MPI::MAX_PORT_NAME]; port_name_out = new char [MPI::MAX_PORT_NAME]; rank = MPI::COMM_WORLD.Get_rank(); /* Note that according to the MPI standard, port_name must have been created by MPI_Open_port. For current testing purposes, we'll use a fake name. This test should eventually use a valid name from Open_port */ strcpy( port_name, "otherhost:122" ); strcpy( serv_name, "MyTest" ); MPI::COMM_WORLD.Set_errhandler( MPI::ERRORS_THROW_EXCEPTIONS ); if (rank == 0) { try { MPI::Publish_name( serv_name, MPI::INFO_NULL, port_name ); } catch (MPI::Exception e) { errs++; errmsg = e.Get_error_string(); cout << "Error in Publish_name " << errmsg << "\n"; } MPI::COMM_WORLD.Barrier(); MPI::COMM_WORLD.Barrier(); try { MPI::Unpublish_name( serv_name, MPI::INFO_NULL, port_name ); } catch (MPI::Exception e) { errs++; errmsg = e.Get_error_string(); cout << "Error in Unpublish name " << errmsg << "\n"; } } else { MPI::COMM_WORLD.Barrier(); merr = MPI::SUCCESS; try { MPI::Lookup_name( serv_name, MPI::INFO_NULL, port_name_out ); } catch ( MPI::Exception e ) { errs++; merr = e.Get_error_code(); errmsg = e.Get_error_string(); cout << "Error in Lookup name " << errmsg << "\n"; } if (merr == MPI::SUCCESS) { if (strcmp( port_name, port_name_out )) { errs++; cout << "Lookup name returned the wrong value (" << port_name_out << ")\n"; } } MPI::COMM_WORLD.Barrier(); } MPI::COMM_WORLD.Barrier(); merr = MPI::SUCCESS; port_name_out[0] = 0; try { MPI::Lookup_name( serv_name, MPI::INFO_NULL, port_name_out ); } catch (MPI::Exception e) { merr = e.Get_error_code(); } if (!merr) { errs++; cout << "Lookup name returned name after it was unpublished\n"; cout << "The name returned was " << port_name_out << "\n"; } else { /* Must be class MPI::ERR_NAME */ mclass = MPI::Get_error_class( merr ); if (mclass != MPI::ERR_NAME) { char *lerrmsg; lerrmsg = new char [MPI::MAX_ERROR_STRING]; errs++; MPI::Get_error_string( merr, lerrmsg, msglen ); cout << "Lookup name returned the wrong error class (" << mclass << "), msg " << lerrmsg << "\n"; delete [] lerrmsg; } } delete [] port_name; delete [] port_name_out; MTest_Finalize( errs ); MPI::Finalize(); return 0; } mpi-testsuite-3.2+dfsg/cxx/spawn/Makefile.am0000644000175000017500000000055012620254305020346 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_cxx.mtest EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.cxx" lines AM_DEFAULT_SOURCE_EXT = .cxx noinst_PROGRAMS = spawnargvx spawnintrax namepubx selfconaccx mpi-testsuite-3.2+dfsg/cxx/spawn/testlist.in0000644000175000017500000000012212620254305020510 0ustar mbanckmbanck@namepub_tests@namepubx 2 spawnintrax 1 spawnintrax 2 spawnargvx 1 selfconaccx 2 mpi-testsuite-3.2+dfsg/cxx/spawn/spawnintrax.cxx0000644000175000017500000001244212620254305021417 0ustar mbanckmbanck/* -*- Mode: C++; c-basic-offset:4 ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #ifdef HAVE_IOSTREAM // Not all C++ compilers have iostream instead of iostream.h #include #ifdef HAVE_NAMESPACE_STD // Those that do need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include "mpitestcxx.h" static char MTEST_Descrip[] = "A simple test of Comm_spawn, followed by intercomm merge"; int main( int argc, char *argv[] ) { int errs = 0, err; int rank, size, rsize, i; int np = 2; int errcodes[2]; MPI::Intercomm parentcomm, intercomm; MPI::Intracomm intracomm, intracomm2, intracomm3; bool isChild = false; MPI::Status status; MTest_Init( ); parentcomm = MPI::Comm::Get_parent(); if (parentcomm == MPI::COMM_NULL) { /* Create 2 more processes */ intercomm = MPI::COMM_WORLD.Spawn( "./spawnintrax", MPI::ARGV_NULL, np, MPI::INFO_NULL, 0, errcodes ); } else intercomm = parentcomm; /* We now have a valid intercomm */ rsize = intercomm.Get_remote_size( ); size = intercomm.Get_size(); rank = intercomm.Get_rank(); if (parentcomm == MPI::COMM_NULL) { /* Master */ if (rsize != np) { errs++; cout << "Did not create " << np << " processes (got " << rsize << ")\n"; } if (rank == 0) { for (i=0; i #ifdef HAVE_NAMESPACE_STD // Those that do need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include "mpitestcxx.h" #ifdef HAVE_STRING_H #include #endif static char MTEST_Descrip[] = "A simple test of Comm_spawn, with complex arguments"; int main( int argc, char *argv[] ) { int errs = 0, err; int rank, size, rsize, i; int np = 2; int errcodes[2]; MPI::Intercomm parentcomm, intercomm; MPI::Status status; const char * inargv[] = { "a", "b=c", "d e", "-pf", " Ss", 0 }; const char * outargv[] = { "a", "b=c", "d e", "-pf", " Ss", 0 }; MTest_Init( ); parentcomm = MPI::Comm::Get_parent(); if (parentcomm == MPI::COMM_NULL) { /* Create 2 more processes */ /* ./ is unix specific . The more generic approach would be to specify "spawnargv" as the executable and pass an info with ("path", ".") */ intercomm = MPI::COMM_WORLD.Spawn( "./spawnargvx", inargv, np, MPI::INFO_NULL, 0, errcodes ); } else intercomm = parentcomm; /* We now have a valid intercomm */ rsize = intercomm.Get_remote_size(); size = intercomm.Get_size(); rank = intercomm.Get_rank(); if (parentcomm == MPI::COMM_NULL) { /* Master */ if (rsize != np) { errs++; cout << "Did not create " << np << " processes (got " << rsize << ")\n"; } for (i=0; i #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include "mpitestcxx.h" int main( int argc, char *argv[] ) { int error; int rank, size; char port[MPI_MAX_PORT_NAME]; MPI::Status status; MPI::Intercomm comm; MPI::Init(argc, argv); size = MPI::COMM_WORLD.Get_size(); rank = MPI::COMM_WORLD.Get_rank(); if (size < 2) { cout << "Two processes needed.\n"; MPI::Finalize(); return 0; } if (rank == 0) { MPI::Open_port(MPI::INFO_NULL, port); MPI::COMM_WORLD.Send(port, MPI::MAX_PORT_NAME, MPI::CHAR, 1, 0 ); comm = MPI::COMM_SELF.Accept(port, MPI::INFO_NULL, 0 ); MPI::Close_port(port); comm.Disconnect(); } else if (rank == 1) { MPI::COMM_WORLD.Recv(port, MPI::MAX_PORT_NAME, MPI::CHAR, 0, 0 ); comm = MPI::COMM_SELF.Connect(port, MPI::INFO_NULL, 0 ); comm.Disconnect(); } MPI::COMM_WORLD.Barrier(); if (rank == 0) { cout << " No Errors\n"; } MPI::Finalize(); return 0; } mpi-testsuite-3.2+dfsg/cxx/coll/0000755000175000017500000000000012621010232016101 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/cxx/coll/uallredx.cxx0000644000175000017500000001251612620254305020464 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #ifdef HAVE_IOSTREAM // Not all C++ compilers have iostream instead of iostream.h #include #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include "mpitestcxx.h" #include static char MTEST_Descrip[] = "Test MPI_Allreduce with non-commutative user-defined operations"; /* We make the error count global so that we can easily control the output of error information (in particular, limiting it after the first 10 errors */ int errs = 0; /* This implements a simple matrix-matrix multiply. This is an associative but not commutative operation. The matrix size is set in matSize; the number of matrices is the count argument. The matrix is stored in C order, so that c(i,j) is cin[j+i*matSize] */ #define MAXCOL 256 static int matSize = 0; /* Must be < MAXCOL */ static int max_offset = 0; void uop( const void *cinPtr, void *coutPtr, int count, const MPI::Datatype &dtype ) { const int *cin = (const int *)cinPtr; int *cout = (int *)coutPtr; int i, j, k, nmat; int tempcol[MAXCOL]; int offset1, offset2; int matsize2 = matSize*matSize; for (nmat = 0; nmat < count; nmat++) { for (j=0; j #include "mpitestconf.h" #include "mpitestcxx.h" static char MTEST_Descrip[] = "Simple intercomm gather test"; int main( int argc, char *argv[] ) { int errs = 0; int *buf = 0; int leftGroup, i, count, rank; MPI::Intercomm comm; MPI::Datatype datatype; MTest_Init( ); datatype = MPI::INT; while (MTestGetIntercomm( comm, leftGroup, 4 )) { if (comm == MPI::COMM_NULL) continue; for (count = 1; count < 65000; count = 2 * count) { /* Get an intercommunicator */ if (leftGroup) { int rsize; rank = comm.Get_rank(); rsize = comm.Get_remote_size(); buf = new int [ count * rsize ]; for (i=0; i #include "mpitestconf.h" #include "mpitestcxx.h" static char MTEST_Descrip[] = "Simple intercomm reduce test"; int main( int argc, char *argv[] ) { int errs = 0; int *sendbuf = 0, *recvbuf=0; int leftGroup, i, count, rank; MPI::Intercomm comm; MPI::Datatype datatype; MTest_Init(); datatype = MPI::INT; while (MTestGetIntercomm( comm, leftGroup, 4 )) { if (comm == MPI::COMM_NULL) continue; for (count = 1; count < 65000; count = 2 * count) { sendbuf = new int [count]; recvbuf = new int [count]; /* Get an intercommunicator */ for (i=0; i #include "mpitestconf.h" #include "mpitestcxx.h" static char MTEST_Descrip[] = "Simple intercomm allgatherv test"; int main( int argc, char *argv[] ) { int errs = 0; int *rbuf = 0, *sbuf = 0; int *recvcounts, *recvdispls; int leftGroup, i, count, rank, rsize; MPI::Intercomm comm; MPI::Datatype datatype; MTest_Init( ); datatype = MPI::INT; while (MTestGetIntercomm( comm, leftGroup, 4 )) { if (comm == MPI::COMM_NULL) continue; for (count = 1; count < 65000; count = 2 * count) { /* Get an intercommunicator */ /* The left group will send rank to the right group; The right group will send -rank to the left group */ rank = comm.Get_rank(); rsize = comm.Get_remote_size(); rbuf = new int [ count * rsize ]; sbuf = new int [ count ]; recvcounts = new int [ rsize ]; recvdispls = new int [ rsize ]; for (i=0; i #include "mpitestconf.h" #include "mpitestcxx.h" static char MTEST_Descrip[] = "Simple intercomm broadcast test"; int main( int argc, char *argv[] ) { int errs = 0; int *buf = 0; int leftGroup, i, count, rank; MPI::Intercomm comm; MPI::Datatype datatype; MTest_Init(); datatype = MPI::INT; while (MTestGetIntercomm( comm, leftGroup, 4 )) { if (comm == MPI::COMM_NULL) continue; for (count = 1; count < 65000; count = 2 * count) { buf = new int [count]; /* Get an intercommunicator */ if (leftGroup) { rank = comm.Get_rank(); if (rank == 0) { for (i=0; i #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include "mpitestcxx.h" static char MTEST_Descrip[] = "Simple intercomm alltoall test"; int main( int argc, char *argv[] ) { int errs = 0; int *sendbuf = 0, *recvbuf = 0; int leftGroup, i, j, idx, count, rank, rsize; MPI::Intercomm comm; MPI::Datatype datatype; MTest_Init( ); datatype = MPI::INT; while (MTestGetIntercomm( comm, leftGroup, 4 )) { if (comm == MPI::COMM_NULL) continue; for (count = 1; count < 66000; count = 2 * count) { /* Get an intercommunicator */ rsize = comm.Get_remote_size(); rank = comm.Get_rank(); sendbuf = new int [ rsize * count ]; recvbuf = new int [ rsize * count ]; for (i=0; i #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include "mpitestcxx.h" int main( int argc, char **argv ) { MPI::Intracomm comm = MPI::COMM_WORLD; int errs = 0; int size, i, count, root, rank; MTest_Init( ); size = comm.Get_size(); rank = comm.Get_rank(); for (count = 1; count < 66000; count = count * 2) { bool *vin, *vout; vin = new bool[count]; vout = new bool[count]; for (root = 0; root < size; root++) { for (i=0; i&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = arcomplex$(EXEEXT) uallredx$(EXEEXT) \ uallreduce$(EXEEXT) ureduce$(EXEEXT) ureducelocal$(EXEEXT) \ uscan$(EXEEXT) uexscan$(EXEEXT) icbcastx$(EXEEXT) \ icbarrierx$(EXEEXT) icgatherx$(EXEEXT) icgathervx$(EXEEXT) \ icscatterx$(EXEEXT) icscattervx$(EXEEXT) icallgatherx$(EXEEXT) \ icallgathervx$(EXEEXT) icallreducex$(EXEEXT) \ icreducex$(EXEEXT) icalltoallx$(EXEEXT) alltoallw2x$(EXEEXT) \ reduceboolx$(EXEEXT) redscatblk$(EXEEXT) subdir = cxx/coll ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am_alltoallw2x_OBJECTS = alltoallw2x.$(OBJEXT) alltoallw2x_OBJECTS = $(am_alltoallw2x_OBJECTS) alltoallw2x_LDADD = $(LDADD) alltoallw2x_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o am_arcomplex_OBJECTS = arcomplex.$(OBJEXT) arcomplex_OBJECTS = $(am_arcomplex_OBJECTS) arcomplex_LDADD = $(LDADD) arcomplex_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o am_icallgathervx_OBJECTS = icallgathervx.$(OBJEXT) icallgathervx_OBJECTS = $(am_icallgathervx_OBJECTS) icallgathervx_LDADD = $(LDADD) icallgathervx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o am_icallgatherx_OBJECTS = icallgatherx.$(OBJEXT) icallgatherx_OBJECTS = $(am_icallgatherx_OBJECTS) icallgatherx_LDADD = $(LDADD) icallgatherx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o am_icallreducex_OBJECTS = icallreducex.$(OBJEXT) icallreducex_OBJECTS = $(am_icallreducex_OBJECTS) icallreducex_LDADD = $(LDADD) icallreducex_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o am_icalltoallx_OBJECTS = icalltoallx.$(OBJEXT) icalltoallx_OBJECTS = $(am_icalltoallx_OBJECTS) icalltoallx_LDADD = $(LDADD) icalltoallx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o am_icbarrierx_OBJECTS = icbarrierx.$(OBJEXT) icbarrierx_OBJECTS = $(am_icbarrierx_OBJECTS) icbarrierx_LDADD = $(LDADD) icbarrierx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o am_icbcastx_OBJECTS = icbcastx.$(OBJEXT) icbcastx_OBJECTS = $(am_icbcastx_OBJECTS) icbcastx_LDADD = $(LDADD) icbcastx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o am_icgathervx_OBJECTS = icgathervx.$(OBJEXT) icgathervx_OBJECTS = $(am_icgathervx_OBJECTS) icgathervx_LDADD = $(LDADD) icgathervx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o am_icgatherx_OBJECTS = icgatherx.$(OBJEXT) icgatherx_OBJECTS = $(am_icgatherx_OBJECTS) icgatherx_LDADD = $(LDADD) icgatherx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o am_icreducex_OBJECTS = icreducex.$(OBJEXT) icreducex_OBJECTS = $(am_icreducex_OBJECTS) icreducex_LDADD = $(LDADD) icreducex_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o am_icscattervx_OBJECTS = icscattervx.$(OBJEXT) icscattervx_OBJECTS = $(am_icscattervx_OBJECTS) icscattervx_LDADD = $(LDADD) icscattervx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o am_icscatterx_OBJECTS = icscatterx.$(OBJEXT) icscatterx_OBJECTS = $(am_icscatterx_OBJECTS) icscatterx_LDADD = $(LDADD) icscatterx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o am_redscatblk_OBJECTS = redscatblk.$(OBJEXT) redscatblk_OBJECTS = $(am_redscatblk_OBJECTS) redscatblk_LDADD = $(LDADD) redscatblk_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o am_reduceboolx_OBJECTS = reduceboolx.$(OBJEXT) reduceboolx_OBJECTS = $(am_reduceboolx_OBJECTS) reduceboolx_LDADD = $(LDADD) reduceboolx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o am_uallreduce_OBJECTS = uallreduce.$(OBJEXT) uallreduce_OBJECTS = $(am_uallreduce_OBJECTS) uallreduce_LDADD = $(LDADD) uallreduce_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o am_uallredx_OBJECTS = uallredx.$(OBJEXT) uallredx_OBJECTS = $(am_uallredx_OBJECTS) uallredx_LDADD = $(LDADD) uallredx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o am_uexscan_OBJECTS = uexscan.$(OBJEXT) uexscan_OBJECTS = $(am_uexscan_OBJECTS) uexscan_LDADD = $(LDADD) uexscan_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o am_ureduce_OBJECTS = ureduce.$(OBJEXT) ureduce_OBJECTS = $(am_ureduce_OBJECTS) ureduce_LDADD = $(LDADD) ureduce_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o am_ureducelocal_OBJECTS = ureducelocal.$(OBJEXT) ureducelocal_OBJECTS = $(am_ureducelocal_OBJECTS) ureducelocal_LDADD = $(LDADD) ureducelocal_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o am_uscan_OBJECTS = uscan.$(OBJEXT) uscan_OBJECTS = $(am_uscan_OBJECTS) uscan_LDADD = $(LDADD) uscan_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = SOURCES = $(alltoallw2x_SOURCES) $(arcomplex_SOURCES) \ $(icallgathervx_SOURCES) $(icallgatherx_SOURCES) \ $(icallreducex_SOURCES) $(icalltoallx_SOURCES) \ $(icbarrierx_SOURCES) $(icbcastx_SOURCES) \ $(icgathervx_SOURCES) $(icgatherx_SOURCES) \ $(icreducex_SOURCES) $(icscattervx_SOURCES) \ $(icscatterx_SOURCES) $(redscatblk_SOURCES) \ $(reduceboolx_SOURCES) $(uallreduce_SOURCES) \ $(uallredx_SOURCES) $(uexscan_SOURCES) $(ureduce_SOURCES) \ $(ureducelocal_SOURCES) $(uscan_SOURCES) DIST_SOURCES = $(alltoallw2x_SOURCES) $(arcomplex_SOURCES) \ $(icallgathervx_SOURCES) $(icallgatherx_SOURCES) \ $(icallreducex_SOURCES) $(icalltoallx_SOURCES) \ $(icbarrierx_SOURCES) $(icbcastx_SOURCES) \ $(icgathervx_SOURCES) $(icgatherx_SOURCES) \ $(icreducex_SOURCES) $(icscattervx_SOURCES) \ $(icscatterx_SOURCES) $(redscatblk_SOURCES) \ $(reduceboolx_SOURCES) $(uallreduce_SOURCES) \ $(uallredx_SOURCES) $(uexscan_SOURCES) $(ureduce_SOURCES) \ $(ureducelocal_SOURCES) $(uscan_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_cxx.mtest $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/cxx/util/mtest.o CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist arcomplex_SOURCES = arcomplex.cxx uallredx_SOURCES = uallredx.cxx uallreduce_SOURCES = uallreduce.cxx ureduce_SOURCES = ureduce.cxx ureducelocal_SOURCES = ureducelocal.cxx uscan_SOURCES = uscan.cxx uexscan_SOURCES = uexscan.cxx icbcastx_SOURCES = icbcastx.cxx icbarrierx_SOURCES = icbarrierx.cxx icgatherx_SOURCES = icgatherx.cxx icgathervx_SOURCES = icgathervx.cxx icscatterx_SOURCES = icscatterx.cxx icscattervx_SOURCES = icscattervx.cxx icallgatherx_SOURCES = icallgatherx.cxx icallgathervx_SOURCES = icallgathervx.cxx icallreducex_SOURCES = icallreducex.cxx icreducex_SOURCES = icreducex.cxx icalltoallx_SOURCES = icalltoallx.cxx alltoallw2x_SOURCES = alltoallw2x.cxx reduceboolx_SOURCES = reduceboolx.cxx redscatblk_SOURCES = redscatblk.cxx all: all-am .SUFFIXES: .SUFFIXES: .cxx .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_cxx.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign cxx/coll/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign cxx/coll/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_cxx.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) alltoallw2x$(EXEEXT): $(alltoallw2x_OBJECTS) $(alltoallw2x_DEPENDENCIES) $(EXTRA_alltoallw2x_DEPENDENCIES) @rm -f alltoallw2x$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(alltoallw2x_OBJECTS) $(alltoallw2x_LDADD) $(LIBS) arcomplex$(EXEEXT): $(arcomplex_OBJECTS) $(arcomplex_DEPENDENCIES) $(EXTRA_arcomplex_DEPENDENCIES) @rm -f arcomplex$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(arcomplex_OBJECTS) $(arcomplex_LDADD) $(LIBS) icallgathervx$(EXEEXT): $(icallgathervx_OBJECTS) $(icallgathervx_DEPENDENCIES) $(EXTRA_icallgathervx_DEPENDENCIES) @rm -f icallgathervx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(icallgathervx_OBJECTS) $(icallgathervx_LDADD) $(LIBS) icallgatherx$(EXEEXT): $(icallgatherx_OBJECTS) $(icallgatherx_DEPENDENCIES) $(EXTRA_icallgatherx_DEPENDENCIES) @rm -f icallgatherx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(icallgatherx_OBJECTS) $(icallgatherx_LDADD) $(LIBS) icallreducex$(EXEEXT): $(icallreducex_OBJECTS) $(icallreducex_DEPENDENCIES) $(EXTRA_icallreducex_DEPENDENCIES) @rm -f icallreducex$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(icallreducex_OBJECTS) $(icallreducex_LDADD) $(LIBS) icalltoallx$(EXEEXT): $(icalltoallx_OBJECTS) $(icalltoallx_DEPENDENCIES) $(EXTRA_icalltoallx_DEPENDENCIES) @rm -f icalltoallx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(icalltoallx_OBJECTS) $(icalltoallx_LDADD) $(LIBS) icbarrierx$(EXEEXT): $(icbarrierx_OBJECTS) $(icbarrierx_DEPENDENCIES) $(EXTRA_icbarrierx_DEPENDENCIES) @rm -f icbarrierx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(icbarrierx_OBJECTS) $(icbarrierx_LDADD) $(LIBS) icbcastx$(EXEEXT): $(icbcastx_OBJECTS) $(icbcastx_DEPENDENCIES) $(EXTRA_icbcastx_DEPENDENCIES) @rm -f icbcastx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(icbcastx_OBJECTS) $(icbcastx_LDADD) $(LIBS) icgathervx$(EXEEXT): $(icgathervx_OBJECTS) $(icgathervx_DEPENDENCIES) $(EXTRA_icgathervx_DEPENDENCIES) @rm -f icgathervx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(icgathervx_OBJECTS) $(icgathervx_LDADD) $(LIBS) icgatherx$(EXEEXT): $(icgatherx_OBJECTS) $(icgatherx_DEPENDENCIES) $(EXTRA_icgatherx_DEPENDENCIES) @rm -f icgatherx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(icgatherx_OBJECTS) $(icgatherx_LDADD) $(LIBS) icreducex$(EXEEXT): $(icreducex_OBJECTS) $(icreducex_DEPENDENCIES) $(EXTRA_icreducex_DEPENDENCIES) @rm -f icreducex$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(icreducex_OBJECTS) $(icreducex_LDADD) $(LIBS) icscattervx$(EXEEXT): $(icscattervx_OBJECTS) $(icscattervx_DEPENDENCIES) $(EXTRA_icscattervx_DEPENDENCIES) @rm -f icscattervx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(icscattervx_OBJECTS) $(icscattervx_LDADD) $(LIBS) icscatterx$(EXEEXT): $(icscatterx_OBJECTS) $(icscatterx_DEPENDENCIES) $(EXTRA_icscatterx_DEPENDENCIES) @rm -f icscatterx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(icscatterx_OBJECTS) $(icscatterx_LDADD) $(LIBS) redscatblk$(EXEEXT): $(redscatblk_OBJECTS) $(redscatblk_DEPENDENCIES) $(EXTRA_redscatblk_DEPENDENCIES) @rm -f redscatblk$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(redscatblk_OBJECTS) $(redscatblk_LDADD) $(LIBS) reduceboolx$(EXEEXT): $(reduceboolx_OBJECTS) $(reduceboolx_DEPENDENCIES) $(EXTRA_reduceboolx_DEPENDENCIES) @rm -f reduceboolx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(reduceboolx_OBJECTS) $(reduceboolx_LDADD) $(LIBS) uallreduce$(EXEEXT): $(uallreduce_OBJECTS) $(uallreduce_DEPENDENCIES) $(EXTRA_uallreduce_DEPENDENCIES) @rm -f uallreduce$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(uallreduce_OBJECTS) $(uallreduce_LDADD) $(LIBS) uallredx$(EXEEXT): $(uallredx_OBJECTS) $(uallredx_DEPENDENCIES) $(EXTRA_uallredx_DEPENDENCIES) @rm -f uallredx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(uallredx_OBJECTS) $(uallredx_LDADD) $(LIBS) uexscan$(EXEEXT): $(uexscan_OBJECTS) $(uexscan_DEPENDENCIES) $(EXTRA_uexscan_DEPENDENCIES) @rm -f uexscan$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(uexscan_OBJECTS) $(uexscan_LDADD) $(LIBS) ureduce$(EXEEXT): $(ureduce_OBJECTS) $(ureduce_DEPENDENCIES) $(EXTRA_ureduce_DEPENDENCIES) @rm -f ureduce$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(ureduce_OBJECTS) $(ureduce_LDADD) $(LIBS) ureducelocal$(EXEEXT): $(ureducelocal_OBJECTS) $(ureducelocal_DEPENDENCIES) $(EXTRA_ureducelocal_DEPENDENCIES) @rm -f ureducelocal$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(ureducelocal_OBJECTS) $(ureducelocal_LDADD) $(LIBS) uscan$(EXEEXT): $(uscan_OBJECTS) $(uscan_DEPENDENCIES) $(EXTRA_uscan_DEPENDENCIES) @rm -f uscan$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(uscan_OBJECTS) $(uscan_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alltoallw2x.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arcomplex.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icallgathervx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icallgatherx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icallreducex.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icalltoallx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icbarrierx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icbcastx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icgathervx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icgatherx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icreducex.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icscattervx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icscatterx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/redscatblk.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reduceboolx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uallreduce.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uallredx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uexscan.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ureduce.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ureducelocal.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uscan.Po@am__quote@ .cxx.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cxx.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/cxx/util/mtest.o: $(top_srcdir)/cxx/util/mtest.cxx (cd $(top_builddir)/cxx/util && $(MAKE) mtest.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/cxx/coll/uallreduce.cxx0000644000175000017500000000273612620254305020774 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #ifdef HAVE_IOSTREAM // Not all C++ compilers have iostream instead of iostream.h #include #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include "mpitestcxx.h" void uop( const void *invec, void *inoutvec, int count, const MPI::Datatype &datatype ) { int i; int *cin = (int*)invec, *cout = (int*)inoutvec; for (i=0; i #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include #include "mpitestcxx.h" int main( int argc, char **argv ) { MPI::Intracomm comm = MPI::COMM_WORLD; int errs = 0; int size, rank; long sum; complex c[2], c_out[2]; complex cd[2], cd_out[2]; #ifdef HAVE_LONG_DOUBLE complex cld[2], cld_out[2]; #endif MTest_Init( ); size = comm.Get_size(); rank = comm.Get_rank(); c[0] = ((float)rank)*complex(1,2); c[1] = ((float)rank)*complex(-1,4); cd[0] = ((double)rank)*complex(1,2); cd[1] = ((double)rank)*complex(-1,4); #ifdef HAVE_LONG_DOUBLE cld[0] = ((long double)rank)*complex(1,2); cld[1] = ((long double)rank)*complex(-1,4); #endif // Sums are easy - real and imaginary parts separate // result should be sum(0:size-1) *{ complex(1,2), complex(-1,4) } // The sum is (size*(size-1))/2 comm.Allreduce( c, c_out, 2, MPI::COMPLEX, MPI::SUM ); sum = (size * (size-1) ) / 2; if (c_out[0] != ((float)sum) * complex(1,2)) { errs++; cout << "c_out[0] was " << c_out[0] << " expected " << ((float)sum) * complex(1,2); } if (c_out[1] != ((float)sum) * complex(-1,4)) { errs++; cout << "c_out[1] was " << c_out[1] << " expected " << ((float)sum) * complex(-1,4); } comm.Allreduce( cd, cd_out, 2, MPI::DOUBLE_COMPLEX, MPI::SUM ); if (cd_out[0] != ((double)sum) * complex(1,2)) { errs++; cout << "cd_out[0] was " << cd_out[0] << " expected " << ((double)sum) * complex(1,2); } if (cd_out[1] != ((double)sum) * complex(-1,4)) { errs++; cout << "cd_out[1] was " << cd_out[1] << " expected " << ((double)sum) * complex(-1,4); } #ifdef HAVE_LONG_DOUBLE comm.Allreduce( cld, cld_out, 2, MPI::LONG_DOUBLE_COMPLEX, MPI::SUM ); if (cld_out[0] != ((long double)sum) * complex(1,2)) { errs++; cout << "cld_out[0] was " << cld_out[0] << " expected " << ((long double)sum) * complex(1,2); } if (cld_out[1] != ((long double)sum) * complex(-1,4)) { errs++; cout << "cld_out[1] was " << cld_out[1] << " expected " << ((long double)sum) * complex(-1,4); } #endif MTest_Finalize( errs ); MPI::Finalize(); return 0; } mpi-testsuite-3.2+dfsg/cxx/coll/redscatblk.cxx0000644000175000017500000000405712620254305020763 0ustar mbanckmbanck/* -*- Mode: C++; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2014 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* * Test of reduce scatter with large data (needed in MPICH to trigger the * long-data algorithm) * * Each processor contributes its rank + the index to the reduction, * then receives the ith sum * * Can be called with any number of processors. */ #include "mpi.h" #include #include int main(int argc, char **argv) { int err = 0; int *sendbuf, *recvbuf; int size, rank, i, j, idx, mycount, sumval; MPI::Init(); size = MPI::COMM_WORLD.Get_size(); rank = MPI::COMM_WORLD.Get_rank(); mycount = (1024 * 1024) / size; sendbuf = new int[mycount * size]; idx = 0; for (i = 0; i < size; i++) { for (j = 0; j < mycount; j++) { sendbuf[idx++] = rank + i; } } recvbuf = new int[mycount]; MPI::COMM_WORLD.Reduce_scatter_block(sendbuf, recvbuf, mycount, MPI::INT, MPI::SUM); sumval = size * rank + ((size - 1) * size) / 2; /* recvbuf should be size * (rank + i) */ for (i = 0; i < mycount; i++) { if (recvbuf[i] != sumval) { err++; fprintf(stdout, "Did not get expected value for reduce scatter\n"); fprintf(stdout, "[%d] Got %d expected %d\n", rank, recvbuf[i], sumval); } } MPI::COMM_WORLD.Reduce_scatter_block(MPI_IN_PLACE, sendbuf, mycount, MPI::INT, MPI::SUM); sumval = size * rank + ((size - 1) * size) / 2; /* recv'ed values for my process should be size * (rank + i) */ for (i = 0; i < mycount; i++) { if (sendbuf[rank * mycount + i] != sumval) { err++; fprintf(stdout, "Did not get expected value for reduce scatter (in place)\n"); fprintf(stdout, "[%d] Got %d expected %d\n", rank, sendbuf[rank * mycount + i], sumval); } } delete [] sendbuf; delete [] recvbuf; MPI_Finalize(); if (err == 0 && rank == 0) printf(" No Errors\n"); return 0; } mpi-testsuite-3.2+dfsg/cxx/coll/icallgatherx.cxx0000644000175000017500000000451612620254305021314 0ustar mbanckmbanck/* -*- Mode: C++; c-basic-offset:4 ; -*- */ /* * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include #include "mpitestconf.h" #include "mpitestcxx.h" static char MTEST_Descrip[] = "Simple intercomm allgather test"; int main( int argc, char *argv[] ) { int errs = 0; int *rbuf = 0, *sbuf = 0; int leftGroup, i, count, rank, rsize; MPI::Intercomm comm; MPI::Datatype datatype; MTest_Init( ); datatype = MPI_INT; while (MTestGetIntercomm( comm, leftGroup, 4 )) { if (comm == MPI::COMM_NULL) continue; for (count = 1; count < 65000; count = 2 * count) { /* Get an intercommunicator */ /* The left group will send rank to the right group; The right group will send -rank to the left group */ rank = comm.Get_rank(); rsize = comm.Get_remote_size(); rbuf = new int [ count * rsize ]; sbuf = new int [ count ]; for (i=0; i #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include "mpitestcxx.h" static char MTEST_Descrip[] = "Simple intercomm scatterv test"; int main( int argc, char *argv[] ) { int errs = 0; int *buf = 0; int *sendcounts; int *senddispls; int leftGroup, i, count, rank, rsize; MPI::Intercomm comm; MPI::Datatype datatype; MTest_Init( ); datatype = MPI::INT; while (MTestGetIntercomm( comm, leftGroup, 4 )) { if (comm == MPI::COMM_NULL) continue; rsize = comm.Get_remote_size(); for (count = 1; count < 65000; count = 2 * count) { /* Get an intercommunicator */ buf = 0; sendcounts = new int [ rsize ]; senddispls = new int [ rsize ]; for (i=0; i #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include "mpitestcxx.h" static char MTEST_Descrip[] = "Simple intercomm scatter test"; int main( int argc, char *argv[] ) { int errs = 0; int *buf = 0; int leftGroup, i, count, rank; MPI::Intercomm comm; MPI::Datatype datatype; MTest_Init( ); datatype = MPI::INT; while (MTestGetIntercomm( comm, leftGroup, 4 )) { if (comm == MPI::COMM_NULL) continue; for (count = 1; count < 65000; count = 2 * count) { /* Get an intercommunicator */ buf = 0; if (leftGroup) { int rsize; rsize = comm.Get_remote_size(); rank = comm.Get_rank(); buf = new int [ count * rsize ]; if (rank == 0) { for (i=0; i #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include "mpitestcxx.h" void uop( const void *invec, void *inoutvec, int count, const MPI::Datatype &datatype ) { int i; int *cin = (int*)invec, *cout = (int*)inoutvec; for (i=0; i #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include "mpitestcxx.h" static int RealCount = -1; static int uopErrs = 0; void uop( const void *invec, void *inoutvec, int count, const MPI::Datatype &datatype ) { int i; int *cin = (int*)invec, *cout = (int*)inoutvec; if (count != RealCount) { uopErrs++; if (uopErrs < 2) { cerr << "Wrong count, got " << count << " expected " << RealCount << endl; } } for (i=0; i #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include "mpitestcxx.h" static char MTEST_Descrip[] = "Simple intercomm allreduce test"; int main( int argc, char *argv[] ) { int errs = 0; int *sendbuf = 0, *recvbuf = 0; int leftGroup, i, count, rank, rsize; MPI::Intercomm comm; MPI::Datatype datatype; MTest_Init(); datatype = MPI::INT; while (MTestGetIntercomm( comm, leftGroup, 4 )) { if (comm == MPI::COMM_NULL) continue; rank = comm.Get_rank(); for (count = 1; count < 65000; count = 2 * count) { sendbuf = new int [ count ]; recvbuf = new int [ count ]; /* Get an intercommunicator */ if (leftGroup) { for (i=0; i #include "mpitestconf.h" #include "mpitestcxx.h" static char MTEST_Descrip[] = "Simple intercomm barrier test"; /* This only checks that the Barrier operation accepts intercommunicators. It does not check for the semantics of a intercomm barrier (all processes in the local group can exit when (but not before) all processes in the remote group enter the barrier */ int main( int argc, char *argv[] ) { int errs = 0; int leftGroup; MPI::Intercomm comm; MPI::Datatype datatype; MTest_Init( ); datatype = MPI::INT; while (MTestGetIntercomm( comm, leftGroup, 4 )) { if (comm == MPI::COMM_NULL) continue; /* Get an intercommunicator */ if (leftGroup) { try { comm.Barrier( ); } catch (MPI::Exception e) { errs++; MTestPrintError( e.Get_error_code() ); } } else { /* In the right group */ try { comm.Barrier(); } catch (MPI::Exception e) { errs++; MTestPrintError( e.Get_error_code() ); } } MTestFreeComm(comm); } MTest_Finalize( errs ); MPI::Finalize(); return 0; } mpi-testsuite-3.2+dfsg/cxx/coll/uexscan.cxx0000644000175000017500000000330012620254305020301 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #ifdef HAVE_IOSTREAM // Not all C++ compilers have iostream instead of iostream.h #include #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include "mpitestcxx.h" void uop( const void *invec, void *inoutvec, int count, const MPI::Datatype &datatype ) { int i; int *cin = (int*)invec, *cout = (int*)inoutvec; for (i=0; i #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include "mpitestcxx.h" /* This program tests MPI_Alltoallw by having processor i send different amounts of data to each processor. This is just the MPI_Alltoallv test, but with displacements in bytes rather than units of the datatype. Because there are separate send and receive types to alltoallw, there need to be tests to rearrange data on the fly. Not done yet. The first test sends i items to processor i from all processors. Currently, the test uses only MPI_INT; this is adequate for testing systems that use point-to-point operations */ int main( int argc, char **argv ) { MPI::Intracomm comm; int *sbuf, *rbuf; int rank, size; int *sendcounts, *recvcounts, *rdispls, *sdispls; int i, j, *p, err; MPI::Datatype *sendtypes, *recvtypes; MTest_Init( ); err = 0; while (MTestGetIntracommGeneral( comm, 2, true )) { if (comm == MPI::COMM_NULL) continue; /* Create the buffer */ size = comm.Get_size(); rank = comm.Get_rank(); sbuf = new int [ size * size ]; rbuf = new int [ size * size ]; if (!sbuf || !rbuf) { cout << "Could not allocate buffers!\n"; comm.Abort( 1 ); } /* Load up the buffers */ for (i=0; i #include "mpitestconf.h" #include "mpitestcxx.h" static char MTEST_Descrip[] = "Simple intercomm gatherv test"; int main( int argc, char *argv[] ) { int errs = 0; int *buf = 0; int *recvcounts; int *recvdispls; int leftGroup, i, count, rank, rsize; MPI::Intercomm comm; MPI::Datatype datatype; MTest_Init( ); datatype = MPI::INT; while (MTestGetIntercomm( comm, leftGroup, 4 )) { if (comm == MPI::COMM_NULL) continue; for (count = 1; count < 65000; count = 2 * count) { /* Get an intercommunicator */ rsize = comm.Get_remote_size(); recvcounts = new int [ rsize ]; recvdispls = new int [ rsize ]; /* This simple test duplicates the Gather test, using the same lengths for all messages */ for (i=0; i #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include "mpitestcxx.h" static MPI::Datatype my_datatype; static int real_count; void uop(const void *invec, void *inoutvec, int count, const MPI::Datatype & datatype) { int i; if (datatype == my_datatype) count = real_count; for (i = 0; i < count; i++) { if (datatype == MPI::INT) ((int *)inoutvec)[i] = ((int *)invec)[i] + ((int *)inoutvec)[i]; else if (datatype == MPI::DOUBLE || datatype == my_datatype) ((double *)inoutvec)[i] = ((double *)invec)[i] + ((double *)inoutvec)[i]; else return; } } int main(int argc, char **argv) { MPI::Op sumop; MPI::Intracomm comm = MPI::COMM_WORLD; int errs = 0; int size, i, count, root, rank; int *vin, *vout; double *dvin, *dvout; MTest_Init(); sumop.Init(uop, true); size = comm.Get_size(); rank = comm.Get_rank(); for (count = 1; count < 66000; count = count * 2) { /* MPI::INT */ vin = new int[count]; vout = new int[count]; for (root = 0; root < size; root++) { for (i = 0; i < count; i++) { vin[i] = i; vout[i] = -1; } sumop.Reduce_local(vin, vout, count, MPI::INT); for (i = 0; i < count; i++) { if (vout[i] != i - 1) { errs++; if (errs < 10) cerr << "vout[" << i << "] = " << vout[i] << endl; } } } delete[]vin; delete[]vout; /* MPI::DOUBLE */ dvin = new double[count]; dvout = new double[count]; for (root = 0; root < size; root++) { for (i = 0; i < count; i++) { dvin[i] = i; dvout[i] = -1; } sumop.Reduce_local(dvin, dvout, count, MPI::DOUBLE); for (i = 0; i < count; i++) { if (dvout[i] != i - 1) { errs++; if (errs < 10) cerr << "dvout[" << i << "] = " << dvout[i] << endl; } } } delete[]dvin; delete[]dvout; /* A vector of MPI::DOUBLEs */ dvin = new double[count]; dvout = new double[count]; my_datatype = MPI::DOUBLE.Create_vector(count/2, 1, 2); my_datatype.Commit(); real_count = count; for (root = 0; root < size; root++) { for (i = 0; i < count; i++) { dvin[i] = i; dvout[i] = -1; } sumop.Reduce_local(dvin, dvout, 1, my_datatype); for (i = 0; i < count; i += 2) { if (dvout[i] != i - 1) { errs++; if (errs < 10) cerr << "dvout[" << i << "] = " << dvout[i] << endl; } } } delete[]dvin; delete[]dvout; my_datatype.Free(); } sumop.Free(); MTest_Finalize(errs); MPI::Finalize(); return 0; } mpi-testsuite-3.2+dfsg/cxx/attr/0000755000175000017500000000000012621010232016122 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/cxx/attr/attrtx.cxx0000644000175000017500000001727212620254305020217 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Exercise communicator routines. This C++ version derived from a Fortran test program from .... */ #include "mpi.h" #include "mpitestconf.h" #ifdef HAVE_IOSTREAM // Not all C++ compilers have iostream instead of iostream.h #include #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include #include "mpitestcxx.h" #ifdef HAVE_STRING_H #include #endif /* #define DEBUG */ int test_communicators ( void ); int copy_fn ( const MPI::Comm &, int, void *, void *, void *, bool & ); int delete_fn ( MPI::Comm &, int, void *, void * ); int main( int argc, char **argv ) { int errs = 0; MTest_Init(); errs = test_communicators(); MTest_Finalize( errs ); MPI::Finalize(); return 0; } int copy_fn( const MPI::Comm &oldcomm, int keyval, void *extra_state, void *attribute_val_in, void *attribute_val_out, bool &flag) { /* Note that if (sizeof(int) < sizeof(void *), just setting the int part of attribute_val_out may leave some dirty bits */ *(MPI::Aint *)attribute_val_out = (MPI::Aint)attribute_val_in; flag = 1; return MPI::SUCCESS; } int delete_fn( MPI::Comm &comm, int keyval, void *attribute_val, void *extra_state) { int world_rank; world_rank = MPI::COMM_WORLD.Get_rank(); if ((MPI::Aint)attribute_val != (MPI::Aint)world_rank) { cout << "incorrect attribute value " << *(int*)attribute_val << "\n"; MPI::COMM_WORLD.Abort( 1005 ); } return MPI::SUCCESS; } int test_communicators( void ) { MPI::Intracomm dup_comm_world, lo_comm, rev_comm, dup_comm, split_comm, world_comm; MPI::Group world_group, lo_group, rev_group; void *vvalue; int ranges[1][3]; int flag, world_rank, world_size, rank, size, n, key_1, key_3; int color, key, result; int errs = 0; MPI::Aint value; world_rank = MPI::COMM_WORLD.Get_rank(); world_size = MPI::COMM_WORLD.Get_size(); #ifdef DEBUG if (world_rank == 0) { cout << "*** Communicators ***\n"; } #endif dup_comm_world = MPI::COMM_WORLD.Dup(); /* Exercise Comm_create by creating an equivalent to dup_comm_world (sans attributes) and a half-world communicator. */ #ifdef DEBUG if (world_rank == 0) { cout << " Comm_create\n"; } #endif world_group = dup_comm_world.Get_group(); world_comm = dup_comm_world.Create( world_group ); rank = world_comm.Get_rank(); if (rank != world_rank) { errs++; cout << "incorrect rank in world comm: " << rank << "\n"; MPI::COMM_WORLD.Abort( 3001 ); } n = world_size / 2; ranges[0][0] = 0; ranges[0][1] = (world_size - n) - 1; ranges[0][2] = 1; #ifdef DEBUG cout << "world rank = " << world_rank << " before range incl\n"; #endif lo_group = world_group.Range_incl( 1, ranges ); #ifdef DEBUG cout << "world rank = " << world_rank << " after range incl\n"; #endif lo_comm = world_comm.Create( lo_group ); #ifdef DEBUG cout << "world rank = " << world_rank << " before group free\n"; #endif lo_group.Free(); #ifdef DEBUG cout << "world rank = " << world_rank << " after group free\n"; #endif if (world_rank < (world_size - n)) { rank = lo_comm.Get_rank(); if (rank == MPI::UNDEFINED) { errs++; cout << "incorrect lo group rank: " << rank << "\n"; MPI::COMM_WORLD.Abort( 3002 ); } else { lo_comm.Barrier(); } } else { if (lo_comm != MPI::COMM_NULL) { errs++; cout << "incorrect lo comm:\n"; MPI::COMM_WORLD.Abort( 3003 ); } } #ifdef DEBUG cout << "worldrank = " << world_rank << "\n"; #endif world_comm.Barrier(); #ifdef DEBUG cout << "bar!\n"; #endif /* Check Comm_dup by adding attributes to lo_comm & duplicating */ #ifdef DEBUG if (world_rank == 0) { cout << " Comm_dup\n"; } #endif if (lo_comm != MPI::COMM_NULL) { value = 9; key_1 = MPI::Comm::Create_keyval(copy_fn, delete_fn, &value ); value = 8; value = 7; key_3 = MPI::Comm::Create_keyval(MPI::Comm::NULL_COPY_FN, MPI::Comm::NULL_DELETE_FN, &value ); /* This may generate a compilation warning; it is, however, an easy way to cache a value instead of a pointer */ lo_comm.Set_attr( key_1, (void *) (MPI_Aint) world_rank ); lo_comm.Set_attr( key_3, (void *)0 ); dup_comm = lo_comm.Dup(); /* Note that if sizeof(int) < sizeof(void *), we can't use (void **)&value to get the value we passed into Attr_put. To avoid problems (e.g., alignment errors), we recover the value into a (void *) and cast to int. Note that this may generate warning messages from the compiler. */ flag = dup_comm.Get_attr( key_1, (void **)&vvalue ); value = (MPI::Aint)vvalue; if (! flag) { errs++; cout << "dup_comm key_1 not found on " << world_rank << "\n"; MPI::COMM_WORLD.Abort( 3004 ); } if (value != world_rank) { errs++; cout << "dup_comm key_1 value incorrect: " << (long)value << "\n"; MPI::COMM_WORLD.Abort( 3005 ); } flag = dup_comm.Get_attr( key_3, (void **)&vvalue ); if (flag) { errs++; cout << "dup_comm key_3 found!\n"; MPI::COMM_WORLD.Abort( 3008 ); } // Some C++ compilers (e.g., Solaris) refuse to // accept a straight cast to an int. // value = (MPI::Aint)vvalue; MPI::Comm::Free_keyval( key_1 ); MPI::Comm::Free_keyval( key_3 ); } /* Split the world into even & odd communicators with reversed ranks. */ #ifdef DEBUG if (world_rank == 0) { cout << " Comm_split\n"; } #endif color = world_rank % 2; key = world_size - world_rank; split_comm = dup_comm_world.Split( color, key ); size = split_comm.Get_size(); rank = split_comm.Get_rank(); if (rank != ((size - world_rank/2) - 1)) { errs++; cout << "incorrect split rank: " << rank << "\n"; MPI::COMM_WORLD.Abort( 3009 ); } split_comm.Barrier(); /* Test each possible Comm_compare result */ #ifdef DEBUG if (world_rank == 0) { cout << " Comm_compare\n"; } #endif result = MPI::Comm::Compare(world_comm, world_comm ); if (result != MPI::IDENT) { errs++; cout << "incorrect ident result: " << result << "\n"; MPI::COMM_WORLD.Abort( 3010 ); } if (lo_comm != MPI::COMM_NULL) { result = MPI::Comm::Compare(lo_comm, dup_comm ); if (result != MPI::CONGRUENT) { errs++; cout << "incorrect congruent result: " << result << "\n"; MPI::COMM_WORLD.Abort( 3011 ); } } ranges[0][0] = world_size - 1; ranges[0][1] = 0; ranges[0][2] = -1; rev_group = world_group.Range_incl( 1, ranges ); rev_comm = world_comm.Create( rev_group ); result = MPI::Comm::Compare(world_comm, rev_comm ); if (result != MPI::SIMILAR && world_size != 1) { errs++; cout << "incorrect similar result: " << result << "\n"; MPI::COMM_WORLD.Abort( 3012 ); } if (lo_comm != MPI::COMM_NULL) { result = MPI::Comm::Compare(world_comm, lo_comm ); if (result != MPI::UNEQUAL && world_size != 1) { errs++; cout << "incorrect unequal result: " << result << "\n"; MPI::COMM_WORLD.Abort( 3013 ); } } /* Free all communicators created */ #ifdef DEBUG if (world_rank == 0) cout << " Comm_free\n"; #endif world_comm.Free(); dup_comm_world.Free(); rev_comm.Free(); split_comm.Free(); world_group.Free(); rev_group.Free(); if (lo_comm != MPI::COMM_NULL) { lo_comm.Free(); dup_comm.Free(); } return errs; } mpi-testsuite-3.2+dfsg/cxx/attr/testlist0000644000175000017500000000010112620254305017722 0ustar mbanckmbanckattrtx 2 attricx 4 baseattrcommx 1 fkeyvalcommx 1 fkeyvaltypex 1 mpi-testsuite-3.2+dfsg/cxx/attr/Makefile.in0000644000175000017500000005272412621010232020201 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2010 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = attrtx$(EXEEXT) attricx$(EXEEXT) \ baseattrcommx$(EXEEXT) fkeyvalcommx$(EXEEXT) \ fkeyvaltypex$(EXEEXT) subdir = cxx/attr ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am_attricx_OBJECTS = attricx.$(OBJEXT) attricx_OBJECTS = $(am_attricx_OBJECTS) attricx_LDADD = $(LDADD) attricx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o am_attrtx_OBJECTS = attrtx.$(OBJEXT) attrtx_OBJECTS = $(am_attrtx_OBJECTS) attrtx_LDADD = $(LDADD) attrtx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o am_baseattrcommx_OBJECTS = baseattrcommx.$(OBJEXT) baseattrcommx_OBJECTS = $(am_baseattrcommx_OBJECTS) baseattrcommx_LDADD = $(LDADD) baseattrcommx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o am_fkeyvalcommx_OBJECTS = fkeyvalcommx.$(OBJEXT) fkeyvalcommx_OBJECTS = $(am_fkeyvalcommx_OBJECTS) fkeyvalcommx_LDADD = $(LDADD) fkeyvalcommx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o am_fkeyvaltypex_OBJECTS = fkeyvaltypex.$(OBJEXT) fkeyvaltypex_OBJECTS = $(am_fkeyvaltypex_OBJECTS) fkeyvaltypex_LDADD = $(LDADD) fkeyvaltypex_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = SOURCES = $(attricx_SOURCES) $(attrtx_SOURCES) \ $(baseattrcommx_SOURCES) $(fkeyvalcommx_SOURCES) \ $(fkeyvaltypex_SOURCES) DIST_SOURCES = $(attricx_SOURCES) $(attrtx_SOURCES) \ $(baseattrcommx_SOURCES) $(fkeyvalcommx_SOURCES) \ $(fkeyvaltypex_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_cxx.mtest $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/cxx/util/mtest.o CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist attrtx_SOURCES = attrtx.cxx attricx_SOURCES = attricx.cxx #attrerrx_SOURCES = attrerrx.cxx #attrerrcommx_SOURCES = attrerrcommx.cxx #attrerrtypex_SOURCES = attrerrtypex.cxx #attrorderx_SOURCES = attrorderx.cxx #attrordercommx_SOURCES = attrordercommx.cxx #attrordertypex_SOURCES = attrordertypex.cxx #attrorderwinx_SOURCES = attrorderwinx.cxx #baseattr2x_SOURCES = baseattr2x.cxx baseattrcommx_SOURCES = baseattrcommx.cxx #baseattrwinx_SOURCES = baseattrwinx.cxx fkeyvalcommx_SOURCES = fkeyvalcommx.cxx fkeyvaltypex_SOURCES = fkeyvaltypex.cxx all: all-am .SUFFIXES: .SUFFIXES: .cxx .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_cxx.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign cxx/attr/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign cxx/attr/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_cxx.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) attricx$(EXEEXT): $(attricx_OBJECTS) $(attricx_DEPENDENCIES) $(EXTRA_attricx_DEPENDENCIES) @rm -f attricx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(attricx_OBJECTS) $(attricx_LDADD) $(LIBS) attrtx$(EXEEXT): $(attrtx_OBJECTS) $(attrtx_DEPENDENCIES) $(EXTRA_attrtx_DEPENDENCIES) @rm -f attrtx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(attrtx_OBJECTS) $(attrtx_LDADD) $(LIBS) baseattrcommx$(EXEEXT): $(baseattrcommx_OBJECTS) $(baseattrcommx_DEPENDENCIES) $(EXTRA_baseattrcommx_DEPENDENCIES) @rm -f baseattrcommx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(baseattrcommx_OBJECTS) $(baseattrcommx_LDADD) $(LIBS) fkeyvalcommx$(EXEEXT): $(fkeyvalcommx_OBJECTS) $(fkeyvalcommx_DEPENDENCIES) $(EXTRA_fkeyvalcommx_DEPENDENCIES) @rm -f fkeyvalcommx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(fkeyvalcommx_OBJECTS) $(fkeyvalcommx_LDADD) $(LIBS) fkeyvaltypex$(EXEEXT): $(fkeyvaltypex_OBJECTS) $(fkeyvaltypex_DEPENDENCIES) $(EXTRA_fkeyvaltypex_DEPENDENCIES) @rm -f fkeyvaltypex$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(fkeyvaltypex_OBJECTS) $(fkeyvaltypex_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/attricx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/attrtx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/baseattrcommx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fkeyvalcommx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fkeyvaltypex.Po@am__quote@ .cxx.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cxx.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/cxx/util/mtest.o: $(top_srcdir)/cxx/util/mtest.cxx (cd $(top_builddir)/cxx/util && $(MAKE) mtest.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/cxx/attr/fkeyvalcommx.cxx0000644000175000017500000000664512620254305021400 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #ifdef HAVE_IOSTREAM // Not all C++ compilers have iostream instead of iostream.h #include #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include #include "mpitestcxx.h" #ifdef HAVE_STRING_H #include #endif static char MTestDescrip[] = "Test freeing keyvals while still attached to \ a communicator, then make sure that the keyval delete and copy code are still \ executed"; /* Copy increments the attribute value */ int copy_fn( const MPI::Comm &oldcomm, int keyval, void *extra_state, void *attribute_val_in, void *attribute_val_out, bool &flag) { /* Copy the address of the attribute */ *(void **)attribute_val_out = attribute_val_in; /* Change the value */ *(int *)attribute_val_in = *(int *)attribute_val_in + 1; /* set flag to 1 to tell comm dup to insert this attribute into the new communicator */ flag = 1; return MPI::SUCCESS; } /* Delete decrements the attribute value */ int delete_fn( MPI::Comm &comm, int keyval, void *attribute_val, void *extra_state) { *(int *)attribute_val = *(int *)attribute_val - 1; return MPI::SUCCESS; } int main( int argc, char *argv[] ) { int errs = 0; int attrval; int i, key[32], keyval, saveKeyval; MPI::Intracomm comm, dupcomm; MTest_Init(); while (MTestGetIntracomm( comm, 1 )) { if (comm == MPI::COMM_NULL) continue; keyval = MPI::Comm::Create_keyval( copy_fn, delete_fn, (void *)0 ); saveKeyval = keyval; /* in case we need to free explicitly */ attrval = 1; comm.Set_attr( keyval, &attrval ); /* See MPI-1, 5.7.1. Freeing the keyval does not remove it if it is in use in an attribute */ MPI::Comm::Free_keyval( keyval ); /* We create some dummy keyvals here in case the same keyval is reused */ for (i=0; i<32; i++) { key[i] = MPI::Comm::Create_keyval( MPI::Comm::NULL_COPY_FN, MPI::Comm::NULL_DELETE_FN, (void *)0 ); } dupcomm = comm.Dup(); /* Check that the attribute was copied */ if (attrval != 2) { errs++; cout << "Attribute not incremented when comm dup'ed, attrval = " << attrval << " should be 2 in communicator " << MTestGetIntracommName() << "\n"; } dupcomm.Free(); if (attrval != 1) { errs++; cout << "Attribute not decremented when comm dup'ed, attrval = " << attrval << " should be 1 in communicator " << MTestGetIntracommName() << "\n"; } /* Check that the attribute was freed in the dupcomm */ if (comm != MPI::COMM_WORLD && comm != MPI::COMM_SELF) { comm.Free(); /* Check that the original attribute was freed */ if (attrval != 0) { errs++; printf( "Attribute not decremented when comm %s freed\n", MTestGetIntracommName() ); } } else { /* Explicitly delete the attributes from world and self */ comm.Delete_attr( saveKeyval ); } /* Free those other keyvals */ for (i=0; i<32; i++) { MPI::Comm::Free_keyval( key[i] ); } } MTest_Finalize( errs ); MPI::Finalize(); /* The attributes on comm self and world were deleted by finalize (see separate test) */ return 0; } mpi-testsuite-3.2+dfsg/cxx/attr/Makefile.am0000644000175000017500000000203212620254305020165 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2010 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_cxx.mtest EXTRA_DIST = testlist noinst_PROGRAMS = attrtx attricx baseattrcommx fkeyvalcommx fkeyvaltypex ## the following entries were disabled in the simplemake version: ##noinst_PROGRAMS += attrerrx attrerrcommx attrerrtypex attrorderx attrordercommx \ ## attrordertypex attrorderwinx baseattr2x baseattrwinx attrtx_SOURCES = attrtx.cxx attricx_SOURCES = attricx.cxx #attrerrx_SOURCES = attrerrx.cxx #attrerrcommx_SOURCES = attrerrcommx.cxx #attrerrtypex_SOURCES = attrerrtypex.cxx #attrorderx_SOURCES = attrorderx.cxx #attrordercommx_SOURCES = attrordercommx.cxx #attrordertypex_SOURCES = attrordertypex.cxx #attrorderwinx_SOURCES = attrorderwinx.cxx #baseattr2x_SOURCES = baseattr2x.cxx baseattrcommx_SOURCES = baseattrcommx.cxx #baseattrwinx_SOURCES = baseattrwinx.cxx fkeyvalcommx_SOURCES = fkeyvalcommx.cxx fkeyvaltypex_SOURCES = fkeyvaltypex.cxx mpi-testsuite-3.2+dfsg/cxx/attr/fkeyvaltypex.cxx0000644000175000017500000000726512620254305021425 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #ifdef HAVE_IOSTREAM // Not all C++ compilers have iostream instead of iostream.h #include #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include #include "mpitestcxx.h" #include static char MTestDescrip[] = "Test freeing keyvals while still attached to \ a datatype, then make sure that the keyval delete and copy code are still \ executed"; /* Copy increments the attribute value */ int copy_fn( const MPI::Datatype &oldtype, int keyval, void *extra_state, void *attribute_val_in, void *attribute_val_out, bool &flag) { /* Copy the address of the attribute */ *(void **)attribute_val_out = attribute_val_in; /* Change the value */ *(int *)attribute_val_in = *(int *)attribute_val_in + 1; /* set flag to 1 to tell comm dup to insert this attribute into the new communicator */ flag = 1; return MPI::SUCCESS; } /* Delete decrements the attribute value */ int delete_fn( MPI::Datatype &type, int keyval, void *attribute_val, void *extra_state) { *(int *)attribute_val = *(int *)attribute_val - 1; return MPI::SUCCESS; } int main( int argc, char *argv[] ) { int errs = 0; int attrval; int i, key[32], keyval, saveKeyval; MPI::Datatype type, duptype; MTestDatatype mstype, mrtype; char dtypename[MPI_MAX_OBJECT_NAME]; int tnlen; MTest_Init(); while (MTestGetDatatypes( &mstype, &mrtype, 1 )) { type = mstype.datatype; keyval = MPI::Datatype::Create_keyval( copy_fn, delete_fn, (void *)0 ); saveKeyval = keyval; /* in case we need to free explicitly */ attrval = 1; type.Set_attr( keyval, &attrval ); /* See MPI-1, 5.7.1. Freeing the keyval does not remove it if it is in use in an attribute */ MPI::Datatype::Free_keyval( keyval ); /* We create some dummy keyvals here in case the same keyval is reused */ for (i=0; i<32; i++) { key[i] = MPI::Datatype::Create_keyval( MPI::Datatype::NULL_COPY_FN, MPI::Datatype::NULL_DELETE_FN, (void *)0 ); } if (attrval != 1) { errs++; type.Get_name( dtypename, tnlen ); cout << "attrval is " << attrval << ", should be 1, before dup in type " << dtypename << "\n"; } duptype = type.Dup(); /* Check that the attribute was copied */ if (attrval != 2) { errs++; type.Get_name( dtypename, tnlen ); cout << "Attribute not incremented when type dup'ed ( " << dtypename << ")\n"; } duptype.Free(); if (attrval != 1) { errs++; type.Get_name( dtypename, tnlen ); cout << "Attribute not decremented when duptype " << dtypename << " freed\n"; } /* Check that the attribute was freed in the duptype */ if (!mstype.isBasic) { type.Get_name( dtypename, tnlen ); MTestFreeDatatype(&mstype); /* Check that the original attribute was freed */ if (attrval != 0) { errs++; cout << "Attribute not decremented when type " << dtypename << " freed\n"; } } else { /* Explicitly delete the attributes from world and self */ type.Delete_attr( saveKeyval ); if (mstype.buf) { free(mstype.buf); mstype.buf = 0; } } /* Free those other keyvals */ for (i=0; i<32; i++) { MPI::Datatype::Free_keyval( key[i] ); } MTestFreeDatatype(&mrtype); } MTest_Finalize( errs ); MPI::Finalize(); return 0; } mpi-testsuite-3.2+dfsg/cxx/attr/attricx.cxx0000644000175000017500000001103512620254305020336 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Exercise communicator routines for intercommunicators This C++ version derived from the C version, attric */ #include "mpi.h" #include "mpitestconf.h" #ifdef HAVE_IOSTREAM // Not all C++ compilers have iostream instead of iostream.h #include #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include #include "mpitestcxx.h" #ifdef HAVE_STRING_H #include #endif /* #define DEBUG */ static int verbose = 0; int test_communicators ( void ); int copy_fn ( const MPI::Comm &, int, void *, void *, void *, bool & ); int delete_fn ( MPI::Comm &, int, void *, void * ); #ifdef DEBUG #define FFLUSH fflush(stdout); #else #define FFLUSH #endif int main( int argc, char **argv ) { int errs = 0; MTest_Init(); errs = test_communicators(); MTest_Finalize( errs ); MPI::Finalize(); return 0; } int copy_fn( const MPI::Comm &oldcomm, int keyval, void *extra_state, void *attribute_val_in, void *attribute_val_out, bool &flag) { /* Note that if (sizeof(int) < sizeof(void *), just setting the int part of attribute_val_out may leave some dirty bits */ *(MPI::Aint *)attribute_val_out = (MPI::Aint)attribute_val_in; flag = 1; return MPI_SUCCESS; } int delete_fn( MPI::Comm &comm, int keyval, void *attribute_val, void *extra_state) { int world_rank; world_rank = MPI::COMM_WORLD.Get_rank(); if ((MPI::Aint)attribute_val != (MPI::Aint)world_rank) { cout << "incorrect attribute value %d\n" << *(int*)attribute_val << "\n"; MPI::COMM_WORLD.Abort( 1005 ); } return MPI_SUCCESS; } int test_communicators( void ) { MPI::Intercomm dup_comm, comm; void *vvalue; int flag, world_rank, world_size, key_1, key_3; int errs = 0; MPI::Aint value; int isLeft; world_rank = MPI::COMM_WORLD.Get_rank(); world_size = MPI::COMM_WORLD.Get_size(); #ifdef DEBUG if (world_rank == 0) { cout << "*** Communicators ***\n"; } #endif while (MTestGetIntercomm( comm, isLeft, 2 )) { if (verbose) { cout << "start while loop, isLeft=" << isLeft << "\n"; } if (comm == MPI::COMM_NULL) { if (verbose) { cout << "got COMM_NULL, skipping\n"; } continue; } /* Check Comm_dup by adding attributes to comm & duplicating */ value = 9; key_1 = MPI::Comm::Create_keyval(copy_fn, delete_fn, &value ); if (verbose) { cout << "Keyval_create key=" << key_1 << " value=" << value << "\n"; } value = 7; key_3 = MPI::Comm::Create_keyval(MPI::Comm::NULL_COPY_FN, MPI::Comm::NULL_DELETE_FN, &value ); if (verbose) { cout << "Keyval_create key=" << key_3 << " value=" << value << "\n"; } /* This may generate a compilation warning; it is, however, an easy way to cache a value instead of a pointer */ /* printf( "key1 = %x key3 = %x\n", key_1, key_3 ); */ comm.Set_attr( key_1, (void *) (MPI::Aint) world_rank ); comm.Set_attr( key_3, (void *)0 ); if (verbose) { cout << "Comm_dup\n"; } dup_comm = comm.Dup(); /* Note that if sizeof(int) < sizeof(void *), we can't use (void **)&value to get the value we passed into Attr_put. To avoid problems (e.g., alignment errors), we recover the value into a (void *) and cast to int. Note that this may generate warning messages from the compiler. */ flag = dup_comm.Get_attr( key_1, (void **)&vvalue ); value = (MPI::Aint)vvalue; if (! flag) { errs++; cout << "dup_comm key_1 not found on " << world_rank << "\n"; MPI::COMM_WORLD.Abort( 3004 ); } if (value != world_rank) { errs++; cout << "dup_comm key_1 value incorrect: " << (long)value << "\n"; MPI::COMM_WORLD.Abort( 3005 ); } flag = dup_comm.Get_attr( key_3, (void **)&vvalue ); value = (MPI::Aint)vvalue; if (flag) { errs++; cout << "dup_comm key_3 found!\n"; MPI::COMM_WORLD.Abort( 3008 ); } if (verbose) { cout << "Keyval_free key=" << key_1 << "\n"; } MPI::Comm::Free_keyval( key_1 ); if (verbose) { cout << "Keyval_free key=" << key_3 << "\n"; } MPI::Comm::Free_keyval( key_3 ); /* Free all communicators created */ if (verbose) { cout << "Comm_free comm\n"; } comm.Free(); if (verbose) { cout << "Comm_free dup_comm\n"; } dup_comm.Free(); } return errs; } mpi-testsuite-3.2+dfsg/cxx/attr/baseattrcommx.cxx0000644000175000017500000000571112620254305021535 0ustar mbanckmbanck/* -*- Mode: C++; c-basic-offset:4 ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #ifdef HAVE_IOSTREAM // Not all C++ compilers have iostream instead of iostream.h #include #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include #include "mpitestcxx.h" #ifdef HAVE_STRING_H #include #endif int main( int argc, char **argv) { int errs = 0; void *v; bool flag; int vval; int rank, size; MTest_Init(); size = MPI::COMM_WORLD.Get_size(); rank = MPI::COMM_WORLD.Get_rank(); flag = MPI::COMM_WORLD.Get_attr( MPI::TAG_UB, &v ); if (!flag) { errs++; cout << "Could not get TAG_UB\n"; } else { vval = *(int*)v; if (vval < 32767) { errs++; cout << "Got too-small value (" << vval << ") for TAG_UB\n"; } } flag = MPI::COMM_WORLD.Get_attr( MPI::HOST, &v ); if (!flag) { errs++; cout << "Could not get HOST\n"; } else { vval = *(int*)v; if ((vval < 0 || vval >= size) && vval != MPI::PROC_NULL) { errs++; cout << "Got invalid value " << vval << " for HOST\n"; } } flag = MPI::COMM_WORLD.Get_attr( MPI::IO, &v ); if (!flag) { errs++; cout << "Could not get IO\n"; } else { vval = *(int*)v; if ((vval < 0 || vval >= size) && vval != MPI::ANY_SOURCE && vval != MPI::PROC_NULL) { errs++; cout << "Got invalid value " << vval << " for IO\n"; } } flag = MPI::COMM_WORLD.Get_attr( MPI::WTIME_IS_GLOBAL, &v ); if (flag) { /* Wtime need not be set */ vval = *(int*)v; if (vval < 0 || vval > 1) { errs++; cout << "Invalid value for WTIME_IS_GLOBAL (got " << vval << ")\n"; } } flag = MPI::COMM_WORLD.Get_attr( MPI::APPNUM, &v ); /* appnum need not be set */ if (flag) { vval = *(int *)v; if (vval < 0) { errs++; cout << "MPI_APPNUM is defined as " << vval << " but must be nonnegative\n"; } } flag = MPI::COMM_WORLD.Get_attr( MPI::UNIVERSE_SIZE, &v ); /* MPI_UNIVERSE_SIZE need not be set */ if (flag) { /* But if it is set, it must be at least the size of comm_world */ vval = *(int *)v; if (vval < size) { errs++; cout << "MPI_UNIVERSE_SIZE = " << vval << ", less than comm world (" << size << ")\n"; } } flag = MPI::COMM_WORLD.Get_attr( MPI::LASTUSEDCODE, &v ); /* Last used code must be defined and >= MPI_ERR_LASTCODE */ if (flag) { vval = *(int*)v; if (vval < MPI_ERR_LASTCODE) { errs++; cout << "MPI_LASTUSEDCODE points to an integer (" << vval << ") smaller than MPI_ERR_LASTCODE (" << MPI_ERR_LASTCODE << ")\n"; } } else { errs++; cout << "MPI_LASTUSECODE is not defined\n"; } MTest_Finalize( errs ); MPI::Finalize( ); return 0; } mpi-testsuite-3.2+dfsg/cxx/Makefile.am0000644000175000017500000000061312620254305017216 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_cxx.mtest EXTRA_DIST = testlist.in static_subdirs = util attr pt2pt init info comm coll datatype errhan topo SUBDIRS = $(static_subdirs) $(iodir) $(rmadir) $(spawndir) DIST_SUBDIRS = $(static_subdirs) io rma spawn mpi-testsuite-3.2+dfsg/cxx/util/0000755000175000017500000000000012621010232016125 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/cxx/util/Makefile.in0000644000175000017500000004501212621010232020174 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = cxx/util ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = ARFLAGS = cru AM_V_AR = $(am__v_AR_@AM_V@) am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) am__v_AR_0 = @echo " AR " $@; am__v_AR_1 = libmtest_dummy_a_AR = $(AR) $(ARFLAGS) libmtest_dummy_a_LIBADD = am_libmtest_dummy_a_OBJECTS = mtest.$(OBJEXT) libmtest_dummy_a_OBJECTS = $(am_libmtest_dummy_a_OBJECTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = SOURCES = $(libmtest_dummy_a_SOURCES) DIST_SOURCES = $(libmtest_dummy_a_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include EXTRA_LIBRARIES = libmtest_dummy.a libmtest_dummy_a_SOURCES = mtest.cxx all: all-am .SUFFIXES: .SUFFIXES: .cxx .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign cxx/util/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign cxx/util/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): libmtest_dummy.a: $(libmtest_dummy_a_OBJECTS) $(libmtest_dummy_a_DEPENDENCIES) $(EXTRA_libmtest_dummy_a_DEPENDENCIES) $(AM_V_at)-rm -f libmtest_dummy.a $(AM_V_AR)$(libmtest_dummy_a_AR) libmtest_dummy.a $(libmtest_dummy_a_OBJECTS) $(libmtest_dummy_a_LIBADD) $(AM_V_at)$(RANLIB) libmtest_dummy.a mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mtest.Po@am__quote@ .cxx.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cxx.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile all-local installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \ clean-generic cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile all-local: mtest.$(OBJEXT) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/cxx/util/Makefile.am0000644000175000017500000000107512620254305020176 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # ## the simplemake version also included the following bits that seem wrong: ## -I../../../src/include -I${top_srcdir}/src/include AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include ## list a dummy library that we don't actually build in order to cause automake ## to emit a rule for building mtest.o from mtest.cxx EXTRA_LIBRARIES = libmtest_dummy.a libmtest_dummy_a_SOURCES = mtest.cxx all-local: mtest.$(OBJEXT) mpi-testsuite-3.2+dfsg/cxx/util/mtest.cxx0000644000175000017500000005755212620254305020035 0ustar mbanckmbanck/* -*- Mode: C++; c-basic-offset:4 ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #ifdef HAVE_IOSTREAM // Not all C++ compilers have iostream instead of iostream.h #include #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include "mpitestcxx.h" #include #include static int dbgflag = 0; /* Flag used for debugging */ static int wrank = -1; /* World rank */ static int verbose = 0; /* Message level (0 is none) */ static void MTestRMACleanup( void ); /* * Initialize and Finalize MTest */ /* Initialize MTest, initializing MPI if necessary. Environment Variables: + MPITEST_DEBUG - If set (to any value), turns on debugging output - MPITEST_VERBOSE - If set to a numeric value, turns on that level of verbose output. */ void MTest_Init( void ) { bool flag; const char *envval = 0; int threadLevel, provided; threadLevel = MPI::THREAD_SINGLE; envval = getenv( "MTEST_THREADLEVEL_DEFAULT" ); if (envval && *envval) { if (strcmp(envval,"MULTIPLE") == 0 || strcmp(envval,"multiple") == 0) { threadLevel = MPI::THREAD_MULTIPLE; } else if (strcmp(envval,"SERIALIZED") == 0 || strcmp(envval,"serialized") == 0) { threadLevel = MPI::THREAD_SERIALIZED; } else if (strcmp(envval,"FUNNELED") == 0 || strcmp(envval,"funneled") == 0) { threadLevel = MPI::THREAD_FUNNELED; } else if (strcmp(envval,"SINGLE") == 0 || strcmp(envval,"single") == 0) { threadLevel = MPI::THREAD_SINGLE; } else { cerr << "Unrecognized thread level " << envval << "\n"; cerr.flush(); /* Use exit since MPI_Init/Init_thread has not been called. */ exit(1); } } flag = MPI::Is_initialized( ); if (!flag) { provided = MPI::Init_thread( threadLevel ); } #if defined(HAVE_MPI_IO) MPI::FILE_NULL.Set_errhandler(MPI::ERRORS_THROW_EXCEPTIONS); #endif /* Check for debugging control */ if (getenv( "MPITEST_DEBUG" )) { dbgflag = 1; wrank = MPI::COMM_WORLD.Get_rank(); } /* Check for verbose control */ envval = getenv( "MPITEST_VERBOSE" ); if (envval) { char *s; long val = strtol( envval, &s, 0 ); if (s == envval) { /* This is the error case for strtol */ cerr << "Warning: "<< envval << " not valid for MPITEST_VERBOSE\n"; cerr.flush(); } else { if (val >= 0) { verbose = val; } else { cerr << "Warning: " << envval << " not valid for MPITEST_VERBOSE\n"; cerr.flush(); } } } } /* Finalize MTest. errs is the number of errors on the calling process; this routine will write the total number of errors over all of MPI_COMM_WORLD to the process with rank zero, or " No Errors". It does *not* finalize MPI. */ void MTest_Finalize( int errs ) { int rank, toterrs; rank = MPI::COMM_WORLD.Get_rank(); MPI::COMM_WORLD.Allreduce( &errs, &toterrs, 1, MPI::INT, MPI::SUM ); if (rank == 0) { if (toterrs) { cout << " Found " << toterrs << " errors\n"; } else { cout << " No Errors\n"; } cout.flush(); } // Clean up any persistent objects that we allocated MTestRMACleanup(); } /* * Datatypes * * Eventually, this could read a description of a file. For now, we hard * code the choices * */ static int datatype_index = 0; /* * Setup contiguous buffers of n copies of a datatype. */ static void *MTestTypeContigInit( MTestDatatype *mtype ) { MPI::Aint size, lb; if (mtype->count > 0) { signed char *p; int i; MPI::Aint totsize; mtype->datatype.Get_extent( lb, size ); totsize = size * mtype->count; if (!mtype->buf) { mtype->buf = (void *) malloc( totsize ); } p = (signed char *)(mtype->buf); if (!p) { /* Error - out of memory */ MTestError( "Out of memory in type buffer init" ); } for (i=0; ibuf = 0; } return mtype->buf; } /* * Setup contiguous buffers of n copies of a datatype. Initialize for * reception (e.g., set initial data to detect failure) */ static void *MTestTypeContigInitRecv( MTestDatatype *mtype ) { MPI_Aint size; if (mtype->count > 0) { signed char *p; int i; MPI::Aint totsize; MPI_Type_extent( mtype->datatype, &size ); totsize = size * mtype->count; if (!mtype->buf) { mtype->buf = (void *) malloc( totsize ); } p = (signed char *)(mtype->buf); if (!p) { /* Error - out of memory */ MTestError( "Out of memory in type buffer init" ); } for (i=0; ibuf) { free( mtype->buf ); } mtype->buf = 0; } return mtype->buf; } static void *MTestTypeContigFree( MTestDatatype *mtype ) { if (mtype->buf) { free( mtype->buf ); mtype->buf = 0; } return 0; } static int MTestTypeContigCheckbuf( MTestDatatype *mtype ) { unsigned char *p; unsigned char expected; int i, err = 0; MPI_Aint size, totsize; p = (unsigned char *)mtype->buf; if (p) { MPI_Type_extent( mtype->datatype, &size ); totsize = size * mtype->count; for (i=0; iprintErrors && err < 10) { cout << "Data expected = " << hex << expected << " but got " << p[i] << " for the " << dec << i << "th entry\n"; cout.flush(); } } } } return err; } /* ------------------------------------------------------------------------ */ /* Datatype routines for vector datatypes */ /* ------------------------------------------------------------------------ */ static void *MTestTypeVectorInit( MTestDatatype *mtype ) { MPI::Aint size, lb; if (mtype->count > 0) { unsigned char *p; int i, j, k, nc; MPI::Aint totsize; mtype->datatype.Get_extent( lb, size ); totsize = mtype->count * size; if (!mtype->buf) { mtype->buf = (void *) malloc( totsize ); } p = (unsigned char *)(mtype->buf); if (!p) { /* Error - out of memory */ MTestError( "Out of memory in type buffer init" ); } /* First, set to -1 */ for (i=0; icount; k++) { /* For each element (block) */ for (i=0; inelm; i++) { /* For each value */ for (j=0; jblksize; j++) { p[j] = (0xff ^ (nc & 0xff)); nc++; } p += mtype->stride; } } } else { mtype->buf = 0; } return mtype->buf; } static void *MTestTypeVectorFree( MTestDatatype *mtype ) { if (mtype->buf) { free( mtype->buf ); mtype->buf = 0; } return 0; } /* ------------------------------------------------------------------------ */ /* Routines to select a datatype and associated buffer create/fill/check */ /* routines */ /* ------------------------------------------------------------------------ */ /* Create a range of datatypes with a given count elements. This uses a selection of types, rather than an exhaustive collection. It allocates both send and receive types so that they can have the same type signature (collection of basic types) but different type maps (layouts in memory) */ int MTestGetDatatypes( MTestDatatype *sendtype, MTestDatatype *recvtype, int count ) { sendtype->InitBuf = 0; sendtype->FreeBuf = 0; sendtype->CheckBuf = 0; sendtype->datatype = 0; sendtype->isBasic = 0; sendtype->printErrors = 0; recvtype->InitBuf = 0; recvtype->FreeBuf = 0; recvtype->CheckBuf = 0; recvtype->datatype = 0; recvtype->isBasic = 0; recvtype->printErrors = 0; sendtype->buf = 0; recvtype->buf = 0; /* Set the defaults for the message lengths */ sendtype->count = count; recvtype->count = count; /* Use datatype_index to choose a datatype to use. If at the end of the list, return 0 */ switch (datatype_index) { case 0: sendtype->datatype = MPI::INT; sendtype->isBasic = 1; recvtype->datatype = MPI::INT; recvtype->isBasic = 1; break; case 1: sendtype->datatype = MPI::DOUBLE; sendtype->isBasic = 1; recvtype->datatype = MPI::DOUBLE; recvtype->isBasic = 1; break; case 2: sendtype->datatype = MPI::INT; sendtype->isBasic = 1; recvtype->datatype = MPI::BYTE; recvtype->isBasic = 1; recvtype->count *= sizeof(int); break; case 3: sendtype->datatype = MPI::FLOAT_INT; sendtype->isBasic = 1; recvtype->datatype = MPI::FLOAT_INT; recvtype->isBasic = 1; break; case 4: sendtype->datatype = MPI::INT.Dup(); sendtype->datatype.Set_name( "dup of MPI::INT" ); recvtype->datatype = MPI::INT.Dup(); recvtype->datatype.Set_name( "dup of MPI::INT" ); /* dup'ed types are already committed if the original type was committed (MPI-2, section 8.8) */ break; case 5: /* vector send type and contiguous receive type */ /* These sizes are in bytes (see the VectorInit code) */ sendtype->stride = 3 * sizeof(int); sendtype->blksize = sizeof(int); sendtype->nelm = recvtype->count; sendtype->datatype = MPI::INT.Create_vector( recvtype->count, 1, sendtype->stride ); sendtype->datatype.Commit(); sendtype->datatype.Set_name( "int-vector" ); sendtype->count = 1; recvtype->datatype = MPI::INT; recvtype->isBasic = 1; sendtype->InitBuf = MTestTypeVectorInit; recvtype->InitBuf = MTestTypeContigInitRecv; sendtype->FreeBuf = MTestTypeVectorFree; recvtype->FreeBuf = MTestTypeContigFree; sendtype->CheckBuf = 0; recvtype->CheckBuf = MTestTypeContigCheckbuf; break; default: datatype_index = -1; } if (!sendtype->InitBuf) { sendtype->InitBuf = MTestTypeContigInit; recvtype->InitBuf = MTestTypeContigInitRecv; sendtype->FreeBuf = MTestTypeContigFree; recvtype->FreeBuf = MTestTypeContigFree; sendtype->CheckBuf = MTestTypeContigCheckbuf; recvtype->CheckBuf = MTestTypeContigCheckbuf; } datatype_index++; if (dbgflag && datatype_index > 0) { int typesize; cout << wrank << ": sendtype is " << MTestGetDatatypeName( sendtype ) << "\n"; typesize = sendtype->datatype.Get_size(); cout << wrank << ": sendtype size = " << typesize << "\n"; cout << wrank << ": recvtype is " << MTestGetDatatypeName( recvtype ) << "\n"; typesize = recvtype->datatype.Get_size(); cout << wrank << ": recvtype size = " << typesize << "\n"; cout.flush(); } return datatype_index; } /* Reset the datatype index (start from the initial data type. Note: This routine is rarely needed; MTestGetDatatypes automatically starts over after the last available datatype is used. */ void MTestResetDatatypes( void ) { datatype_index = 0; } /* Return the index of the current datatype. This is rarely needed and is provided mostly to enable debugging of the MTest package itself */ int MTestGetDatatypeIndex( void ) { return datatype_index; } void MTestFreeDatatype( MTestDatatype *mtype ) { /* Invoke a datatype-specific free function to handle both the datatype and the send/receive buffers */ if (mtype->FreeBuf) { (mtype->FreeBuf)( mtype ); } // Free the datatype itself if it was created if (!mtype->isBasic) { mtype->datatype.Free(); } } /* Check that a message was received correctly. Returns the number of errors detected. Status may be NULL or MPI_STATUS_IGNORE */ int MTestCheckRecv( MPI::Status &status, MTestDatatype *recvtype ) { int count; int errs = 0; /* Note that status may not be MPI_STATUS_IGNORE; C++ doesn't include MPI_STATUS_IGNORE, instead using different function prototypes that do not include the status argument */ count = status.Get_count( recvtype->datatype ); /* Check count against expected count */ if (count != recvtype->count) { errs ++; } /* Check received data */ if (!errs && recvtype->CheckBuf( recvtype )) { errs++; } return errs; } /* This next routine uses a circular buffer of static name arrays just to simplify the use of the routine */ const char *MTestGetDatatypeName( MTestDatatype *dtype ) { static char name[4][MPI_MAX_OBJECT_NAME]; static int sp=0; int rlen; if (sp >= 4) sp = 0; dtype->datatype.Get_name( name[sp], rlen ); return (const char *)name[sp++]; } /* ----------------------------------------------------------------------- */ /* * Create communicators. Use separate routines for inter and intra * communicators (there is a routine to give both) * Note that the routines may return MPI::COMM_NULL, so code should test for * that return value as well. * */ static int interCommIdx = 0; static int intraCommIdx = 0; static const char *intraCommName = 0; static const char *interCommName = 0; /* * Get an intracommunicator with at least min_size members. If "allowSmaller" * is true, allow the communicator to be smaller than MPI::COMM_WORLD and * for this routine to return MPI::COMM_NULL for some values. Returns 0 if * no more communicators are available. */ int MTestGetIntracommGeneral( MPI::Intracomm &comm, int min_size, bool allowSmaller ) { int size, rank; bool done=false; bool isBasic = false; /* The while loop allows us to skip communicators that are too small. MPI::COMM_NULL is always considered large enough */ while (!done) { switch (intraCommIdx) { case 0: comm = MPI::COMM_WORLD; isBasic = true; intraCommName = "MPI::COMM_WORLD"; break; case 1: /* dup of world */ comm = MPI::COMM_WORLD.Dup(); intraCommName = "Dup of MPI::COMM_WORLD"; break; case 2: /* reverse ranks */ size = MPI::COMM_WORLD.Get_size(); rank = MPI::COMM_WORLD.Get_rank(); comm = MPI::COMM_WORLD.Split( 0, size-rank ); intraCommName = "Rank reverse of MPI::COMM_WORLD"; break; case 3: /* subset of world, with reversed ranks */ size = MPI::COMM_WORLD.Get_size(); rank = MPI::COMM_WORLD.Get_rank(); comm = MPI::COMM_WORLD.Split( (rank < size/2), size-rank ); intraCommName = "Rank reverse of half of MPI::COMM_WORLD"; break; case 4: comm = MPI::COMM_SELF; isBasic = true; intraCommName = "MPI::COMM_SELF"; break; /* These next cases are communicators that include some but not all of the processes */ case 5: case 6: case 7: case 8: { int newsize; size = MPI::COMM_WORLD.Get_size(); newsize = size - (intraCommIdx - 4); if (allowSmaller && newsize >= min_size) { rank = MPI::COMM_WORLD.Get_rank(); comm = MPI::COMM_WORLD.Split( rank < newsize, rank ); if (rank >= newsize) { comm.Free(); comm = MPI::COMM_NULL; } } else { /* Act like default */ comm = MPI::COMM_NULL; isBasic = true; intraCommName = "MPI::COMM_NULL"; intraCommIdx = -1; } } break; /* Other ideas: dup of self, cart comm, graph comm */ default: comm = MPI::COMM_NULL; isBasic = true; intraCommName = "MPI::COMM_NULL"; intraCommIdx = -1; break; } if (comm != MPI::COMM_NULL) { size = comm.Get_size(); if (size >= min_size) done = true; else { /* Try again */ if (!isBasic) comm.Free(); intraCommIdx++; } } else done = true; } intraCommIdx++; return intraCommIdx; } /* * Get an intracommunicator with at least min_size members. */ int MTestGetIntracomm( MPI::Intracomm &comm, int min_size ) { return MTestGetIntracommGeneral( comm, min_size, false ); } /* Return the name of an intra communicator */ const char *MTestGetIntracommName( void ) { return intraCommName; } /* * Return an intercomm; set isLeftGroup to 1 if the calling process is * a member of the "left" group. */ int MTestGetIntercomm( MPI::Intercomm &comm, int &isLeftGroup, int min_size ) { int size, rank, remsize; bool done=false; MPI::Intracomm mcomm; int rleader; /* The while loop allows us to skip communicators that are too small. MPI::COMM_NULL is always considered large enough. The size is the sum of the sizes of the local and remote groups */ while (!done) { comm = MPI::COMM_NULL; isLeftGroup = 0; interCommName = "MPI_COMM_NULL"; switch (interCommIdx) { case 0: /* Split comm world in half */ rank = MPI::COMM_WORLD.Get_rank(); size = MPI::COMM_WORLD.Get_size(); if (size > 1) { mcomm = MPI::COMM_WORLD.Split( (rank < size/2), rank ); if (rank == 0) { rleader = size/2; } else if (rank == size/2) { rleader = 0; } else { /* Remote leader is signficant only for the processes designated local leaders */ rleader = -1; } isLeftGroup = rank < size/2; comm = mcomm.Create_intercomm( 0, MPI::COMM_WORLD, rleader, 12345 ); mcomm.Free(); interCommName = "Intercomm by splitting MPI::COMM_WORLD"; } else { comm = MPI::COMM_NULL; } break; case 1: /* Split comm world in to 1 and the rest */ rank = MPI::COMM_WORLD.Get_rank(); size = MPI::COMM_WORLD.Get_size(); if (size > 1) { mcomm = MPI::COMM_WORLD.Split( rank == 0, rank ); if (rank == 0) { rleader = 1; } else if (rank == 1) { rleader = 0; } else { /* Remote leader is signficant only for the processes designated local leaders */ rleader = -1; } isLeftGroup = rank == 0; comm = mcomm.Create_intercomm( 0, MPI::COMM_WORLD, rleader, 12346 ); mcomm.Free(); interCommName = "Intercomm by splitting MPI::COMM_WORLD into 1, rest"; } else { comm = MPI::COMM_NULL; } break; case 2: /* Split comm world in to 2 and the rest */ rank = MPI::COMM_WORLD.Get_rank(); size = MPI::COMM_WORLD.Get_size(); if (size > 3) { mcomm = MPI::COMM_WORLD.Split( rank < 2, rank ); if (rank == 0) { rleader = 2; } else if (rank == 2) { rleader = 0; } else { /* Remote leader is signficant only for the processes designated local leaders */ rleader = -1; } isLeftGroup = rank < 2; comm = mcomm.Create_intercomm( 0, MPI::COMM_WORLD, rleader, 12347 ); mcomm.Free(); interCommName = "Intercomm by splitting MPI::COMM_WORLD into 2, rest"; } else { comm = MPI::COMM_NULL; } break; default: comm = MPI::COMM_NULL; interCommName = "MPI::COMM_NULL"; interCommIdx = -1; break; } if (comm != MPI::COMM_NULL) { size = comm.Get_size(); remsize = comm.Get_remote_size(); if (size + remsize >= min_size) done = true; } else done = true; /* we are only done if all processes are done */ MPI::COMM_WORLD.Allreduce(MPI_IN_PLACE, &done, 1, MPI::BOOL, MPI::LAND); /* Advance the comm index whether we are done or not, otherwise we could * spin forever trying to allocate a too-small communicator over and * over again. */ interCommIdx++; if (!done && comm != MPI::COMM_NULL) { comm.Free(); } } return interCommIdx; } /* Return the name of an intercommunicator */ const char *MTestGetIntercommName( void ) { return interCommName; } /* Get a communicator of a given minimum size. Both intra and inter communicators are provided Because Comm is an abstract base class, you can only have references to a Comm.*/ int MTestGetComm( MPI::Comm **comm, int min_size ) { int idx; static int getinter = 0; if (!getinter) { MPI::Intracomm rcomm; idx = MTestGetIntracomm( rcomm, min_size ); if (idx == 0) { getinter = 1; } else { MPI::Intracomm *ncomm = new MPI::Intracomm(rcomm); *comm = ncomm; } } if (getinter) { MPI::Intercomm icomm; int isLeft; idx = MTestGetIntercomm( icomm, isLeft, min_size ); if (idx == 0) { getinter = 0; } else { MPI::Intercomm *ncomm = new MPI::Intercomm(icomm); *comm = ncomm; } } return idx; } /* Free a communicator. It may be called with a predefined communicator or MPI_COMM_NULL */ void MTestFreeComm( MPI::Comm &comm ) { if (comm != MPI::COMM_WORLD && comm != MPI::COMM_SELF && comm != MPI::COMM_NULL) { comm.Free(); } } /* ------------------------------------------------------------------------ */ void MTestPrintError( int errcode ) { int errclass, slen; char string[MPI_MAX_ERROR_STRING]; errclass = MPI::Get_error_class( errcode ); MPI::Get_error_string( errcode, string, slen ); cout << "Error class " << errclass << "(" << string << ")\n"; cout.flush(); } void MTestPrintErrorMsg( const char msg[], int errcode ) { int errclass, slen; char string[MPI_MAX_ERROR_STRING]; errclass = MPI::Get_error_class( errcode ); MPI::Get_error_string( errcode, string, slen ); cout << msg << ": Error class " << errclass << " (" << string << ")\n"; cout.flush(); } /* ------------------------------------------------------------------------ */ /* Fatal error. Report and exit */ void MTestError( const char *msg ) { cerr << msg << "\n"; cerr.flush(); MPI::COMM_WORLD.Abort(1); } #ifdef HAVE_MPI_WIN_CREATE /* * Create MPI Windows */ static int win_index = 0; static const char *winName; /* Use an attribute to remember the type of memory allocation (static, malloc, or MPI_Alloc_mem) */ static int mem_keyval = MPI::KEYVAL_INVALID; int MTestGetWin( MPI::Win &win, bool mustBePassive ) { static char actbuf[1024]; static char *pasbuf; char *buf; int n, rank; MPI::Info info; if (mem_keyval == MPI::KEYVAL_INVALID) { /* Create the keyval */ mem_keyval = MPI::Win::Create_keyval( MPI::Win::NULL_COPY_FN, MPI::Win::NULL_DELETE_FN, 0 ); } switch (win_index) { case 0: /* Active target window */ win = MPI::Win::Create( actbuf, 1024, 1, MPI::INFO_NULL, MPI::COMM_WORLD ); winName = "active-window"; win.Set_attr( mem_keyval, (void *)0 ); break; case 1: /* Passive target window */ pasbuf = (char *)MPI::Alloc_mem( 1024, MPI::INFO_NULL ); win = MPI::Win::Create( pasbuf, 1024, 1, MPI::INFO_NULL, MPI::COMM_WORLD ); winName = "passive-window"; win.Set_attr( mem_keyval, (void *)2 ); break; case 2: /* Active target; all windows different sizes */ rank = MPI::COMM_WORLD.Get_rank(); n = rank * 64; if (n) buf = (char *)malloc( n ); else buf = 0; win = MPI::Win::Create( buf, n, 1, MPI::INFO_NULL, MPI::COMM_WORLD ); winName = "active-all-different-win"; win.Set_attr( mem_keyval, (void *)1 ); break; case 3: /* Active target, no locks set */ rank = MPI::COMM_WORLD.Get_rank(); n = rank * 64; if (n) buf = (char *)malloc( n ); else buf = 0; info = MPI::Info::Create( ); info.Set( "nolocks", "true" ); win = MPI::Win::Create( buf, n, 1, info, MPI::COMM_WORLD ); info.Free(); winName = "active-nolocks-all-different-win"; win.Set_attr( mem_keyval, (void *)1 ); break; default: win_index = -1; } win_index++; return win_index; } /* Return a pointer to the name associated with a window object */ const char *MTestGetWinName( void ) { return winName; } /* Free the storage associated with a window object */ void MTestFreeWin( MPI::Win &win ) { void *addr; bool flag; flag = win.Get_attr( MPI_WIN_BASE, &addr ); if (!flag) { MTestError( "Could not get WIN_BASE from window" ); } if (addr) { void *val; flag = win.Get_attr( mem_keyval, &val ); if (flag) { if (val == (void *)1) { free( addr ); } else if (val == (void *)2) { MPI::Free_mem( addr ); } /* if val == (void *)0, then static data that must not be freed */ } } win.Free(); } static void MTestRMACleanup( void ) { if (mem_keyval != MPI::KEYVAL_INVALID) { MPI::Win::Free_keyval( mem_keyval ); } } #else static void MTestRMACleanup( void ) {} #endif mpi-testsuite-3.2+dfsg/cxx/comm/0000755000175000017500000000000012621010232016103 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/cxx/comm/testlist0000644000175000017500000000001412620254305017706 0ustar mbanckmbanckcommname2 4 mpi-testsuite-3.2+dfsg/cxx/comm/Makefile.in0000644000175000017500000004560412621010232020161 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = commname2$(EXEEXT) subdir = cxx/comm ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am_commname2_OBJECTS = commname2.$(OBJEXT) commname2_OBJECTS = $(am_commname2_OBJECTS) commname2_LDADD = $(LDADD) commname2_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = SOURCES = $(commname2_SOURCES) DIST_SOURCES = $(commname2_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_cxx.mtest $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/cxx/util/mtest.o CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist commname2_SOURCES = commname2.cxx all: all-am .SUFFIXES: .SUFFIXES: .cxx .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_cxx.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign cxx/comm/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign cxx/comm/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_cxx.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) commname2$(EXEEXT): $(commname2_OBJECTS) $(commname2_DEPENDENCIES) $(EXTRA_commname2_DEPENDENCIES) @rm -f commname2$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(commname2_OBJECTS) $(commname2_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/commname2.Po@am__quote@ .cxx.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cxx.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/cxx/util/mtest.o: $(top_srcdir)/cxx/util/mtest.cxx (cd $(top_builddir)/cxx/util && $(MAKE) mtest.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/cxx/comm/Makefile.am0000644000175000017500000000042012620254305020145 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_cxx.mtest EXTRA_DIST = testlist noinst_PROGRAMS = commname2 commname2_SOURCES = commname2.cxx mpi-testsuite-3.2+dfsg/cxx/comm/commname2.cxx0000644000175000017500000000400412620254305020515 0ustar mbanckmbanck/* -*- Mode: C++; c-basic-offset:4 ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #ifdef HAVE_IOSTREAM // Not all C++ compilers have iostream instead of iostream.h #include #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include #include #include "mpitestcxx.h" int main( int argc, char **argv ) { int errs = 0; char name[MPI_MAX_OBJECT_NAME], tname[MPI_MAX_OBJECT_NAME]; int rlen; int i, n; MPI::Comm *(comm[10]); MTest_Init( ); // Test predefined names MPI::COMM_WORLD.Get_name( name, rlen ); if (strcmp( name, "MPI_COMM_WORLD" ) != 0) { errs ++; cout << "Name of COMM_WORLD was " << name << "\n"; } if (rlen != strlen(name)) { errs++; cout << "Resultlen for COMM_WORLD is incorrect: " << rlen << "\n"; } MPI::COMM_SELF.Get_name( name, rlen ); if (strcmp( name, "MPI_COMM_SELF" ) != 0) { errs ++; cout << "Name of COMM_SELF was " << name << "\n"; } if (rlen != strlen(name)) { errs++; cout << "Resultlen for COMM_SELF is incorrect: " << rlen << "\n"; } // Reset name of comm_world MPI::COMM_WORLD.Set_name( "FooBar !" ); MPI::COMM_WORLD.Get_name( name, rlen ); if (strcmp( name, "FooBar !" ) != 0) { errs ++; cout << "Changed name of COMM_WORLD was " << name << "\n"; } // Test a few other communicators n = 0; while (MTestGetComm( &comm[n], 1 ) && n < 4) { sprintf( name, "test%d", n ); comm[n]->Set_name( name ); n++; } for (i=0; iGet_name( name, rlen ); if (strcmp( name, tname ) != 0) { errs++; cout << "comm[" << i << "] gave name " << name << "\n"; } MTestFreeComm ( *comm[i] ); } MTest_Finalize( errs ); MPI::Finalize(); return 0; } mpi-testsuite-3.2+dfsg/cxx/testlist.in0000644000175000017500000000012012620254305017356 0ustar mbanckmbanckattr pt2pt comm coll errhan init info datatype topo @iodir@ @spawndir@ @rmadir@ mpi-testsuite-3.2+dfsg/cxx/errhan/0000755000175000017500000000000012621010232016427 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/cxx/errhan/commcallx.cxx0000644000175000017500000000545112620254305021151 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #ifdef HAVE_IOSTREAM // Not all C++ compilers have iostream instead of iostream.h #include #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include #include "mpitestcxx.h" #ifdef HAVE_STRING_H #include #endif static char MTEST_Descrip[] = "Test comm_call_errhandler"; static int calls = 0; static int errs = 0; static MPI::Intracomm mycomm; void eh( MPI::Comm &comm, int *err, ... ) { if (*err != MPI_ERR_OTHER) { errs++; cout << "Unexpected error code\n"; } if (comm != mycomm) { char cname[MPI_MAX_OBJECT_NAME]; int len; errs++; cout << "Unexpected communicator\n"; comm.Get_name( cname, len ); cout << "Comm is " << cname << "\n"; mycomm.Get_name( cname, len ); cout << "mycomm is " << cname << "\n"; } calls++; return; } int main( int argc, char *argv[] ) { MPI::Intracomm comm; MPI::Errhandler newerr; int i; int reset_handler; MTest_Init( ); comm = MPI::COMM_WORLD; mycomm = comm; mycomm.Set_name( "dup of comm_world" ); newerr = MPI::Comm::Create_errhandler( eh ); comm.Set_errhandler( newerr ); comm.Call_errhandler( MPI_ERR_OTHER ); newerr.Free(); if (calls != 1) { errs++; cout << "Error handler not called\n"; } // Here we apply the test to many copies of a communicator for (reset_handler = 0; reset_handler <= 1; ++reset_handler) { for (i=0; i<1000; i++) { MPI::Intracomm comm2; calls = 0; comm = MPI::COMM_WORLD.Dup(); mycomm = comm; mycomm.Set_name( "dup of comm_world" ); newerr = MPI::Comm::Create_errhandler( eh ); comm.Set_errhandler( newerr ); comm.Call_errhandler( MPI_ERR_OTHER ); if (calls != 1) { errs++; cout << "Error handler not called\n"; } comm2 = comm.Dup(); calls = 0; mycomm = comm2; mycomm.Set_name( "dup of dup of comm_world" ); // comm2 must inherit the error handler from comm comm2.Call_errhandler( MPI_ERR_OTHER ); if (calls != 1) { errs++; cout << "Error handler not called\n"; } if (reset_handler) { // extra checking of the reference count handling comm.Set_errhandler( MPI::ERRORS_THROW_EXCEPTIONS ); } newerr.Free(); comm.Free(); comm2.Free(); } } MTest_Finalize( errs ); MPI::Finalize(); return 0; } mpi-testsuite-3.2+dfsg/cxx/errhan/testlist0000644000175000017500000000001412620254305020232 0ustar mbanckmbanckcommcallx 2 mpi-testsuite-3.2+dfsg/cxx/errhan/Makefile.in0000644000175000017500000004561212621010232020504 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = commcallx$(EXEEXT) subdir = cxx/errhan ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am_commcallx_OBJECTS = commcallx.$(OBJEXT) commcallx_OBJECTS = $(am_commcallx_OBJECTS) commcallx_LDADD = $(LDADD) commcallx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = SOURCES = $(commcallx_SOURCES) DIST_SOURCES = $(commcallx_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_cxx.mtest $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/cxx/util/mtest.o CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist commcallx_SOURCES = commcallx.cxx all: all-am .SUFFIXES: .SUFFIXES: .cxx .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_cxx.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign cxx/errhan/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign cxx/errhan/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_cxx.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) commcallx$(EXEEXT): $(commcallx_OBJECTS) $(commcallx_DEPENDENCIES) $(EXTRA_commcallx_DEPENDENCIES) @rm -f commcallx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(commcallx_OBJECTS) $(commcallx_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/commcallx.Po@am__quote@ .cxx.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cxx.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/cxx/util/mtest.o: $(top_srcdir)/cxx/util/mtest.cxx (cd $(top_builddir)/cxx/util && $(MAKE) mtest.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/cxx/errhan/Makefile.am0000644000175000017500000000077012620254305020501 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_cxx.mtest EXTRA_DIST = testlist noinst_PROGRAMS = commcallx commcallx_SOURCES = commcallx.cxx ## other simplemake directives that were commented out ##adderr_SOURCES = adderr.c ##errstring_SOURCES = errstring.c ##errcode_SOURCES = errcode.c errmsg.c ##errring_SOURCES = errring.c ##EXTRA_PROGRAMS = errcode errring errstring mpi-testsuite-3.2+dfsg/cxx/pt2pt/0000755000175000017500000000000012621010232016221 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/cxx/pt2pt/bsend1cxx.cxx0000644000175000017500000000600312620254305020655 0ustar mbanckmbanck/* -*- Mode: C++; c-basic-offset:4 ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Thanks to Jim Hoekstra of Iowa State University for several important bug fixes */ #include "mpi.h" #include "mpitestconf.h" #include "mpitestcxx.h" #ifdef HAVE_IOSTREAM // Not all C++ compilers have iostream instead of iostream.h #include #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif /* Needed for strcmp */ #include /* Rather than deal with the need to declare strncpy correctly (avoiding possible conflicts with other header files), we simply define a copy routine that is used for this example */ void CopyChars( char *, int, const char * ); void CopyChars( char *dest, int len, const char *src ) { int i; for (i=0; i&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = bsend1cxx$(EXEEXT) sendrecvx$(EXEEXT) subdir = cxx/pt2pt ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am_bsend1cxx_OBJECTS = bsend1cxx.$(OBJEXT) bsend1cxx_OBJECTS = $(am_bsend1cxx_OBJECTS) bsend1cxx_LDADD = $(LDADD) bsend1cxx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o am_sendrecvx_OBJECTS = sendrecvx.$(OBJEXT) sendrecvx_OBJECTS = $(am_sendrecvx_OBJECTS) sendrecvx_LDADD = $(LDADD) sendrecvx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = SOURCES = $(bsend1cxx_SOURCES) $(sendrecvx_SOURCES) DIST_SOURCES = $(bsend1cxx_SOURCES) $(sendrecvx_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_cxx.mtest $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/cxx/util/mtest.o CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist bsend1cxx_SOURCES = bsend1cxx.cxx sendrecvx_SOURCES = sendrecvx.cxx all: all-am .SUFFIXES: .SUFFIXES: .cxx .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_cxx.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign cxx/pt2pt/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign cxx/pt2pt/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_cxx.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) bsend1cxx$(EXEEXT): $(bsend1cxx_OBJECTS) $(bsend1cxx_DEPENDENCIES) $(EXTRA_bsend1cxx_DEPENDENCIES) @rm -f bsend1cxx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(bsend1cxx_OBJECTS) $(bsend1cxx_LDADD) $(LIBS) sendrecvx$(EXEEXT): $(sendrecvx_OBJECTS) $(sendrecvx_DEPENDENCIES) $(EXTRA_sendrecvx_DEPENDENCIES) @rm -f sendrecvx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(sendrecvx_OBJECTS) $(sendrecvx_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bsend1cxx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendrecvx.Po@am__quote@ .cxx.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cxx.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/cxx/util/mtest.o: $(top_srcdir)/cxx/util/mtest.cxx (cd $(top_builddir)/cxx/util && $(MAKE) mtest.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/cxx/pt2pt/sendrecvx.cxx0000644000175000017500000000250312620254305020760 0ustar mbanckmbanck/* -*- Mode: C++; c-basic-offset:4 ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. * */ /* style: c++ header */ /* * Simple test program for C++ binding */ /* #include */ #include "mpi.h" #include "mpitestconf.h" #include "mpitestcxx.h" #ifdef HAVE_IOSTREAM // Not all C++ compilers have iostream instead of iostream.h #include #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif int main( int argc, char *argv[] ) { int rank, size, errs = 0; MTest_Init(); rank = MPI::COMM_WORLD.Get_rank(); size = MPI::COMM_WORLD.Get_size(); if (size < 2) { cerr << "Size of comm_world must be at least 2\n"; MPI::COMM_WORLD.Abort(1); } if (rank == 0) { int *buf = new int[100]; int i; for (i=0; i<100; i++) buf[i] = i; MPI::COMM_WORLD.Send( buf, 100, MPI::INT, size-1, 0 ); } else if (rank == size - 1) { int *buf = new int[100]; int i; MPI::COMM_WORLD.Recv( buf, 100, MPI::INT, 0, 0 ); for (i=0; i<100; i++) { if (buf[i] != i) { errs++; cerr << "Error: buf[" << i << "] = " << buf[i] << "\n"; } } } MTest_Finalize( errs ); MPI::Finalize(); return 0; } mpi-testsuite-3.2+dfsg/cxx/pt2pt/Makefile.am0000644000175000017500000000047412620254305020274 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_cxx.mtest EXTRA_DIST = testlist noinst_PROGRAMS = bsend1cxx sendrecvx bsend1cxx_SOURCES = bsend1cxx.cxx sendrecvx_SOURCES = sendrecvx.cxx mpi-testsuite-3.2+dfsg/cxx/io/0000755000175000017500000000000012621010232015557 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/cxx/io/filemiscx.cxx0000644000175000017500000001434012620254305020302 0ustar mbanckmbanck/* -*- Mode: C++; c-basic-offset:4 ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #ifdef HAVE_IOSTREAM // Not all C++ compilers have iostream instead of iostream.h #include #ifdef HAVE_NAMESPACE_STD // Those that do need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include #include #include "mpitestcxx.h" /* tests various miscellaneous functions. */ /* This is a C++ version of romio/test/misc.c */ #define VERBOSE 0 int main(int argc, char **argv) { int buf[1024], amode, mynod, len, i; bool flag; int errs = 0, toterrs; MPI::File fh; MPI::Status status; MPI::Datatype newtype; MPI::Offset disp, offset; MPI::Group group; MPI::Datatype etype, filetype; char datarep[25], *filename; MPI::Init(); try { mynod = MPI::COMM_WORLD.Get_rank(); /* process 0 takes the file name as a command-line argument and broadcasts it to other processes */ if (!mynod) { i = 1; while ((i < argc) && strcmp("-fname", *argv)) { i++; argv++; } if (i >= argc) { len = (int)strlen("iotest.txt"); filename = new char [len+1]; strcpy( filename, "iotest.txt" ); } else { argv++; len = (int)strlen(*argv); filename = new char [len+1]; strcpy(filename, *argv); } MPI::COMM_WORLD.Bcast(&len, 1, MPI::INT, 0 ); MPI::COMM_WORLD.Bcast(filename, len+1, MPI::CHAR, 0 ); } else { MPI::COMM_WORLD.Bcast(&len, 1, MPI::INT, 0 ); filename = new char [len+1]; MPI::COMM_WORLD.Bcast(filename, len+1, MPI::CHAR, 0 ); } fh = MPI::File::Open(MPI::COMM_WORLD, filename, MPI::MODE_CREATE | MPI::MODE_RDWR, MPI::INFO_NULL ); fh.Write( buf, 1024, MPI::INT ); fh.Sync(); amode = fh.Get_amode(); #if VERBOSE if (!mynod) { cout << "testing File::_get_amode\n"; cout.flush(); } #endif if (amode != (MPI::MODE_CREATE | MPI::MODE_RDWR)) { errs++; cout << "amode is " << amode << ", should be " << (int)(MPI::MODE_CREATE | MPI::MODE_RDWR) << "\n"; cout.flush(); } flag = fh.Get_atomicity(); if (flag) { errs++; cout << "atomicity is " << flag << ", should be false\n"; cout.flush(); } #if VERBOSE if (!mynod) { cout << "setting atomic mode\n"; cout.flush(); } #endif try { fh.Set_atomicity( true ); } catch (MPI::Exception e) { cout << "Exception thrown in Set_atomicity, Error: " << e.Get_error_string() << endl; cout.flush(); } try { flag = fh.Get_atomicity(); } catch (MPI::Exception e) { cout << "Exception thrown in Get_atomicity, Error: " << e.Get_error_string() << endl; cout.flush(); flag = false; } if (!flag) { errs++; cout << "atomicity is " << flag << ", should be true\n"; cout.flush(); } fh.Set_atomicity( false ); #if VERBOSE if (!mynod) { cout << "reverting back to nonatomic mode\n"; cout.flush(); } #endif newtype = MPI::INT.Create_vector( 10, 10, 20 ); newtype.Commit(); fh.Set_view( 1000, MPI::INT, newtype, "native", MPI::INFO_NULL); #if VERBOSE if (!mynod) { cout << "testing File::_get_view\n"; cout.flush(); } #endif fh.Get_view( disp, etype, filetype, datarep ); if ((disp != 1000) || strcmp(datarep, "native")) { errs++; cout << "disp = " << disp << " datarep = " << datarep << ", should be 1000, native\n\n"; cout.flush(); } #if VERBOSE if (!mynod) { cout << "testing File::_get_byte_offset\n"; cout.flush(); } #endif disp = fh.Get_byte_offset( 10 ); if (disp != (1000+20*sizeof(int))) { errs++; cout << "byte offset = " << disp << ", should be " << (int) (1000+20*sizeof(int)) << "\n"; cout.flush(); } group = fh.Get_group(); #if VERBOSE if (!mynod) { cout << "testing File::_set_size\n"; cout.flush(); } #endif fh.Set_size( 1000+15*sizeof(int) ); MPI::COMM_WORLD.Barrier(); fh.Sync(); disp = fh.Get_size(); if (disp != 1000+15*sizeof(int)) { errs++; cout << "file size = " << disp << ", should be " << (int) (1000+15*sizeof(int)) << "\n"; cout.flush(); } #if VERBOSE if (!mynod) { cout << "seeking to eof and testing File::_get_position\n"; cout.flush(); } #endif fh.Seek( 0, MPI_SEEK_END ); disp = fh.Get_position(); if (disp != 10) { errs++; cout << "file pointer posn = " << disp << ", should be 10\n\n"; cout.flush(); } #if VERBOSE if (!mynod) { cout << "testing File::_get_byte_offset\n"; cout.flush(); } #endif offset = fh.Get_byte_offset( disp ); if (offset != (1000+20*sizeof(int))) { errs++; cout << "byte offset = " << offset << ", should be " << (int) (1000+20*sizeof(int)) << "\n"; cout.flush(); } MPI::COMM_WORLD.Barrier(); #if VERBOSE if (!mynod) { cout << "testing File::_seek with MPI_SEEK_CUR\n"; cout.flush(); } #endif fh.Seek( -10, MPI_SEEK_CUR ); disp = fh.Get_position(); offset = fh.Get_byte_offset( disp ); if (offset != 1000) { errs++; cout << "file pointer posn in bytes = " << offset << ", should be 1000\n\n"; cout.flush(); } #if VERBOSE if (!mynod) { cout << "preallocating disk space up to 8192 bytes\n"; cout.flush(); } #endif fh.Preallocate( 8192 ); #if VERBOSE if (!mynod) { cout << "closing the file and deleting it\n"; cout.flush(); } #endif fh.Close(); MPI::COMM_WORLD.Barrier(); if (!mynod) MPI::File::Delete(filename, MPI::INFO_NULL); MPI::COMM_WORLD.Allreduce( &errs, &toterrs, 1, MPI::INT, MPI::SUM ); if (mynod == 0) { if( toterrs > 0) { cout << "Found " << toterrs << "\n"; cout.flush(); } else { cout << " No Errors\n"; cout.flush(); } } newtype.Free(); filetype.Free(); group.Free(); delete [] filename; } catch (MPI::Exception e) { cout << "Unhandled MPI exception caught: code " << e.Get_error_code() << ", class " << e.Get_error_class() << ", string \"" << e.Get_error_string() << "\"" << endl; cout.flush(); } catch (...) { cout << "Unhandled exception caught.\n"; cout.flush(); } MPI::Finalize(); return 0; } mpi-testsuite-3.2+dfsg/cxx/io/testlist0000644000175000017500000000062412620254305017371 0ustar mbanckmbanckiwriteatx 4 iwritex 4 iwriteshx 4 writex 4 writeatx 4 writeallx 4 writeshx 4 writeordx 4 writeatallx 4 writeatallbex 4 writeallbex 4 writeordbex 4 iwriteatnosx 4 iwritenosx 4 iwriteshnosx 4 writenosx 4 writeatnosx 4 writeallnosx 4 writeshnosx 4 writeordnosx 4 writeatallnosx 4 writeatallbenosx 4 writeallbenosx 4 writeordbenosx 4 fileerrx 1 fileinfox 3 filemiscx 4 shpositionx 4 seekavail 1mpi-testsuite-3.2+dfsg/cxx/io/Makefile.in0000644000175000017500000011143312621010232017627 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = iwriteatx$(EXEEXT) iwritex$(EXEEXT) \ iwriteshx$(EXEEXT) writex$(EXEEXT) writeatx$(EXEEXT) \ writeallx$(EXEEXT) writeatallx$(EXEEXT) writeallbex$(EXEEXT) \ writeordx$(EXEEXT) writeordbex$(EXEEXT) writeshx$(EXEEXT) \ writeatallbex$(EXEEXT) iwriteatnosx$(EXEEXT) \ iwritenosx$(EXEEXT) iwriteshnosx$(EXEEXT) writenosx$(EXEEXT) \ writeatnosx$(EXEEXT) writeallnosx$(EXEEXT) \ writeatallnosx$(EXEEXT) writeallbenosx$(EXEEXT) \ writeordnosx$(EXEEXT) writeordbenosx$(EXEEXT) \ writeshnosx$(EXEEXT) writeatallbenosx$(EXEEXT) \ fileerrx$(EXEEXT) fileinfox$(EXEEXT) shpositionx$(EXEEXT) \ setinfox$(EXEEXT) filemiscx$(EXEEXT) seekavail$(EXEEXT) subdir = cxx/io ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) fileerrx_SOURCES = fileerrx.cxx fileerrx_OBJECTS = fileerrx.$(OBJEXT) fileerrx_LDADD = $(LDADD) fileerrx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o fileinfox_SOURCES = fileinfox.cxx fileinfox_OBJECTS = fileinfox.$(OBJEXT) fileinfox_LDADD = $(LDADD) fileinfox_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o filemiscx_SOURCES = filemiscx.cxx filemiscx_OBJECTS = filemiscx.$(OBJEXT) filemiscx_LDADD = $(LDADD) filemiscx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o nodist_iwriteatnosx_OBJECTS = iwriteatnosx.$(OBJEXT) iwriteatnosx_OBJECTS = $(nodist_iwriteatnosx_OBJECTS) iwriteatnosx_LDADD = $(LDADD) iwriteatnosx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o nodist_iwriteatx_OBJECTS = iwriteatx.$(OBJEXT) iwriteatx_OBJECTS = $(nodist_iwriteatx_OBJECTS) iwriteatx_LDADD = $(LDADD) iwriteatx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o nodist_iwritenosx_OBJECTS = iwritenosx.$(OBJEXT) iwritenosx_OBJECTS = $(nodist_iwritenosx_OBJECTS) iwritenosx_LDADD = $(LDADD) iwritenosx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o nodist_iwriteshnosx_OBJECTS = iwriteshnosx.$(OBJEXT) iwriteshnosx_OBJECTS = $(nodist_iwriteshnosx_OBJECTS) iwriteshnosx_LDADD = $(LDADD) iwriteshnosx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o nodist_iwriteshx_OBJECTS = iwriteshx.$(OBJEXT) iwriteshx_OBJECTS = $(nodist_iwriteshx_OBJECTS) iwriteshx_LDADD = $(LDADD) iwriteshx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o nodist_iwritex_OBJECTS = iwritex.$(OBJEXT) iwritex_OBJECTS = $(nodist_iwritex_OBJECTS) iwritex_LDADD = $(LDADD) iwritex_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o seekavail_SOURCES = seekavail.cxx seekavail_OBJECTS = seekavail.$(OBJEXT) seekavail_LDADD = $(LDADD) seekavail_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o setinfox_SOURCES = setinfox.cxx setinfox_OBJECTS = setinfox.$(OBJEXT) setinfox_LDADD = $(LDADD) setinfox_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o shpositionx_SOURCES = shpositionx.cxx shpositionx_OBJECTS = shpositionx.$(OBJEXT) shpositionx_LDADD = $(LDADD) shpositionx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o nodist_writeallbenosx_OBJECTS = writeallbenosx.$(OBJEXT) writeallbenosx_OBJECTS = $(nodist_writeallbenosx_OBJECTS) writeallbenosx_LDADD = $(LDADD) writeallbenosx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o nodist_writeallbex_OBJECTS = writeallbex.$(OBJEXT) writeallbex_OBJECTS = $(nodist_writeallbex_OBJECTS) writeallbex_LDADD = $(LDADD) writeallbex_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o nodist_writeallnosx_OBJECTS = writeallnosx.$(OBJEXT) writeallnosx_OBJECTS = $(nodist_writeallnosx_OBJECTS) writeallnosx_LDADD = $(LDADD) writeallnosx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o nodist_writeallx_OBJECTS = writeallx.$(OBJEXT) writeallx_OBJECTS = $(nodist_writeallx_OBJECTS) writeallx_LDADD = $(LDADD) writeallx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o nodist_writeatallbenosx_OBJECTS = writeatallbenosx.$(OBJEXT) writeatallbenosx_OBJECTS = $(nodist_writeatallbenosx_OBJECTS) writeatallbenosx_LDADD = $(LDADD) writeatallbenosx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o nodist_writeatallbex_OBJECTS = writeatallbex.$(OBJEXT) writeatallbex_OBJECTS = $(nodist_writeatallbex_OBJECTS) writeatallbex_LDADD = $(LDADD) writeatallbex_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o nodist_writeatallnosx_OBJECTS = writeatallnosx.$(OBJEXT) writeatallnosx_OBJECTS = $(nodist_writeatallnosx_OBJECTS) writeatallnosx_LDADD = $(LDADD) writeatallnosx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o nodist_writeatallx_OBJECTS = writeatallx.$(OBJEXT) writeatallx_OBJECTS = $(nodist_writeatallx_OBJECTS) writeatallx_LDADD = $(LDADD) writeatallx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o nodist_writeatnosx_OBJECTS = writeatnosx.$(OBJEXT) writeatnosx_OBJECTS = $(nodist_writeatnosx_OBJECTS) writeatnosx_LDADD = $(LDADD) writeatnosx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o nodist_writeatx_OBJECTS = writeatx.$(OBJEXT) writeatx_OBJECTS = $(nodist_writeatx_OBJECTS) writeatx_LDADD = $(LDADD) writeatx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o nodist_writenosx_OBJECTS = writenosx.$(OBJEXT) writenosx_OBJECTS = $(nodist_writenosx_OBJECTS) writenosx_LDADD = $(LDADD) writenosx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o nodist_writeordbenosx_OBJECTS = writeordbenosx.$(OBJEXT) writeordbenosx_OBJECTS = $(nodist_writeordbenosx_OBJECTS) writeordbenosx_LDADD = $(LDADD) writeordbenosx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o nodist_writeordbex_OBJECTS = writeordbex.$(OBJEXT) writeordbex_OBJECTS = $(nodist_writeordbex_OBJECTS) writeordbex_LDADD = $(LDADD) writeordbex_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o nodist_writeordnosx_OBJECTS = writeordnosx.$(OBJEXT) writeordnosx_OBJECTS = $(nodist_writeordnosx_OBJECTS) writeordnosx_LDADD = $(LDADD) writeordnosx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o nodist_writeordx_OBJECTS = writeordx.$(OBJEXT) writeordx_OBJECTS = $(nodist_writeordx_OBJECTS) writeordx_LDADD = $(LDADD) writeordx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o nodist_writeshnosx_OBJECTS = writeshnosx.$(OBJEXT) writeshnosx_OBJECTS = $(nodist_writeshnosx_OBJECTS) writeshnosx_LDADD = $(LDADD) writeshnosx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o nodist_writeshx_OBJECTS = writeshx.$(OBJEXT) writeshx_OBJECTS = $(nodist_writeshx_OBJECTS) writeshx_LDADD = $(LDADD) writeshx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o nodist_writex_OBJECTS = writex.$(OBJEXT) writex_OBJECTS = $(nodist_writex_OBJECTS) writex_LDADD = $(LDADD) writex_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = SOURCES = fileerrx.cxx fileinfox.cxx filemiscx.cxx \ $(nodist_iwriteatnosx_SOURCES) $(nodist_iwriteatx_SOURCES) \ $(nodist_iwritenosx_SOURCES) $(nodist_iwriteshnosx_SOURCES) \ $(nodist_iwriteshx_SOURCES) $(nodist_iwritex_SOURCES) \ seekavail.cxx setinfox.cxx shpositionx.cxx \ $(nodist_writeallbenosx_SOURCES) $(nodist_writeallbex_SOURCES) \ $(nodist_writeallnosx_SOURCES) $(nodist_writeallx_SOURCES) \ $(nodist_writeatallbenosx_SOURCES) \ $(nodist_writeatallbex_SOURCES) \ $(nodist_writeatallnosx_SOURCES) $(nodist_writeatallx_SOURCES) \ $(nodist_writeatnosx_SOURCES) $(nodist_writeatx_SOURCES) \ $(nodist_writenosx_SOURCES) $(nodist_writeordbenosx_SOURCES) \ $(nodist_writeordbex_SOURCES) $(nodist_writeordnosx_SOURCES) \ $(nodist_writeordx_SOURCES) $(nodist_writeshnosx_SOURCES) \ $(nodist_writeshx_SOURCES) $(nodist_writex_SOURCES) DIST_SOURCES = fileerrx.cxx fileinfox.cxx filemiscx.cxx seekavail.cxx \ setinfox.cxx shpositionx.cxx am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_cxx.mtest $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/cxx/util/mtest.o # just in case CLEANFILES = summary.xml summary.tap gen-src-tmp gen-src-stamp EXTRA_DIST = testlist ioharness.defn ioharness.tlt # avoid having to write many "foo_SOURCES = foo.cxx" lines AM_DEFAULT_SOURCE_EXT = .cxx # We don't want to distribute these source files because they are created by # "testmerge", hence "nodist_foo_SOURCES" nodist_iwriteatx_SOURCES = iwriteatx.cxx nodist_iwritex_SOURCES = iwritex.cxx nodist_iwriteshx_SOURCES = iwriteshx.cxx nodist_writex_SOURCES = writex.cxx nodist_writeatx_SOURCES = writeatx.cxx nodist_writeallx_SOURCES = writeallx.cxx nodist_writeatallx_SOURCES = writeatallx.cxx nodist_writeallbex_SOURCES = writeallbex.cxx nodist_writeordx_SOURCES = writeordx.cxx nodist_writeordbex_SOURCES = writeordbex.cxx nodist_writeshx_SOURCES = writeshx.cxx nodist_writeatallbex_SOURCES = writeatallbex.cxx nodist_iwriteatnosx_SOURCES = iwriteatnosx.cxx nodist_iwritenosx_SOURCES = iwritenosx.cxx nodist_iwriteshnosx_SOURCES = iwriteshnosx.cxx nodist_writenosx_SOURCES = writenosx.cxx nodist_writeatnosx_SOURCES = writeatnosx.cxx nodist_writeallnosx_SOURCES = writeallnosx.cxx nodist_writeatallnosx_SOURCES = writeatallnosx.cxx nodist_writeallbenosx_SOURCES = writeallbenosx.cxx nodist_writeordnosx_SOURCES = writeordnosx.cxx nodist_writeordbenosx_SOURCES = writeordbenosx.cxx nodist_writeshnosx_SOURCES = writeshnosx.cxx nodist_writeatallbenosx_SOURCES = writeatallbenosx.cxx # these files are genereated using testmerge (see below) generated_io_sources = \ iwriteatx.cxx \ iwritex.cxx \ iwriteshx.cxx \ writex.cxx \ writeatx.cxx \ writeallx.cxx \ writeatallx.cxx \ writeallbex.cxx \ writeordx.cxx \ writeordbex.cxx \ writeshx.cxx \ writeatallbex.cxx \ iwriteatnosx.cxx \ iwritenosx.cxx \ iwriteshnosx.cxx \ writenosx.cxx \ writeatnosx.cxx \ writeallnosx.cxx \ writeatallnosx.cxx \ writeallbenosx.cxx \ writeordnosx.cxx \ writeordbenosx.cxx \ writeshnosx.cxx \ writeatallbenosx.cxx DISTCLEANFILES = $(generated_io_sources) all: all-am .SUFFIXES: .SUFFIXES: .cxx .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_cxx.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign cxx/io/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign cxx/io/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_cxx.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) fileerrx$(EXEEXT): $(fileerrx_OBJECTS) $(fileerrx_DEPENDENCIES) $(EXTRA_fileerrx_DEPENDENCIES) @rm -f fileerrx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(fileerrx_OBJECTS) $(fileerrx_LDADD) $(LIBS) fileinfox$(EXEEXT): $(fileinfox_OBJECTS) $(fileinfox_DEPENDENCIES) $(EXTRA_fileinfox_DEPENDENCIES) @rm -f fileinfox$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(fileinfox_OBJECTS) $(fileinfox_LDADD) $(LIBS) filemiscx$(EXEEXT): $(filemiscx_OBJECTS) $(filemiscx_DEPENDENCIES) $(EXTRA_filemiscx_DEPENDENCIES) @rm -f filemiscx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(filemiscx_OBJECTS) $(filemiscx_LDADD) $(LIBS) iwriteatnosx$(EXEEXT): $(iwriteatnosx_OBJECTS) $(iwriteatnosx_DEPENDENCIES) $(EXTRA_iwriteatnosx_DEPENDENCIES) @rm -f iwriteatnosx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(iwriteatnosx_OBJECTS) $(iwriteatnosx_LDADD) $(LIBS) iwriteatx$(EXEEXT): $(iwriteatx_OBJECTS) $(iwriteatx_DEPENDENCIES) $(EXTRA_iwriteatx_DEPENDENCIES) @rm -f iwriteatx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(iwriteatx_OBJECTS) $(iwriteatx_LDADD) $(LIBS) iwritenosx$(EXEEXT): $(iwritenosx_OBJECTS) $(iwritenosx_DEPENDENCIES) $(EXTRA_iwritenosx_DEPENDENCIES) @rm -f iwritenosx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(iwritenosx_OBJECTS) $(iwritenosx_LDADD) $(LIBS) iwriteshnosx$(EXEEXT): $(iwriteshnosx_OBJECTS) $(iwriteshnosx_DEPENDENCIES) $(EXTRA_iwriteshnosx_DEPENDENCIES) @rm -f iwriteshnosx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(iwriteshnosx_OBJECTS) $(iwriteshnosx_LDADD) $(LIBS) iwriteshx$(EXEEXT): $(iwriteshx_OBJECTS) $(iwriteshx_DEPENDENCIES) $(EXTRA_iwriteshx_DEPENDENCIES) @rm -f iwriteshx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(iwriteshx_OBJECTS) $(iwriteshx_LDADD) $(LIBS) iwritex$(EXEEXT): $(iwritex_OBJECTS) $(iwritex_DEPENDENCIES) $(EXTRA_iwritex_DEPENDENCIES) @rm -f iwritex$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(iwritex_OBJECTS) $(iwritex_LDADD) $(LIBS) seekavail$(EXEEXT): $(seekavail_OBJECTS) $(seekavail_DEPENDENCIES) $(EXTRA_seekavail_DEPENDENCIES) @rm -f seekavail$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(seekavail_OBJECTS) $(seekavail_LDADD) $(LIBS) setinfox$(EXEEXT): $(setinfox_OBJECTS) $(setinfox_DEPENDENCIES) $(EXTRA_setinfox_DEPENDENCIES) @rm -f setinfox$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(setinfox_OBJECTS) $(setinfox_LDADD) $(LIBS) shpositionx$(EXEEXT): $(shpositionx_OBJECTS) $(shpositionx_DEPENDENCIES) $(EXTRA_shpositionx_DEPENDENCIES) @rm -f shpositionx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(shpositionx_OBJECTS) $(shpositionx_LDADD) $(LIBS) writeallbenosx$(EXEEXT): $(writeallbenosx_OBJECTS) $(writeallbenosx_DEPENDENCIES) $(EXTRA_writeallbenosx_DEPENDENCIES) @rm -f writeallbenosx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(writeallbenosx_OBJECTS) $(writeallbenosx_LDADD) $(LIBS) writeallbex$(EXEEXT): $(writeallbex_OBJECTS) $(writeallbex_DEPENDENCIES) $(EXTRA_writeallbex_DEPENDENCIES) @rm -f writeallbex$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(writeallbex_OBJECTS) $(writeallbex_LDADD) $(LIBS) writeallnosx$(EXEEXT): $(writeallnosx_OBJECTS) $(writeallnosx_DEPENDENCIES) $(EXTRA_writeallnosx_DEPENDENCIES) @rm -f writeallnosx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(writeallnosx_OBJECTS) $(writeallnosx_LDADD) $(LIBS) writeallx$(EXEEXT): $(writeallx_OBJECTS) $(writeallx_DEPENDENCIES) $(EXTRA_writeallx_DEPENDENCIES) @rm -f writeallx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(writeallx_OBJECTS) $(writeallx_LDADD) $(LIBS) writeatallbenosx$(EXEEXT): $(writeatallbenosx_OBJECTS) $(writeatallbenosx_DEPENDENCIES) $(EXTRA_writeatallbenosx_DEPENDENCIES) @rm -f writeatallbenosx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(writeatallbenosx_OBJECTS) $(writeatallbenosx_LDADD) $(LIBS) writeatallbex$(EXEEXT): $(writeatallbex_OBJECTS) $(writeatallbex_DEPENDENCIES) $(EXTRA_writeatallbex_DEPENDENCIES) @rm -f writeatallbex$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(writeatallbex_OBJECTS) $(writeatallbex_LDADD) $(LIBS) writeatallnosx$(EXEEXT): $(writeatallnosx_OBJECTS) $(writeatallnosx_DEPENDENCIES) $(EXTRA_writeatallnosx_DEPENDENCIES) @rm -f writeatallnosx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(writeatallnosx_OBJECTS) $(writeatallnosx_LDADD) $(LIBS) writeatallx$(EXEEXT): $(writeatallx_OBJECTS) $(writeatallx_DEPENDENCIES) $(EXTRA_writeatallx_DEPENDENCIES) @rm -f writeatallx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(writeatallx_OBJECTS) $(writeatallx_LDADD) $(LIBS) writeatnosx$(EXEEXT): $(writeatnosx_OBJECTS) $(writeatnosx_DEPENDENCIES) $(EXTRA_writeatnosx_DEPENDENCIES) @rm -f writeatnosx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(writeatnosx_OBJECTS) $(writeatnosx_LDADD) $(LIBS) writeatx$(EXEEXT): $(writeatx_OBJECTS) $(writeatx_DEPENDENCIES) $(EXTRA_writeatx_DEPENDENCIES) @rm -f writeatx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(writeatx_OBJECTS) $(writeatx_LDADD) $(LIBS) writenosx$(EXEEXT): $(writenosx_OBJECTS) $(writenosx_DEPENDENCIES) $(EXTRA_writenosx_DEPENDENCIES) @rm -f writenosx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(writenosx_OBJECTS) $(writenosx_LDADD) $(LIBS) writeordbenosx$(EXEEXT): $(writeordbenosx_OBJECTS) $(writeordbenosx_DEPENDENCIES) $(EXTRA_writeordbenosx_DEPENDENCIES) @rm -f writeordbenosx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(writeordbenosx_OBJECTS) $(writeordbenosx_LDADD) $(LIBS) writeordbex$(EXEEXT): $(writeordbex_OBJECTS) $(writeordbex_DEPENDENCIES) $(EXTRA_writeordbex_DEPENDENCIES) @rm -f writeordbex$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(writeordbex_OBJECTS) $(writeordbex_LDADD) $(LIBS) writeordnosx$(EXEEXT): $(writeordnosx_OBJECTS) $(writeordnosx_DEPENDENCIES) $(EXTRA_writeordnosx_DEPENDENCIES) @rm -f writeordnosx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(writeordnosx_OBJECTS) $(writeordnosx_LDADD) $(LIBS) writeordx$(EXEEXT): $(writeordx_OBJECTS) $(writeordx_DEPENDENCIES) $(EXTRA_writeordx_DEPENDENCIES) @rm -f writeordx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(writeordx_OBJECTS) $(writeordx_LDADD) $(LIBS) writeshnosx$(EXEEXT): $(writeshnosx_OBJECTS) $(writeshnosx_DEPENDENCIES) $(EXTRA_writeshnosx_DEPENDENCIES) @rm -f writeshnosx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(writeshnosx_OBJECTS) $(writeshnosx_LDADD) $(LIBS) writeshx$(EXEEXT): $(writeshx_OBJECTS) $(writeshx_DEPENDENCIES) $(EXTRA_writeshx_DEPENDENCIES) @rm -f writeshx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(writeshx_OBJECTS) $(writeshx_LDADD) $(LIBS) writex$(EXEEXT): $(writex_OBJECTS) $(writex_DEPENDENCIES) $(EXTRA_writex_DEPENDENCIES) @rm -f writex$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(writex_OBJECTS) $(writex_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fileerrx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fileinfox.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filemiscx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iwriteatnosx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iwriteatx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iwritenosx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iwriteshnosx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iwriteshx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iwritex.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seekavail.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setinfox.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shpositionx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/writeallbenosx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/writeallbex.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/writeallnosx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/writeallx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/writeatallbenosx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/writeatallbex.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/writeatallnosx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/writeatallx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/writeatnosx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/writeatx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/writenosx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/writeordbenosx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/writeordbex.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/writeordnosx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/writeordx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/writeshnosx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/writeshx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/writex.Po@am__quote@ .cxx.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cxx.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-local clean-noinstPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-local clean-noinstPROGRAMS cscopelist-am ctags ctags-am \ distclean distclean-compile distclean-generic distclean-tags \ distdir dvi dvi-am html html-am info info-am install \ install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile $(top_builddir)/cxx/util/mtest.o: $(top_srcdir)/cxx/util/mtest.cxx (cd $(top_builddir)/cxx/util && $(MAKE) mtest.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # clean up after the test programs clean-local: -rm -f .iotest.txt.* # a parallel-safe scheme to generate the tests, see the automake-1.11.1 manual, # section 27.9 "Handling Tools That Produce Multiple Outputs" for an explanation # # Note that using testmerge at make-time adds a dependency on perl for users. # See the note in test/mpi/f77/io/Makefile.am for more info. gen-src-stamp: $(srcdir)/ioharness.defn $(srcdir)/ioharness.tlt @rm -f gen-src-tmp @touch gen-src-tmp $(top_builddir)/maint/testmerge -defn=$(top_srcdir)/maint/common.defn \ $(srcdir)/ioharness.defn $(srcdir)/ioharness.tlt @mv -f gen-src-tmp $@ $(generated_io_sources): gen-src-stamp @if test -f $@; then :; else \ trap 'rm -rf gen-src-lock gen-src-stamp' 1 2 13 15; \ if mkdir gen-src-lock 2>/dev/null; then \ rm -f gen-src-stamp; \ $(MAKE) $(AM_MAKEFLAGS) gen-src-stamp; \ rmdir gen-src-lock; \ else \ while test -d gen-src-lock; do sleep 1; done; \ test -f gen-src-stamp; exit $$?; \ fi; \ fi # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/cxx/io/ioharness.defn0000644000175000017500000005710612620254305020433 0ustar mbanckmbanck# # (C) 2004 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # Definitions for various MPI I/O Read/write tests # This is the C++ version of the Fortran I/O tests. # We use MPI_SEEK_SET instead of MPI::SEEK_SET to avoid conflicts with the # stdio SEEK_SET C++ # If we want a separate step to check the file as written different # from the read step, insert it here. # # Definitions for the check error blocks try { } catch ( MPI::Exception e ) { errs++; if (errs <= MAX_ERRORS) { MTestPrintError( e.Get_error_code() ); } } fh = MPI::File::Open( comm, filename, MPI::MODE_RDWR + MPI::MODE_CREATE, MPI::INFO_NULL ); // If the file open failed, skip the rest of this test if (fh == MPI::FILE_NULL) { continue; } fh.Close(); if (status.Get_count( MPI::INT ) != n) { cout << "Wrong value from status; expected " << n << " but got " << status.Get_count( MPI::INT ) << "\n"; } comm.Barrier(); if (comm.Get_rank() == 0) { MPI::File::Delete( filename, MPI::INFO_NULL ); } comm.Barrier(); # Common code to initialize the buffer for contiguous writes for (i=0; i # This is for double buffered tests for (i=0; i for (i=0; i for (i=0; i for (i=0; i for (i=0; i # Common offset computation, based on the block, rank, size offset = (r * n + k * n * s) * sizeof(int); # Set the view of the file for this process; suitable for # collective I/O and independent file I/O without seek filetype = MPI::INT.Create_vector( b, n, n*s ); filetype.Commit(); offset = r * n * sizeof(int); fh.Set_view( offset, MPI::INT, filetype, "native", MPI::INFO_NULL ); filetype.Free(); # - # These are used to synchronize the shared file pointer tests src = ( r + s - 1 ) % s; dest = ( r + 1 ) % s; if (src == dest) { src = MPI::PROC_NULL; dest = MPI::PROC_NULL; } if (r == s - 1) { comm.Ssend( MPI::BOTTOM, 0, MPI::INT, dest, 0); } for (k=0; k comm.Recv( MPI::BOTTOM, 0, MPI::INT, src, k ); if (r == s-1) { comm.Ssend( MPI::BOTTOM, 0, MPI::INT, dest, k+1 ); } else { comm.Ssend( MPI::BOTTOM, 0, MPI::INT, dest, k); } if (r == 0) { comm.Recv( MPI::BOTTOM, 0, MPI::INT, src, b ); } # ---------------------------------------------------------------------------- # This test uses the individual file pointers. # To reach the correct locations, we seek to the position MPI::Status status; int buf[MAX_BUFFER], ans; MPI::Offset offset; for (k=0; k fh.Seek( offset, MPI_SEEK_SET ); fh.Write( buf, n, MPI::INT, status ); } # No extra declarations are needed for the read step for (k=0; k fh.Seek( offset, MPI_SEEK_SET ); fh.Read( buf, n, MPI::INT, status ); } int buf[MAX_BUFFER], ans; MPI::Offset offset; for (k=0; k fh.Seek( offset, MPI_SEEK_SET ); fh.Write( buf, n, MPI::INT ); } # No extra declarations are needed for the read step for (k=0; k fh.Seek( offset, MPI_SEEK_SET ); fh.Read( buf, n, MPI::INT ); } # This test uses independent I/O with thread-safe, individual file pointers MPI::Status status; int buf[MAX_BUFFER], ans; MPI::Offset offset; for (k=0; k fh.Write_at( offset, buf, n, MPI::INT, status ); } # No extra declarations are needed for the read step for (k=0; k fh.Read_at( offset, buf, n, MPI::INT, status ); } int buf[MAX_BUFFER], ans; MPI::Offset offset; for (k=0; k fh.Write_at( offset, buf, n, MPI::INT ); } # No extra declarations are needed for the read step for (k=0; k fh.Read_at( offset, buf, n, MPI::INT ); } # This test uses collective I/O with thread-safe, individual file pointers MPI::Status status; int buf[MAX_BUFFER], ans ; MPI::Offset offset; for (k=0; k fh.Write_at_all( offset, buf, n, MPI::INT, status ); } # No extra declarations are needed for the read step for (k=0; k fh.Read_at_all( offset, buf, n, MPI::INT, status ); } int buf[MAX_BUFFER], ans ; MPI::Offset offset; for (k=0; k fh.Write_at_all( offset, buf, n, MPI::INT ); } # No extra declarations are needed for the read step for (k=0; k fh.Read_at_all( offset, buf, n, MPI::INT ); } # This test uses collective I/O with thread-safe, individual file pointers MPI::Status status; int buf[MAX_BUFFER], ans; MPI::Offset offset; for (k=0; k fh.Write_at_all_begin( offset, buf, n, MPI::INT ); fh.Write_at_all_end( buf, status ); } # No extra declarations are needed for the read step for (k=0; k fh.Read_at_all_begin( offset, buf, n, MPI::INT ); fh.Read_at_all_end( buf, status ); } int buf[MAX_BUFFER], ans; MPI::Offset offset; for (k=0; k fh.Write_at_all_begin( offset, buf, n, MPI::INT ); fh.Write_at_all_end( buf ); } # No extra declarations are needed for the read step for (k=0; k fh.Read_at_all_begin( offset, buf, n, MPI::INT ); fh.Read_at_all_end( buf ); } # This test uses nonblocking I/O with independent file pointers MPI::Status statuses[2]; int buf[MAX_BUFFER], buf2[MAX_BUFFER], ans; MPI::Request req[2]; int nreq; MPI::Offset offset; for (k=0; k nreq = 1; req[0] = fh.Iwrite_at( offset, buf, n, MPI::INT ); if (k+1 < b) { offset = offset + (s * n) * sizeof(int); nreq++; req[1] = fh.Iwrite_at( offset, buf2, n, MPI::INT ); } MPI::Request::Waitall( nreq, req, statuses ); } # No extra declarations are needed for the read step for (k=0; k nreq = 1; req[0] = fh.Iread_at( offset, buf, n, MPI::INT ); if (k+1 < b) { offset = offset + (s * n) * sizeof(int); nreq++; req[1] = fh.Iread_at( offset, buf2, n, MPI::INT ); } MPI::Request::Waitall( nreq, req, statuses ); if (nreq == 2) { } } int buf[MAX_BUFFER], buf2[MAX_BUFFER], ans; MPI::Request req[2]; int nreq; MPI::Offset offset; for (k=0; k nreq = 1; req[0] = fh.Iwrite_at( offset, buf, n, MPI::INT ); if (k+1 < b) { offset = offset + (s * n) * sizeof(int); nreq++; req[1] = fh.Iwrite_at( offset, buf2, n, MPI::INT ); } MPI::Request::Waitall( nreq, req ); } # No extra declarations are needed for the read step for (k=0; k nreq = 1; req[0] = fh.Iread_at( offset, buf, n, MPI::INT ); if (k+1 < b) { offset = offset + (s * n) * sizeof(int); nreq++; req[1] = fh.Iread_at( offset, buf2, n, MPI::INT ); } MPI::Request::Waitall( nreq, req ); if (nreq == 2) { } } # This test uses nonblocking I/O with independent file pointers and explicit # seeks MPI::Status statuses[2]; int buf[MAX_BUFFER], buf2[MAX_BUFFER], ans; MPI::Request req[2]; int nreq; MPI::Offset offset; for (k=0; k nreq = 1; fh.Seek( offset, MPI_SEEK_SET ); req[0] = fh.Iwrite( buf, n, MPI::INT); if (k+1 < b) { offset = offset + (s * n) * sizeof(int); fh.Seek( offset, MPI_SEEK_SET ); nreq++; req[1] = fh.Iwrite( buf2, n, MPI::INT ); } MPI::Request::Waitall( nreq, req, statuses ); } # No extra declarations are needed for the read step for (k=0; k nreq = 1; fh.Seek( offset, MPI_SEEK_SET ); req[0] = fh.Iread( buf, n, MPI::INT ); if (k+1 < b) { offset = offset + (s * n) * sizeof(int); fh.Seek( offset, MPI_SEEK_SET ); nreq++; req[1] = fh.Iread( buf2, n, MPI::INT ); } MPI::Request::Waitall( nreq, req, statuses ); if (nreq == 2) { } } int buf[MAX_BUFFER], buf2[MAX_BUFFER], ans; MPI::Request req[2]; int nreq; MPI::Offset offset; for (k=0; k nreq = 1; fh.Seek( offset, MPI_SEEK_SET ); req[0] = fh.Iwrite( buf, n, MPI::INT); if (k+1 < b) { offset = offset + (s * n) * sizeof(int); fh.Seek( offset, MPI_SEEK_SET ); nreq++; req[1] = fh.Iwrite( buf2, n, MPI::INT ); } MPI::Request::Waitall( nreq, req ); } # No extra declarations are needed for the read step for (k=0; k nreq = 1; fh.Seek( offset, MPI_SEEK_SET ); req[0] = fh.Iread( buf, n, MPI::INT ); if (k+1 < b) { offset = offset + (s * n) * sizeof(int); fh.Seek( offset, MPI_SEEK_SET ); nreq++; req[1] = fh.Iread( buf2, n, MPI::INT ); } MPI::Request::Waitall( nreq, req ); if (nreq == 2) { } } # This test uses nonblocking I/O with shared file pointers MPI::Status status; int buf[MAX_BUFFER], ans; int src, dest; MPI::Request req; for (k=0; k req = fh.Iwrite_shared( buf, n, MPI::INT ); req.Wait( status ); } # No extra declarations are needed for the read step for (k=0; k req = fh.Iread_shared( buf, n, MPI::INT ); req.Wait( status ); } # This test uses nonblocking I/O with shared file pointers int buf[MAX_BUFFER], ans; int src, dest; MPI::Request req; for (k=0; k req = fh.Iwrite_shared( buf, n, MPI::INT ); req.Wait( ); } # No extra declarations are needed for the read step for (k=0; k req = fh.Iread_shared( buf, n, MPI::INT ); req.Wait( ); } # This test uses collective I/O MPI::Status status; int buf[MAX_BUFFER], ans; MPI::Datatype filetype; MPI::Offset offset; for (k=0; k fh.Write_all( buf, n, MPI::INT, status); } # No extra declarations are needed for the read step for (k=0; k fh.Read_all( buf, n, MPI::INT, status); } # This test uses collective I/O int buf[MAX_BUFFER], ans; MPI::Datatype filetype; MPI::Offset offset; for (k=0; k fh.Write_all( buf, n, MPI::INT); } # No extra declarations are needed for the read step for (k=0; k fh.Read_all( buf, n, MPI::INT); } # This test uses split collective I/O MPI::Status status; int buf[MAX_BUFFER], ans; MPI::Datatype filetype; MPI::Offset offset; for (k=0; k fh.Write_all_begin( buf, n, MPI::INT ); fh.Write_all_end( buf, status ); } # No extra declarations are needed for the read step for (k=0; k fh.Read_all_begin( buf, n, MPI::INT); fh.Read_all_end( buf, status); } # This test uses split collective I/O int buf[MAX_BUFFER], ans; MPI::Datatype filetype; MPI::Offset offset; for (k=0; k fh.Write_all_begin( buf, n, MPI::INT ); fh.Write_all_end( buf ); } # No extra declarations are needed for the read step for (k=0; k fh.Read_all_begin( buf, n, MPI::INT); fh.Read_all_end( buf ); } # This test uses the shared file pointers collectively. MPI::Status status; int buf[MAX_BUFFER], ans; MPI::Offset offset; for (k=0; k fh.Write_ordered( buf, n, MPI::INT, status); } # No extra declarations are needed for the read step for (k=0; k fh.Read_ordered( buf, n, MPI::INT, status); } int buf[MAX_BUFFER], ans; MPI::Offset offset; for (k=0; k fh.Write_ordered( buf, n, MPI::INT ); } # No extra declarations are needed for the read step for (k=0; k fh.Read_ordered( buf, n, MPI::INT ); } # This test uses the shared file pointers with split collectives. MPI::Status status; int buf[MAX_BUFFER], ans; MPI::Offset offset; for (k=0; k fh.Write_ordered_begin( buf, n, MPI::INT); fh.Write_ordered_end( buf, status); } # No extra declarations are needed for the read step for (k=0; k fh.Read_ordered_begin( buf, n, MPI::INT); fh.Read_ordered_end( buf, status); } int buf[MAX_BUFFER], ans; MPI::Offset offset; for (k=0; k fh.Write_ordered_begin( buf, n, MPI::INT); fh.Write_ordered_end( buf ); } # No extra declarations are needed for the read step for (k=0; k fh.Read_ordered_begin( buf, n, MPI::INT); fh.Read_ordered_end( buf ); } # This test uses the shared file pointers independently. # We pass a token to control the oredering MPI::Status status; int buf[MAX_BUFFER], ans; int src, dest; for (k=0; k fh.Write_shared( buf, n, MPI::INT, status); } # No extra declarations are needed for the read step for (k=0; k fh.Read_shared( buf, n, MPI::INT, status); } int buf[MAX_BUFFER], ans; int src, dest; for (k=0; k fh.Write_shared( buf, n, MPI::INT ); } # No extra declarations are needed for the read step for (k=0; k fh.Read_shared( buf, n, MPI::INT ); } mpi-testsuite-3.2+dfsg/cxx/io/fileerrx.cxx0000644000175000017500000000770712620254305020150 0ustar mbanckmbanck/* -*- Mode: C++; c-basic-offset:4 ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #ifdef HAVE_IOSTREAM // Not all C++ compilers have iostream instead of iostream.h #include #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #ifdef HAVE_STRING_H #include #endif #include "mpitestcxx.h" static int codesSeen[3], callcount; void myerrhanfunc( MPI::File &fh, int *errcode, ... ); int main( int argc, char **argv ) { int errs = 0; MPI::File fh; MPI::Intracomm comm; MPI::Errhandler myerrhan, qerr; char filename[50]; char *errstring; int code[2], newerrclass, eclass, rlen; MTest_Init( ); errstring = new char [MPI::MAX_ERROR_STRING]; callcount = 0; // Setup some new codes and classes newerrclass = MPI::Add_error_class(); code[0] = MPI::Add_error_code( newerrclass ); code[1] = MPI::Add_error_code( newerrclass ); MPI::Add_error_string( newerrclass, "New Class" ); MPI::Add_error_string( code[0], "First new code" ); MPI::Add_error_string( code[1], "Second new code" ); myerrhan = MPI::File::Create_errhandler( myerrhanfunc ); // Create a new communicator so that we can leave the default errors-abort // on COMM_WORLD. Use this comm for file_open, just to leave a little // more separation from comm_world comm = MPI::COMM_WORLD.Dup(); fh = MPI::File::Open( comm, "testfile.txt", MPI::MODE_RDWR | MPI::MODE_CREATE, MPI::INFO_NULL ); fh.Set_errhandler( myerrhan ); qerr = fh.Get_errhandler(); if (qerr != myerrhan) { errs++; cout << " Did not get expected error handler\n"; } qerr.Free(); // We can free our error handler now myerrhan.Free(); fh.Call_errhandler( newerrclass ); fh.Call_errhandler( code[0] ); fh.Call_errhandler( code[1] ); if (callcount != 3) { errs++; cout << " Expected 3 calls to error handler, found " << callcount << "\n"; } else { if (codesSeen[0] != newerrclass) { errs++; cout << "Expected class " << newerrclass << " got " << codesSeen[0] << "\n"; } if (codesSeen[1] != code[0]) { errs++; cout << "(1)Expected code " << code[0] << " got " << codesSeen[1] << "\n"; } if (codesSeen[2] != code[1]) { errs++; cout << "(2)Expected code " << code[1] << " got " << codesSeen[2] << "\n"; } } fh.Close(); comm.Free(); MPI::File::Delete( "testfile.txt", MPI::INFO_NULL ); // Check error strings while we're here... MPI::Get_error_string( newerrclass, errstring, rlen ); if (strcmp(errstring,"New Class") != 0) { errs++; cout << " Wrong string for error class: " << errstring << "\n"; } eclass = MPI::Get_error_class( code[0] ); if (eclass != newerrclass) { errs++; cout << " Class for new code is not correct\n"; } MPI::Get_error_string( code[0], errstring, rlen ); if (strcmp( errstring, "First new code") != 0) { errs++; cout << " Wrong string for error code: " << errstring << "\n"; } eclass = MPI::Get_error_class( code[1] ); if (eclass != newerrclass) { errs++; cout << " Class for new code is not correct\n"; } MPI::Get_error_string( code[1], errstring, rlen ); if (strcmp( errstring, "Second new code") != 0) { errs++; cout << " Wrong string for error code: " << errstring << "\n"; } delete [] errstring; MTest_Finalize( errs ); MPI::Finalize(); return 0; } void myerrhanfunc( MPI::File &fh, int *errcode, ... ) { char *errstring; int rlen; errstring = new char [MPI::MAX_ERROR_STRING]; callcount++; // Remember the code we've seen if (callcount < 4) { codesSeen[callcount-1] = *errcode; } MPI::Get_error_string( *errcode, errstring, rlen ); delete [] errstring; } mpi-testsuite-3.2+dfsg/cxx/io/ioharness.tlt0000644000175000017500000000452012620254305020312 0ustar mbanckmbanck #include "mpi.h" // We place stdio.h *after* mpi.h to avoid conflicts with SEEK_SET et al // (the name is #defined in stdio.h and used as an MPI constant // MPI::SEEK_SET in the C++ binding for MPI) #include #include "mpitestconf.h" #ifdef HAVE_IOSTREAM // Not all C++ compilers have iostream instead of iostream.h #include #ifdef HAVE_NAMESPACE_STD // Those that do need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include #include "mpitestcxx.h" #define MAX_FPARM 5 #define MAX_BUFFER 65536 #define MAX_FTYPE 3 // We print no more than 10 errors. To ensure a clean exit, // we normally continue until the end of the job (so that // we can write out the standard No Errors or Found %d Errors message) #define MAX_ERRORS 10 // This structure is used to determine how data is placed across the file typedef struct { int n, b; } fileparm; int main( int argc, char *argv[] ) { int errs = 0; MPI::Intracomm comm; MPI::File fh; int ftype; int itmp, fparm, n, b, i, k, r, s; int wrank, wsize; fileparm fparms[MAX_FPARM] = { 1,4000, 4000,8, 4096,8, 64000,8, 65536,8 }; char filename[1024]; MTest_Init(); wrank = MPI::COMM_WORLD.Get_rank(); wsize = MPI::COMM_WORLD.Get_size(); for (ftype=0; ftype // Now, open the same file for reading } if (comm != MPI::COMM_WORLD) { comm.Free(); } } MTest_Finalize( errs ); MPI::Finalize( ); return 0; } mpi-testsuite-3.2+dfsg/cxx/io/Makefile.am0000644000175000017500000001060312620254305017625 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_cxx.mtest EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.cxx" lines AM_DEFAULT_SOURCE_EXT = .cxx noinst_PROGRAMS = \ iwriteatx \ iwritex \ iwriteshx \ writex \ writeatx \ writeallx \ writeatallx \ writeallbex \ writeordx \ writeordbex \ writeshx \ writeatallbex \ iwriteatnosx \ iwritenosx \ iwriteshnosx \ writenosx \ writeatnosx \ writeallnosx \ writeatallnosx \ writeallbenosx \ writeordnosx \ writeordbenosx \ writeshnosx \ writeatallbenosx \ fileerrx \ fileinfox \ shpositionx \ setinfox \ filemiscx \ seekavail # We don't want to distribute these source files because they are created by # "testmerge", hence "nodist_foo_SOURCES" nodist_iwriteatx_SOURCES = iwriteatx.cxx nodist_iwritex_SOURCES = iwritex.cxx nodist_iwriteshx_SOURCES = iwriteshx.cxx nodist_writex_SOURCES = writex.cxx nodist_writeatx_SOURCES = writeatx.cxx nodist_writeallx_SOURCES = writeallx.cxx nodist_writeatallx_SOURCES = writeatallx.cxx nodist_writeallbex_SOURCES = writeallbex.cxx nodist_writeordx_SOURCES = writeordx.cxx nodist_writeordbex_SOURCES = writeordbex.cxx nodist_writeshx_SOURCES = writeshx.cxx nodist_writeatallbex_SOURCES = writeatallbex.cxx nodist_iwriteatnosx_SOURCES = iwriteatnosx.cxx nodist_iwritenosx_SOURCES = iwritenosx.cxx nodist_iwriteshnosx_SOURCES = iwriteshnosx.cxx nodist_writenosx_SOURCES = writenosx.cxx nodist_writeatnosx_SOURCES = writeatnosx.cxx nodist_writeallnosx_SOURCES = writeallnosx.cxx nodist_writeatallnosx_SOURCES = writeatallnosx.cxx nodist_writeallbenosx_SOURCES = writeallbenosx.cxx nodist_writeordnosx_SOURCES = writeordnosx.cxx nodist_writeordbenosx_SOURCES = writeordbenosx.cxx nodist_writeshnosx_SOURCES = writeshnosx.cxx nodist_writeatallbenosx_SOURCES = writeatallbenosx.cxx # these files are genereated using testmerge (see below) generated_io_sources = \ iwriteatx.cxx \ iwritex.cxx \ iwriteshx.cxx \ writex.cxx \ writeatx.cxx \ writeallx.cxx \ writeatallx.cxx \ writeallbex.cxx \ writeordx.cxx \ writeordbex.cxx \ writeshx.cxx \ writeatallbex.cxx \ iwriteatnosx.cxx \ iwritenosx.cxx \ iwriteshnosx.cxx \ writenosx.cxx \ writeatnosx.cxx \ writeallnosx.cxx \ writeatallnosx.cxx \ writeallbenosx.cxx \ writeordnosx.cxx \ writeordbenosx.cxx \ writeshnosx.cxx \ writeatallbenosx.cxx EXTRA_DIST += ioharness.defn ioharness.tlt # clean up after the test programs clean-local: -rm -f .iotest.txt.* # a parallel-safe scheme to generate the tests, see the automake-1.11.1 manual, # section 27.9 "Handling Tools That Produce Multiple Outputs" for an explanation # # Note that using testmerge at make-time adds a dependency on perl for users. # See the note in test/mpi/f77/io/Makefile.am for more info. gen-src-stamp: $(srcdir)/ioharness.defn $(srcdir)/ioharness.tlt @rm -f gen-src-tmp @touch gen-src-tmp $(top_builddir)/maint/testmerge -defn=$(top_srcdir)/maint/common.defn \ $(srcdir)/ioharness.defn $(srcdir)/ioharness.tlt @mv -f gen-src-tmp $@ $(generated_io_sources): gen-src-stamp ## Recover from the removal of $@ @if test -f $@; then :; else \ trap 'rm -rf gen-src-lock gen-src-stamp' 1 2 13 15; \ ## mkdir is a portable test-and-set if mkdir gen-src-lock 2>/dev/null; then \ ## This code is being executed by the first process. rm -f gen-src-stamp; \ $(MAKE) $(AM_MAKEFLAGS) gen-src-stamp; \ rmdir gen-src-lock; \ else \ ## This code is being executed by the follower processes. ## Wait until the first process is done. while test -d gen-src-lock; do sleep 1; done; \ ## Succeed if and only if the first process succeeded. test -f gen-src-stamp; exit $$?; \ fi; \ fi # just in case CLEANFILES += gen-src-tmp gen-src-stamp DISTCLEANFILES = $(generated_io_sources) mpi-testsuite-3.2+dfsg/cxx/io/fileinfox.cxx0000644000175000017500000000360012620254305020277 0ustar mbanckmbanck/* -*- Mode: C++; c-basic-offset:4 ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #ifdef HAVE_IOSTREAM // Not all C++ compilers have iostream instead of iostream.h #include #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #ifdef HAVE_STRING_H #include #endif #include "mpitestcxx.h" int main( int argc, char **argv ) { int errs = 0; MPI::File fh; MPI::Info info1, info2; bool flag; char filename[50]; char *mykey; char *myvalue; MTest_Init( ); mykey = new char [MPI::MAX_INFO_KEY]; myvalue = new char [MPI::MAX_INFO_VAL]; // Open a simple file strcpy( filename, "iotest.txt" ); fh = MPI::File::Open( MPI::COMM_WORLD, filename, MPI::MODE_RDWR | MPI::MODE_CREATE, MPI::INFO_NULL ); // Try to set one of the available info hints info1 = MPI::Info::Create(); info1.Set( "access_style", "read_once,write_once" ); fh.Set_info( info1 ); info1.Free(); info2 = fh.Get_info(); flag = info2.Get( "filename", MPI::MAX_INFO_VAL, myvalue ); // An implementation isn't required to provide the filename (though // a high-quality implementation should) if (flag) { // If we find it, we must have the correct name if (strcmp( myvalue, filename ) != 0 || strlen(myvalue) != 10) { errs++; cout << " Returned wrong value for the filename\n"; } } info2.Free(); fh.Close(); MPI::COMM_WORLD.Barrier(); if (MPI::COMM_WORLD.Get_rank() == 0) MPI::File::Delete( filename, MPI::INFO_NULL ); delete [] mykey; delete [] myvalue; MTest_Finalize( errs ); MPI::Finalize(); return 0; } mpi-testsuite-3.2+dfsg/cxx/io/seekavail.cxx0000644000175000017500000000341712620254305020266 0ustar mbanckmbanck/* -*- Mode: C++; c-basic-offset:4 ; -*- */ /* * * (C) 2008 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ /* Include stdio.h first to see if the MPI implementation can handle the conflicting definitions in stdio.h for the SEEK_SET, SEEK_CUR, and SEEK_END */ #include "mpitestconf.h" #include #ifdef HAVE_IOSTREAM // Not all C++ compilers have iostream instead of iostream.h #include #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #ifdef HAVE_STRING_H #include #endif #include "mpi.h" #include "mpitestcxx.h" static char MTEST_Descrip[] = "Test availability of MPI::SEEK_SET and SEEK_SET from stdio.h"; int main( int argc, char *argv[] ) { int errs = 0, err; int rank; MPI::Intracomm comm; MPI::Status status; int seekValues; MTest_Init( ); comm = MPI::COMM_WORLD; // Make sure that we can access each value // First, the MPI C++ values seekValues = MPI::SEEK_SET; if (MPI::SEEK_CUR == seekValues) { errs++; } if (MPI::SEEK_END == seekValues) { errs++; } // Second, the stdio values seekValues = SEEK_SET; if (SEEK_CUR == seekValues) { errs++; } if (SEEK_END == seekValues) { errs++; } /* some workarounds for the SEEK_SET problem prevent its use as a case label */ seekValues = SEEK_SET; switch (seekValues) { case SEEK_SET: break; case SEEK_CUR: case SEEK_END: default: errs++; break; } MTest_Finalize( errs ); MPI::Finalize( ); return 0; } mpi-testsuite-3.2+dfsg/cxx/io/setinfox.cxx0000644000175000017500000000636112620254305020162 0ustar mbanckmbanck/* -*- Mode: C++; c-basic-offset:4 ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #ifdef HAVE_IOSTREAM // Not all C++ compilers have iostream instead of iostream.h #include #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #ifdef HAVE_STRING_H #include #endif #include "mpitestcxx.h" static char MTEST_Descrip[] = "Test file_set_view"; /* * access style is explicitly described as modifiable. values include * read_once, read_mostly, write_once, write_mostlye, random * * */ int main( int argc, char *argv[] ) { int errs = 0, err; int buf[10]; int rank; MPI::Intracomm comm; MPI::Status status; MPI::File fh; MPI::Info infoin, infoout; char value[1024]; bool flag; int count; MTest_Init( ); comm = MPI::COMM_WORLD; rank = comm.Get_rank(); infoin = MPI::Info::Create(); infoin.Set( "access_style", "write_once,random" ); fh = MPI::File::Open( comm, "testfile", MPI::MODE_RDWR | MPI::MODE_CREATE, infoin); buf[0] = rank; try { fh.Write_ordered( buf, 1, MPI::INT ); } catch ( MPI::Exception e ) { errs ++; MTestPrintError( e.Get_error_code() ); } infoin.Set( "access_style", "read_once" ); try { fh.Seek_shared( 0, MPI_SEEK_SET ); // Use MPI_xx to avoid problems with SEEK_SET } catch ( MPI::Exception e ) { errs ++; MTestPrintError( e.Get_error_code() ); } try { fh.Set_info( infoin ); } catch ( MPI::Exception e ) { errs ++; MTestPrintError( e.Get_error_code() ); } buf[0] = -1; try { fh.Read_ordered( buf, 1, MPI::INT, status ); } catch ( MPI::Exception e ) { errs ++; MTestPrintError( e.Get_error_code() ); } count = status.Get_count( MPI::INT ); if (count != 1) { errs++; cout << "Expected to read one int, read " << count << "\n"; } if (buf[0] != rank) { errs++; cout << "Did not read expected value (" << buf[0] << ")\n"; } try { infoout = fh.Get_info(); } catch ( MPI::Exception e ) { errs ++; MTestPrintError( e.Get_error_code() ); } flag = infoout.Get( "access_style", 1024, value ); /* Note that an implementation is allowed to ignore the set_info, so we'll accept either the original or the updated version */ if (!flag) { ; /* errs++; printf( "Access style hint not saved\n" ); */ } else { if (strcmp( value, "read_once" ) != 0 && strcmp( value, "write_once,random" ) != 0) { errs++; cout << "value for access_style unexpected; is " << value << "\n"; } } infoout.Free(); try { fh.Close(); } catch ( MPI::Exception e ) { errs ++; MTestPrintError( e.Get_error_code() ); } comm.Barrier(); rank = comm.Get_rank(); if (rank == 0) { try { MPI::File::Delete( "testfile", MPI::INFO_NULL ); } catch ( MPI::Exception e ) { errs ++; MTestPrintError( e.Get_error_code() ); } } MTest_Finalize( errs ); MPI::Finalize( ); return 0; } mpi-testsuite-3.2+dfsg/cxx/io/shpositionx.cxx0000644000175000017500000000323212620254305020704 0ustar mbanckmbanck/* -*- Mode: C++; c-basic-offset:4 ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #ifdef HAVE_IOSTREAM // Not all C++ compilers have iostream instead of iostream.h #include #ifdef HAVE_NAMESPACE_STD // Those that do need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #ifdef HAVE_STRING_H #include #endif #include "mpitestcxx.h" int main( int argc, char **argv ) { MPI::Intracomm comm; MPI::File fh; int r, s, i; int fileintsize; int errs = 0; char filename[1024]; MPI::Offset offset; MTest_Init(); strcpy( filename,"iotest.txt"); comm = MPI::COMM_WORLD; s = comm.Get_size(); r = comm.Get_rank(); // Try writing the file, then check it fh = MPI::File::Open( comm, filename, MPI::MODE_RDWR | MPI::MODE_CREATE, MPI::INFO_NULL ); // Get the size of an INT in the file fileintsize = fh.Get_type_extent( MPI::INT ); // We let each process write in turn, getting the position after each // write for (i=0; i&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = winnamex$(EXEEXT) wincallx$(EXEEXT) \ getgroupx$(EXEEXT) winfencex$(EXEEXT) winscale1x$(EXEEXT) \ winscale2x$(EXEEXT) fkeyvalwinx$(EXEEXT) subdir = cxx/rma ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) fkeyvalwinx_SOURCES = fkeyvalwinx.cxx fkeyvalwinx_OBJECTS = fkeyvalwinx.$(OBJEXT) fkeyvalwinx_LDADD = $(LDADD) fkeyvalwinx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o getgroupx_SOURCES = getgroupx.cxx getgroupx_OBJECTS = getgroupx.$(OBJEXT) getgroupx_LDADD = $(LDADD) getgroupx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o wincallx_SOURCES = wincallx.cxx wincallx_OBJECTS = wincallx.$(OBJEXT) wincallx_LDADD = $(LDADD) wincallx_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o winfencex_SOURCES = winfencex.cxx winfencex_OBJECTS = winfencex.$(OBJEXT) winfencex_LDADD = $(LDADD) winfencex_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o winnamex_SOURCES = winnamex.cxx winnamex_OBJECTS = winnamex.$(OBJEXT) winnamex_LDADD = $(LDADD) winnamex_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o winscale1x_SOURCES = winscale1x.cxx winscale1x_OBJECTS = winscale1x.$(OBJEXT) winscale1x_LDADD = $(LDADD) winscale1x_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o winscale2x_SOURCES = winscale2x.cxx winscale2x_OBJECTS = winscale2x.$(OBJEXT) winscale2x_LDADD = $(LDADD) winscale2x_DEPENDENCIES = $(top_builddir)/cxx/util/mtest.o AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/confdb/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = SOURCES = fkeyvalwinx.cxx getgroupx.cxx wincallx.cxx winfencex.cxx \ winnamex.cxx winscale1x.cxx winscale2x.cxx DIST_SOURCES = fkeyvalwinx.cxx getgroupx.cxx wincallx.cxx \ winfencex.cxx winnamex.cxx winscale1x.cxx winscale2x.cxx am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile_cxx.mtest $(top_srcdir)/confdb/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/cxx/util/mtest.o CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.cxx" lines AM_DEFAULT_SOURCE_EXT = .cxx all: all-am .SUFFIXES: .SUFFIXES: .cxx .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_cxx.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign cxx/rma/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign cxx/rma/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_cxx.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) fkeyvalwinx$(EXEEXT): $(fkeyvalwinx_OBJECTS) $(fkeyvalwinx_DEPENDENCIES) $(EXTRA_fkeyvalwinx_DEPENDENCIES) @rm -f fkeyvalwinx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(fkeyvalwinx_OBJECTS) $(fkeyvalwinx_LDADD) $(LIBS) getgroupx$(EXEEXT): $(getgroupx_OBJECTS) $(getgroupx_DEPENDENCIES) $(EXTRA_getgroupx_DEPENDENCIES) @rm -f getgroupx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(getgroupx_OBJECTS) $(getgroupx_LDADD) $(LIBS) wincallx$(EXEEXT): $(wincallx_OBJECTS) $(wincallx_DEPENDENCIES) $(EXTRA_wincallx_DEPENDENCIES) @rm -f wincallx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(wincallx_OBJECTS) $(wincallx_LDADD) $(LIBS) winfencex$(EXEEXT): $(winfencex_OBJECTS) $(winfencex_DEPENDENCIES) $(EXTRA_winfencex_DEPENDENCIES) @rm -f winfencex$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(winfencex_OBJECTS) $(winfencex_LDADD) $(LIBS) winnamex$(EXEEXT): $(winnamex_OBJECTS) $(winnamex_DEPENDENCIES) $(EXTRA_winnamex_DEPENDENCIES) @rm -f winnamex$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(winnamex_OBJECTS) $(winnamex_LDADD) $(LIBS) winscale1x$(EXEEXT): $(winscale1x_OBJECTS) $(winscale1x_DEPENDENCIES) $(EXTRA_winscale1x_DEPENDENCIES) @rm -f winscale1x$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(winscale1x_OBJECTS) $(winscale1x_LDADD) $(LIBS) winscale2x$(EXEEXT): $(winscale2x_OBJECTS) $(winscale2x_DEPENDENCIES) $(EXTRA_winscale2x_DEPENDENCIES) @rm -f winscale2x$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(winscale2x_OBJECTS) $(winscale2x_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fkeyvalwinx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getgroupx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wincallx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/winfencex.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/winnamex.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/winscale1x.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/winscale2x.Po@am__quote@ .cxx.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cxx.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile $(top_builddir)/cxx/util/mtest.o: $(top_srcdir)/cxx/util/mtest.cxx (cd $(top_builddir)/cxx/util && $(MAKE) mtest.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/cxx/rma/fkeyvalwinx.cxx0000644000175000017500000000473412620254305021044 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #ifdef HAVE_IOSTREAM // Not all C++ compilers have iostream instead of iostream.h #include #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include #include "mpitestcxx.h" static char MTestDescrip[] = "Test freeing keyvals while still attached to \ a win, then make sure that the keyval delete code are still \ executed"; /* Copy increments the attribute value */ /* Note that we can really ignore this because there is no win dup */ int copy_fn( const MPI::Win &oldwin, int keyval, void *extra_state, void *attribute_val_in, void *attribute_val_out, bool &flag ) { /* Copy the address of the attribute */ *(void **)attribute_val_out = attribute_val_in; /* Change the value */ *(int *)attribute_val_in = *(int *)attribute_val_in + 1; flag = 1; return MPI::SUCCESS; } /* Delete decrements the attribute value */ int delete_fn( MPI::Win &win, int keyval, void *attribute_val, void *extra_state) { *(int *)attribute_val = *(int *)attribute_val - 1; return MPI::SUCCESS; } int main( int argc, char *argv[] ) { int errs = 0; int attrval; int i, key[32], keyval, saveKeyval; MPI::Win win; MTest_Init(); while (MTestGetWin( win, 0 )) { if (win == MPI::WIN_NULL) continue; keyval = MPI::Win::Create_keyval( copy_fn, delete_fn, (void *)0 ); saveKeyval = keyval; /* in case we need to free explicitly */ attrval = 1; win.Set_attr( keyval, &attrval ); /* See MPI-1, 5.7.1. Freeing the keyval does not remove it if it is in use in an attribute */ MPI::Win::Free_keyval( keyval ); /* We create some dummy keyvals here in case the same keyval is reused */ for (i=0; i<32; i++) { key[i] = MPI::Win::Create_keyval( MPI::Win::NULL_COPY_FN, MPI::Win::NULL_DELETE_FN, (void *)0 ); } MTestFreeWin( win ); /* Check that the original attribute was freed */ if (attrval != 0) { errs++; cout << "Attribute not decremented when win " << MTestGetWinName() << " freed\n"; } /* Free those other keyvals */ for (i=0; i<32; i++) { MPI::Win::Free_keyval( key[i] ); } } MTest_Finalize( errs ); MPI::Finalize(); return 0; } mpi-testsuite-3.2+dfsg/cxx/rma/Makefile.am0000644000175000017500000000060412620254305017775 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_cxx.mtest EXTRA_DIST = testlist # avoid having to write many "foo_SOURCES = foo.cxx" lines AM_DEFAULT_SOURCE_EXT = .cxx noinst_PROGRAMS = winnamex wincallx getgroupx winfencex winscale1x winscale2x fkeyvalwinx mpi-testsuite-3.2+dfsg/cxx/rma/winfencex.cxx0000644000175000017500000000522012620254305020452 0ustar mbanckmbanck/* -*- Mode: C++; c-basic-offset:4 ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #ifdef HAVE_IOSTREAM // Not all C++ compilers have iostream instead of iostream.h #include #ifdef HAVE_NAMESPACE_STD // Those that do need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include "mpitestcxx.h" /* * buf is a 2-d array, stored as a 1-d vector, with * buf(i,j) = buf[i + nrows*j], 0<=i= size) right = MPI::PROC_NULL; // Initialize the buffer for (i=0; i #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #ifdef HAVE_STRING_H #include #endif #include "mpitestcxx.h" static char MTEST_Descrip[] = "Test of Win_get_group"; int main( int argc, char *argv[] ) { int errs = 0; int result; int buf[10]; MPI::Win win; MPI::Group group, wingroup; int minsize = 2; MPI::Intracomm comm; MTest_Init(); /* The following illustrates the use of the routines to run through a selection of communicators and datatypes. Use subsets of these for tests that do not involve combinations of communicators, datatypes, and counts of datatypes */ while (MTestGetIntracommGeneral( comm, minsize, true )) { if (comm == MPI::COMM_NULL) continue; win = MPI::Win::Create( buf, sizeof(int) * 10, sizeof(int), MPI::INFO_NULL, comm ); wingroup = win.Get_group(); group = comm.Get_group(); result = MPI::Group::Compare( group, wingroup ); if (result != MPI::IDENT) { errs++; cout << "Group returned by Win_get_group not the same as the input group\n"; } wingroup.Free(); group.Free(); win.Free(); MTestFreeComm( comm ); } MTest_Finalize( errs ); MPI::Finalize(); return 0; } mpi-testsuite-3.2+dfsg/cxx/rma/wincallx.cxx0000644000175000017500000000334612620254305020314 0ustar mbanckmbanck/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * * (C) 2010 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #ifdef HAVE_IOSTREAM // Not all C++ compilers have iostream instead of iostream.h #include #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include #include "mpitestcxx.h" #ifdef HAVE_STRING_H #include #endif static char MTEST_Descrip[] = "Test win_call_errhandler"; static int calls = 0; static int errs = 0; static MPI::Win mywin; void eh( MPI::Win &win, int *err, ... ) { if (*err != MPI_ERR_OTHER) { errs++; cout << "Unexpected error code\n"; } if (win != mywin) { char cname[MPI_MAX_OBJECT_NAME]; int len; errs++; cout << "Unexpected window\n"; win.Get_name( cname, len ); cout << "Win is " << cname << "\n"; mywin.Get_name( cname, len ); cout << "Mywin is " << cname << "\n"; } calls++; return; } int main( int argc, char *argv[] ) { MPI::Win win; MPI::Errhandler newerr; int i; int reset_handler; int buf[10]; MTest_Init( ); win = MPI::Win::Create( buf, sizeof(buf), 1, MPI::INFO_NULL, MPI::COMM_WORLD ); mywin = win; mywin.Set_name( "dup of win_world" ); newerr = MPI::Win::Create_errhandler( eh ); win.Set_errhandler( newerr ); win.Call_errhandler( MPI_ERR_OTHER ); newerr.Free(); if (calls != 1) { errs++; cout << "Error handler not called\n"; } win.Free(); MTest_Finalize( errs ); MPI::Finalize(); return 0; } mpi-testsuite-3.2+dfsg/cxx/rma/winscale2x.cxx0000644000175000017500000000605512620254305020552 0ustar mbanckmbanck/* -*- Mode: C++; c-basic-offset:4 ; -*- */ /* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #ifdef HAVE_IOSTREAM // Not all C++ compilers have iostream instead of iostream.h #include #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include "mpitestcxx.h" /* * buf is a 2-d array, stored as a 1-d vector, with * buf(i,j) = buf[i + nrows*j], 0<=i= size) right = MPI::PROC_NULL; else { nbrs[nneighbors++] = right; } group = comm.Get_group(); group2 = group.Incl( nneighbors, nbrs ); group.Free(); // Initialize the buffer for (i=0; i #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include "mpitestcxx.h" /* * buf is a 2-d array, stored as a 1-d vector, with * buf(i,j) = buf[i + nrows*j], 0<=i= size) right = MPI::PROC_NULL; else { nbrs[nneighbors++] = right; } group = comm.Get_group(); group2 = group.Incl( nneighbors, nbrs ); group.Free(); // Initialize the buffer for (i=0; i #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif #include #include "mpitestcxx.h" #ifdef HAVE_STRING_H #include #endif int main( int argc, char *argv[] ) { int errs = 0; MPI::Win win; int cnt, namelen; char *name, *nameout; MTest_Init(); name = new char [MPI::MAX_OBJECT_NAME]; nameout = new char [MPI::MAX_OBJECT_NAME]; cnt = 0; while (MTestGetWin( win, true )) { if (win == MPI::WIN_NULL) continue; sprintf( name, "win-%d", cnt ); cnt++; win.Set_name( name ); nameout[0] = 0; win.Get_name( nameout, namelen ); if (strcmp( name, nameout )) { errs++; cout << "Unexpected name, was " << nameout << " but should be " << name << "\n"; } MTestFreeWin(win); } if (cnt == 0) { errs++; cout << "No windows created\n"; } delete [] name; delete [] nameout; MTest_Finalize( errs ); MPI::Finalize(); return 0; } mpi-testsuite-3.2+dfsg/cxx/topo/0000755000175000017500000000000012621010232016131 5ustar mbanckmbanckmpi-testsuite-3.2+dfsg/cxx/topo/Makefile.in0000644000175000017500000003513612621010232020206 0ustar mbanckmbanck# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = cxx/topo ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/confdb/aclocal_cache.m4 \ $(top_srcdir)/confdb/aclocal_cc.m4 \ $(top_srcdir)/confdb/aclocal_cxx.m4 \ $(top_srcdir)/confdb/aclocal_f77.m4 \ $(top_srcdir)/confdb/aclocal_fc.m4 \ $(top_srcdir)/confdb/aclocal_make.m4 \ $(top_srcdir)/confdb/aclocal_runlog.m4 \ $(top_srcdir)/confdb/aclocal_util.m4 $(top_srcdir)/version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/mpitestconf.h CONFIG_CLEAN_FILES = testlist CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/testlist.in \ $(top_srcdir)/Makefile_cxx.mtest DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = @VPATH@ ACLOCAL = @ACLOCAL@ ALLOCMEMF = @ALLOCMEMF@ ALLOCMEMFC = @ALLOCMEMFC@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F03SPAWNARGTEST = @F03SPAWNARGTEST@ F77 = @F77@ F77SPAWNARGTEST = @F77SPAWNARGTEST@ F77_GETARG_LIBS = @F77_GETARG_LIBS@ F77_MPI_ADDRESS = @F77_MPI_ADDRESS@ F77_MPI_OFFSET = @F77_MPI_OFFSET@ F77_NAME_MANGLE = @F77_NAME_MANGLE@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCFLAGS_f90 = @FCFLAGS_f90@ FCMODEXT = @FCMODEXT@ FCMODINCFLAG = @FCMODINCFLAG@ FCMODOUTFLAG = @FCMODOUTFLAG@ FC_GETARG_LIBS = @FC_GETARG_LIBS@ FC_WORK_FILES_ARG = @FC_WORK_FILES_ARG@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ FROM_MPICH = @FROM_MPICH@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKE = @MAKE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MPICC = @MPICC@ MPICH_ENABLE_CXX = @MPICH_ENABLE_CXX@ MPICH_ENABLE_F77 = @MPICH_ENABLE_F77@ MPICH_ENABLE_FC = @MPICH_ENABLE_FC@ MPICH_THREAD_LEVEL = @MPICH_THREAD_LEVEL@ MPICXX = @MPICXX@ MPIEXEC = @MPIEXEC@ MPIF77 = @MPIF77@ MPIFC = @MPIFC@ MPILIBLOC = @MPILIBLOC@ MPILIBNAME = @MPILIBNAME@ MPI_HAS_MPIX = @MPI_HAS_MPIX@ MPI_IS_STRICT = @MPI_IS_STRICT@ MPI_NO_RMA = @MPI_NO_RMA@ MPI_NO_SPAWN = @MPI_NO_SPAWN@ MPI_SIZEOF_AINT = @MPI_SIZEOF_AINT@ MPI_SIZEOF_OFFSET = @MPI_SIZEOF_OFFSET@ MPI_SOURCE = @MPI_SOURCE@ MPI_SUBVERSION = @MPI_SUBVERSION@ MPI_VERSION = @MPI_VERSION@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ RUN_XFAIL = @RUN_XFAIL@ SET_CFLAGS = @SET_CFLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WRAPPER_CFLAGS = @WRAPPER_CFLAGS@ WRAPPER_CPPFLAGS = @WRAPPER_CPPFLAGS@ WRAPPER_CXXFLAGS = @WRAPPER_CXXFLAGS@ WRAPPER_FCFLAGS = @WRAPPER_FCFLAGS@ WRAPPER_FFLAGS = @WRAPPER_FFLAGS@ WRAPPER_LDFLAGS = @WRAPPER_LDFLAGS@ WRAPPER_LIBS = @WRAPPER_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ ckpointdir = @ckpointdir@ comm_overlap = @comm_overlap@ cxxdir = @cxxdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ errordir = @errordir@ exec_prefix = @exec_prefix@ f08dir = @f08dir@ f77dir = @f77dir@ f90dir = @f90dir@ faultsdir = @faultsdir@ ftdir = @ftdir@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ impldir = @impldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ iodir = @iodir@ largetest = @largetest@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ master_top_builddir = @master_top_builddir@ master_top_srcdir = @master_top_srcdir@ mkdir_p = @mkdir_p@ mpich_top_srcdir = @mpich_top_srcdir@ mpix = @mpix@ namepub_tests = @namepub_tests@ nocxxdistgraph = @nocxxdistgraph@ nslib = @nslib@ oldincludedir = @oldincludedir@ otherlangs = @otherlangs@ pdfdir = @pdfdir@ perfdir = @perfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ rmadir = @rmadir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ socklib = @socklib@ spawndir = @spawndir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ threadlib = @threadlib@ threadsdir = @threadsdir@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include LDADD = $(top_builddir)/cxx/util/mtest.o CLEANFILES = summary.xml summary.tap EXTRA_DIST = testlist.in distgraphcxx.cxx # avoid having to write many "foo_SOURCES = foo.cxx" lines because # automake is too limited to figure this out for itself AM_DEFAULT_SOURCE_EXT = .cxx all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile_cxx.mtest $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign cxx/topo/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign cxx/topo/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/Makefile_cxx.mtest $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): testlist: $(top_builddir)/config.status $(srcdir)/testlist.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am .PRECIOUS: Makefile $(top_builddir)/cxx/util/mtest.o: $(top_srcdir)/cxx/util/mtest.cxx (cd $(top_builddir)/cxx/util && $(MAKE) mtest.o) testing: $(top_builddir)/runtests -srcdir=$(srcdir) -tests=testlist \ -mpiexec=${MPIEXEC} -xmlfile=summary.xml # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: mpi-testsuite-3.2+dfsg/cxx/topo/Makefile.am0000644000175000017500000000057412620254305020205 0ustar mbanckmbanck# -*- Mode: Makefile; -*- # vim: set ft=automake : # # (C) 2011 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # include $(top_srcdir)/Makefile_cxx.mtest EXTRA_DIST = testlist.in distgraphcxx.cxx # avoid having to write many "foo_SOURCES = foo.cxx" lines because # automake is too limited to figure this out for itself AM_DEFAULT_SOURCE_EXT = .cxx mpi-testsuite-3.2+dfsg/cxx/topo/testlist.in0000644000175000017500000000003712620254305020346 0ustar mbanckmbanck@nocxxdistgraph@distgraphcxx 8 mpi-testsuite-3.2+dfsg/cxx/topo/distgraphcxx.cxx0000644000175000017500000000522112620254305021377 0ustar mbanckmbanck/* -*- Mode: C++; c-basic-offset:4 ; -*- */ /* * (C) 2013 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "mpi.h" #include "mpitestconf.h" #include "mpitestcxx.h" #ifdef HAVE_IOSTREAM // Not all C++ compilers have iostream instead of iostream.h #include #ifdef HAVE_NAMESPACE_STD // Those that do often need the std namespace; otherwise, a bare "cout" // is likely to fail to compile using namespace std; #endif #else #include #endif int main( int argc, char *argv[] ) { int errs = 0; int indegree, outdegree, sources[4], dests[4], sweights[4], dweights[4]; int wrank, wsize; MPI::Distgraphcomm dcomm; MTest_Init(); // Create a graph where each process sends to rank+1, rank+3 and // receives from rank - 2 wrank = MPI::COMM_WORLD.Get_rank(); wsize = MPI::COMM_WORLD.Get_size(); indegree = 0; outdegree = 0; if (wrank+1 < wsize) dests[outdegree++] = wrank+1; if (wrank+3 < wsize) dests[outdegree++] = wrank+3; if (wrank-2 >= 0) sources[indegree++] = wrank-2; // Create with no reordering to test final ranks dcomm = MPI::COMM_WORLD.Dist_graph_create_adjacent( indegree, sources, outdegree, dests, MPI::INFO_NULL, false ); // Check that the created communicator has the properties specified if (dcomm.Get_topology() != MPI_DIST_GRAPH) { errs++; cout << "Incorrect topology for dist_graph: " << dcomm.Get_topology() << "\n"; } else { int myindegree, myoutdegree; bool myweighted; dcomm.Get_dist_neighbors_count( myindegree, myoutdegree, myweighted ); if (myindegree != indegree) { errs++; cout << "Indegree is " << myindegree << " should be " << indegree << "\n"; } if (myoutdegree != outdegree) { errs++; cout << "Outdegree is " << myoutdegree << " should be " << outdegree << "\n"; } if (myweighted) { errs++; cout << "Weighted is true, should be false\n"; } } if (!errs) { int mysources[4], mysweights[4], mydests[4], mydweights[4], i; dcomm.Get_dist_neighbors( 4, mysources, mysweights, 4, mydests, mydweights ); // May need to sort mysources and mydests first for (i=0; i&1 >/dev/null fi # we require autoconf version 2.67 or greater # acSubversion is the version number minus 2. (we assume autoconf 2.xx) # -1 is used for unknown acSubversion=-1 acIncDirFlag=-I for ver in 70 69 68 67 ; do rm -f .tmp/configure.ac .tmp/configure cat >.tmp/configure.ac </dev/null 2>&1 ) ; then acSubversion=$ver break fi done rm -f .tmp/configure.ac .tmp/configure if [ "$acSubversion" -gt 0 ] ; then acVersion="2.$acSubversion" echo "You have autoconf version $acVersion." else cat </dev/null 2>&1 ; then # The above relies on the Unix find command (cd maint && $autoconf && rm -rf autom4te*.cache) fi if [ ! -x maint/f77tof90 ] ; then run_configure=yes fi # # The following relies on the Unix find command if [ -s maint/f77tof90 ] ; then if find maint -name 'f77tof90.in' -newer 'maint/f77tof90' >/dev/null 2>&1 ; then run_configure=yes fi else run_configure=yes fi if [ "$run_configure" = "yes" ] ; then (cd maint && ./configure) fi # Create and/or update the f90 tests if [ -x maint/f77tof90 -a $do_f77tof90 = "yes" ] ; then echo "Create or update the Fortran 90 tests derived from the Fortran 77 tests" for dir in f77/* ; do if [ ! -d $dir ] ; then continue ; fi leafDir=`basename $dir` if [ ! -d f90/$leafDir ] ; then mkdir f90/$leafDir fi maint/f77tof90 $dir f90/$leafDir Makefile.sm Makefile.ap done fi # # Create the Makefile.in files # Make sure that these files exist so that the gcc dependency creation # can work rm_prepost=no if [ ! -s src/include/mpidpre.h ] ; then rm_prepost=yes fi # Create the configure files and run autoheader # Eventually, make this a test for find available. Perhaps # find . -name configure.ac > /dev/null 2>&1 # The problem is that even though cygwin has find, the DOS find # is identified first. We probably need a test for this case fixBackWhackCtrlMBug=no if [ $do_build_configure = yes ] ; then # If we don't delete the autom4te.cache files, bugs in # autoconf may fail to correctly update configure # Gah. Some xargs don't accept -r, other break if there is no # input. To avoid that, we do this in two steps: first the # find, then the rm (if there are any files) $autoreconf -vif $acIncDirFlag confdb if [ ! -x configure ] ; then # Check for a few allowed exceptions echo "Could not build configure from configure.ac in $dir" echo "Aborting updatefiles!" exit 1 fi fi # # The following must be the last statements executed if [ -n "$error_summary" ] ; then echo " " echo "Problems encountered while running updatefiles." echo "These may cause problems when configuring or building MPICH." echo "$error_summary" fi case $finalStatus in 0) # all is well ;; 1) # warnings ;; 2) # reserved for future use ;; 3) # fatal, cannot continue echo "updatefiles step failed! Review the output and fix the problem" echo "before continuing" exit 1 ;; *) # unknown echo "Internal error in updatefiles; finalStatus=$finalStatus" exit 1 ;; esac mpi-testsuite-3.2+dfsg/maint/f77tof90.in0000644000175000017500000002724212620254305017314 0ustar mbanckmbanck#! @PERL@ -w # -*- Mode: perl; -*- # # f77tof90 indir outdir [ Makefile-template [Make-Append] ] # For each file in indir/*.[fF], create a corresponding file in outdir # with .f90/.F90, and with any include "mpif.h" replaced with use mpi # It also changes to the new comment style, because some compilers # use the comment style to choose other features of the language # # We also allow the file name to be modified to help out Windows, since # programs in a project need to have distinct names # $indir = $ARGV[0]; $outdir = $ARGV[1]; $makeTemplate = $ARGV[2]; $makeAppend = $ARGV[3]; $convertToFreeForm = 1; $convertToNewComments = 1; # Including a newline variable allows us to handle Unix and DOS source files $newline = "\n"; %replaceInclude = ( 'iodisp' => 'integer (kind=MPI_OFFSET_KIND) disp', 'ioaint' => 'integer (kind=MPI_ADDRESS_KIND) aint', 'iooffset' => 'integer (kind=MPI_OFFSET_KIND) offset', 'type1aint' => 'integer (kind=MPI_ADDRESS_KIND) aint', 'typeaints' => 'integer (kind=MPI_ADDRESS_KIND) aint, aintv(max_asizev)', 'attr1aints' => 'integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val', 'attraints' => 'integer (kind=MPI_ADDRESS_KIND) extrastate, valin, valout, val', 'addsize' => 'integer (kind=MPI_ADDRESS_KIND) asize', 'add1size' => 'integer (kind=MPI_ADDRESS_KIND) asize', ); %excludePrograms = (); $debugReplace = 0; $reportSkipped = 0; # -------------------------------------------------------------------------- # Check the input arguments if ($indir eq "" || $outdir eq "") { print STDERR "Usage: f77tof90 indir outdir [ makefile-template ]\n"; exit 1; } if ( ! -d $indir) { print STDERR "Input directory $indir does not exist\n"; exit 1; } if (! -d $outdir) { print STDERR "Output directory $outdir does not exist\n"; exit 1; } # -------------------------------------------------------------------------- # -------------------------------------------------------------------------- opendir( DIR, "$indir" ); my @filelist = (); while ($file = readdir(DIR)) { # Extract the extension if ($file =~ /^(.*)\.([^\.]*)$/) { $name = $1; $ext = $2; # Special handling for C files, if any if ($ext eq "c") { my $name90 = $name; $name90 =~ s/f/f90/g; &ConvertCFile( "$indir/$file", "$outdir/$name90.c.new" ); &ReplaceIfDifferent( "$outdir/$name90.c", "$outdir/$name90.c.new" ); next; } # Skip if the file isn't a Fortran source file if ($ext ne "f" && $ext ne "F") { next; } &ConvertToF90( "$indir/$file", "$outdir/${name}90.${ext}90.new" ); &ReplaceIfDifferent( "$outdir/${name}90.${ext}90", "$outdir/${name}90.${ext}90.new" ); $filelist[$#filelist+1] = $file; } } closedir( DIR ); # &CreateMakefile( "filelist", $outdir ); if (defined($makeTemplate) && $makeTemplate ne "" && -s "$indir/$makeTemplate") { &ConvertMakefile( $indir, $outdir, $makeTemplate ); if (defined($makeAppend) && -s "$outdir/$makeAppend") { # If there is a makeAppend in the output directory, then # append that to the generated makefile &AppendFile( "$outdir/$makeAppend", "$outdir/$makeTemplate.new" ); } &ReplaceIfDifferent( "$outdir/$makeTemplate", "$outdir/$makeTemplate.new" ); } if (-s "$indir/testlist" || -s "$indir/testlist.in") { # We allow both testlist.in and testlist as source files; # testlist.in gets priority my $filename = "testlist"; if (-s "$indir/testlist.in") { $filename = "testlist.in"; } &ConvertTestlist( $indir, $outdir, $filename ); if (-s "$outdir/testlist.ap") { &AppendFile( "$outdir/testlist.ap", "$outdir/$filename.new" ); } &ReplaceIfDifferent( "$outdir/$filename", "$outdir/$filename.new" ); } exit 0; # ----------------------------------------------------------------------------- sub ConvertToF90 { my $infile = $_[0]; my $outfile = $_[1]; open (INF, "<$infile" ) || die "Could not open $infile\n"; open (OUTF, ">$outfile" ) || die "Could not open $outfile\n"; print OUTF "! This file created from $infile with f77tof90\n"; my $lastLine = ""; my $firstline = 1; while () { if (/\r/) { $newline = "\r\n"; } # Remove any end-of-line characters s/[\r\n]*//g; # The implicit none must not come before the use mpi statement, # but in F77, it must come before the include mpif.h statement. # Rather than try and fix this, rely on the F77 versions to # catch undeclared variables if (/[Ii][Mm][Pp][Ll][Ii][Cc][Ii][Tt]\s+[Nn][Oo][Nn][Ee]/) { next; } if (/^(\s*)include\s+[\'\"]mpif\.h/) { $_ = "$1use mpi"; } # Allow the insertion of Fortran 90 only statements, such as # interface definitions if (/^CF90/) { s/^CF90/ /; } # Since we use interface statements for the error handlers, # remove their external declaration if (/^\s+external myerrhanfunc/) { s/^\s/!/; } if ($convertToNewComments) { s/^C/!/; s/^c/!/; } # Update the special includes that are used to provide # address or offset sized types with ones the use the # Fortran90 KIND style if (/^(\s*)include\s+[\'\"]([\/\.\w]+)\.h[\"\']/) { my $leading = $1; my $includename = $2; if (defined($replaceInclude{$includename})) { $_ = $leading . $replaceInclude{$includename} . "\n"; } } # We need to handle the special case of the program # name in spawn commands if (/(.*)\"([\.\/\w]*spawn[^\"]*)\"(.*)/) { my $before = $1; my $name = $2; my $after = $3; $_ = $before . "\"" . $name . "90" . "\"" . $after; } # We could also detect continuations in column six and # convert to free-form input by holding one line back. if ($convertToFreeForm) { if (/^ \S(.*)/) { $leftover = $1; # This line contains a continuation marker # Add a continuation marker to the previous line if # it doesn't already have one if (! ($lastline =~ /\&\s*$/) ) { $lastline .= " &"; } $_ = " \&$leftover"; } } print OUTF "$lastline$newline" if (! $firstline); $firstline = 0; $lastline = $_; } print OUTF "$lastline$newline"; close (INF); close (OUTF); } # # A very simple routine for creating a version of a C file that refers # to F90 instead of F77. sub ConvertCFile { my $infile = $_[0]; my $outfile = $_[1]; open (INF, "<$infile" ) || die "Could not open $infile\n"; open (OUTF, ">$outfile" ) || die "Could not open $outfile\n"; print OUTF "/* This file created from $infile with f77tof90 */\n"; while () { if (/\r/) { $newline = "\r\n"; } # Remove any end-of-line characters s/[\r\n]*//g; # replace F77 with F90, mostly for CPP tests, except for name # mapping if (! /F77_NAME/) { s/F77/F90/g; } print OUTF "$_$newline"; } close (INF); close (OUTF); } # Create a makefile from a template. Replace @EXECS@ with the programs # in the filelist. # CreateMakefile( "filelist", $outdir ) sub CreateMakefile { my $filelist = $_[0]; my $outdir = $_[1]; print STDERR "This function is not implemented\n"; return 0; } # # Take an existing makefile and perform the following transformations: # .f -> .f90, .F -> .F90 # Others as necessary # ConvertMakefile( indir, outdir, filename ) # By providing the filename, we can accept Makefile, Makefile.in, Makefile.ap, # Makefile.sm, or even nonstandard names such as buildscript. sub ConvertMakefile { my ($indir, $outdir, $filename) = @_; %excludePrograms = (); open( INF, "<$indir/$filename" ) || die "Cannot open $indir/$filename\n"; open( OUTF, ">$outdir/$filename.new" ) || die "Cannot open $outdir/$filename.new\n"; print OUTF "# This $filename generated automatically by f77tof90\n"; print OUTF "# from $indir/$filename. DO NOT EDIT\n"; while () { # First, check for sources that are not present. These # may be derived files (see f77/io for an example). For now, # we'll skip these if (/^(\w+)_SOURCES\s*=\s*(\w+\.f)/) { my $sourcebase = $1; my $sourcename = $2; if (! -s "$indir/$sourcename") { print "Skipping source file $indir/$sourcename because it is not present\n" if $reportSkipped; $excludePrograms{$sourcebase} = 1; next; } } # convert program names from foof.f to foof90.f90 s/f_SOURCES/f90_SOURCES/g; if (/f\.f/) { s/f\.f/f90.f90/g; } else { # Move files to f90 s/\.f/.f90/g; } s/mtestf\.o/mtestf90.o/; s/\.F/.F90/g; s/f77/f90/g; s/F77/F90/g; # Update any per-program LDADD values s/f_LDADD/f90_LDADD/g; # # Handle special cases: # Force the c2f2c test to use the f90 compiler s/c2f2cf90_SOURCES.*/c2f2cf90_SOURCES = c2f2cf90.f90 c2f902c.c/; s/c2f2ciof90_SOURCES.*/c2f2ciof90_SOURCES = c2f2ciof90.f90 c2f902cio.c/; # s/c2f2ciof90_LDADD/c2f2cfio90_LDADD/g; s/c2f2cwinf90_SOURCES.*/c2f2cwinf90_SOURCES = c2f2cwinf90.f90 c2f902cwin.c/; if (/EXTRA_PROGRAMS/) { s/allocmemf/allocmemf90/; # allocmemf test is special } # Handle the special case of C programs (used for f2d/c2f testing) if (/(\w+)_SOURCES(\s*=\s*)(\w+)\.c\s*$/) { my $progname = $1; my $spacing = $2; my $name = $3; $name =~ s/f/f90/; $progname =~ s/f/f90/; $_ = "$progname" . "_SOURCES" . $spacing . $name . ".c\n"; } # Eventually need some way to update directory paths (particularly # relative ones) and add F90 compile rules when not present. print OUTF $_; } close( INF ); close( OUTF ); # The check on a file change is handled in the routine that calls this # because we may append to this file first. } # Append infile to the end of inout file #( infile, inoutfile ) sub AppendFile { my $infile = $_[0]; my $outfile = $_[1]; open( INA, "<$infile" ) || die "Cannot open $infile\n"; open( OUTA, ">>$outfile" ) || die "Cannot open $outfile\n"; while () { print OUTA $_; } close(INA); close(OUTA); } # # Replace old file with new file only if new file is different # Otherwise, remove new filename sub ReplaceIfDifferent { my ($oldfilename,$newfilename) = @_; my $rc = 1; if (-s $oldfilename) { $rc = system "cmp -s $newfilename $oldfilename"; $rc >>= 8; # Shift right to get exit status } if ($rc != 0) { print STDERR "Replacing $oldfilename\n"; if ($debugReplace && -s $oldfilename) { print STDERR "Differences are:"; system "diff $newfilename $oldfilename"; } # The files differ. Replace the old file # with the new one if (-s $oldfilename) { unlink $oldfilename; } rename $newfilename, $oldfilename || die "Could not replace $oldfilename"; } else { unlink $newfilename; } } # Change the names of the tests. Remove any that were skipped from the # Makefile. Check for a testlist.in before testlist sub ConvertTestlist { my ($indir, $outdir, $filename) = @_; open( INF, "<$indir/$filename" ) || die "Cannot open $indir/$filename\n"; open( OUTF, ">$outdir/$filename.new" ) || die "Cannot open $outdir/$filename.new\n"; print OUTF "# This file generated by f77tof90\n"; while () { if (/^(\w+)\s/) { my $sourcebase = $1; if (defined($excludePrograms{$sourcebase})) { next; } } if (/^(\w+f)\s+(.*)/) { $_ = $1 . "90 " . $2 . "\n"; } elsif (/^c2fmult(\w*)\s+(.*)/) { # This is a special case for programs that are not Fortran # programs but are part of the Fortran tests; principly, these # are the tests of MPI handle conversion # note the \w* instead of \w+; this allows us to match both # c2fmult.c and c2fmultio.c $_ = "c2f90mult$1 $2\n"; } elsif (/^\@ALLOCMEMF\@/) { # This is a special case for an optional feature (using # Cray-style pointers for MPI_Alloc_mem). $_ = "\@ALLOCMEMF90\@\n"; } print OUTF $_; } close INF; close OUTF; } mpi-testsuite-3.2+dfsg/maint/testmerge.in0000644000175000017500000002131412620254305020020 0ustar mbanckmbanck#! @PERL@ # -*- Mode: Perl; -*- # # (C) 2004 by Argonne National Laboratory. # See COPYRIGHT in top-level directory. # # # This file provides a way to merge a template file with a set of # code fragments. This makes it simple to generate many related tests # from a single test harness, while ending up with relatively simple code # in case it is necessary to debug the code. # The template file uses an XML-like notation to mark off places for code. # Specifically, lines of the form # # are replaced from a definition file. The template is XML-like because # angle brackets and ampersands can be freely used as long as they don't # match the perl pattern <\w*\/> (which no valid C, C++, or Fortran code will) # # The file of definitions has the following form, also in an XML-like # format (for simple parsing) # # # definition # # ... # # where "blockname" is an arbitrary name (matching the perl expression \w*) # that matches the names in the template file. # TESTDEFN is a required field # # Possible extensions: # Common definitions for all files (allows a common template for # multiple sets of merges) # Allow the *template* to define some names (eg, value) # that are replaced in the generated file. # # ---------------------------------------------------------------------------- # Global variables $debug = 0; $lang = "Fortran"; %knownLang = ( "Fortran" => 1, "C" => 1, "C++" => 1 ); #$lang = "C"; #$lang = "C++"; # Definitions %Definitions = (); # Global definitions are for all files, and can contain standard comments, # initializations, and other data %GlobalDefinitions = (); # Read a definition file # ReadDefinition( filename ) # Places the definitions into %Definitions{name} => content sub ReadDefinition { my $DFD = $_[0]; while (<$DFD>) { # Check for end-of-description if (/<\/TESTDEFN>/) { last; } # match definition name if (/<(\w*)>/) { my $name = $1; my $defn = ""; my $found = 0; while (<$DFD>) { if (/<\/$name>/) { $found = 1; last; } s/\r//g; # Remove any extraneous characters $defn .= $_; } # If we didn't close the definition, generate an error message if (! $found) { print STDERR "Read to end-of-file while looking for \n"; } $Definitions{$name} = $defn; } else { # Skip (blank space, comment, etc) next; } } } # ReadGlobalDefinitions( filename ) sub ReadGlobalDefinitions { my $filename = $_[0]; # Save Definitions, if any my %saveDefinitions = %Definitions; # Reset Definitions to hold the current global set %Definitions = %GlobalDefinitions; my $DFD = "DFD"; open $DFD, "<$filename" || die "Could not open global definition file $filename\n"; print "Opening $filename..\n"; &ReadDefinition( $DFD ); close $DFD; %GlobalDefinitions = %Definitions; %Definitions = %saveDefinitions; # Print the new definitions if requested. if ($debug) { foreach my $key (keys(%GlobalDefinitions)) { my $val = $GlobalDefinitions{$key}; print "$key => $val\n"; } } } # --------------------------------------------------------------------------- # MergeTemplate # Read a template and merge the output # MergeTemplate( template file, output file ) # Preserve indentation sub MergeTemplate { my $templateFilename = $_[0]; my $outputFilename = $_[1]; open IFD, "<$templateFilename" || die "Cannot open $templateFilename\n"; open OFD, ">$outputFilename" || die "Cannot open $outputFilename\n"; while () { s/\r//; my $loopLimit = 20; while (/(\s*)<(\w*)\/>/) { my $indent = $1; my $name = $2; $indent =~ s/\s*\n//g; if ($loopLimit-- <= 0) { print STDERR "Exceeded loop limit while writing $outputFilename\n"; print STDERR "Searching for $name in $_"; last; } if (defined($Definitions{$name})) { my $defn = $Definitions{$name}; my $newdefn = ""; # Add indentation to definition; substitute any defintions foreach my $line (split(/\n/,$defn)) { print "Looking at |$line|\n" if $debug; $newdefn .= $indent . $line . "\n"; } chop $newdefn; print "Replacing <$name> with |$newdefn|\n" if $debug; s/$indent<$name\/>/$newdefn/; # Only do one at a time } elsif (defined($GlobalDefinitions{$name})) { # local definitions can override any global definitions my $defn = $GlobalDefinitions{$name}; my $newdefn = ""; # Add indentation to definition foreach my $line (split(/\n/,$defn)) { $newdefn .= $indent . $line . "\n"; } print "Replacing <$name> with |$newdefn|\n" if $debug; chop $newdefn; s/$indent<$name\/>/$newdefn/; # Only do one at a time } else { # Unknown name! print STDERR "Unknown name $name in template file when creating $outputFilename!\n"; last; } } &printLine( OFD, $_ ); } close OFD; close IFD; } # --------------------------------------------------------------------------- # ReadAndMerge( description file, template file ) sub ReadAndMerge { my $filename = $_[0]; my $templateFile = $_[1]; $DFD = "DFD"; open $DFD, "<$filename" || die "Can not open $filename\n"; while (<$DFD>) { s/#.*//; # Remove comments # Read until a TESTDEFN line if (//) { my $outputFile = $1; %Definitions = (); # Read until &ReadDefinition( $DFD ); # Create the merged file &MergeTemplate( $templateFile, $outputFile ); } elsif (/([\w\+]*)<\/LANG>/) { # Special for language definition $lang = $1; if (!defined($knownLang{$lang})) { print STDERR "Unknown language $lang\n"; } } elsif (/<(\w*)>/) { my $name = $1; my $defn = ""; # read this as a global definition while (<$DFD>) { if (/<\/$name>/) { last; } s/\r//; $defn .= $_; } if (eof($DFD)) { print STDERR "found EOF before end of $name\n"; } $GlobalDefinitions{$name} = $defn; } } close $DFD; } # -------------------------------------------------------------------------- # Debug sub PrintDefinitions { foreach my $name (keys(%Definitions)) { print "<$name>\n"; my $defn = $Definitions{$name}; # Here we could consider doing replacement for embedded ..., # for things like arguments. print $defn; print "\n"; } } # -------------------------------------------------------------------------- # printLine handles any continuation conventions # printLine ( FD, lines ) # Note that a very simple approach works for Fortran because blanks # are ignored. However, we will try to make the code easier to read sub printLine { my $OFD = $_[0]; my $lines = $_[1]; # Make sure that we get the current conventions if ($lang eq "Fortran") { $maxPrintLine = 72; $postLine = " &"; $preLine = " &"; } elsif ($lang eq "C" || $lang eq "C++") { $maxPrintLine = 180; $postLine = ""; $preLine = "\t"; } foreach my $line (split(/\n/,$lines)) { # Compute length my $length = length($line); while ($length > $maxPrintLine) { # For Fortran 90 and C/C++, lines must be # broken at whitespace. Fortran 77 ignores whitespace, my $subline = substr $line, 0, $maxPrintLine; # Now, break subline at the last non-letter if ($subline =~ /(.*)([^\w]\S*)$/) { $subline = $1; $line = $2 . $line; # Add blanks to end of the subline to match what was stripped # off my $len = length($2); for (my $i=0; $i < $len; $i++) { $subline .= " "; } } print $OFD $subline . $postLine . "\n"; $line = substr $line, $maxPrintLine; $line = $preLine . $line; $length = length($line); } print $OFD $line . "\n"; } } # -------------------------------------------------------------------------- # Process the file # Still to do: # Allow multiple definition files, to allow for common definitions # for such things as headers my $defnFile = ""; my $tmplFile = ""; my $posCount = 0; for (@ARGV) { if (/-defn=(.*)/) { my $extraFile = $1; &ReadGlobalDefinitions( $extraFile ); } elsif (/-lang=(.*)/) { $lang = $1; if (!defined($knownLang{$lang})) { print STDERR "Unknown language $lang\n"; exit 1; } } elsif (/^-/) { print STDERR "Unrecognized argument $_\n"; exit 1; } else { if ($posCount == 0) { $defnFile = $_; } elsif ($posCount == 1) { $tmplFile = $_; } else { print STDERR "Too many arguments ($_)\n"; exit 1; } $posCount ++; } } if ($defnFile eq "" || $tmplFile eq "") { print STDERR "testmerge [ -defn=name ] defintion-file template-file \n"; exit 1; } &ReadAndMerge( $defnFile, $tmplFile ); mpi-testsuite-3.2+dfsg/maint/configure.ac0000644000175000017500000000203612620254305017757 0ustar mbanckmbanck# -*- Mode: shell-script; -*- AC_PREREQ(2.59) AC_INIT # # Try to find the version if test -s "$srcdir/Version" ; then VERSION="`cat $srcdir/Version`" else VERSION="Unknown" fi AC_SUBST(VERSION) AC_PATH_PROG(PERL,perl) # Find the location of the mpich sources if test -z "$abs_srcdir" ; then abs_srcdir=`cd $srcdir && pwd` fi abs_mpichsrcdir=`cd $abs_srcdir && cd .. && pwd` AC_SUBST(abs_mpichsrcdir) # Does xargs need the -r option to handle the case where the input # is empty (gnu utils do, Mac OSX does not accept -r) xargs_out=`echo "" | xargs ls | wc -l | sed -e 's/ //g'` if test "$xargs_out" != "0" ; then XARGS_NODATA_OPT=-r fi AC_SUBST(XARGS_NODATA_OPT) AC_OUTPUT_COMMANDS([chmod a+x f77tof90] ) # The directory substitutions apparently don't work under Cygwin, so # simplemake manufactures these in a way that avoids triggering the # autoconf replacement. # Note that top_srcdir and srcdir are special cases (they must not # be changed in configure.ac because configure uses them to find other files) AC_OUTPUT(f77tof90) mpi-testsuite-3.2+dfsg/maint/README0000644000175000017500000000122112620254305016344 0ustar mbanckmbanckThis readme describes the plan for generating tests automatically from the description in the structured comment, along with some additional information. For each source file: 1. Find the structured comment (/*@) 2. Find the "Input Parameters" entry and read the parameters (lines starting with +, . and ending with -; single args use . 3. Find the "Output Parameters" and match types as for input parameters 4. For each input parameter, check the defined values (range) and generate test calls. E.g., for ravalude that should be non-negatiuve integers, make a call with a negative value. 5. Use template for the start/end of the test program mpi-testsuite-3.2+dfsg/maint/common.defn0000644000175000017500000000156412620254305017624 0ustar mbanckmbanck /* -*- Mode: C; c-basic-offset:4 ; -*- */ /* * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. * * DO NOT EDIT THIS FILE. CREATED AUTOMATICALLY WITH TESTMERGE. */ /* -*- Mode: C++; c-basic-offset:4 ; -*- */ /* * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. * * DO NOT EDIT THIS FILE. CREATED AUTOMATICALLY WITH TESTMERGE. */ C -*- Mode: Fortran; -*- C C (C) 2003 by Argonne National Laboratory. C See COPYRIGHT in top-level directory. C C C DO NOT EDIT THIS FILE. CREATED AUTOMATICALLY WITH TESTMERGE. C ! -*- Mode: Fortran90; -*- ! ! (C) 2003 by Argonne National Laboratory. ! See COPYRIGHT in top-level directory. ! ! DO NOT EDIT THIS FILE. CREATED AUTOMATICALLY WITH TESTMERGE. !